XEmacs 21.2.30 "Hygeia".
authortomo <tomo>
Tue, 9 May 2000 02:19:49 +0000 (02:19 +0000)
committertomo <tomo>
Tue, 9 May 2000 02:19:49 +0000 (02:19 +0000)
205 files changed:
CHANGES-beta
ChangeLog
INSTALL
PROBLEMS
configure
configure.in
etc/TUTORIAL.ja
info/cl.info
info/internals.info
info/internals.info-1
info/internals.info-2
info/lispref.info
info/xemacs.info
lib-src/ChangeLog
lib-src/movemail.c
lisp/ChangeLog
lisp/about.el
lisp/buffer.el
lisp/byte-optimize.el
lisp/etags.el
lisp/files.el
lisp/font-lock.el
lisp/gutter-items.el
lisp/info.el
lisp/ldap.el
lisp/modeline.el
lisp/msw-faces.el
lisp/mule/mule-cmds.el
lisp/package-get.el
lwlib/ChangeLog
lwlib/lwlib-Xaw.c
lwlib/lwlib-Xm.c
lwlib/lwlib.c
lwlib/xlwgauge.c
lwlib/xlwmenu.c
lwlib/xlwmenu.h
man/ChangeLog
man/cl.texi
man/internals/internals.texi
man/lispref/backups.texi
man/xemacs/files.texi
nt/ChangeLog
nt/README
nt/config.h
src/.dbxrc
src/.gdbinit
src/ChangeLog
src/Makefile.in.in
src/alloc.c
src/buffer.c
src/bytecode.c
src/chartab.c
src/config.h.in
src/console-tty.c
src/console.c
src/data.c
src/database.c
src/device-msw.c
src/device.c
src/editfns.c
src/eldap.c
src/eldap.h
src/elhash.c
src/emacs.c
src/eval.c
src/event-msw.c
src/event-stream.c
src/events.c
src/extents.c
src/faces.c
src/file-coding.c
src/fileio.c
src/floatfns.c
src/fns.c
src/frame.c
src/glyphs-msw.c
src/glyphs-msw.h
src/glyphs-widget.c
src/glyphs-x.c
src/glyphs.c
src/gui-msw.c
src/gui-x.c
src/gui.c
src/gutter.c
src/gutter.h
src/insdel.c
src/keymap.c
src/lisp.h
src/lread.c
src/lrecord.h
src/lstream.c
src/m/7300.h
src/m/acorn.h
src/m/alliant-2800.h
src/m/alliant.h
src/m/altos.h
src/m/amdahl.h
src/m/arm.h
src/m/att3b.h
src/m/aviion.h
src/m/celerity.h
src/m/clipper.h
src/m/cnvrgnt.h
src/m/convex.h
src/m/cydra5.h
src/m/delta.h
src/m/delta88k.h
src/m/dpx2.h
src/m/dual.h
src/m/elxsi.h
src/m/ews4800r.h
src/m/gould-np1.h
src/m/gould.h
src/m/hp300bsd.h
src/m/hp800.h
src/m/hp9000s300.h
src/m/i860.h
src/m/ibmps2-aix.h
src/m/ibmrs6000.h
src/m/ibmrt-aix.h
src/m/ibmrt.h
src/m/intel386.h
src/m/iris4d.h
src/m/iris5d.h
src/m/iris6d.h
src/m/irist.h
src/m/isi-ov.h
src/m/luna88k.h
src/m/m68k.h
src/m/masscomp.h
src/m/mega68.h
src/m/mg1.h
src/m/mips-nec.h
src/m/mips-siemens.h
src/m/mips.h
src/m/next.h
src/m/nh3000.h
src/m/nh4000.h
src/m/ns32000.h
src/m/nu.h
src/m/orion.h
src/m/orion105.h
src/m/pfa50.h
src/m/plexus.h
src/m/pmax.h
src/m/powerpc.h
src/m/pyramid.h
src/m/sequent-ptx.h
src/m/sequent.h
src/m/sgi-challenge.h
src/m/sparc.h
src/m/sps7.h
src/m/stride.h
src/m/sun1.h
src/m/sun2.h
src/m/tad68k.h
src/m/tahoe.h
src/m/targon31.h
src/m/tek4300.h
src/m/tekxd88.h
src/m/template.h
src/m/tower32.h
src/m/tower32v3.h
src/m/ustation.h
src/m/wicat.h
src/m/windowsnt.h
src/m/xps100.h
src/malloc.c
src/marker.c
src/mem-limits.h
src/menubar-msw.c
src/mule-charset.c
src/nt.c
src/ntheap.c
src/ntheap.h
src/ntplay.c
src/ntproc.c
src/objects-msw.c
src/objects-msw.h
src/objects.c
src/opaque.c
src/process-nt.c
src/process.c
src/ralloc.c
src/rangetab.c
src/realpath.c
src/redisplay.c
src/redisplay.h
src/s/cygwin32.h
src/s/mingw32.h
src/s/windowsnt.h
src/select-msw.c
src/specifier.c
src/symbols.c
src/symeval.h
src/sysdep.c
src/toolbar-msw.c
src/toolbar.c
src/tooltalk.c
src/unexnt.c
src/vm-limit.c
src/window.c
tests/ChangeLog
tests/automated/mule-tests.el
version.sh

index 14854dc..0552780 100644 (file)
@@ -1,3 +1,17 @@
+to 21.2.30 "Hygeia"
+-- Make (find-tag-other-window) always use other window, 
+   even if tag is found in buffer of current window, Samuel Mikes
+-- Make configure complain about broken compiler versions (Jan Vroonhof, Yoshiki Hayashi, Bill Perry)
+-- `write-region' now deals properly with non-ASCII file names, Martin Buchholz
+-- `file-truename' now respects file-name-coding-system, Martin Buchholz
+-- arm configure support fixed.
+-- non-ASCII string handling performance boost, Martin Buchholz
+-- Garbage collector performance boost, Martin Buchholz
+-- Lisp engine performance boost, Martin Buchholz
+-- New ldap API (Oscar Figueiredo)
+-- (- 0) is now optimized to 0, not (-), Martin Buchholz
+-- More gutter tabs fixes, Andy Piper
+
 to 21.2.29 "Hestia"
 -- Fix compile errors on pre-X11R6 systems, introduced in 21.2.28.
 -- Fix autodetection of Berkeley DB on Linux Glibc 2 systems.  
@@ -124,6 +138,7 @@ to 21.2.22 "Mercedes"
 -- 10% faster redisplay from Jan Vroonhof
 -- Fixes from Jeff Miller, Alexandre Oliva and Yoshiki Hayashi
 -- "If you've got problems, read PROBLEMS!" from Robert Pluim
+-- Completely revamped GPM support from William Perry
 -- Lstream code now uses size_t, ssize_t consistently, Martin Buchholz
 -- Fix `make install' if prefix != exec_prefix, Martin Buchholz
 -- Fix compile warnings and C++ compilation, Martin Buchholz
index b79bbea..4a774de 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,41 @@
+2000-02-21  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.30 is released.
+
+2000-02-20  Martin Buchholz  <martin@xemacs.org>
+
+       * configure.in: Enforce use of autoconf version >= 2.13.
+
+       * configure.in: Fix OS release test on Solaris.
+
+2000-02-19  Marcus Thiessel  <marcus@xemacs.org>
+
+       * PROBLEMS: Update email address. Describe more HP Motif errors.
+       
+2000-02-19  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+       * configure.in: Split Solaris version test in two parts. In the
+       Bourne shell the "-a" operator does NOT short-circuit.
+
+1999-12-15 Jan Vroonhof  <jan@xemacs.org>
+
+       *  (configure.in): Autodetect broken gcc versions. Patch from WM
+       Perry with tiny tweaks by Yoshiki Hayashi and yours truly.
+
+2000-02-17  Martin Buchholz  <martin@xemacs.org>
+
+       * configure.in: Autodetect sys/param.h.  Reorganize
+       AC_CHECK_HEADERS call.
+       * src/config.h.in: Add HAVE_SYS_PARAM_H.
+
+2000-02-16  Martin Buchholz  <martin@xemacs.org>
+
+       * configure.in: Test for arm simply using arm* instead of arm-*
+
+2000-01-05  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+       * etc/TUTORIAL.ja: Synch with English version.
+
 2000-02-16  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.29 is released.
diff --git a/INSTALL b/INSTALL
index ce6d91f..d00a221 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -176,13 +176,9 @@ defaults to "-g -O" for gcc and "-g" for all other compilers.
 The `--dynamic' option specifies that configure should try to link
 emacs dynamically rather than statically.
 
-The `--const-is-losing' option is for use if you have trouble
-compiling due to the `const' storage class in C.  This is defined by
-default.  Most users should have no need to change this.
-
 You can build XEmacs for several different machine types from a single
 source directory.  To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'.  Make separate
+supports the `VPATH' variable, such as GNU `make'.  Create separate
 build directories for the different configuration types, and in each
 one, run the XEmacs `configure' script.  `configure' looks for the
 Emacs source code in the directory that `configure' is in.
index db106ae..b5414a5 100644 (file)
--- a/PROBLEMS
+++ b/PROBLEMS
@@ -394,21 +394,22 @@ Richard Cognot <cognot@ensg.u-nancy.fr> writes:
 
 *** On HP-UX, problems with make
 
-Marcus Thiessel <marcus_thiessel@hp.com>
+Marcus Thiessel <marcus@xemacs.org>
 
   Some releases of XEmacs (e.g. 20.4) require GNU make to build
   successfully. You don't need GNU make when building 21.x.
 
 *** On HP-UX 9.05 XEmacs won't compile or coredump during the build.
 
-Marcus Thiessel <marcus_thiessel@hp.com>
+Marcus Thiessel <marcus@xemacs.org>
 
   This might be a sed problem. For your own safety make sure to use
   GNU sed while dumping XEmacs.
 
-*** On HP-UX 11.0 XEmacs causes excessive X11 errors when running.
+*** On HP-UX 11.0 XEmacs causes excessive X11 errors when running. 
+    (also appears on AIX as reported in comp.emacs.xemacs)
 
-Marcus Thiessel <marcus_thiessel@hp.com>
+Marcus Thiessel <marcus@xemacs.org>
 
   Unfortunately, XEmacs releases prior to 21.0 don't work with
   Motif2.1. It will compile but you will get excessive X11 errors like
@@ -424,6 +425,19 @@ Marcus Thiessel <marcus_thiessel@hp.com>
   Make sure /usr/lib/Motif1.2_R6/libXm.sl is a link to
   /usr/lib/Motif1.2_R6/libXm.3.
 
+*** On HP-UX 11.0: Object "" does not have windowed ancestor
+
+Marcus Thiessel <marcus@xemacs.org>
+
+  XEmacs dies without core file and reports:
+
+    Error: Object "" does not have windowed ancestor.
+
+  This is a bug. Please apply the patch PHSS_19964 (check if
+  superseded). The other alternative is to link with Motif1.2_R6 (see
+  previous item).
+
+
 ** SCO OpenServer
 *** Native cc on SCO OpenServer 5 is now OK.  Icc may still throw you
 a curve.  Here is what Robert Lipe <robertl@arnet.com> says:
index e526103..4c42ecd 100755 (executable)
--- a/configure
+++ b/configure
@@ -14,7 +14,7 @@
 ### from the file `./configure.in'.
 ### To rebuild it, execute the command
 ###    autoconf
-### in the this directory.  You must have autoconf version 2.12 or later.
+### in the this directory.  You must have autoconf version 2.13 or later.
 
 ### This file is part of XEmacs.
 
@@ -1110,8 +1110,7 @@ case "$canonical" in
   m68*-sony-*      ) machine=news ;;
   mips-sony-*      ) machine=news-risc ;;
   clipper-*        ) machine=clipper ;;
-  arm-*            ) machine=arm ;;
-  armv34lb-*   ) machine=arm ;;
+  arm*             ) machine=arm ;;
   ns32k-*          ) machine=ns32000 ;;
 esac
 
@@ -1576,7 +1575,7 @@ xe_save_CFLAGS="$CFLAGS"
 # 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:1580: checking for $ac_word" >&5
+echo "configure:1579: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1603,7 +1602,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1607: checking for $ac_word" >&5
+echo "configure:1606: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1651,7 +1650,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1655: checking for $ac_word" >&5
+echo "configure:1654: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1680,7 +1679,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1684: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1683: 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'
@@ -1693,12 +1692,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 1697 "configure"
+#line 1696 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1702: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1701: \"$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
@@ -1726,19 +1725,19 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1730: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1729: 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:1735: checking whether we are using GNU C" >&5
+echo "configure:1734: 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:1742: \"$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:1741: \"$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
@@ -1756,7 +1755,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1760: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1759: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -1789,7 +1788,7 @@ if   test "$with_gcc" = "no"  -a "$GCC" = "yes"; then
   # 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:1793: checking for $ac_word" >&5
+echo "configure:1792: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1816,7 +1815,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1820: checking for $ac_word" >&5
+echo "configure:1819: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1864,7 +1863,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1868: checking for $ac_word" >&5
+echo "configure:1867: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1893,7 +1892,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1897: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1896: 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'
@@ -1906,12 +1905,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 1910 "configure"
+#line 1909 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1914: \"$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
@@ -1939,19 +1938,19 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1943: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1942: 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:1948: checking whether we are using GNU C" >&5
+echo "configure:1947: 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:1955: \"$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:1954: \"$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
@@ -1969,7 +1968,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1973: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1972: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -2002,7 +2001,7 @@ elif test "$with_gcc" = "yes" -a "$GCC" != "yes" ; then
   # 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:2006: checking for $ac_word" >&5
+echo "configure:2005: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2029,7 +2028,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2033: checking for $ac_word" >&5
+echo "configure:2032: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2077,7 +2076,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2081: checking for $ac_word" >&5
+echo "configure:2080: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2106,7 +2105,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:2110: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:2109: 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'
@@ -2119,12 +2118,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 2123 "configure"
+#line 2122 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:2128: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2127: \"$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
@@ -2152,19 +2151,19 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:2156: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:2155: 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:2161: checking whether we are using GNU C" >&5
+echo "configure:2160: 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:2168: \"$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:2167: \"$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
@@ -2182,7 +2181,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:2186: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2185: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -2219,7 +2218,7 @@ test -n "$CPP" -a -d "$CPP" && CPP=
 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:2223: checking how to run the C preprocessor" >&5
+echo "configure:2222: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -2232,13 +2231,13 @@ if test -z "$CPP"; then
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 2236 "configure"
+#line 2235 "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:2242: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2241: \"$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
   :
@@ -2249,13 +2248,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 2253 "configure"
+#line 2252 "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:2259: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2258: \"$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
   :
@@ -2266,13 +2265,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 2270 "configure"
+#line 2269 "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:2276: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2275: \"$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
   :
@@ -2299,9 +2298,9 @@ echo "$ac_t""$CPP" 1>&6
 
 
 echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:2303: checking for AIX" >&5
+echo "configure:2302: checking for AIX" >&5
 cat > conftest.$ac_ext <<EOF
-#line 2305 "configure"
+#line 2304 "configure"
 #include "confdefs.h"
 #ifdef _AIX
   yes
@@ -2327,9 +2326,9 @@ rm -f conftest*
 
  
 echo $ac_n "checking for GNU libc""... $ac_c" 1>&6
-echo "configure:2331: checking for GNU libc" >&5
+echo "configure:2330: checking for GNU libc" >&5
 cat > conftest.$ac_ext <<EOF
-#line 2333 "configure"
+#line 2332 "configure"
 #include "confdefs.h"
 #include <features.h>
 int main() {
@@ -2341,7 +2340,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2345: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2344: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   have_glibc=yes
 else
@@ -2418,7 +2417,7 @@ EOF
 esac
 
 cat > conftest.$ac_ext <<EOF
-#line 2422 "configure"
+#line 2421 "configure"
 #include "confdefs.h"
 int main () {
 #if defined __SUNPRO_C
@@ -2430,7 +2429,7 @@ return 0;
 #endif
 }
 EOF
-if { (eval echo configure:2434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:2433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -2652,6 +2651,64 @@ if test "$cflags_specified" = "no"; then
     CFLAGS="-O" ;  fi
 fi
 
+if test "$GCC" = "yes"; then
+echo $ac_n "checking for buggy gcc versions""... $ac_c" 1>&6
+echo "configure:2657: checking for buggy gcc versions" >&5
+GCC_VERSION=`$CC --version`
+case `uname -s`:`uname -m`:$GCC_VERSION in
+                   *:sun4*:2.8.1|*:sun4*:egcs-2.90.*)
+                        case "$CFLAGS" in
+            *-O2*|*-O3*)
+                case "$CFLAGS" in
+                    *-fno-schedule-insns*) ;;
+                    *)
+                        echo "$ac_t""Yes" 1>&6
+                        echo "configure: warning: Don't use -O2 with gcc 2.8.1 and egcs 1.0 under SPARC architectures" 1>&2
+                        echo "configure: warning: without also using -fno-schedule-insns." 1>&2
+                        { echo "configure: error: Aborting due to known problem" 1>&2; exit 1; }
+                        ;;
+                esac
+                ;;
+        esac
+        ;;
+                   Linux:alpha:egcs-2.91.*)
+        echo "$ac_t""Yes" 1>&6
+        echo "configure: warning: There have been reports of egcs-1.1 not compiling XEmacs correctly on" 1>&2
+        echo "configure: warning: Alpha Linux.  There have also been reports that egcs-1.0.3a is O.K." 1>&2
+        { echo "configure: error: Aborting due to known problem" 1>&2; exit 1; }
+        ;;
+    *:i*86*:2.7.2*)
+       case "$GCC_VERSION" in
+           2.7.2)
+               case "$CFLAGS" in
+                   *-O2*|*-O3*)
+                       case "$CFLAGS" in
+                           *-fno-strength-reduce*) ;;
+                           *)
+                                echo "$ac_t""Yes" 1>&6
+                               echo "configure: warning: Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using" 1>&2
+                               echo "configure: warning: -fno-strength-reduce." 1>&2
+                               { echo "configure: error: Aborting due to known problem" 1>&2; exit 1; }
+                               ;;
+                       esac
+                       ;;
+               esac
+               ;;
+       esac
+        case "$CFLAGS" in
+        *-fno-caller-saves*) ;;
+        *)
+            echo "$ac_t""Yes" 1>&6
+           echo "configure: warning: Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using" 1>&2
+           echo "configure: warning: -fno-caller-saves." 1>&2
+            { echo "configure: error: Aborting due to known problem" 1>&2; exit 1; }
+           ;;
+        esac
+       ;;
+esac
+fi
+echo "$ac_t""No" 1>&6
+
 
 if test "$GCC" = "yes"; then
   set x $ld_switch_system; shift; ld_switch_system=""
@@ -2716,7 +2773,7 @@ test -n "$unexec"          && extra_objs="$extra_objs $unexec" &&  if test "$ext
  fi
 
 echo $ac_n "checking for dynodump""... $ac_c" 1>&6
-echo "configure:2720: checking for dynodump" >&5
+echo "configure:2777: checking for dynodump" >&5
 if test "$unexec" != "unexsol2.o"; then
   echo "$ac_t""no" 1>&6
 else
@@ -2754,12 +2811,12 @@ if test "$unexec" = "unexaix.o"; then
   done
   
 echo $ac_n "checking for terminateAndUnload in -lC""... $ac_c" 1>&6
-echo "configure:2758: checking for terminateAndUnload in -lC" >&5
+echo "configure:2815: 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 2763 "configure"
+#line 2820 "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
@@ -2770,7 +2827,7 @@ int main() {
 terminateAndUnload()
 ; return 0; }
 EOF
-if { (eval echo configure:2774: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2831: \"$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
@@ -2878,7 +2935,7 @@ fi
 
 if test "$add_runtime_path" = "yes"; then
       echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6
-echo "configure:2882: checking "for runtime libraries flag"" >&5
+echo "configure:2939: checking "for runtime libraries flag"" >&5
   case "$opsys" in
     sol2 ) dash_r="-R" ;;
     decosf* | linux* | irix*) dash_r="-rpath " ;;
@@ -2900,14 +2957,14 @@ if test "$GCC" = "yes"; then
   done
 fi
         cat > conftest.$ac_ext <<EOF
-#line 2904 "configure"
+#line 2961 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   dash_r="$try_dash_r"
 else
@@ -3009,10 +3066,10 @@ else
 fi
 after_morecore_hook_exists=yes
 echo $ac_n "checking for malloc_get_state""... $ac_c" 1>&6
-echo "configure:3013: checking for malloc_get_state" >&5
+echo "configure:3070: checking for malloc_get_state" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3016 "configure"
+#line 3073 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char malloc_get_state(); below.  */
@@ -3035,7 +3092,7 @@ malloc_get_state();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3096: \"$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
@@ -3055,10 +3112,10 @@ doug_lea_malloc=no
 fi
 
 echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6
-echo "configure:3059: checking for malloc_set_state" >&5
+echo "configure:3116: checking for malloc_set_state" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3062 "configure"
+#line 3119 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char malloc_set_state(); below.  */
@@ -3081,7 +3138,7 @@ malloc_set_state();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3085: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3142: \"$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
@@ -3101,16 +3158,16 @@ doug_lea_malloc=no
 fi
 
 echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6
-echo "configure:3105: checking whether __after_morecore_hook exists" >&5
+echo "configure:3162: checking whether __after_morecore_hook exists" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3107 "configure"
+#line 3164 "configure"
 #include "confdefs.h"
 extern void (* __after_morecore_hook)();
 int main() {
 __after_morecore_hook = 0
 ; return 0; }
 EOF
-if { (eval echo configure:3114: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3171: \"$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
@@ -3169,7 +3226,7 @@ fi
 # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3173: checking for $ac_word" >&5
+echo "configure:3230: checking for $ac_word" >&5
 
 if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
@@ -3224,7 +3281,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
 # 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:3228: checking for a BSD compatible install" >&5
+echo "configure:3285: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 
   IFS="${IFS=  }"; ac_save_IFS="$IFS"; IFS=":"
@@ -3278,7 +3335,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3282: checking for $ac_word" >&5
+echo "configure:3339: checking for $ac_word" >&5
 
 if test -n "$YACC"; then
   ac_cv_prog_YACC="$YACC" # Let the user override the test.
@@ -3306,101 +3363,19 @@ done
 test -n "$YACC" || YACC="yacc"
 
 
-for ac_hdr in mach/mach.h sys/stropts.h sys/timeb.h sys/time.h unistd.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3314: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3317 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3322: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  { test "$extra_verbose" = "yes" && cat << EOF
-    Defining $ac_tr_hdr
-EOF
-cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-}
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-for ac_hdr in utime.h locale.h libgen.h fcntl.h ulimit.h cygwin/version.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3355: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 3358 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3363: \"$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*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  { test "$extra_verbose" = "yes" && cat << EOF
-    Defining $ac_tr_hdr
-EOF
-cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-}
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-for ac_hdr in kstat.h sys/pstat.h inttypes.h sys/un.h a.out.h
+for ac_hdr in   a.out.h   cygwin/version.h   fcntl.h   inttypes.h   libgen.h   locale.h   mach/mach.h   sys/param.h   sys/pstat.h   sys/stropts.h   sys/time.h   sys/timeb.h   sys/un.h   kstat.h   ulimit.h   unistd.h   utime.h 
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3396: checking for $ac_hdr" >&5
+echo "configure:3371: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3399 "configure"
+#line 3374 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3404: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3379: \"$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*
@@ -3430,10 +3405,10 @@ fi
 done
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:3434: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:3409: checking for sys/wait.h that is POSIX.1 compatible" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3437 "configure"
+#line 3412 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -3449,7 +3424,7 @@ wait (&s);
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:3453: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3428: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -3473,10 +3448,10 @@ EOF
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3477: checking for ANSI C header files" >&5
+echo "configure:3452: checking for ANSI C header files" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3480 "configure"
+#line 3455 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3484,7 +3459,7 @@ cat > conftest.$ac_ext <<EOF
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3488: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3463: \"$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*
@@ -3501,7 +3476,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3505 "configure"
+#line 3480 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -3519,7 +3494,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3523 "configure"
+#line 3498 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -3537,7 +3512,7 @@ fi
 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 3541 "configure"
+#line 3516 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3548,7 +3523,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:3552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:3527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -3574,10 +3549,10 @@ EOF
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:3578: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:3553: checking whether time.h and sys/time.h may both be included" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3581 "configure"
+#line 3556 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -3586,7 +3561,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:3590: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3565: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -3610,10 +3585,10 @@ EOF
 fi
 
 echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
-echo "configure:3614: checking for sys_siglist declaration in signal.h or unistd.h" >&5
+echo "configure:3589: checking for sys_siglist declaration in signal.h or unistd.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3617 "configure"
+#line 3592 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3625,7 +3600,7 @@ int main() {
 char *msg = *(sys_siglist + 1);
 ; return 0; }
 EOF
-if { (eval echo configure:3629: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_decl_sys_siglist=yes
 else
@@ -3650,9 +3625,9 @@ fi
 
 
 echo $ac_n "checking for struct utimbuf""... $ac_c" 1>&6
-echo "configure:3654: checking for struct utimbuf" >&5
+echo "configure:3629: checking for struct utimbuf" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3656 "configure"
+#line 3631 "configure"
 #include "confdefs.h"
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
@@ -3671,7 +3646,7 @@ int main() {
 static struct utimbuf x; x.actime = x.modtime;
 ; return 0; }
 EOF
-if { (eval echo configure:3675: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3650: \"$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
@@ -3691,10 +3666,10 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3695: checking return type of signal handlers" >&5
+echo "configure:3670: checking return type of signal handlers" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3698 "configure"
+#line 3673 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3711,7 +3686,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:3715: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3690: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -3733,10 +3708,10 @@ EOF
 
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3737: checking for size_t" >&5
+echo "configure:3712: checking for size_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3740 "configure"
+#line 3715 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3767,10 +3742,10 @@ EOF
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3771: checking for pid_t" >&5
+echo "configure:3746: checking for pid_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3774 "configure"
+#line 3749 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3801,10 +3776,10 @@ EOF
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3805: checking for uid_t in sys/types.h" >&5
+echo "configure:3780: checking for uid_t in sys/types.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3808 "configure"
+#line 3783 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -3840,10 +3815,10 @@ EOF
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:3844: checking for mode_t" >&5
+echo "configure:3819: checking for mode_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3847 "configure"
+#line 3822 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3874,10 +3849,10 @@ EOF
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:3878: checking for off_t" >&5
+echo "configure:3853: checking for off_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3881 "configure"
+#line 3856 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3908,10 +3883,10 @@ EOF
 fi
 
 echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:3912: checking for ssize_t" >&5
+echo "configure:3887: checking for ssize_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3915 "configure"
+#line 3890 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3943,9 +3918,9 @@ fi
 
 
 echo $ac_n "checking for struct timeval""... $ac_c" 1>&6
-echo "configure:3947: checking for struct timeval" >&5
+echo "configure:3922: checking for struct timeval" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3949 "configure"
+#line 3924 "configure"
 #include "confdefs.h"
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
@@ -3961,7 +3936,7 @@ int main() {
 static struct timeval x; x.tv_sec = x.tv_usec;
 ; return 0; }
 EOF
-if { (eval echo configure:3965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3940: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
   HAVE_TIMEVAL=yes
@@ -3983,10 +3958,10 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
-echo "configure:3987: checking whether struct tm is in sys/time.h or time.h" >&5
+echo "configure:3962: checking whether struct tm is in sys/time.h or time.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3990 "configure"
+#line 3965 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <time.h>
@@ -3994,7 +3969,7 @@ int main() {
 struct tm *tp; tp->tm_sec;
 ; return 0; }
 EOF
-if { (eval echo configure:3998: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3973: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm=time.h
 else
@@ -4018,10 +3993,10 @@ EOF
 fi
 
 echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
-echo "configure:4022: checking for tm_zone in struct tm" >&5
+echo "configure:3997: checking for tm_zone in struct tm" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4025 "configure"
+#line 4000 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_cv_struct_tm>
@@ -4029,7 +4004,7 @@ int main() {
 struct tm tm; tm.tm_zone;
 ; return 0; }
 EOF
-if { (eval echo configure:4033: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4008: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm_zone=yes
 else
@@ -4052,10 +4027,10 @@ EOF
 
 else
   echo $ac_n "checking for tzname""... $ac_c" 1>&6
-echo "configure:4056: checking for tzname" >&5
+echo "configure:4031: checking for tzname" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4059 "configure"
+#line 4034 "configure"
 #include "confdefs.h"
 #include <time.h>
 #ifndef tzname /* For SGI.  */
@@ -4065,7 +4040,7 @@ int main() {
 atoi(*tzname);
 ; return 0; }
 EOF
-if { (eval echo configure:4069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4044: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_var_tzname=yes
 else
@@ -4091,10 +4066,10 @@ fi
 
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:4095: checking for working const" >&5
+echo "configure:4070: checking for working const" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4098 "configure"
+#line 4073 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -4143,7 +4118,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:4147: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4122: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -4168,7 +4143,7 @@ fi
 
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:4172: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:4147: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 
 cat > conftestmake <<\EOF
@@ -4193,12 +4168,12 @@ fi
 
 
 echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:4197: checking whether byte ordering is bigendian" >&5
+echo "configure:4172: 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 4202 "configure"
+#line 4177 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4209,11 +4184,11 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4213: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4188: \"$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 4217 "configure"
+#line 4192 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4224,7 +4199,7 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4228: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4203: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -4241,7 +4216,7 @@ fi
 rm -f conftest*
 if test $ac_cv_c_bigendian = unknown; then
 cat > conftest.$ac_ext <<EOF
-#line 4245 "configure"
+#line 4220 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -4254,7 +4229,7 @@ main () {
   exit (u.c[sizeof (long) - 1] == 1);
 }
 EOF
-if { (eval echo configure:4258: \"$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_c_bigendian=no
 else
@@ -4281,10 +4256,10 @@ fi
 
 
 echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:4285: checking size of short" >&5
+echo "configure:4260: checking size of short" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4288 "configure"
+#line 4263 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4295,7 +4270,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4274: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_short=`cat conftestval`
 else
@@ -4323,10 +4298,10 @@ if test "$ac_cv_sizeof_short" = 0; then
   exit 1
 fi
 echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:4327: checking size of int" >&5
+echo "configure:4302: checking size of int" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4330 "configure"
+#line 4305 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4337,7 +4312,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4341: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4316: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_int=`cat conftestval`
 else
@@ -4359,10 +4334,10 @@ EOF
 
 
 echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:4363: checking size of long" >&5
+echo "configure:4338: checking size of long" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4366 "configure"
+#line 4341 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4373,7 +4348,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_long=`cat conftestval`
 else
@@ -4395,10 +4370,10 @@ EOF
 
 
 echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:4399: checking size of long long" >&5
+echo "configure:4374: checking size of long long" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4402 "configure"
+#line 4377 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4409,7 +4384,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4388: \"$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
@@ -4431,10 +4406,10 @@ EOF
 
 
 echo $ac_n "checking size of void *""... $ac_c" 1>&6
-echo "configure:4435: checking size of void *" >&5
+echo "configure:4410: checking size of void *" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4438 "configure"
+#line 4413 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4445,7 +4420,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4424: \"$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
@@ -4468,7 +4443,7 @@ EOF
 
 
 echo $ac_n "checking for long file names""... $ac_c" 1>&6
-echo "configure:4472: checking for long file names" >&5
+echo "configure:4447: 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:
@@ -4514,10 +4489,10 @@ fi
 
 
 echo $ac_n "checking for sin""... $ac_c" 1>&6
-echo "configure:4518: checking for sin" >&5
+echo "configure:4493: checking for sin" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4521 "configure"
+#line 4496 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char sin(); below.  */
@@ -4540,7 +4515,7 @@ sin();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4519: \"$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
@@ -4558,12 +4533,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-echo "configure:4562: checking for sin in -lm" >&5
+echo "configure:4537: 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 4567 "configure"
+#line 4542 "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
@@ -4574,7 +4549,7 @@ int main() {
 sin()
 ; return 0; }
 EOF
-if { (eval echo configure:4578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4553: \"$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
@@ -4618,14 +4593,14 @@ EOF
 
 
 cat > conftest.$ac_ext <<EOF
-#line 4622 "configure"
+#line 4597 "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:4629: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4604: \"$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
@@ -4642,14 +4617,14 @@ fi
 rm -f conftest*
 
 echo "checking type of mail spool file locking" 1>&6
-echo "configure:4646: checking type of mail spool file locking" >&5
+echo "configure:4621: 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:4650: checking for $ac_func" >&5
+echo "configure:4625: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4653 "configure"
+#line 4628 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4672,7 +4647,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4651: \"$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
@@ -4745,12 +4720,12 @@ test "$mail_locking" = "locking" -a "$ac_cv_func_locking" != "yes" && \
 case "$opsys" in decosf*)
   
 echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6
-echo "configure:4749: checking for cma_open in -lpthreads" >&5
+echo "configure:4724: 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 4754 "configure"
+#line 4729 "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
@@ -4761,7 +4736,7 @@ int main() {
 cma_open()
 ; return 0; }
 EOF
-if { (eval echo configure:4765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4740: \"$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
@@ -4797,7 +4772,7 @@ fi
 esac
 
 echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6
-echo "configure:4801: checking whether the -xildoff compiler flag is required" >&5
+echo "configure:4776: 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;
@@ -4806,19 +4781,21 @@ if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/nu
   else echo "$ac_t""no" 1>&6
 fi
 
-if test "$opsys" = "sol2" -a "$os_release" -ge 56; then
-  echo $ac_n "checking for \"-z ignore\" linker flag""... $ac_c" 1>&6
-echo "configure:4812: 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 ;;
-    *) echo "$ac_t""no" 1>&6 ;;
-  esac
+if test "$opsys" = "sol2"; then
+  if test "$os_release" -ge 56; then
+    echo $ac_n "checking for \"-z ignore\" linker flag""... $ac_c" 1>&6
+echo "configure:4788: 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 ;;
+      *) echo "$ac_t""no" 1>&6 ;;
+    esac
+  fi
 fi
 
 
 echo "checking "for specified window system"" 1>&6
-echo "configure:4822: checking "for specified window system"" >&5
+echo "configure:4799: checking "for specified window system"" >&5
 
 if test "$with_x11" != "no"; then
     test "$x_includes $x_libraries" != "NONE NONE" && \
@@ -4851,7 +4828,7 @@ if test "$with_x11" != "no"; then
 # 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:4855: checking for X" >&5
+echo "configure:4832: checking for X" >&5
 
 # Check whether --with-x or --without-x was given.
 if test "${with_x+set}" = set; then
@@ -4911,12 +4888,12 @@ if test "$ac_x_includes" = NO; then
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 4915 "configure"
+#line 4892 "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:4920: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4897: \"$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*
@@ -4985,14 +4962,14 @@ if test "$ac_x_libraries" = NO; then
   ac_save_LIBS="$LIBS"
   LIBS="-l$x_direct_test_library $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4989 "configure"
+#line 4966 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:4996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4973: \"$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.
@@ -5101,17 +5078,17 @@ else
     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:5105: checking whether -R must be followed by a space" >&5
+echo "configure:5082: 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 5108 "configure"
+#line 5085 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5115: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5092: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_nospace=yes
 else
@@ -5127,14 +5104,14 @@ rm -f conftest*
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat > conftest.$ac_ext <<EOF
-#line 5131 "configure"
+#line 5108 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5115: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_space=yes
 else
@@ -5170,12 +5147,12 @@ ac_cv_lib_dnet_dnet_ntoa=no
 else
 
 echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
-echo "configure:5174: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:5151: 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 5179 "configure"
+#line 5156 "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
@@ -5186,7 +5163,7 @@ int main() {
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:5190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5167: \"$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
@@ -5210,12 +5187,12 @@ fi
     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:5214: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:5191: 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 5219 "configure"
+#line 5196 "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
@@ -5226,7 +5203,7 @@ int main() {
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:5230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5207: \"$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
@@ -5255,10 +5232,10 @@ fi
     # 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:5259: checking for gethostbyname" >&5
+echo "configure:5236: checking for gethostbyname" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5262 "configure"
+#line 5239 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname(); below.  */
@@ -5281,7 +5258,7 @@ gethostbyname();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5262: \"$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
@@ -5302,12 +5279,12 @@ fi
     if test $ac_cv_func_gethostbyname = no; then
       
 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:5306: checking for gethostbyname in -lnsl" >&5
+echo "configure:5283: 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 5311 "configure"
+#line 5288 "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
@@ -5318,7 +5295,7 @@ int main() {
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:5322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5299: \"$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
@@ -5348,10 +5325,10 @@ fi
     # -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:5352: checking for connect" >&5
+echo "configure:5329: checking for connect" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5355 "configure"
+#line 5332 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect(); below.  */
@@ -5374,7 +5351,7 @@ connect();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5378: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5355: \"$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
@@ -5397,12 +5374,12 @@ fi
 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:5401: checking "$xe_msg_checking"" >&5
+echo "configure:5378: 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 5406 "configure"
+#line 5383 "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
@@ -5413,7 +5390,7 @@ int main() {
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:5417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5394: \"$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
@@ -5437,10 +5414,10 @@ fi
 
     # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX.
     echo $ac_n "checking for remove""... $ac_c" 1>&6
-echo "configure:5441: checking for remove" >&5
+echo "configure:5418: checking for remove" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5444 "configure"
+#line 5421 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove(); below.  */
@@ -5463,7 +5440,7 @@ remove();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5444: \"$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
@@ -5484,12 +5461,12 @@ fi
     if test $ac_cv_func_remove = no; then
       
 echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:5488: checking for remove in -lposix" >&5
+echo "configure:5465: 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 5493 "configure"
+#line 5470 "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
@@ -5500,7 +5477,7 @@ int main() {
 remove()
 ; return 0; }
 EOF
-if { (eval echo configure:5504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5481: \"$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
@@ -5524,10 +5501,10 @@ fi
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:5528: checking for shmat" >&5
+echo "configure:5505: checking for shmat" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5531 "configure"
+#line 5508 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat(); below.  */
@@ -5550,7 +5527,7 @@ shmat();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5554: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5531: \"$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
@@ -5571,12 +5548,12 @@ fi
     if test $ac_cv_func_shmat = no; then
       
 echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:5575: checking for shmat in -lipc" >&5
+echo "configure:5552: 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 5580 "configure"
+#line 5557 "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
@@ -5587,7 +5564,7 @@ int main() {
 shmat()
 ; return 0; }
 EOF
-if { (eval echo configure:5591: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5568: \"$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
@@ -5623,12 +5600,12 @@ fi
 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:5627: checking "$xe_msg_checking"" >&5
+echo "configure:5604: 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 5632 "configure"
+#line 5609 "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
@@ -5639,7 +5616,7 @@ int main() {
 IceConnectionNumber()
 ; return 0; }
 EOF
-if { (eval echo configure:5643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5620: \"$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
@@ -5808,7 +5785,7 @@ EOF
 
 
     echo "checking for X defines extracted by xmkmf" 1>&6
-echo "configure:5812: checking for X defines extracted by xmkmf" >&5
+echo "configure:5789: checking for X defines extracted by xmkmf" >&5
   rm -fr conftestdir
   if mkdir conftestdir; then
     cd conftestdir
@@ -5840,15 +5817,15 @@ EOF
 
     ac_safe=`echo "X11/Intrinsic.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Intrinsic.h""... $ac_c" 1>&6
-echo "configure:5844: checking for X11/Intrinsic.h" >&5
+echo "configure:5821: checking for X11/Intrinsic.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5847 "configure"
+#line 5824 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5852: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5829: \"$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*
@@ -5872,12 +5849,12 @@ fi
 
       
 echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
-echo "configure:5876: checking for XOpenDisplay in -lX11" >&5
+echo "configure:5853: 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 5881 "configure"
+#line 5858 "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
@@ -5888,7 +5865,7 @@ int main() {
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:5892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5869: \"$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
@@ -5913,12 +5890,12 @@ fi
 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:5917: checking "$xe_msg_checking"" >&5
+echo "configure:5894: 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 5922 "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
@@ -5929,7 +5906,7 @@ int main() {
 XGetFontProperty()
 ; return 0; }
 EOF
-if { (eval echo configure:5933: \"$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
@@ -5956,12 +5933,12 @@ fi
 
     
 echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6
-echo "configure:5960: checking for XShapeSelectInput in -lXext" >&5
+echo "configure:5937: 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 5965 "configure"
+#line 5942 "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
@@ -5972,7 +5949,7 @@ int main() {
 XShapeSelectInput()
 ; return 0; }
 EOF
-if { (eval echo configure:5976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5953: \"$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
@@ -5995,12 +5972,12 @@ fi
 
     
 echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6
-echo "configure:5999: checking for XtOpenDisplay in -lXt" >&5
+echo "configure:5976: 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 6004 "configure"
+#line 5981 "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
@@ -6011,7 +5988,7 @@ int main() {
 XtOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:6015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5992: \"$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
@@ -6034,14 +6011,14 @@ fi
 
 
   echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6
-echo "configure:6038: checking the version of X11 being used" >&5
+echo "configure:6015: checking the version of X11 being used" >&5
   cat > conftest.$ac_ext <<EOF
-#line 6040 "configure"
+#line 6017 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
     int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }
 EOF
-if { (eval echo configure:6045: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:6022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ./conftest foobar; x11_release=$?
 else
@@ -6065,10 +6042,10 @@ EOF
   for ac_func in XConvertCase
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6069: checking for $ac_func" >&5
+echo "configure:6046: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6072 "configure"
+#line 6049 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6091,7 +6068,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6072: \"$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
@@ -6123,15 +6100,15 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6127: checking for $ac_hdr" >&5
+echo "configure:6104: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6130 "configure"
+#line 6107 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6135: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6112: \"$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*
@@ -6162,7 +6139,7 @@ done
 
 
     echo $ac_n "checking for XFree86""... $ac_c" 1>&6
-echo "configure:6166: checking for XFree86" >&5
+echo "configure:6143: checking for XFree86" >&5
   if test -d "/usr/X386/include" -o \
           -f "/etc/XF86Config"    -o \
          -f "/etc/X11/XF86Config" -o \
@@ -6182,12 +6159,12 @@ EOF
 
     test -z "$with_xmu" && { 
 echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6
-echo "configure:6186: checking for XmuReadBitmapDataFromFile in -lXmu" >&5
+echo "configure:6163: 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 6191 "configure"
+#line 6168 "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
@@ -6198,7 +6175,7 @@ int main() {
 XmuReadBitmapDataFromFile()
 ; return 0; }
 EOF
-if { (eval echo configure:6202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6179: \"$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
@@ -6237,19 +6214,19 @@ EOF
 
       
 echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6
-echo "configure:6241: checking for main in -lXbsd" >&5
+echo "configure:6218: 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 6246 "configure"
+#line 6223 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:6253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6230: \"$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
@@ -6286,22 +6263,22 @@ fi
 fi 
 if test "$with_msw" != "no"; then
   echo "checking for MS-Windows" 1>&6
-echo "configure:6290: checking for MS-Windows" >&5
+echo "configure:6267: checking for MS-Windows" >&5
   
 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6
-echo "configure:6293: checking for main in -lgdi32" >&5
+echo "configure:6270: 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 6298 "configure"
+#line 6275 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:6305: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6282: \"$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
@@ -6367,12 +6344,12 @@ EOF
  fi
     fi
         cat > conftest.$ac_ext <<EOF
-#line 6371 "configure"
+#line 6348 "configure"
 #include "confdefs.h"
 #include <fcntl.h>
     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }
 EOF
-if { (eval echo configure:6376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:6353: \"$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
@@ -6447,7 +6424,7 @@ case "$x_libraries" in *X11R4* )
 esac
 
 echo "checking for WM_COMMAND option" 1>&6
-echo "configure:6451: checking for WM_COMMAND option" >&5;
+echo "configure:6428: checking for WM_COMMAND option" >&5;
 if test "$with_wmcommand" != "no"; then
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_WMCOMMAND
@@ -6462,15 +6439,15 @@ fi
 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:6466: checking for X11/Xauth.h" >&5
+echo "configure:6443: checking for X11/Xauth.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6469 "configure"
+#line 6446 "configure"
 #include "confdefs.h"
 #include <X11/Xauth.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6474: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6451: \"$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*
@@ -6493,12 +6470,12 @@ fi
  }
 test -z "$with_xauth" && { 
 echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6
-echo "configure:6497: checking for XauGetAuthByAddr in -lXau" >&5
+echo "configure:6474: 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 6502 "configure"
+#line 6479 "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
@@ -6509,7 +6486,7 @@ int main() {
 XauGetAuthByAddr()
 ; return 0; }
 EOF
-if { (eval echo configure:6513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6490: \"$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
@@ -6554,15 +6531,15 @@ if test "$with_tooltalk" != "no" ; then
       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:6558: checking for ${dir}tt_c.h" >&5
+echo "configure:6535: checking for ${dir}tt_c.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6561 "configure"
+#line 6538 "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:6566: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6543: \"$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*
@@ -6598,12 +6575,12 @@ if test "$with_tooltalk" != "no" ; then
 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:6602: checking "$xe_msg_checking"" >&5
+echo "configure:6579: 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 6607 "configure"
+#line 6584 "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
@@ -6614,7 +6591,7 @@ int main() {
 tt_message_create()
 ; return 0; }
 EOF
-if { (eval echo configure:6618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6595: \"$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
@@ -6671,15 +6648,15 @@ fi
 
 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:6675: checking for Dt/Dt.h" >&5
+echo "configure:6652: checking for Dt/Dt.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6678 "configure"
+#line 6655 "configure"
 #include "confdefs.h"
 #include <Dt/Dt.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6683: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6660: \"$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*
@@ -6702,12 +6679,12 @@ fi
  }
 test -z "$with_cde" && { 
 echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6
-echo "configure:6706: checking for DtDndDragStart in -lDtSvc" >&5
+echo "configure:6683: 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 6711 "configure"
+#line 6688 "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 +6695,7 @@ int main() {
 DtDndDragStart()
 ; 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:6699: \"$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
@@ -6787,7 +6764,7 @@ EOF
 fi
 
 echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6
-echo "configure:6791: checking if drag and drop API is needed" >&5
+echo "configure:6768: checking if drag and drop API is needed" >&5
 if test "$with_dragndrop" != "no" ; then
   if test -n "$dragndrop_proto" ; then
     with_dragndrop=yes
@@ -6808,18 +6785,18 @@ EOF
 fi
 
 echo "checking for LDAP" 1>&6
-echo "configure:6812: checking for LDAP" >&5
+echo "configure:6789: 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:6815: checking for ldap.h" >&5
+echo "configure:6792: checking for ldap.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6818 "configure"
+#line 6795 "configure"
 #include "confdefs.h"
 #include <ldap.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6823: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6800: \"$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*
@@ -6842,15 +6819,15 @@ fi
  }
 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:6846: checking for lber.h" >&5
+echo "configure:6823: checking for lber.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6849 "configure"
+#line 6826 "configure"
 #include "confdefs.h"
 #include <lber.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6854: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6831: \"$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*
@@ -6874,12 +6851,12 @@ fi
 if test "$with_ldap" != "no"; then
   
 echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6
-echo "configure:6878: checking for ldap_search in -lldap" >&5
+echo "configure:6855: 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 6883 "configure"
+#line 6860 "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
@@ -6890,7 +6867,7 @@ int main() {
 ldap_search()
 ; return 0; }
 EOF
-if { (eval echo configure:6894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6871: \"$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
@@ -6915,12 +6892,12 @@ fi
 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:6919: checking "$xe_msg_checking"" >&5
+echo "configure:6896: 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 6924 "configure"
+#line 6901 "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
@@ -6931,7 +6908,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:6935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6912: \"$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
@@ -6956,12 +6933,12 @@ fi
 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:6960: checking "$xe_msg_checking"" >&5
+echo "configure:6937: 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 6965 "configure"
+#line 6942 "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
@@ -6972,7 +6949,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:6976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6953: \"$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
@@ -6997,12 +6974,12 @@ fi
 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:7001: checking "$xe_msg_checking"" >&5
+echo "configure:6978: 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 7006 "configure"
+#line 6983 "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
@@ -7013,7 +6990,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:7017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6994: \"$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
@@ -7064,10 +7041,10 @@ EOF
   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:7068: checking for $ac_func" >&5
+echo "configure:7045: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7071 "configure"
+#line 7048 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7090,7 +7067,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7071: \"$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
@@ -7122,15 +7099,15 @@ fi
 
 if test "$window_system" != "none"; then
   echo "checking for graphics libraries" 1>&6
-echo "configure:7126: checking for graphics libraries" >&5
+echo "configure:7103: 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:7131: checking for Xpm - no older than 3.4f" >&5
+echo "configure:7108: checking for Xpm - no older than 3.4f" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 7134 "configure"
+#line 7111 "configure"
 #include "confdefs.h"
 #define XPM_NUMBERS
 #include <X11/xpm.h>
@@ -7139,7 +7116,7 @@ echo "configure:7131: checking for Xpm - no older than 3.4f" >&5
       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
       XpmIncludeVersion < 30406 ? 2 : 0 ;}
 EOF
-if { (eval echo configure:7143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:7120: \"$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
@@ -7181,17 +7158,17 @@ EOF
 
     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:7185: checking for \"FOR_MSW\" xpm" >&5
+echo "configure:7162: checking for \"FOR_MSW\" xpm" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 7188 "configure"
+#line 7165 "configure"
 #include "confdefs.h"
 
 int main() {
 XpmCreatePixmapFromData()
 ; return 0; }
 EOF
-if { (eval echo configure:7195: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   xpm_for_msw=no
 else
@@ -7217,15 +7194,15 @@ EOF
 
     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:7221: checking for compface.h" >&5
+echo "configure:7198: checking for compface.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7224 "configure"
+#line 7201 "configure"
 #include "confdefs.h"
 #include <compface.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7229: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7206: \"$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*
@@ -7248,12 +7225,12 @@ fi
  }
   test -z "$with_xface" && { 
 echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
-echo "configure:7252: checking for UnGenFace in -lcompface" >&5
+echo "configure:7229: 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 7257 "configure"
+#line 7234 "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
@@ -7264,7 +7241,7 @@ int main() {
 UnGenFace()
 ; return 0; }
 EOF
-if { (eval echo configure:7268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7245: \"$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
@@ -7316,12 +7293,12 @@ EOF
       if test "$with_png $with_tiff" != "no no"; then
     
 echo $ac_n "checking for inflate in -lc""... $ac_c" 1>&6
-echo "configure:7320: checking for inflate in -lc" >&5
+echo "configure:7297: 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 7325 "configure"
+#line 7302 "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
@@ -7332,7 +7309,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:7336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7313: \"$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
@@ -7351,12 +7328,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6
-echo "configure:7355: checking for inflate in -lz" >&5
+echo "configure:7332: 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 7360 "configure"
+#line 7337 "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
@@ -7367,7 +7344,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:7371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7348: \"$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
@@ -7386,12 +7363,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6
-echo "configure:7390: checking for inflate in -lgz" >&5
+echo "configure:7367: 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 7395 "configure"
+#line 7372 "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
@@ -7402,7 +7379,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:7406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7383: \"$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
@@ -7432,15 +7409,15 @@ fi
 
     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:7436: checking for jpeglib.h" >&5
+echo "configure:7413: checking for jpeglib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7439 "configure"
+#line 7416 "configure"
 #include "confdefs.h"
 #include <jpeglib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7444: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7421: \"$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*
@@ -7463,12 +7440,12 @@ fi
  }
   test -z "$with_jpeg" && { 
 echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6
-echo "configure:7467: checking for jpeg_destroy_decompress in -ljpeg" >&5
+echo "configure:7444: 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 7472 "configure"
+#line 7449 "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
@@ -7479,7 +7456,7 @@ int main() {
 jpeg_destroy_decompress()
 ; return 0; }
 EOF
-if { (eval echo configure:7483: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7460: \"$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
@@ -7515,10 +7492,10 @@ EOF
 
     png_problem=""
   test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6
-echo "configure:7519: checking for pow" >&5
+echo "configure:7496: checking for pow" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7522 "configure"
+#line 7499 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char pow(); below.  */
@@ -7541,7 +7518,7 @@ pow();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7545: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7522: \"$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
@@ -7562,15 +7539,15 @@ fi
  }
   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:7566: checking for png.h" >&5
+echo "configure:7543: checking for png.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7569 "configure"
+#line 7546 "configure"
 #include "confdefs.h"
 #include <png.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7574: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7551: \"$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*
@@ -7593,12 +7570,12 @@ fi
  }
   test -z "$with_png" && { 
 echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6
-echo "configure:7597: checking for png_read_image in -lpng" >&5
+echo "configure:7574: 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 7602 "configure"
+#line 7579 "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
@@ -7609,7 +7586,7 @@ int main() {
 png_read_image()
 ; return 0; }
 EOF
-if { (eval echo configure:7613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7590: \"$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
@@ -7632,10 +7609,10 @@ fi
  }
   if test -z "$with_png"; then
     echo $ac_n "checking for workable png version information""... $ac_c" 1>&6
-echo "configure:7636: checking for workable png version information" >&5
+echo "configure:7613: checking for workable png version information" >&5
     xe_check_libs="-lpng -lz"
     cat > conftest.$ac_ext <<EOF
-#line 7639 "configure"
+#line 7616 "configure"
 #include "confdefs.h"
 #include <png.h>
     int main(int c, char **v) {
@@ -7643,7 +7620,7 @@ echo "configure:7636: checking for workable png version information" >&5
     if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1;
     return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}
 EOF
-if { (eval echo configure:7647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:7624: \"$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
@@ -7686,15 +7663,15 @@ EOF
 
     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:7690: checking for tiffio.h" >&5
+echo "configure:7667: checking for tiffio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7693 "configure"
+#line 7670 "configure"
 #include "confdefs.h"
 #include <tiffio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7698: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7675: \"$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*
@@ -7717,12 +7694,12 @@ fi
  }
   test -z "$with_tiff" && { 
 echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6
-echo "configure:7721: checking for TIFFClientOpen in -ltiff" >&5
+echo "configure:7698: 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 7726 "configure"
+#line 7703 "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
@@ -7733,7 +7710,7 @@ int main() {
 TIFFClientOpen()
 ; return 0; }
 EOF
-if { (eval echo configure:7737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7714: \"$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
@@ -7772,10 +7749,10 @@ fi
 if test "$with_x11" = "yes"; then
 
   echo "checking for X11 graphics libraries" 1>&6
-echo "configure:7776: checking for X11 graphics libraries" >&5
+echo "configure:7753: checking for X11 graphics libraries" >&5
 
   echo "checking for the Athena widgets" 1>&6
-echo "configure:7779: checking for the Athena widgets" >&5
+echo "configure:7756: checking for the Athena widgets" >&5
 
     case "$with_athena" in
         "xaw" | "")    athena_variant=Xaw      athena_3d=no  ;;
@@ -7789,12 +7766,12 @@ echo "configure:7779: checking for the Athena widgets" >&5
     if test "$athena_3d" = "no"; then
     
 echo $ac_n "checking for XawScrollbarSetThumb in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:7793: checking for XawScrollbarSetThumb in -l$athena_variant" >&5
+echo "configure:7770: 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 7798 "configure"
+#line 7775 "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
@@ -7805,7 +7782,7 @@ int main() {
 XawScrollbarSetThumb()
 ; return 0; }
 EOF
-if { (eval echo configure:7809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7786: \"$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
@@ -7821,12 +7798,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
   echo "$ac_t""yes" 1>&6
           
 echo $ac_n "checking for threeDClassRec in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:7825: checking for threeDClassRec in -l$athena_variant" >&5
+echo "configure:7802: 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 7830 "configure"
+#line 7807 "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
@@ -7837,7 +7814,7 @@ int main() {
 threeDClassRec()
 ; return 0; }
 EOF
-if { (eval echo configure:7841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7818: \"$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
@@ -7868,12 +7845,12 @@ fi
   else
         
 echo $ac_n "checking for threeDClassRec in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:7872: checking for threeDClassRec in -l$athena_variant" >&5
+echo "configure:7849: 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 7877 "configure"
+#line 7854 "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
@@ -7884,7 +7861,7 @@ int main() {
 threeDClassRec()
 ; return 0; }
 EOF
-if { (eval echo configure:7888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7865: \"$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
@@ -7902,12 +7879,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for threeDClassRec in -lXaw""... $ac_c" 1>&6
-echo "configure:7906: checking for threeDClassRec in -lXaw" >&5
+echo "configure:7883: 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 7911 "configure"
+#line 7888 "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
@@ -7918,7 +7895,7 @@ int main() {
 threeDClassRec()
 ; return 0; }
 EOF
-if { (eval echo configure:7922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7899: \"$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
@@ -7949,15 +7926,15 @@ fi
     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:7953: checking for X11/Xaw/ThreeD.h" >&5
+echo "configure:7930: checking for X11/Xaw/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7956 "configure"
+#line 7933 "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:7961: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7938: \"$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*
@@ -7977,15 +7954,15 @@ else
   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:7981: checking for X11/Xaw/XawInit.h" >&5
+echo "configure:7958: checking for X11/Xaw/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7984 "configure"
+#line 7961 "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:7989: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7966: \"$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*
@@ -8011,15 +7988,15 @@ fi
   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:8015: checking for X11/$athena_variant/XawInit.h" >&5
+echo "configure:7992: checking for X11/$athena_variant/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8018 "configure"
+#line 7995 "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:8023: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8000: \"$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*
@@ -8036,15 +8013,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   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:8040: checking for X11/$athena_variant/ThreeD.h" >&5
+echo "configure:8017: checking for X11/$athena_variant/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8043 "configure"
+#line 8020 "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:8048: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8025: \"$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*
@@ -8072,15 +8049,15 @@ fi
         if test -z "$athena_h_path"; then
       ac_safe=`echo "$athena_variant/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $athena_variant/XawInit.h""... $ac_c" 1>&6
-echo "configure:8076: checking for $athena_variant/XawInit.h" >&5
+echo "configure:8053: checking for $athena_variant/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8079 "configure"
+#line 8056 "configure"
 #include "confdefs.h"
 #include <$athena_variant/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8084: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8061: \"$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*
@@ -8097,15 +8074,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $athena_variant/ThreeD.h""... $ac_c" 1>&6
-echo "configure:8101: checking for $athena_variant/ThreeD.h" >&5
+echo "configure:8078: checking for $athena_variant/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8104 "configure"
+#line 8081 "configure"
 #include "confdefs.h"
 #include <$athena_variant/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8109: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8086: \"$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*
@@ -8134,15 +8111,15 @@ fi
         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:8138: checking for X11/Xaw3d/XawInit.h" >&5
+echo "configure:8115: checking for X11/Xaw3d/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8141 "configure"
+#line 8118 "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:8146: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8123: \"$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*
@@ -8159,15 +8136,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   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:8163: checking for X11/Xaw3d/ThreeD.h" >&5
+echo "configure:8140: checking for X11/Xaw3d/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8166 "configure"
+#line 8143 "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:8171: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8148: \"$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*
@@ -8199,15 +8176,15 @@ fi
         if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
       ac_safe=`echo "Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xaw3d/XawInit.h""... $ac_c" 1>&6
-echo "configure:8203: checking for Xaw3d/XawInit.h" >&5
+echo "configure:8180: checking for Xaw3d/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8206 "configure"
+#line 8183 "configure"
 #include "confdefs.h"
 #include <Xaw3d/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8211: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8188: \"$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*
@@ -8224,15 +8201,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xaw3d/ThreeD.h""... $ac_c" 1>&6
-echo "configure:8228: checking for Xaw3d/ThreeD.h" >&5
+echo "configure:8205: checking for Xaw3d/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8231 "configure"
+#line 8208 "configure"
 #include "confdefs.h"
 #include <Xaw3d/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8236: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8213: \"$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*
@@ -8264,15 +8241,15 @@ fi
             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:8268: checking for X11/Xaw/ThreeD.h" >&5
+echo "configure:8245: checking for X11/Xaw/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8271 "configure"
+#line 8248 "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:8276: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8253: \"$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*
@@ -8307,15 +8284,15 @@ fi
 
     ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6
-echo "configure:8311: checking for Xm/Xm.h" >&5
+echo "configure:8288: checking for Xm/Xm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8314 "configure"
+#line 8291 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8319: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8296: \"$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*
@@ -8332,12 +8309,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   
 echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6
-echo "configure:8336: checking for XmStringFree in -lXm" >&5
+echo "configure:8313: 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 8341 "configure"
+#line 8318 "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
@@ -8348,7 +8325,7 @@ int main() {
 XmStringFree()
 ; return 0; }
 EOF
-if { (eval echo configure:8352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8329: \"$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
@@ -8377,9 +8354,9 @@ fi
 
   if test "$have_motif" = "yes"; then
         echo $ac_n "checking for Lesstif""... $ac_c" 1>&6
-echo "configure:8381: checking for Lesstif" >&5
+echo "configure:8358: checking for Lesstif" >&5
     cat > conftest.$ac_ext <<EOF
-#line 8383 "configure"
+#line 8360 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 #ifdef LESSTIF_VERSION
@@ -8712,7 +8689,7 @@ fi
 
 if test "$with_mule" = "yes" ; then
   echo "checking for Mule-related features" 1>&6
-echo "configure:8716: checking for Mule-related features" >&5
+echo "configure:8693: checking for Mule-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining MULE
 EOF
@@ -8737,15 +8714,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8741: checking for $ac_hdr" >&5
+echo "configure:8718: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8744 "configure"
+#line 8721 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8749: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8726: \"$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*
@@ -8776,12 +8753,12 @@ done
 
   
 echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6
-echo "configure:8780: checking for strerror in -lintl" >&5
+echo "configure:8757: 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 8785 "configure"
+#line 8762 "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
@@ -8792,7 +8769,7 @@ int main() {
 strerror()
 ; return 0; }
 EOF
-if { (eval echo configure:8796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8773: \"$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
@@ -8825,18 +8802,18 @@ fi
 
 
   echo "checking for Mule input methods" 1>&6
-echo "configure:8829: checking for Mule input methods" >&5
+echo "configure:8806: checking for Mule input methods" >&5
         case "$with_xim" in "" | "yes" )
     echo "checking for XIM" 1>&6
-echo "configure:8832: checking for XIM" >&5
+echo "configure:8809: checking for XIM" >&5
     
 echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6
-echo "configure:8835: checking for XOpenIM in -lX11" >&5
+echo "configure:8812: 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 8840 "configure"
+#line 8817 "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
@@ -8847,7 +8824,7 @@ int main() {
 XOpenIM()
 ; return 0; }
 EOF
-if { (eval echo configure:8851: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8828: \"$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
@@ -8871,12 +8848,12 @@ fi
         if test "$have_motif $have_lesstif" = "yes no"; then
       
 echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6
-echo "configure:8875: checking for XmImMbLookupString in -lXm" >&5
+echo "configure:8852: 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 8880 "configure"
+#line 8857 "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
@@ -8887,7 +8864,7 @@ int main() {
 XmImMbLookupString()
 ; return 0; }
 EOF
-if { (eval echo configure:8891: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8868: \"$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
@@ -8952,15 +8929,15 @@ EOF
 
     if test "$with_xfs" = "yes" ; then
     echo "checking for XFontSet" 1>&6
-echo "configure:8956: checking for XFontSet" >&5
+echo "configure:8933: checking for XFontSet" >&5
     
 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6
-echo "configure:8959: checking for XmbDrawString in -lX11" >&5
+echo "configure:8936: 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 8964 "configure"
+#line 8941 "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
@@ -8971,7 +8948,7 @@ int main() {
 XmbDrawString()
 ; return 0; }
 EOF
-if { (eval echo configure:8975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8952: \"$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
@@ -9011,15 +8988,15 @@ EOF
     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:9015: checking for wnn/jllib.h" >&5
+echo "configure:8992: checking for wnn/jllib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9018 "configure"
+#line 8995 "configure"
 #include "confdefs.h"
 #include <wnn/jllib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9023: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9000: \"$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*
@@ -9044,10 +9021,10 @@ fi
     for ac_func in crypt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9048: checking for $ac_func" >&5
+echo "configure:9025: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9051 "configure"
+#line 9028 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9070,7 +9047,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:9074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9051: \"$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
@@ -9099,12 +9076,12 @@ done
 
     test "$ac_cv_func_crypt" != "yes" && { 
 echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:9103: checking for crypt in -lcrypt" >&5
+echo "configure:9080: 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 9108 "configure"
+#line 9085 "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
@@ -9115,7 +9092,7 @@ int main() {
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:9119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9096: \"$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
@@ -9150,12 +9127,12 @@ fi
     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:9154: checking for jl_dic_list_e in -lwnn" >&5
+echo "configure:9131: 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 9159 "configure"
+#line 9136 "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
@@ -9166,7 +9143,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:9170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9147: \"$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
@@ -9184,12 +9161,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for jl_dic_list_e in -lwnn4""... $ac_c" 1>&6
-echo "configure:9188: checking for jl_dic_list_e in -lwnn4" >&5
+echo "configure:9165: 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 9193 "configure"
+#line 9170 "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
@@ -9200,7 +9177,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:9204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9181: \"$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
@@ -9218,12 +9195,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for jl_dic_list_e in -lwnn6""... $ac_c" 1>&6
-echo "configure:9222: checking for jl_dic_list_e in -lwnn6" >&5
+echo "configure:9199: 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 9227 "configure"
+#line 9204 "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
@@ -9234,7 +9211,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:9238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9215: \"$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
@@ -9252,12 +9229,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dic_list_e in -lwnn6_fromsrc""... $ac_c" 1>&6
-echo "configure:9256: checking for dic_list_e in -lwnn6_fromsrc" >&5
+echo "configure:9233: 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 9261 "configure"
+#line 9238 "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
@@ -9268,7 +9245,7 @@ int main() {
 dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:9272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9249: \"$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
@@ -9316,12 +9293,12 @@ EOF
     if test "$with_wnn6" != "no"; then
       
 echo $ac_n "checking for jl_fi_dic_list in -l$libwnn""... $ac_c" 1>&6
-echo "configure:9320: checking for jl_fi_dic_list in -l$libwnn" >&5
+echo "configure:9297: 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 9325 "configure"
+#line 9302 "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
@@ -9332,7 +9309,7 @@ int main() {
 jl_fi_dic_list()
 ; return 0; }
 EOF
-if { (eval echo configure:9336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9313: \"$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
@@ -9367,15 +9344,15 @@ EOF
   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:9371: checking for canna/jrkanji.h" >&5
+echo "configure:9348: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9374 "configure"
+#line 9351 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9379: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9356: \"$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*
@@ -9402,15 +9379,15 @@ fi
     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:9406: checking for canna/jrkanji.h" >&5
+echo "configure:9383: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9409 "configure"
+#line 9386 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9414: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9391: \"$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*
@@ -9438,15 +9415,15 @@ fi
 
   test -z "$with_canna" && { ac_safe=`echo "canna/RK.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for canna/RK.h""... $ac_c" 1>&6
-echo "configure:9442: checking for canna/RK.h" >&5
+echo "configure:9419: checking for canna/RK.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9445 "configure"
+#line 9422 "configure"
 #include "confdefs.h"
 #include <canna/RK.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9450: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9427: \"$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*
@@ -9469,12 +9446,12 @@ fi
  }
   test -z "$with_canna" && { 
 echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6
-echo "configure:9473: checking for RkBgnBun in -lRKC" >&5
+echo "configure:9450: 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 9478 "configure"
+#line 9455 "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
@@ -9485,7 +9462,7 @@ int main() {
 RkBgnBun()
 ; return 0; }
 EOF
-if { (eval echo configure:9489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9466: \"$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
@@ -9508,12 +9485,12 @@ fi
  }
   test -z "$with_canna" && { 
 echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6
-echo "configure:9512: checking for jrKanjiControl in -lcanna" >&5
+echo "configure:9489: 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 9517 "configure"
+#line 9494 "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
@@ -9524,7 +9501,7 @@ int main() {
 jrKanjiControl()
 ; return 0; }
 EOF
-if { (eval echo configure:9528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9505: \"$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
@@ -9573,12 +9550,12 @@ if test "$need_motif" = "yes" ; then
   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:9577: checking for layout_object_getvalue in -li18n" >&5
+echo "configure:9554: 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 9582 "configure"
+#line 9559 "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
@@ -9589,7 +9566,7 @@ int main() {
 layout_object_getvalue()
 ; return 0; }
 EOF
-if { (eval echo configure:9593: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9570: \"$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
@@ -9675,10 +9652,10 @@ fi
 for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo 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:9679: checking for $ac_func" >&5
+echo "configure:9656: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9682 "configure"
+#line 9659 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9701,7 +9678,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:9705: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9682: \"$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
@@ -9736,10 +9713,10 @@ extra_objs="$extra_objs realpath.o" &&  if test "$extra_verbose" = "yes"; then
 for ac_func in getloadavg
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9740: checking for $ac_func" >&5
+echo "configure:9717: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9743 "configure"
+#line 9720 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9762,7 +9739,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:9766: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9743: \"$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
@@ -9798,12 +9775,12 @@ then
 
     
 echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6
-echo "configure:9802: checking for kstat_open in -lkstat" >&5
+echo "configure:9779: 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 9807 "configure"
+#line 9784 "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
@@ -9814,7 +9791,7 @@ int main() {
 kstat_open()
 ; return 0; }
 EOF
-if { (eval echo configure:9818: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9795: \"$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
@@ -9848,12 +9825,12 @@ fi
 
     
 echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6
-echo "configure:9852: checking for kvm_read in -lkvm" >&5
+echo "configure:9829: 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 9857 "configure"
+#line 9834 "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
@@ -9864,7 +9841,7 @@ int main() {
 kvm_read()
 ; return 0; }
 EOF
-if { (eval echo configure:9868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9845: \"$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
@@ -9898,16 +9875,16 @@ fi
 fi
 
 echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6
-echo "configure:9902: checking whether netdb declares h_errno" >&5
+echo "configure:9879: checking whether netdb declares h_errno" >&5
 cat > conftest.$ac_ext <<EOF
-#line 9904 "configure"
+#line 9881 "configure"
 #include "confdefs.h"
 #include <netdb.h>
 int main() {
 return h_errno;
 ; return 0; }
 EOF
-if { (eval echo configure:9911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9888: \"$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
@@ -9927,16 +9904,16 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6
-echo "configure:9931: checking for sigsetjmp" >&5
+echo "configure:9908: checking for sigsetjmp" >&5
 cat > conftest.$ac_ext <<EOF
-#line 9933 "configure"
+#line 9910 "configure"
 #include "confdefs.h"
 #include <setjmp.h>
 int main() {
 sigjmp_buf bar; sigsetjmp (bar, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:9940: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9917: \"$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
@@ -9956,11 +9933,11 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6
-echo "configure:9960: checking whether localtime caches TZ" >&5
+echo "configure:9937: checking whether localtime caches TZ" >&5
 
 if test "$ac_cv_func_tzset" = "yes"; then
 cat > conftest.$ac_ext <<EOF
-#line 9964 "configure"
+#line 9941 "configure"
 #include "confdefs.h"
 #include <time.h>
 #if STDC_HEADERS
@@ -9995,7 +9972,7 @@ main()
   exit (0);
 }
 EOF
-if { (eval echo configure:9999: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:9976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   emacs_cv_localtime_cache=no
 else
@@ -10025,9 +10002,9 @@ fi
 
 if test "$HAVE_TIMEVAL" = "yes"; then
 echo $ac_n "checking whether gettimeofday accepts one or two arguments""... $ac_c" 1>&6
-echo "configure:10029: checking whether gettimeofday accepts one or two arguments" >&5
+echo "configure:10006: checking whether gettimeofday accepts one or two arguments" >&5
 cat > conftest.$ac_ext <<EOF
-#line 10031 "configure"
+#line 10008 "configure"
 #include "confdefs.h"
 
 #ifdef TIME_WITH_SYS_TIME
@@ -10048,7 +10025,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:10052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10029: \"$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
 
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:10074: checking for inline" >&5
+echo "configure:10051: checking for inline" >&5
 
 ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 10079 "configure"
+#line 10056 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:10086: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10063: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
 # 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:10136: checking for working alloca.h" >&5
+echo "configure:10113: checking for working alloca.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10139 "configure"
+#line 10116 "configure"
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
 char *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:10146: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10123: \"$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
@@ -10166,10 +10143,10 @@ EOF
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:10170: checking for alloca" >&5
+echo "configure:10147: checking for alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10173 "configure"
+#line 10150 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -10197,7 +10174,7 @@ int main() {
 char *p = (char *) alloca(1);
 ; return 0; }
 EOF
-if { (eval echo configure:10201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10178: \"$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
@@ -10236,10 +10213,10 @@ EOF
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:10240: checking whether alloca needs Cray hooks" >&5
+echo "configure:10217: checking whether alloca needs Cray hooks" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10243 "configure"
+#line 10220 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -10263,10 +10240,10 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
 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:10267: checking for $ac_func" >&5
+echo "configure:10244: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10270 "configure"
+#line 10247 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -10289,7 +10266,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10270: \"$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
@@ -10319,10 +10296,10 @@ done
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:10323: checking stack direction for C alloca" >&5
+echo "configure:10300: checking stack direction for C alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10326 "configure"
+#line 10303 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -10341,7 +10318,7 @@ main ()
   exit (find_stack_direction() < 0);
 }
 EOF
-if { (eval echo configure:10345: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_c_stack_direction=1
 else
@@ -10370,15 +10347,15 @@ test -n "$ALLOCA" && extra_objs="$extra_objs $ALLOCA" &&  if test "$extra_verbos
 
 ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
-echo "configure:10374: checking for vfork.h" >&5
+echo "configure:10351: checking for vfork.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10377 "configure"
+#line 10354 "configure"
 #include "confdefs.h"
 #include <vfork.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10382: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10359: \"$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*
@@ -10406,10 +10383,10 @@ else
 fi
 
 echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:10410: checking for working vfork" >&5
+echo "configure:10387: checking for working vfork" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10413 "configure"
+#line 10390 "configure"
 #include "confdefs.h"
 /* Thanks to Paul Eggert for this test.  */
 #include <stdio.h>
@@ -10504,7 +10481,7 @@ main() {
   }
 }
 EOF
-if { (eval echo configure:10508: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_vfork_works=yes
 else
 
 
 echo $ac_n "checking for working strcoll""... $ac_c" 1>&6
-echo "configure:10534: checking for working strcoll" >&5
+echo "configure:10511: checking for working strcoll" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10537 "configure"
+#line 10514 "configure"
 #include "confdefs.h"
 #include <string.h>
 main ()
@@ -10543,7 +10520,7 @@ main ()
        strcoll ("123", "456") >= 0);
 }
 EOF
-if { (eval echo configure:10547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_strcoll_works=yes
 else
 for ac_func in getpgrp
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10575: checking for $ac_func" >&5
+echo "configure:10552: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10578 "configure"
+#line 10555 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -10597,7 +10574,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10578: \"$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
 done
 
 echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6
-echo "configure:10629: checking whether getpgrp takes no argument" >&5
+echo "configure:10606: checking whether getpgrp takes no argument" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10632 "configure"
+#line 10609 "configure"
 #include "confdefs.h"
 
 /*
@@ -10683,7 +10660,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:10687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10664: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_getpgrp_void=yes
 else
 
 
 echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:10714: checking for working mmap" >&5
+echo "configure:10691: checking for working mmap" >&5
 case "$opsys" in ultrix* ) have_mmap=no ;; *)
 cat > conftest.$ac_ext <<EOF
-#line 10717 "configure"
+#line 10694 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <unistd.h>
@@ -10746,7 +10723,7 @@ int main (int argc, char *argv[])
   return 1;
 }
 EOF
-if { (eval echo configure:10750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   have_mmap=yes
 else
@@ -10772,9 +10749,9 @@ test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no
 if test "$rel_alloc $have_mmap" = "default yes"; then
   if test "$doug_lea_malloc" = "yes"; then
         echo $ac_n "checking for M_MMAP_THRESHOLD""... $ac_c" 1>&6
-echo "configure:10776: checking for M_MMAP_THRESHOLD" >&5
+echo "configure:10753: checking for M_MMAP_THRESHOLD" >&5
     cat > conftest.$ac_ext <<EOF
-#line 10778 "configure"
+#line 10755 "configure"
 #include "confdefs.h"
 #include <malloc.h>
 int main() {
@@ -10786,7 +10763,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:10790: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10767: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   rel_alloc=no; echo "$ac_t""yes" 1>&6;
 else
@@ -10811,15 +10788,15 @@ EOF
 
 ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for termios.h""... $ac_c" 1>&6
-echo "configure:10815: checking for termios.h" >&5
+echo "configure:10792: checking for termios.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10818 "configure"
+#line 10795 "configure"
 #include "confdefs.h"
 #include <termios.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10823: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10800: \"$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*
@@ -10862,15 +10839,15 @@ else
   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:10866: checking for termio.h" >&5
+echo "configure:10843: checking for termio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10869 "configure"
+#line 10846 "configure"
 #include "confdefs.h"
 #include <termio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10874: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10851: \"$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*
 
 
 echo $ac_n "checking for socket""... $ac_c" 1>&6
-echo "configure:10906: checking for socket" >&5
+echo "configure:10883: checking for socket" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10909 "configure"
+#line 10886 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char socket(); below.  */
@@ -10928,7 +10905,7 @@ socket();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10932: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10909: \"$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
@@ -10943,15 +10920,15 @@ if eval "test \"`echo '$ac_cv_func_'socket`\" = yes"; then
   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:10947: checking for netinet/in.h" >&5
+echo "configure:10924: checking for netinet/in.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10950 "configure"
+#line 10927 "configure"
 #include "confdefs.h"
 #include <netinet/in.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10955: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10932: \"$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*
@@ -10968,15 +10945,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   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:10972: checking for arpa/inet.h" >&5
+echo "configure:10949: checking for arpa/inet.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10975 "configure"
+#line 10952 "configure"
 #include "confdefs.h"
 #include <arpa/inet.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10980: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10957: \"$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*
@@ -11001,9 +10978,9 @@ EOF
 }
 
       echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6
-echo "configure:11005: checking "for sun_len member in struct sockaddr_un"" >&5
+echo "configure:10982: checking "for sun_len member in struct sockaddr_un"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 11007 "configure"
+#line 10984 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -11014,7 +10991,7 @@ int main() {
 static struct sockaddr_un x; x.sun_len = 1;
 ; return 0; }
 EOF
-if { (eval echo configure:11018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10995: \"$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
@@ -11032,9 +11009,9 @@ else
 fi
 rm -f conftest*
       echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6
-echo "configure:11036: checking "for ip_mreq struct in netinet/in.h"" >&5
+echo "configure:11013: checking "for ip_mreq struct in netinet/in.h"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 11038 "configure"
+#line 11015 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -11044,7 +11021,7 @@ int main() {
 static struct ip_mreq x;
 ; return 0; }
 EOF
-if { (eval echo configure:11048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11025: \"$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
 
 
 echo $ac_n "checking for msgget""... $ac_c" 1>&6
-echo "configure:11079: checking for msgget" >&5
+echo "configure:11056: checking for msgget" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11082 "configure"
+#line 11059 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char msgget(); below.  */
@@ -11101,7 +11078,7 @@ msgget();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11082: \"$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
@@ -11116,15 +11093,15 @@ if eval "test \"`echo '$ac_cv_func_'msgget`\" = yes"; then
   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:11120: checking for sys/ipc.h" >&5
+echo "configure:11097: checking for sys/ipc.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11123 "configure"
+#line 11100 "configure"
 #include "confdefs.h"
 #include <sys/ipc.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11128: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11105: \"$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*
@@ -11141,15 +11118,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   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:11145: checking for sys/msg.h" >&5
+echo "configure:11122: checking for sys/msg.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11148 "configure"
+#line 11125 "configure"
 #include "confdefs.h"
 #include <sys/msg.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11153: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11130: \"$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*
 
 ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dirent.h""... $ac_c" 1>&6
-echo "configure:11191: checking for dirent.h" >&5
+echo "configure:11168: checking for dirent.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11194 "configure"
+#line 11171 "configure"
 #include "confdefs.h"
 #include <dirent.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11199: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11176: \"$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*
@@ -11222,15 +11199,15 @@ else
   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:11226: checking for sys/dir.h" >&5
+echo "configure:11203: checking for sys/dir.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11229 "configure"
+#line 11206 "configure"
 #include "confdefs.h"
 #include <sys/dir.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11234: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11211: \"$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*
 
 ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for nlist.h""... $ac_c" 1>&6
-echo "configure:11267: checking for nlist.h" >&5
+echo "configure:11244: checking for nlist.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11270 "configure"
+#line 11247 "configure"
 #include "confdefs.h"
 #include <nlist.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11275: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11252: \"$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*
 
 
 echo "checking "for sound support"" 1>&6
-echo "configure:11305: checking "for sound support"" >&5
+echo "configure:11282: 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:11312: checking for multimedia/audio_device.h" >&5
+echo "configure:11289: checking for multimedia/audio_device.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11315 "configure"
+#line 11292 "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:11320: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11297: \"$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*
       if test -z "$native_sound_lib"; then
         
 echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6
-echo "configure:11368: checking for ALopenport in -laudio" >&5
+echo "configure:11345: 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 11373 "configure"
+#line 11350 "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
@@ -11380,7 +11357,7 @@ int main() {
 ALopenport()
 ; return 0; }
 EOF
-if { (eval echo configure:11384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11361: \"$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
       if test -z "$native_sound_lib"; then
        
 echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6
-echo "configure:11415: checking for AOpenAudio in -lAlib" >&5
+echo "configure:11392: 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 11420 "configure"
+#line 11397 "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
@@ -11427,7 +11404,7 @@ int main() {
 AOpenAudio()
 ; return 0; }
 EOF
-if { (eval echo configure:11431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11408: \"$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
     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:11469: checking for ${dir}/soundcard.h" >&5
+echo "configure:11446: checking for ${dir}/soundcard.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11472 "configure"
+#line 11449 "configure"
 #include "confdefs.h"
 #include <${dir}/soundcard.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11477: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11454: \"$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*
 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:11531: checking for audio/audiolib.h" >&5
+echo "configure:11508: checking for audio/audiolib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11534 "configure"
+#line 11511 "configure"
 #include "confdefs.h"
 #include <audio/audiolib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11539: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11516: \"$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*
@@ -11553,12 +11530,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   
     
 echo $ac_n "checking for AuOpenServer in -laudio""... $ac_c" 1>&6
-echo "configure:11557: checking for AuOpenServer in -laudio" >&5
+echo "configure:11534: 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 11562 "configure"
+#line 11539 "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
@@ -11569,7 +11546,7 @@ int main() {
 AuOpenServer()
 ; return 0; }
 EOF
-if { (eval echo configure:11573: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11550: \"$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
@@ -11608,7 +11585,7 @@ EOF
  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 11612 "configure"
+#line 11589 "configure"
 #include "confdefs.h"
 #include <audio/Xtutil.h>
 EOF
@@ -11639,7 +11616,7 @@ if test "$with_esd_sound" != "no"; then
   # 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:11643: checking for $ac_word" >&5
+echo "configure:11620: 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.
     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:11672: checking for esd_play_stream" >&5
+echo "configure:11649: checking for esd_play_stream" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11675 "configure"
+#line 11652 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char esd_play_stream(); below.  */
@@ -11694,7 +11671,7 @@ esd_play_stream();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11675: \"$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
@@ -11745,7 +11722,7 @@ test -z "$with_tty" && with_tty=yes
 
 if test "$with_tty" = "yes"  ; then
   echo "checking for TTY-related features" 1>&6
-echo "configure:11749: checking for TTY-related features" >&5
+echo "configure:11726: checking for TTY-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_TTY
 EOF
@@ -11761,12 +11738,12 @@ EOF
     if test -z "$with_ncurses"; then
     
 echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
-echo "configure:11765: checking for tgetent in -lncurses" >&5
+echo "configure:11742: 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 11770 "configure"
+#line 11747 "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
@@ -11777,7 +11754,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:11781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11758: \"$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
@@ -11810,15 +11787,15 @@ EOF
 
     ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6
-echo "configure:11814: checking for ncurses/curses.h" >&5
+echo "configure:11791: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11817 "configure"
+#line 11794 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11822: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11799: \"$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*
 
     ac_safe=`echo "ncurses/term.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6
-echo "configure:11844: checking for ncurses/term.h" >&5
+echo "configure:11821: checking for ncurses/term.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11847 "configure"
+#line 11824 "configure"
 #include "confdefs.h"
 #include <ncurses/term.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11852: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11829: \"$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*
       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:11882: checking for ncurses/curses.h" >&5
+echo "configure:11859: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11885 "configure"
+#line 11862 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11890: \"$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*
        for lib in curses termlib termcap; do
          
 echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6
-echo "configure:11925: checking for tgetent in -l$lib" >&5
+echo "configure:11902: 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 11930 "configure"
+#line 11907 "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
@@ -11937,7 +11914,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:11941: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11918: \"$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
       else
        
 echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6
-echo "configure:11972: checking for tgetent in -lcurses" >&5
+echo "configure:11949: 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 11977 "configure"
+#line 11954 "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
@@ -11984,7 +11961,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:11988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11965: \"$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
@@ -12002,12 +11979,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6
-echo "configure:12006: checking for tgetent in -ltermcap" >&5
+echo "configure:11983: 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 12011 "configure"
+#line 11988 "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
@@ -12018,7 +11995,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:12022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11999: \"$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
@@ -12066,15 +12043,15 @@ EOF
 
     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:12070: checking for gpm.h" >&5
+echo "configure:12047: checking for gpm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12073 "configure"
+#line 12050 "configure"
 #include "confdefs.h"
 #include <gpm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12078: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12055: \"$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*
  }
   test -z "$with_gpm" && { 
 echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
-echo "configure:12101: checking for Gpm_Open in -lgpm" >&5
+echo "configure:12078: 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 12106 "configure"
+#line 12083 "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
@@ -12113,7 +12090,7 @@ int main() {
 Gpm_Open()
 ; return 0; }
 EOF
-if { (eval echo configure:12117: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12094: \"$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
@@ -12163,20 +12140,20 @@ test "$with_x11" = "yes" -o "$with_tty" = "yes" && extra_objs="$extra_objs event
 
 test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
   != "no no no" && echo "checking for database support" 1>&6
-echo "configure:12167: checking for database support" >&5
+echo "configure:12144: 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:12172: checking for ndbm.h" >&5
+echo "configure:12149: checking for ndbm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12175 "configure"
+#line 12152 "configure"
 #include "confdefs.h"
 #include <ndbm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12180: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12157: \"$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*
 if test "$with_database_gdbm" != "no"; then
   
 echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6
-echo "configure:12210: checking for dbm_open in -lgdbm" >&5
+echo "configure:12187: 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 12215 "configure"
+#line 12192 "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
@@ -12222,7 +12199,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:12226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12203: \"$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
 
 if test "$with_database_dbm" != "no"; then
   echo $ac_n "checking for dbm_open""... $ac_c" 1>&6
-echo "configure:12254: checking for dbm_open" >&5
+echo "configure:12231: checking for dbm_open" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12257 "configure"
+#line 12234 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbm_open(); below.  */
@@ -12276,7 +12253,7 @@ dbm_open();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12280: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12257: \"$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
@@ -12295,12 +12272,12 @@ else
 
     
 echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
-echo "configure:12299: checking for dbm_open in -ldbm" >&5
+echo "configure:12276: 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 12304 "configure"
+#line 12281 "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
@@ -12311,7 +12288,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:12315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12292: \"$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
@@ -12352,10 +12329,10 @@ EOF
 
 if test "$with_database_berkdb" != "no"; then
   echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6
-echo "configure:12356: checking for Berkeley db.h" >&5
+echo "configure:12333: checking for Berkeley db.h" >&5
   for path in "db/db.h" "db.h"; do
     cat > conftest.$ac_ext <<EOF
-#line 12359 "configure"
+#line 12336 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -12377,7 +12354,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12381: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12358: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   db_h_path="$path"; break
 else
@@ -12393,9 +12370,9 @@ rm -f conftest*
 
   if test "$with_database_berkdb" != "no"; then
     echo $ac_n "checking for Berkeley DB version""... $ac_c" 1>&6
-echo "configure:12397: checking for Berkeley DB version" >&5
+echo "configure:12374: checking for Berkeley DB version" >&5
     cat > conftest.$ac_ext <<EOF
-#line 12399 "configure"
+#line 12376 "configure"
 #include "confdefs.h"
 #include <$db_h_path>
 #if DB_VERSION_MAJOR > 1
 rm -f conftest*
 
     echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6
-echo "configure:12418: checking for $dbfunc" >&5
+echo "configure:12395: checking for $dbfunc" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12421 "configure"
+#line 12398 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $dbfunc(); below.  */
@@ -12440,7 +12417,7 @@ $dbfunc();
 
 ; 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:12421: \"$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
@@ -12459,12 +12436,12 @@ else
 
     
 echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6
-echo "configure:12463: checking for $dbfunc in -ldb" >&5
+echo "configure:12440: 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 12468 "configure"
+#line 12445 "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
@@ -12475,7 +12452,7 @@ int main() {
 $dbfunc()
 ; return 0; }
 EOF
-if { (eval echo configure:12479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12456: \"$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
 if test "$with_socks" = "yes"; then
   
 echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6
-echo "configure:12543: checking for SOCKSinit in -lsocks" >&5
+echo "configure:12520: 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 12548 "configure"
+#line 12525 "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
@@ -12555,7 +12532,7 @@ int main() {
 SOCKSinit()
 ; return 0; }
 EOF
-if { (eval echo configure:12559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12536: \"$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
 
 if test "$with_modules" != "no"; then
   echo "checking for module support" 1>&6
-echo "configure:12614: checking for module support" >&5
+echo "configure:12591: 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:12618: checking for dlfcn.h" >&5
+echo "configure:12595: checking for dlfcn.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12621 "configure"
+#line 12598 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12626: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12603: \"$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*
@@ -12640,12 +12617,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   
     
 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:12644: checking for dlopen in -ldl" >&5
+echo "configure:12621: 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 12649 "configure"
+#line 12626 "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
@@ -12656,7 +12633,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:12660: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12637: \"$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
@@ -12675,12 +12652,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6
-echo "configure:12679: checking for dlopen in -lc" >&5
+echo "configure:12656: 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 12684 "configure"
+#line 12661 "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
@@ -12691,7 +12668,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:12695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12672: \"$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
@@ -12730,12 +12707,12 @@ EOF
   else
     
 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:12734: checking for shl_load in -ldld" >&5
+echo "configure:12711: 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 12739 "configure"
+#line 12716 "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
@@ -12746,7 +12723,7 @@ int main() {
 shl_load()
 ; return 0; }
 EOF
-if { (eval echo configure:12750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12727: \"$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
@@ -12773,12 +12750,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6
-echo "configure:12777: checking for dld_init in -ldld" >&5
+echo "configure:12754: 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 12782 "configure"
+#line 12759 "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
@@ -12789,7 +12766,7 @@ int main() {
 dld_init()
 ; return 0; }
 EOF
-if { (eval echo configure:12793: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12770: \"$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
@@ -12834,7 +12811,7 @@ xehost=$canonical
 xealias=$internal_configuration
 
 echo "checking how to build dynamic libraries for ${xehost}" 1>&6
-echo "configure:12838: checking how to build dynamic libraries for ${xehost}" >&5
+echo "configure:12815: checking how to build dynamic libraries for ${xehost}" >&5
 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts.
 case "$xehost" in
 *-*-linux-gnu*) ;;
@@ -12862,9 +12839,9 @@ if test "$GCC" = "yes"; then
   XEGCC=yes
 else
   echo $ac_n "checking checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:12866: checking checking whether we are using GNU C" >&5
+echo "configure:12843: checking checking whether we are using GNU C" >&5
   cat > conftest.$ac_ext <<EOF
-#line 12868 "configure"
+#line 12845 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -12886,7 +12863,7 @@ rm -f conftest*
 fi
 
 echo $ac_n "checking how to produce PIC code""... $ac_c" 1>&6
-echo "configure:12890: checking how to produce PIC code" >&5
+echo "configure:12867: checking how to produce PIC code" >&5
 wl=
 
 can_build_shared=yes
@@ -12979,18 +12956,18 @@ if test -n "$dll_cflags"; then
   
   # 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:12983: checking if PIC flag ${dll_cflags} really works" >&5
+echo "configure:12960: checking if PIC flag ${dll_cflags} really works" >&5
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $dll_cflags -DPIC"
   cat > conftest.$ac_ext <<EOF
-#line 12987 "configure"
+#line 12964 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:12994: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12971: \"$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
@@ -13021,7 +12998,7 @@ cc_produces_so=no
 xldf=
 xcldf=
 echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6
-echo "configure:13025: checking if C compiler can produce shared libraries" >&5
+echo "configure:13002: checking if C compiler can produce shared libraries" >&5
 if test "$XEGCC" = yes; then
   xcldf="-shared"
   xldf="-shared"
@@ -13072,14 +13049,14 @@ if test -n "$xcldf"; then
   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 13076 "configure"
+#line 13053 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:13083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13060: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cc_produces_so=yes
 else
@@ -13104,7 +13081,7 @@ if test -z "$LTLD"; then
   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:13108: checking for ld used by GCC" >&5
+echo "configure:13085: checking for ld used by GCC" >&5
     ac_prog=`($CC -print-prog-name=ld) 2>&5`
     case "$ac_prog" in
     # Accept absolute paths.
@@ -13129,7 +13106,7 @@ echo "configure:13108: checking for ld used by GCC" >&5
     esac
   else
     echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:13133: checking for GNU ld" >&5
+echo "configure:13110: checking for GNU ld" >&5
   fi
 
   if test -z "$LTLD"; then
@@ -13167,7 +13144,7 @@ ld_dynamic_link_flags=
 
 # 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:13171: checking if the linker is GNU ld" >&5
+echo "configure:13148: 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
@@ -13194,7 +13171,7 @@ else
   # 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:13198: checking whether the linker supports shared libraries" >&5
+echo "configure:13175: checking whether the linker supports shared libraries" >&5
   dll_ld=$CC
   dll_ldflags=$LDFLAGS
   ld_shlibs=yes
@@ -13409,10 +13386,10 @@ EOF
     for ac_func in dlerror _dlerror
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13413: checking for $ac_func" >&5
+echo "configure:13390: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13416 "configure"
+#line 13393 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -13435,7 +13412,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:13439: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13416: \"$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
@@ -13474,11 +13451,11 @@ done
 fi
 
 cat > conftest.$ac_ext <<EOF
-#line 13478 "configure"
+#line 13455 "configure"
 #include "confdefs.h"
 int main(int c,char *v[]){return 0;}
 EOF
-if { (eval echo configure:13482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:13459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
index d3cb65d..df3b77b 100644 (file)
@@ -14,7 +14,7 @@ define([AC_INIT_NOTICE],
 ### from the file `./configure.in'.
 ### To rebuild it, execute the command
 ###    autoconf
-### in the this directory.  You must have autoconf version 2.12 or later.
+### in the this directory.  You must have autoconf version 2.13 or later.
 
 ### This file is part of XEmacs.
 
@@ -50,7 +50,7 @@ dnl configuration code and autoconf macros.
 dnl We use the m4 quoting characters [ ] (as established by the
 dnl autoconf system), so quote them like this: [[foo]]
 
-AC_PREREQ(2.12)dnl
+AC_PREREQ(2.13)dnl
 dnl Redefine some standard autoconf macros
 dnl here is how XEmacs is different:
 dnl - no cache file
@@ -1083,8 +1083,7 @@ case "$canonical" in
   m68*-sony-*      ) machine=news ;;
   mips-sony-*      ) machine=news-risc ;;
   clipper-*        ) machine=clipper ;;
-  arm-*            ) machine=arm ;;
-  armv[34][lb]-*   ) machine=arm ;;
+  arm*             ) machine=arm ;;
   ns32k-*          ) machine=ns32000 ;;
 esac
 
@@ -1861,6 +1860,70 @@ if test "$cflags_specified" = "no"; then
   fi
 fi
 
+dnl Search for GCC specific build problems we know about
+if test "$GCC" = "yes"; then
+AC_MSG_CHECKING(for buggy gcc versions)
+GCC_VERSION=`$CC --version`
+case `uname -s`:`uname -m`:$GCC_VERSION in
+       dnl egcs 2.90.21 (egcs-1.00 release)
+       dnl egcs 2.90.29 (egcs-1.0.3 release)
+    *:sun4*:2.8.1|*:sun4*:egcs-2.90.*)
+        dnl Don't use -O2 with gcc 2.8.1 and egcs 1.0 under SPARC architectures
+        dnl without also using `-fno-schedule-insns'.
+        case "$CFLAGS" in
+            *-O2*|*-O3*)
+                case "$CFLAGS" in
+                    *-fno-schedule-insns*) ;;
+                    *)
+                        AC_MSG_RESULT(Yes)
+                        AC_MSG_WARN(Don't use -O2 with gcc 2.8.1 and egcs 1.0 under SPARC architectures)
+                        AC_MSG_WARN(without also using -fno-schedule-insns.)
+                        AC_MSG_ERROR(Aborting due to known problem)
+                        ;;
+                esac
+                ;;
+        esac
+        ;;
+       dnl egcs-2.91.57 (egcs-1.1 release)
+       dnl egcs-2.91.66 (egcs-1.1.2 release)
+    Linux:alpha:egcs-2.91.*)
+        AC_MSG_RESULT(Yes)
+        AC_MSG_WARN(There have been reports of egcs-1.1 not compiling XEmacs correctly on)
+        AC_MSG_WARN(Alpha Linux.  There have also been reports that egcs-1.0.3a is O.K.)
+        AC_MSG_ERROR(Aborting due to known problem)
+        ;;
+    *:i*86*:2.7.2*)
+       case "$GCC_VERSION" in
+           2.7.2)
+               case "$CFLAGS" in
+                   *-O2*|*-O3*)
+                       case "$CFLAGS" in
+                           *-fno-strength-reduce*) ;;
+                           *)
+                                AC_MSG_RESULT(Yes)
+                               AC_MSG_WARN(Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using)
+                               AC_MSG_WARN(-fno-strength-reduce.)
+                               AC_MSG_ERROR(Aborting due to known problem)
+                               ;;
+                       esac
+                       ;;
+               esac
+               ;;
+       esac
+        case "$CFLAGS" in
+        *-fno-caller-saves*) ;;
+        *)
+            AC_MSG_RESULT(Yes)
+           AC_MSG_WARN(Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using)
+           AC_MSG_WARN(-fno-caller-saves.)
+            AC_MSG_ERROR(Aborting due to known problem)
+           ;;
+        esac
+       ;;
+esac
+fi
+AC_MSG_RESULT(No)
+
 dnl Inform compiler that certain flags are meant for the linker
 dnl XE_PROTECT_LINKER_FLAGS(shell_var)
 define([XE_PROTECT_LINKER_FLAGS], [
@@ -2217,9 +2280,25 @@ AC_PROG_INSTALL
 AC_PROG_YACC
 
 dnl checks for header files
-AC_CHECK_HEADERS(mach/mach.h sys/stropts.h sys/timeb.h sys/time.h unistd.h)
-AC_CHECK_HEADERS(utime.h locale.h libgen.h fcntl.h ulimit.h cygwin/version.h)
-AC_CHECK_HEADERS(kstat.h sys/pstat.h inttypes.h sys/un.h a.out.h)
+AC_CHECK_HEADERS(dnl
+  a.out.h dnl
+  cygwin/version.h dnl
+  fcntl.h dnl
+  inttypes.h dnl
+  libgen.h dnl
+  locale.h dnl
+  mach/mach.h dnl
+  sys/param.h dnl
+  sys/pstat.h dnl
+  sys/stropts.h dnl
+  sys/time.h dnl
+  sys/timeb.h dnl
+  sys/un.h dnl
+  kstat.h dnl
+  ulimit.h dnl
+  unistd.h dnl
+  utime.h dnl
+)
 AC_HEADER_SYS_WAIT
 AC_HEADER_STDC
 AC_HEADER_TIME
@@ -2344,13 +2423,15 @@ if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/nu
 fi
 
 dnl Link with "-z ignore" on Solaris if supported
-if test "$opsys" = "sol2" -a "$os_release" -ge 56; then
-  AC_MSG_CHECKING(for \"-z ignore\" linker flag)
-  case "`ld -h 2>&1`" in
-    *-z\ ignore\|record* ) AC_MSG_RESULT(yes)
-      XE_PREPEND(-z ignore, ld_switch_site) ;;
-    *) AC_MSG_RESULT(no) ;;
-  esac
+if test "$opsys" = "sol2"; then
+  if test "$os_release" -ge 56; then
+    AC_MSG_CHECKING(for \"-z ignore\" linker flag)
+    case "`ld -h 2>&1`" in
+      *-z\ ignore\|record* ) AC_MSG_RESULT(yes)
+        XE_PREPEND(-z ignore, ld_switch_site) ;;
+      *) AC_MSG_RESULT(no) ;;
+    esac
+  fi
 fi
 
 dnl ----------------------
index e7cfc57..c4da971 100644 (file)
-                      ==============================
-                      \e$BF|K\8l\e(B GNUEMACS(Mule) \e$BF~LgJT\e(B
-                      ==============================
+Copyright (c) 1985, 1996 Free Software Foundation, Inc.
+\e$B;HMQ>r7o$O%U%!%$%k:G8e$r;2>H$N$3$H\e(B
+          \e$B$"$J$?$,8=:_8+$F$$$k$N$O\e(B XEmacs \e$BF~Lg%,%$%I$G$9!#\e(B
 
-\e$BCm0U!'\e(B          \e$B$3$NF~LgJT$O!"!V=,$&$h$j47$l$m!W$r%b%C%H!<$K:n@.$5$l$F$$$^\e(B
-               \e$B$9!#\e(B">>" \e$B$+$i;O$^$k9T$O!"$=$N;~2?$r$9$Y$-$+$r;X<($7$F$$$^$9!#\e(B
+XEmacs \e$B$N%3%^%s%I$rF~NO$9$k$K$O!"0lHL$K%3%s%H%m!<%k%-!<!J%-!<%H%C%W$K\e(B 
+CTRL \e$B$H$+\e(B CTL \e$B$H=q$$$F$"$k!K$d%a%?%-!<$r;H$$$^$9!#%-!<%\!<%I$K$h$C$F$O!"\e(B
+META \e$B%-!<$O\e(B ALT \e$B$d\e(B EDIT \e$B$H=q$+$l$F$$$?$j!"B>$N$b$N$G$"$C$?$j$7$^$9\e(B 
+\e$B!JNc$($P!"\e(BSun \e$B$N%-!<%\!<%I$G$O!"%9%Z!<%9%P!<$N:8$N%@%$%"%b%s%I%-!<$,\e(B 
+META \e$B$G$9!K!#\e(BMETA \e$B%-!<$,L5$$>l9g$O!"\e(BESC \e$B$rBe$o$j$K;H$&$3$H$,$G$-$^$9!#\e(B
+\e$B$=$3$G!"\e(BMETA \e$B$H$+\e(B CONTROL \e$B$H$+$r=q$/Be$o$j$K!"<!$N$h$&$J5-9f$r;H$&$3$H\e(B
+\e$B$K$7$^$9!#\e(B
 
+ C-<\e$BJ8;z\e(B>   \e$B%3%s%H%m!<%k%-!<$r2!$7$?$^$^!"\e(B<\e$BJ8;z\e(B>\e$B%-!<$r2!$7$^$9!#Nc$($P!"\e(B
+           C-f \e$B$O%3%s%H%m!<%k%-!<$r2!$7$J$,$i\e(B f \e$B$N%-!<$r2!$9$3$H$G$9!#\e(B
 
-     Mule \e$B$N%3%^%s%I$rF~NO$9$k$H$-$K$O!"0lHLE*$K%3%s%H%m!<%k!&%-!<!J%-!<!&\e(B
-\e$B%H%C%W$K!"\e(BCTRL \e$B$"$k$$$O!"\e(BCTL \e$B$H=q$$$F$"$k!K$d%a%?!&%-!<!JIaDL!"%(%9%1!<%W!&\e(B
-\e$B%-!<$r;H$&!K$,;H$o$l$^$9!#$=$3$G!"\e(BCONTROL \e$B$H$+\e(B META \e$B$H$+=q$/Be$o$j$K!"<!$N\e(B
-\e$B$h$&$J5-9f$r;H$&$3$H$K$7$^$9!#\e(B
+ M-<\e$BJ8;z\e(B>   \e$B%a%?%-!<$r2!$7$?$^$^!"\e(B<\e$BJ8;z\e(B>\e$B%-!<$r2!$7$^$9!#$b$7%a%?%-!<$,$J\e(B
+           \e$B$$>l9g$O!"%(%9%1!<%W%-!<$r2!$7$F$+$iN%$7!"$=$l$+$i\e(B<\e$BJ8;z\e(B>\e$B%-!<\e(B
+           \e$B$r2!$7$^$9!#0J9_%(%9%1!<%W%-!<$N$3$H$r\e(B <ESC> \e$B$H=q$-$^$9!#\e(B
 
-C-<\e$BJ8;z\e(B>       \e$B%3%s%H%m!<%k!&%-!<$r2!$7$?$^$^!"\e(B<\e$BJ8;z\e(B>\e$B%-!<$r2!$7$^$9!#Nc$($P!"\e(B
-               C-f  \e$B$O!"%3%s%H%m!<%k!&%-!<$r2!$7$J$,$i\e(B f \e$B$N%-!<$r2!$9$3$H$r\e(B
-               \e$B0UL#$7$^$9!#\e(B
-<<Blank lines inserted here by startup of help-with-tutorial>>
-       >> \e$B$=$l$G$O!"\e(BC-v\e$B!J\e(BView Next Screen; \e$B<!$N2hLL$r8+$k!K$r%?%$%W$7$F\e(B
-          \e$B$_$F2<$5$$!#<!$N2hLL$K?J$`$3$H$,$G$-$^$9!#\e(B
-         \e$B0J9_!"0l2hLL$rFI$_=*$($k$?$S$KF1MM$K$7$F<!$N2hLL$KFI$_?J$s$G\e(B
-         \e$B2<$5$$!#\e(B
+\e$B!*=EMW!*\e(B: XEmacs\e$B$r=*N;$9$k$K$O!"\e(BC-x C-c \e$B$r%?%$%W$7$^$9!#\e(B
 
-ESC <\e$BJ8;z\e(B>     \e$B%(%9%1!<%W!&%-!<$r2!$7$F$+$iN%$7!"$=$l$+$i\e(B<\e$BJ8;z\e(B>\e$B%-!<$r2!$7$^\e(B
-               \e$B$9!#\e(B
+">>" \e$B$G;O$^$k9T$O!"$=$N;~2?$r$9$Y$-$+$r;X<($7$F$$$^$9!#Nc$($P!"\e(B
+<<Middle of page left blank for didactic purposes. Text continues below.>>
+>>  \e$B$G$O\e(B C-v \e$B!J<!$N2hLL$r8+$k!K$r%?%$%W$7$F<!$N2hLL$K?J$s$G2<$5$$!#\e(B
+       \e$B!J$5$"!"$d$C$F$_$^$7$g$&!#%3%s%H%m!<%k%-!<$r2!$7$J$,$i\e(B v \e$B$G$9!K\e(B
+       \e$B0J9_!"0l2hLL$rFI$_=*$($k$?$S$KF1MM$K$7$F<!$N2hLL$KFI$_?J$s$G2<$5$$!#\e(B
 
-\e$BCm0U!'\e(B         <\e$BJ8;z\e(B>\e$B$O!"BgJ8;z$G$b>.J8;z$G$b%3%^%s%I$H$7$F$OF1$80UL#$K$J$j\e(B
-               \e$B$^$9!#%a%?%-!<$,;H$($k$J$i$P\e(B ESC <\e$BJ8;z\e(B> \e$B$NBe$o$j$K\e(B M-<\e$BJ8;z\e(B>
-              (\e$B%a%?%-!<$r2!$7$?$^$^\e(B<\e$BJ8;z\e(B>\e$B%-!<$r2!$9\e(B) \e$B$,;H$($^$9!#\e(B
+\e$BA0$N2hLL$H<!$N2hLL$H$G$O!"I=<($5$l$kFbMF$K2?9T$+$N=E$J$j$,$"$j$^$9!#$3\e(B
+\e$B$l$O!"I=<($5$l$F$$$kFbMF$,O"B3$7$F$$$k$3$H$,$9$0H=$k$h$&$K$9$k$?$a$G$9!#\e(B
 
-\e$B=EMW$G$9!'\e(B     Emacs\e$B$r=*N;$5$;$?$$;~$O!"\e(BC-x C-c \e$B$r%?%$%W$7$^$9!#\e(BEmacs\e$B$r\e(Bcsh
-               \e$B$+$i5/F0$7$F$$$k>l9g!"%5%9%Z%s%I$9$k!J0l;~E*$K;_$a$k\e(B)\e$B$3$H$,\e(B
-               \e$B=PMh$^$9!#\e(BEmacs\e$B$r%5%9%Z%s%I$9$k$K$O!"\e(BC-z\e$B$r%?%$%W$7$^$9!#\e(B
+\e$B$^$:$O!"%U%!%$%k$NCf$r0\F0$7$F9T$/J}K!$rCN$kI,MW$,$"$j$^$9!#\e(BC-v \e$B$K$h$C\e(B
+\e$B$F@h$K?J$`$3$H$O$b$&H=$j$^$7$?!#85$KLa$k$K$O!"\e(BM-v \e$B!J%a%?%-!<$r2!$7$J$,\e(B
+\e$B$i\e(B v\e$B!"$b$7$/$O\e(B <ESC> \e$B$r2!$7$FN%$7$F\e(B v\e$B!K$G$9!#\e(B
 
+>> M-v \e$B$H\e(B C-v \e$B$r;H$C$F!"A08e$K0\F0$9$k$3$H$r2?2s$+;n$7$F2<$5$$!#\e(B
 
-     \e$B$5$F!"$3$l$+$i$O!"0l2hLLJ,FI$_=*$($?$i!"\e(BC-v  \e$B$rF~NO$7$F9T$C$F2<$5$$!#\e(B
 
-     \e$BA0$N2hLL$H<!$N2hLL$H$G$O!"I=<($5$l$kFbMF$K2?9TJ8$+$N=E$J$j$,$"$j$^$9!#\e(B
-\e$B$3$l$O!"I=<($5$l$F$$$kFbMF$,O"B3$7$F$$$k$3$H$,$9$0H=$k$h$&$K$9$k$?$a$G$9!#\e(B
+\e$B!v$3$3$^$G$NMWLs\e(B
+================
 
-
-     \e$B$^$:$O!"%U%!%$%k$NCf$r0\F0$7$F9T$/J}K!$rCN$kI,MW$,$"$j$^$9!#\e(BC-v  \e$B$K$h\e(B
-\e$B$C$F@h$K?J$`$3$H$O$b$&H=$j$^$7$?!#85$KLa$k$K$O!"\e(BESC v \e$B$r%?%$%W$7$^$9!#\e(B
-
-      >> ESC v \e$B$H\e(B C-v  \e$B$r;H$C$F!"A08e$K0\F0$9$k$3$H$r2?2s$+;n$7$F$_$J$5$$!#\e(B
-
-\e$BMWLs\e(B
-====
      \e$B%U%!%$%k$r2hLLKh$K8+$F9T$/$K$O!"<!$N%3%^%s%I$r;H$$$^$9!#\e(B
 
-     C-v     \e$BA0$K0l2hLLJ,?J$`\e(B
-     ESC v   \e$B8e$m$K0l2hLLJ,La$k\e(B
-     C-l     \e$B2hLL$r=q$-D>$9!#$3$N$H$-!"85%+!<%=%k$N$"$C$?9T$,\e(B
-             \e$B2hLL$NCf1{$K$/$k$h$&$K$9$k\e(B
+     C-v     \e$B<!$N2hLL$K?J$`\e(B
+     M-v     \e$BA0$N2hLL$KLa$k\e(B
+     C-l     \e$B2hLL$r=q$-D>$9!#$3$N$H$-!"%+!<%=%k$N$"$k9T$,2hLL$NCf1{$K\e(B
+            \e$B$/$k$h$&$K$9$k!#!J\e(BC-1 \e$B$8$c$J$/$C$F\e(B C-L \e$B$G$9$h!*!K\e(B
 
-       >> \e$B:#%+!<%=%k$,$I$3$K$"$k$+!"$=$N6a$/$K$I$s$J%F%-%9%H$,=q$+$l$F$$$k\e(B
-          \e$B$+$r3P$($J$5$$!#\e(BC-l  \e$B$r%?%$%W$7!"%+!<%=%k$,$I$3$K0\F0$7$?$+!"$=$N\e(B
-          \e$B6a$/$N%F%-%9%H$O$I$&$J$C$?$+$rD4$Y$F$_$J$5$$!#\e(B
+>> \e$B%+!<%=%k$r8+$D$1!"$=$N6a$/$K$I$s$JJ8>O$,=q$+$l$F$$$k$+$r3P$(!"\e(B
+   \e$B$=$l$+$i\e(B C-l \e$B$r%?%$%W$7$F2<$5$$!#\e(B
+   \e$B%+!<%=%k$,$I$3$K0\F0$7$?$+!"$=$N6a$/$N%F%-%9%H$O$I$&$J$C$?$+$rD4$Y\e(B
+   \e$B$F$_$^$7$g$&!#\e(B
 
-\e$B4pK\E*$J%+!<%=%k$N@)8f\e(B
-======================
 
-     \e$B2hLLKh$N0\F0$O$G$-$k$h$&$K$J$j$^$7$?!#:#EY$O!"2hLL$NCf$G!"FCDj$N>l=j$K\e(B
-\e$B0\F0$9$k$?$a$NJ}K!$r21$($^$7$g$&!#$3$l$K$O$$$/$D$+$N$d$jJ}$,$"$j$^$9!#0l$D\e(B
-\e$B$NJ}K!$O!"A0\e(B(previous)\e$B<!\e(B(next)\e$B@h\e(B(forward)\e$B8e\e(B(backward)\e$B$K0\F0$9$k%3%^%s%I$r;H\e(B
-\e$B$&$3$H$G$9!#$3$l$i$N%3%^%s%I$O$=$l$>$l!"\e(BC-p,  C-n, C-f,C-b \e$B$K3d$jEv$F$i$l$F\e(B
-\e$B$*$j!"8=:_$N>l=j$+$i?7$7$$>l=j$K%+!<%=%k$r0\F0$5$;$^$9!#?^$G=q$1$P!"\e(B
+\e$B!v4pK\E*$J%+!<%=%k$N@)8f\e(B
+========================
 
+\e$B2hLLKh$N0\F0$O$G$-$k$h$&$K$J$j$^$7$?!#:#EY$O!"2hLL$NCf$G!"FCDj$N>l=j$K\e(B
+\e$B0\F0$9$k$?$a$NJ}K!$r21$($^$7$g$&!#\e(B
+
+\e$B$3$l$K$O$$$/$D$+$N$d$jJ}$,$"$j$^$9!#0lHV4pK\E*$JJ}K!$O\e(B C-p, C-b, C-f,
+C-n \e$B$r;H$&$3$H$G$9!#$3$l$i$O$=$l$>$l%+!<%=%k$rA0$N9T!"A0$NJ8;z!"<!$NJ8\e(B
+\e$B;z!"<!$N9T$K0\F0$5$;$^$9!#?^$G=q$1$P!"\e(B
 
                                \e$BA0$N9T!$\e(BC-p
                                     :
                                     :
-     \e$B8e$NJ8;z!$\e(BC-b   ....   \e$B8=:_$N%+!<%=%k0LCV\e(B   ....   \e$B@h$NJ8;z!$\e(BC-f
+     \e$BA0$NJ8;z!$\e(BC-b   ....   \e$B8=:_$N%+!<%=%k0LCV\e(B   ....   \e$B<!$NJ8;z!$\e(BC-f
                                     :
                                     :
                                \e$B<!$N9T!$\e(BC-n
 
+>> C-n \e$B$H\e(B C-p \e$B$G%+!<%=%k$r>e?^$N??Cf$N9T$KF0$+$7$F2<$5$$!#$=$l$+$i\e(B C-l 
+   \e$B$r%?%$%W$7$F?^$NA4BN$,2hLLCf1{$K$/$k$h$&$K$7$F$_$^$7$g$&!#\e(B
 
-     \e$B$3$l$i$O!"$=$l$>$l!"\e(BPrevious, Next, Backward, Forward \e$B$NF,J8;z$K$J$C$F\e(B
-\e$B$$$k$N$G!"21$($d$9$$$G$7$g$&!#$3$l$i$O!"4pK\E*$J%+!<%=%k0\F0%3%^%s%I$G$"$j!"\e(B
-\e$B$$$D$G$b;H$&$b$N$G$9!#\e(B
 
-       >> C-n \e$B$r2?2s$+%?%$%W$7!"!J:#!"$"$J$?$,FI$s$G$$$k!K$3$N9T$^$G%+!<%=\e(B
-          \e$B%k$r0\F0$5$;$J$5$$!#\e(B
+\e$B$3$l$i$O$N%3%^%s%I$O$=$l$>$l!"\e(BPrevious, Next, Backward, Forward \e$B$NF,J8\e(B
+\e$B;z$K$J$C$F$$$k$N$G!"21$($d$9$$$G$7$g$&!#$3$l$i$O!"4pK\E*$J%+!<%=%k0\F0\e(B
+\e$B%3%^%s%I$G$"$j!"$$$D$G$b;H$&$b$N$G$9!#:#$3$3$G3P$($F2<$5$$!#\e(B
 
-       >> C-f  \e$B$r;H$C$F9T$NCf$[$I$K0\F0$7!"\e(BC-p  \e$B$G2?9T$+>e$K0\F0$7$F$_$J$5\e(B
-          \e$B$$!#%+!<%=%k$N0LCV$NJQ2=$KCm0U$7$J$5$$!#\e(B
+>> C-n \e$B$r2?2s$+%?%$%W$7!"!J:#!"$"$J$?$,FI$s$G$$$k!K$3$N9T$^$G%+!<%=%k\e(B
+   \e$B$r0\F0$5$;$^$7$g$&!#\e(B
 
-       >> \e$B9T$N@hF,$G\e(B C-b \e$B$r%?%$%W$7$F$_$J$5$$!#%+!<%=%k$O$I$3$K0\F0$7$^$9$+\e(B
-          \e$B!)$5$i$K$b$&>/$7\e(B C-b \e$B$r%?%$%W$7!":#EY$O\e(B C-f  \e$B$G9TKv$NJ}$KLa$j$J$5\e(B
-          \e$B$$!#%+!<%=%k$,9TKv$r1[$($k$H$I$&$J$j$^$9$+!)\e(B
+>> C-f \e$B$r;H$C$F9T$NCf$[$I$K0\F0$7!"\e(BC-p \e$B$G2?9T$+>e$K0\F0$5$;$^$7$g$&!#\e(B
+   \e$B%+!<%=%k$N0LCV$NJQ2=$KCm0U$7$F2<$5$$!#\e(B
 
+\e$B3F9T$N:G8e$K$O!JL\$K$O8+$($J$$!K\e(B Newline \e$BJ8;z$,$"$j$^$9!#$3$l$O<!$N9T\e(B
+\e$B$H$N6h@Z$j$r<($9$?$a$G$9!#%U%!%$%k$N:G8e$b\e(B Newline \e$B$rIU$1$k$Y$-$G$9\e(B
+\e$B!J$b$C$H$b\e(B XEmacs \e$B$O$=$l$r6/@)$O$7$^$;$s$,!K!#\e(B
 
-     \e$B2hLL$N@hF,$dKvHx$r1[$($F%+!<%=%k$r0\F0$5$;$h$&$H$9$k$H!"$=$NJ}8~$K$"$k\e(B
-\e$B%F%-%9%H$,0\F0$7$FMh$F!"%+!<%=%k$O>o$K2hLLFb$K$"$k$h$&$K$5$l$^$9!#\e(B
+>> \e$B9T$N@hF,$G\e(B C-b \e$B$r%?%$%W$7$F$_$^$7$g$&!#%+!<%=%k$OA0$N9T$NKvHx$K0\F0\e(B
+   \e$B$9$k$O$:$G$9!#$3$l$O\e(B C-b \e$B$,A0$N\e(B Newline \e$BJ8;z$r1[$($FLa$C$?$+$i$G$9!#\e(B
 
-       >> C-n \e$B$r;H$C$F!"%+!<%=%k$r2hLL$N2<C<$h$j2<$K0\F0$5$;$F$_$J$5$$!#2?\e(B
-          \e$B$,5/$3$j$^$7$?$+!)%+!<%=%k$N0LCV$O$I$&JQ$j$^$7$?$+!)\e(B
+\e$BF1MM$K\e(B C-f \e$B$O%+!<%=%k$r\e(B Newline \e$BJ8;z$r1[$($F<!$K?J$a$k$3$H$,$G$-$^$9!#\e(B
 
-     \e$B0lJ8;zC10L$N0\F0$G$O$^$I$m$C$3$7$$$H;W$&$J$i!"C18lC10L$G0\F0$9$k$3$H$b\e(B
-\e$B$G$-$^$9!#\e(BESC f \e$B$G0lC18lJ,@h$K?J$_!"\e(BESC b \e$B$G0lC18lJ,A0$KLa$j$^$9!#\e(B
+>> \e$B$5$i$K$b$&>/$7\e(B C-b \e$B$r%?%$%W$7$F%+!<%=%k0\F0$N46$8$rGD$s$G2<$5$$!#\e(B
+   \e$B:#EY$O\e(B C-f \e$B$G9TKv$^$G?J$s$G2<$5$$!#\e(B
+   \e$B$5$i$K$b$&0lEY\e(B C-f \e$B$r%?%$%W$7$F<!$N9T$K?J$s$G2<$5$$!#\e(B
 
-\e$BCm0U!'\e(B           \e$BF|K\8l$K$D$$$F$O!"C18l$N@Z$lL\$rG'<1$9$k$3$H$O$G$-$^$;$s$,!"\e(B
-               \e$B5?;wE*$JJ8@a$rC18l$N@Z$lL\$H$7$F$$$^$9!#\e(B
+\e$B2hLL$N@hF,$dKvHx$r1[$($F%+!<%=%k$r0\F0$5$;$h$&$H$9$k$H!"$=$NJ}8~$K$"$k\e(B
+\e$BJ8>O$,2hLL$NCf$K0\F0$7$FMh$F$^$9!#$3$l$r!V%9%/%m!<%k!W$H8F$S$^$9!#2hLL\e(B
+\e$B$,%9%/%m!<%k$9$k$3$H$K$h$C$F!"%+!<%=%k$r0\F0$5$;$F$b!"%+!<%=%k$O>o$K2h\e(B
+\e$BLLFb$K$"$k$h$&$K$5$l$^$9!#\e(B
 
-       >> ESC f \e$B$d\e(B ESC b \e$B$r2?2s$+%?%$%W$7$F$_$J$5$$!#\e(BC-f \e$B$d\e(B C-b \e$B$HJ;MQ$7$F\e(B
-          \e$B$_$J$5$$!#\e(B
+>> C-n \e$B$r;H$C$F!"%+!<%=%k$r2hLL$N2<C<$h$j2<$K0\F0$5$;$F$_$J$5$$!#2?\e(B
+   \e$B$,5/$3$j$^$7$?$+!)\e(B
 
-     C-f  \e$B$d\e(B C-b \e$B$KBP$9$k!"\e(BESC f \e$B$d\e(B ESC b \e$B$NN`;w@-$KCmL\$7$^$7$g$&!#B?$/$N\e(B
-\e$B>l9g!"\e(BESC  <\e$BJ8;z\e(B>\e$B$OJ8=q4X78$N=hM}$K;H$o$l!"0lJ}\e(BC-<\e$BJ8;z\e(B>\e$B$O$=$l$h$j$b$b$C$H4p\e(B
-\e$BK\E*$JBP>]!JJ8;z$H$+9T$H$+!K$KBP$9$kA`:n$K;H$o$l$^$9!#\e(B
+\e$B0lJ8;zC10L$N0\F0$G$O$^$I$m$C$3$7$$$J$i!"C18lC10L$G0\F0$9$k$3$H$b$G$-$^\e(B
+\e$B$9!#\e(BM-f (<ESC> f) \e$B$G0lC18l@h$X!"\e(BM-b (<ESC> b) \e$B$G0lC18lA0$X0\F0$7$^$9!#\e(B
 
-     C-a \e$B$H\e(B C-e \e$B$bCN$C$F$$$FJXMx$J%3%^%s%I$G$9!#\e(BC-a \e$B$O%+!<%=%k$r9T$N@hF,$K\e(B
-\e$B0\F0$5$;!"\e(BC-e \e$B$O9T$NKvHx$K0\F0$5$;$^$9!#\e(B
+\e$BCm0U!'\e(B   \e$BF|K\8l$K$D$$$F$O!"C18l$N@Z$lL\$rG'<1$9$k$3$H$O$G$-$^$;$s$,!"5?\e(B
+       \e$B;wE*$JJ8@a$rC18l$N@Z$lL\$H$7$F$$$^$9!#\e(B
 
+>> M-f \e$B$d\e(B M-b \e$B$r2?2s$+;n$7$F$_$^$7$g$&!#\e(B
 
-       >> C-a \e$B$r#22s!"$=$l$+$i\e(B C-e \e$B$r#22sF~NO$7$F$_$J$5$$!#$3$l$i$N%3%^%s%I\e(B
-          \e$B$r#22s0J>e7+JV$7$F$b!"%+!<%=%k$O$=$l0J>e0\F0$7$J$$$3$H$KCm0U!#\e(B
+\e$BC18l$NCfDx$K$$$k;~$O!"\e(BM-f \e$B$O$=$NC18l$N=*$o$j$^$G?J$_$^$9!#$b$76uGrJ8;z\e(B
+\e$B$K$$$k;~$K$O\e(B M-f \e$B$O<!$NC18l$N=*$o$j$^$G?J$_$^$9!#\e(BM-b \e$B$bF1MM$G$9!"J}8~\e(B
+\e$B$O5U$G$9$,!#\e(B
 
-     \e$B$"$HFs$D!"4JC1$J%+!<%=%k0\F0%3%^%s%I$,$"$j$^$9!#%U%!%$%k$N@hF,$K0\F0$9\e(B
-\e$B$k\e(B ESC < \e$B$H!"%U%!%$%k$NKvHx$K0\F0$9$k\e(B ESC > \e$B$G$9!#\e(B
+>> M-f \e$B$H\e(B M-b \e$B$r\e(B C-f \e$B$H\e(B C-b \e$B$r8r$($J$,$i?t2s;n$7!"C18l$NCf$KF~$k;~$H!"\e(B
+   \e$BC18l$HC18l$N4V$K$$$k;~$NF0$-$rD4$Y$F2<$5$$!#\e(B
 
-     \e$B%F%-%9%HCf$G%+!<%=%k$NB8:_$9$k0LCV$r!V%]%$%s%H!W$H8F$S$^$9!#8@$$$+$($l\e(B
-\e$B$P!"%+!<%=%k$O!"%F%-%9%H$N$I$3$K%]%$%s%H$,$"$k$+$r2hLL>e$G<($7$F$$$k$N$G$9!#\e(B
+C-f \e$B$H\e(B C-b \e$B$KBP$9$k!"\e(BM-f \e$B$H\e(B M-b \e$B$NN`;w@-$KCmL\$7$^$7$g$&!#B?$/$N>l9g!"\e(B
+\e$B%a%?%-!<$OJ8=q$r9=@.$9$k%f%K%C%H!JC18l!"J8!"CJMn!K$KBP$9$kA`:n$K;H$$!"\e(B
+\e$B%3%s%H%m!<%k%-!<$O$=$l$h$j$b$b$C$H4pK\E*$JBP>]!JJ8;z$H$+9TEy!K$KBP$9$k\e(B
+\e$BA`:n$K;H$$$^$9!#\e(B
 
-     \e$B0J2<$KC1=c$J0\F0A`:n$K$D$$$FMWLs$7$^$9!#$3$N$J$+$K$O!"C18l$d9TC10L$G$N\e(B
-\e$B0\F0%3%^%s%I$b4^$^$l$F$$$^$9!#\e(B
+\e$B$3$NN`;w@-$O9T$HJ8$N4X78$K$b$"$j$^$9!#\e(BC-a \e$B$H\e(B C-e \e$B$O$=$l$>$l9TF,$H9TKv\e(B
+\e$B$K0\F0$7!"\e(BM-a \e$B$H\e(B M-e \e$B$O$=$l$>$lJ8F,$HJ8Kv$K0\F0$7$^$9!#\e(B
 
-     C-f     \e$B0lJ8;z@h$K?J$`\e(B
-     C-b     \e$B0lJ8;z8e$KLa$k\e(B
+>> C-a \e$B$r#22s!"$=$l$+$i\e(B C-e \e$B$r#22s;n$7$^$7$g$&!#\e(B
+   M-a \e$B$r#22s!"$=$l$+$i\e(B M-e \e$B$r#22s;n$7$^$7$g$&!#\e(B
 
-     ESC f   \e$B0lC18l@h$K?J$`\e(B
-     ESC b   \e$B0lC18l8e$KLa$k\e(B
+C-a \e$B$d\e(B C-e \e$B$O7+JV$7$F$b$=$l0J>e0\F0$7$^$;$s$,!"\e(BM-a \e$B$r7+$jJV$9$H$I$s$I\e(B
+\e$B$sA0$NJ8F,$KLa$C$F$$$-$^$9!#$3$NItJ,$G$ON`;w@-$,GK$l$F$$$^$9$,!"$^$"$3\e(B
+\e$B$l$,<+A3$JF0:n$G$O$J$$$G$7$g$&$+!#\e(B
 
-     C-n     \e$B<!$N9T$K0\F0\e(B
-     C-p     \e$BA0$N9T$K0\F0\e(B
+\e$BJ8>OCf$G%+!<%=%k$,$"$k0LCV$r!V%]%$%s%H!W$H8F$S$^$9!#8@$$$+$($l$P!"%+!<\e(B
+\e$B%=%k$O!"J8>O$N$I$3$K%]%$%s%H$,$"$k$+$r2hLL>e$G<($7$F$$$k$N$G$9!#\e(B
 
-     ESC ]   \e$BCJMn$N=*$o$j$K0\F0\e(B
-     ESC [   \e$BCJMn$N@hF,$K0\F0\e(B
+\e$B0J2<$KC1=c$J%+!<%=%k0\F0A`:n$K$D$$$FMWLs$7$^$9!#$3$N$J$+$K$O!"C18l$d9T\e(B
+\e$BC10L$G$N0\F0%3%^%s%I$b4^$^$l$F$$$^$9!#\e(B
 
-     C-a     \e$B9T$N:G=i$K0\F0\e(B
-     C-e     \e$B9T$N:G8e$K0\F0\e(B
+       C-f     \e$B0lJ8;z<!$K?J$`\e(B
+       C-b     \e$B0lJ8;zA0$KLa$k\e(B
 
-     ESC <   \e$B%U%!%$%k$N:G=i$K0\F0\e(B
-     ESC >   \e$B%U%!%$%k$N:G8e$K0\F0\e(B
+       M-f     \e$B0lC18l<!$K?J$`\e(B
+       M-b     \e$B0lC18lA0$KLa$k\e(B
 
-       >> \e$B3F!9$N%3%^%s%I$r;n$7$F$_$J$5$$!#$3$l$i$N%3%^%s%I$O!":G$b$7$P$7$P\e(B
-          \e$B;H$o$l$k$b$N$G$9!#:G8e$NFs$D$G$O!"$3$N>l=j$H$ON%$l$?$H$3$m$K0\F0\e(B
-          \e$B$9$k$N$G!"\e(B C-v  \e$B$d\e(B ESC v \e$B$r;H$C$F$3$3$KLa$C$FMh$k$h$&$K$7$J$5$$!#\e(B
+       C-n     \e$B<!$N9T$K0\F0\e(B
+       C-p     \e$BA0$N9T$K0\F0\e(B
 
-     Emacs\e$B$NB>$N%3%^%s%I$HF1MM$K!"$3$l$i$N%3%^%s%I$K$O!"7+$jJV$7$N2s?t$r;X\e(B
-\e$BDj$9$k0z?t\e(B  \e$B$rM?$($k$3$H$,$G$-$^$9!#$=$N$?$a$K$O!"%3%^%s%I$rF~NO$9$kA0$K!"\e(B
-C-u\e$B$KB3$$$F7+$jJV$92s?t$rF~NO$7$^$9!#\e(B
+       C-a     \e$B9TF,$K0\F0\e(B
+       C-e     \e$B9TKv$K0\F0\e(B
 
-     \e$BNc$($P!"\e(BC-u 8 C-f  \e$B$H$9$k$H!"#8J8;zJ,@h$K0\F0$7$^$9!#\e(B
+>> \e$B$3$l$iA4It$r2?EY$+;n$7$FN}=,$7$^$7$g$&!#\e(B
+   \e$B$I$l$bIQHK$K;H$&%3%^%s%I$G$9!#\e(B
 
-       >> C-n \e$B$"$k$$$O\e(B C-p  \e$B$KE,Ev$J0z?t$r;XDj$7$F!"0l2s$N0\F0$G$J$k$Y$/$3\e(B
-          \e$B$N9T$N6a$/$KMh$k$h$&$K$7$F$_$J$5$$!#\e(B
+\e$B$"$HFs$D!"=EMW$J%+!<%=%k0\F0%3%^%s%I$,$"$j$^$9!#%U%!%$%k$N@hF,$K0\F0$9\e(B
+\e$B$k\e(B M-< \e$B$H!"%U%!%$%k$NKvHx$K0\F0$9$k\e(B M-> \e$B$G$9!#\e(B
 
-     C-v \e$B$d\e(B ESC v \e$B$K$D$$$F$O>/$70c$$$^$9!#$3$N>l9g!";XDj$5$l$??t$N9T$@$12h\e(B
-\e$BLL$r0\F0$9$k$3$H$K$J$j$^$9!#\e(B
+\e$BBgDq$NC<Kv$G$O\e(B "<" \e$B%-!<$O\e(B ","\e$B%-!<!J%3%s%^!K$N>e$K$"$j!"$=$l$r%?%$%W$9\e(B
+\e$B$k$K$O%7%U%H%-!<$r;H$&I,MW$,$"$j$^$9!#$7$?$,$C$F\e(B M-< \e$B$r%?%$%W$9$k$K$O!"\e(B
+\e$B%a%?%-!<$H%7%U%H%-!<$H%3%s%^%-!<$rF1;~$K2!$5$M$P$J$j$^$;$s!#\e(B
 
-       >> C-u 3 C-v  \e$B$HF~NO$7$F$_$J$5$$!#\e(B
+>> M-< \e$B$r;n$7$F!"$3$NF~Lg%,%$%I$N@hF,$K0\F0$7$^$7$g$&!#\e(B
+   \e$B$=$l$+$i!"\e(BC-v \e$B$r2?EY$+;H$C$F$3$3$^$G5"$C$F$-$F$/$@$5$$!#\e(B
 
-     \e$B85$KLa$k$K$O!"\e(BC-u 3 ESC v \e$B$r;H$($P$h$$$N$G$9!#\e(B
+>> M-> \e$B$r;n$7$F!"$3$NF~Lg%,%$%I$NKvHx$K0\F0$7$^$7$g$&!#\e(B
+   \e$B$=$l$+$i!"\e(BM-v \e$B$r2?EY$+;H$C$F$3$3$^$G5"$C$F$-$F$/$@$5$$!#\e(B
 
-\e$BCf;_%3%^%s%I\e(B
-============
+\e$B$b$7C<Kv$KLp0u%-!<$,$"$l$P!"$=$l$r;H$C$F%+!<%=%k$rF0$+$9$3$H$b$G$-$^$9!#\e(B
+\e$B$1$l$I!"<!$N#3$D$NM}M3$+$i\e(B C-b, C-f, C-n, C-p \e$B$r3P$($k$3$H$r4+$a$^$9!#\e(B
+\e$BBh0l$K!"$3$l$i$O$I$s$JC<Kv$G$b;H$($^$9!#BhFs$K!"\e(BXEmacs\e$B$r;H$&$N$,>eC#$7\e(B
+\e$B$F$/$l$P!"$3$l$i$N%3%s%H%m!<%kJ8;z$rBG$DJ}$,!"Lp0u%-!<$rBG$D$h$j$:$C$H\e(B
+\e$BB.$$$3$H$,J,$k$G$7$g$&!J<j$rDL>o$N0LCV$+$iBg$-$/F0$+$5$J$$$G$h$$$N$G!K!#\e(B
+\e$B:G8e$K!"0lEY$3$l$i$N%3%s%H%m!<%kJ8;z$rBG$D=,47$rIU$1$?$i!"$b$C$H?J$s$@\e(B
+\e$B%+!<%=%k0\F0%3%^%s%I$b4JC1$K3P$($k$3$H$,$G$-$^$9!#\e(B
 
-     C-g  \e$B$H$$$&%3%^%s%I$G!"F~NO$rI,MW$H$9$k$h$&$J%3%^%s%I$rCf;_$9$k$3$H$,\e(B
-\e$B$G$-$^$9!#Nc$($P!"0z?t$rF~NO$7$F$$$kESCf$d!"#2$D0J>e$N%-!<F~NO$rI,MW$H$9$k\e(B
-\e$B%3%^%s%I$rF~NO$7$F$$$k:GCf$K!"$=$l$r$d$a$?$/$J$C$?$i!"\e(BC-g  \e$B$r;H$($PNI$$$N$G\e(B
-\e$B$9!#\e(B
+XEmacs\e$B$NBgDq$N%3%^%s%I$K$O?tCM0z?t$rM?$($k$3$H$,$G$-$^$9!#BgDq$N>l9g$3\e(B
+\e$B$N?tCM$G7+$jJV$72s?t$r;X<($9$k$3$H$K$J$j$^$9!#?tCM0z?t$rM?$($k$K$O!"%3\e(B
+\e$B%^%s%I$rF~NO$9$kA0$K\e(B C-u \e$B$KB3$$$F?t;z2?7e$+%?%$%W$7$^$9!#$b$7%a%?%-!<\e(B
+\e$B$,;H$($k$J$i!"%a%?%-!<$r2!$7$J$,$i?t;z$r%?%$%W$9$k$3$H$b$G$-$^$9!#$G$b\e(B
+\e$B$d$O$j\e(B C-u \e$B$r3P$($k$3$H$r4+$a$^$9!#$=$l$O$I$s$JC<Kv$G$b;H$($k$+$i$G$9!#\e(B
 
-       >> C-u 100 \e$B$r%?%$%W$7$F0z?t$r#1#0#0$K@_Dj$7!"\e(BC-g  \e$B$r%?%$%W$7$J$5$$!#\e(B
-          \e$B$=$N$"$H$G\e(B  C-f  \e$B$r%?%$%W$7$F$_$J$5$$!#2?J8;z0\F0$7$^$7$?$+!)$b$7\e(B
-          \e$B4V0c$C$F\e(B ESC \e$B$rF~NO$7$F$7$^$C$?;~$b!"\e(BC-g  \e$B$rF~NO$9$l$P<h$j>C$;$^\e(B
-          \e$B$9!#\e(B
+\e$BNc$($P\e(B C-u 8 C-f \e$B$H%?%$%W$9$k$H#8J8;zJ,@h$K0\F0$7$^$9!#\e(B
 
-\e$B%(%i!<\e(B
-======
+>> \e$BE,Ev$J?tCM0z?t$r\e(B C-n \e$B$"$k$$$O\e(B C-p \e$B$KM?$(!"0l2s$N%3%^%s%I$G$J$k$Y$/\e(B
+   \e$B$3$N9T$N6a$/$KMh$k$h$&$K$7$F$_$^$7$g$&!#\e(B
 
-     \e$B;~$K$O!"\e(BEmacs\e$B$G5v$5$l$F$$$J$$A`:n$r$7$F$7$^$&$3$H$,$"$j$^$9!#Nc$($P!"\e(B
-\e$B%3%^%s%I$NDj5A$5$l$F$$$J$$%3%s%H%m!<%k!&%-!<$rF~NO$7$F$7$^$C$?;~$K$O!"\e(BEmacs
-\e$B$O%Y%k$rLD$i$7!"$5$i$K!"2hLL$N0lHV2<$K!"2?$,0-$+$C$?$+$rI=<($7$^$9!#\e(B
+\e$BBgDq$N%3%^%s%I$O?tCM0z?t$r7+$jJV$72s?t$H2r<a$7$^$9$,!"Cf$K$ONc30$b$"$j\e(B
+\e$B$^$9!#\e(BC-v \e$B$d\e(B M-v \e$B$,$=$&$G$9!#$3$N>l9g!";XDj$5$l$??t$N9T$@$12hLL$r%9%/\e(B
+\e$B%m!<%k$5$;$k$3$H$K$J$j$^$9!#Nc$($P\e(B C-u 4 C-v \e$B$O2hLL$r#49TJ,>e$K%9%/%m!<\e(B
+\e$B%k$5$;$^$9!#\e(B
 
-     Emacs\e$B$N%P!<%8%g%s$K$h$C$F$O!"$3$NF~LgJT$K=q$+$l$F$$$k$3$H$r<B9T$G$-$J\e(B
-\e$B$$>l9g$,$"$jF@$^$9!#$=$NMM$J>l9g$K$O!"%(%i!<%a%C%;!<%8$,I=<($5$l$^$9$+$i!"\e(B
-\e$B2?$+%+!<%=%k0\F0%-!<$r2!$7$F!"$=$N<!$NItJ,$K?J$s$G2<$5$$!#\e(B
+>> C-u 8 C-v \e$B$r;n$7$F$_$^$7$g$&!#\e(B
 
-\e$B%&%#%s%I%&\e(B
-==========
+\e$B2hLL$,>e$K#89T%9%/%m!<%k$7$?$O$:$G$9!#$^$?2hLL$r2<$K%9%/%m!<%k$5$;$k$K$O\e(B
+M-v \e$B$K0z?t$rM?$($l$P$h$$$N$G$9!#\e(B
 
-     Emacs\e$B$O4v$D$b$N%&%#%s%I%&$r;}$D$3$H$H!"$=$N$=$l$>$l$KBP$7$F%F%-%9%H$r\e(B
-\e$BI=<($9$k$3$H$,$G$-$^$9!#%X%k%W$d!"4v$D$+$N%3%^%s%I$+$i$N=PNO$rI=<($9$k$?$a\e(B
-\e$B$K8=$l$?M>J,$J%&%#%s%I%&$r>C$9$?$a$K!"<!$N%3%^%s%I$rCN$kI,MW$,$"$j$^$9!#\e(B
+\e$B$b$7\e(B X \e$B%&%#%s%I%&$r;H$C$F$$$k$N$J$i!"%9%/%m!<%k%P!<$H8F$P$l$k=DD9$N;M\e(B
+\e$B3Q$$%(%j%"$,\e(B XEmacs \e$B$N%&%#%s%I%&$N1&C<$K$"$k$O$:$G$9!#$=$3$r%^%&%9$GA`\e(B
+\e$B:n$7$F2hLL$r%9%/%m!<%k$5$;$k$3$H$b$G$-$^$9!#\e(B
 
-     C-x 1             \e$B%&%#%s%I%&$r#1$D$K$9$k!#\e(B
+>> \e$B%9%/%m!<%k%P!<$NCf$G%^%&%9$N??Cf$N%\%?%s$r2!$7$F$_$^$7$g$&!#%\%?%s\e(B
+   \e$B$r2!$7$?0LCV$G7h$^$kJ8>O$N0LCV$^$G2hLL$,%9%/%m!<%k$7$^$9!#\e(B
 
-     C-x 1 \e$B$O!"B>$N%&%#%s%I%&$r>C$7$F!"%+!<%=%k$N$"$k%&%#%s%I%&$r!"2hLLA4BN\e(B
-\e$B$K9-$2$^$9!#\e(B
+>> \e$B%9%/%m!<%k%P!<$N0lHV>e$+$i#39TL\$[$I$N$H$3$m$K%^%&%9$r0\F0$7$F!":8\e(B
+   \e$B$N%\%?%s$r2?EY$+2!$7$F$_$^$7$g$&!#\e(B
 
-       >> \e$B%+!<%=%k$r$3$N9T$K;}$C$F$-$F!"\e(BC-u 0 C-l \e$B$H%?%$%W$7$^$9!#\e(B
+* X \e$BC<Kv$G$N%+!<%=%k$N%3%s%H%m!<%k\e(B
+----------------------------------
 
-       >> C-h k C-f \e$B$H%?%$%W$7$J$5$$!#?7$7$$%&%#%s%I%&$,\e(B C-f \e$B%3%^%s%I$N%I%-\e(B
-          \e$B%e%a%s%H$rI=<($9$k$?$a$K8=$l$k$HF1;~$K!"$3$N%&%#%s%I%&$,$I$N$h$&\e(B
-          \e$B$K=L$`$+$r4Q;!$7$J$5$$!#\e(B
+X \e$BC<Kv$,$"$k$H!"$*$=$i$/%-!<%Q%C%I$G%+!<%=%k$rA`:n$9$kJ}$,4JC1$@$H46$8\e(B
+\e$B$k$G$7$g$&!#\e(Bleft, right, up, down \e$B$NLp0u%-!<$OM=A[DL$j$NJ}8~$K0\F0$7$"\e(B
+\e$B$9!#$=$l$i!"\e(BC-b, C-f, C-p, C-n \e$B$HA4$/F1$8$h$&$KF0:n$7$^$9$,!"$h$j%?%$\e(B
+\e$B%W$,4JC1$G!"3P$($k$N$b4JC1$G$9!#C18l$4$H$G$N0\F0$K\e(B C-left \e$B$H\e(B C-right
+\e$B$r;H$&$3$H$b$G$-!"2t\e(B \e$B!JNc$($P!"%F%-%9%HJT=8Cf$K$OCJMn!K\e(B \e$B$G0\F0$9$k$?$a\e(B
+\e$B$K\e(BC-up \e$B$H\e(B C-down \e$B$r;H$&$3$H$b$G$-$^$9!#\e(BHOME \e$B!J$b$7$/$O\e(B BEGIN\e$B!K\e(B \e$B$H\e(B END
+\e$B$H=q$+$l$?%-!<$,$"$l$P!"$=$l$>$l9T$N:G=i$H:G8e$K0\F0$7!"\e(BC_home \e$B$H\e(B
+C-end \e$B$O%U%!%$%k$N:G=i$H:G8e$K0\F0$7$^$9!#%-!<%\!<%I$K\e(B PgUp \e$B$H\e(B PgDn \e$B%-!<\e(B
+\e$B$,$"$l$P!"\e(BM-v \e$B$H\e(B C-v \e$B$N$h$&$K!"0lEY$K0l2hLLKh!">e2<$K0\F0$9$k$?$a$K;H\e(B
+\e$B$&$3$H$,$G$-$^$9!#\e(B
 
-       >> C-x 1\e$B$H%?%$%W$7$F!"%I%-%e%a%s%H$N8=$o$l$F$$$?%&%#%s%I%&$r>C$7$J$5\e(B
-          \e$B$$!#\e(B
+\e$B$3$l$iA4$F$N%3%^%s%I$O>e$G@bL@$5$l$F$$$k$h$&$K?tCM0z?t$r<h$k$3$H$,$G$-\e(B
+\e$B$^$9!#$3$l$i$N0z?t$NF~NO$KC;=LO)$r<h$k$3$H$,$G$-$^$9!#\e(BCONTROL \e$B$+\e(B META
+\e$B%-!<$r2!$7$?$^$^?t;z$r%?%$%W$9$k$@$1$G$9!#Nc$($P!"1&$K#1#28l0\F0$9$k$?\e(B
+\e$B$a$K$O!"\e(BC-1 C-2 C-right \e$B$H%?%$%W$7$^$9!#BG80$N4V$K\e(B CONTROL \e$B%-!<$rN%$5\e(B
+\e$B$J$/$F$h$$$N$G!"%?%$%W$OHs>o$K4JC1$G$9!#\e(B
 
-\e$BA^F~$H:o=|\e(B
-==========
 
-     \e$B%F%-%9%H$r%?%$%W$7$?$1$l$P!"C1$K$=$l$r%?%$%W$9$k$@$1$G9=$$$^$;$s!#L\$K\e(B
-\e$B8+$($kJ8;z!J\e(B'A','7','*','\e$B$"\e(B'\e$B$J$I!K$O\e(BEmacs\e$B$K$h$C$F%F%-%9%H$G$"$k$H$_$J$5$l!"\e(B
-\e$B$=$N$^$^A^F~$5$l$^$9!#9T$N=*$o$j$O2~9TJ8;z$GI=$5$l!"$3$l$rF~NO$9$k$K$O\e(B
-<Return> \e$B$r%?%$%W$7$^$9!#\e(B
+\e$B!v\e(B XEmacs \e$B$,%O%s%0$7$?;~!JF0$+$J$/$J$C$?;~!K\e(B
+==========================================
+
+\e$B$b$7\e(B XEmacs \e$B$,%3%^%s%I$KH?1~$7$J$/$J$C$?$i!"\e(BC-g \e$B$r%?%$%W$9$k$3$H$G\e(B
+XEmacs \e$B$r0BA4$K;_$a$k$3$H$,$G$-$^$9!#\e(BC-g \e$B$G$H$F$b;~4V$N$+$+$k%3%^%s%I\e(B
+\e$B$r;_$a$k$3$H$,$G$-$^$9!#\e(B
 
-     \e$BD>A0$KF~NO$7$?J8;z$r:o=|$9$k$K$O!"\e(B<Delete> \e$B$rF~NO$7$^$9!#\e(B<Delete> \e$B$O!"\e(B
-\e$B%-!<%\!<%I$G!V\e(BDelete\e$B!W$H=q$$$F$"$k%-!<$r2!$7$FF~NO$7$^$9!#!V\e(BDelete\e$B!W$N$+$o\e(B
-\e$B$j$K!V\e(BRubout\e$B!W$H=q$$$F$"$k$+$bCN$l$^$;$s!#$h$j0lHLE*$K$O!"\e(B<Delete> \e$B$O!"8=:_\e(B
-\e$B%+!<%=%k$N$"$k0LCV$ND>A0$NJ8;z$r:o=|$7$^$9!#\e(B
+C-g \e$B$O$^$?!"?tCM0z?t$r<h$j;_$a$?$j!"#2$D0J>e$N%-!<F~NO$rI,MW$H$9$k\e(B
+\e$B%3%^%s%I$rF~NO$7$F$$$k:GCf$K$=$l$r<h$j;_$a$?$j$9$k$N$K$b;H$($^$9!#\e(B
 
-       >> \e$BJ8;z$r$$$/$D$+%?%$%W$7!"$=$l$+$i$=$l$i$r\e(B <Delete> \e$B$r;H$C$F:o=|$7\e(B
-          \e$B$J$5$$!#\e(B
+>> C-u 100 \e$B$H%?%$%W$7$F0z?t#1#0#0$r@_Dj$7$F$+$i\e(B C-g \e$B$rBG$C$F$_$^$7$g$&!#\e(B
+   \e$B$=$l$+$i\e(B C-f \e$B$rBG$C$F2<$5$$!#0lJ8;z$7$+?J$^$J$$$O$:$G$9!#$J$<$J$i!"\e(B
+   C-g \e$B$G?tCM0z?t$,%-%c%s%;%k$5$l$?$+$i$G$9!#\e(B
 
-       >> \e$B1&%^!<%8%s$r1[$($k$^$G%F%-%9%H$r%?%$%W$7$J$5$$!#%F%-%9%H$,0l9T$N\e(B
-          \e$BI}0J>e$KD9$/$J$k$H!"$=$N9T$O2hLL$+$i$O$_=P$7$F!V7QB3!W$5$l$^$9!#\e(B
-          \e$B1&C<$K$"$k\e(B'\'\e$B5-9f$O!"$=$N9T$,7QB3$5$l$F$$$k$3$H$rI=$7$F$$$^$9!#\e(B
-          Emacs\e$B$O!"8=:_JT=8Cf$N0LCV$,8+$($k$h$&$K9T$r%9%/%m!<%k$7$^$9!#2hLL\e(B
-          \e$B$N1&$"$k$$$O:8$NC<$K$"$k\e(B'\'\e$B5-9f$O!"$=$NJ}8~$K9T$,$^$@B3$$$F$$$k$3\e(B
-          \e$B$H$rI=$7$F$$$^$9!#\e(B
+\e$B4V0c$C$F\e(B <ESC> \e$B$r%?%$%W$7$F$7$^$C$?;~$b!"\e(BC-g \e$B$G$=$l$r<h$j>C$;$^$9!#\e(B
 
-     \e$B$3$l$O!"J8>O$G@bL@$9$k$h$j<B:]$K$d$C$?J}$,$h$/H=$k$G$7$g$&!#\e(B
 
-       >> \e$B@h$[$IF~NO$7$?!"7QB3$5$l$?9T$N>e$K%+!<%=%k$r$b$C$F$$$-!"\e(BC-d \e$B$G%F\e(B
-          \e$B%-%9%H$r:o=|$7$F!"%F%-%9%H$,0l9T$K<}$^$k$h$&$K$7$F$_$J$5$$!#7QB3\e(B
-          \e$B$rI=$9\e(B'\'\e$B5-9f$O>C$($^$7$?$M!#\e(B
+\e$B!v;HMQIT2D\e(B (disabled) \e$B%3%^%s%I\e(B
+==================================
 
-       >> \e$B%+!<%=%k$r9T$N@hF,$K0\F0$7!"\e(B<Delete> \e$B$rF~NO$7$J$5$$!#$3$l$O$=$N9T\e(B
-          \e$B$ND>A0$N9T6g@Z$j$r:o=|$9$k$N$G!"$=$N9T$,A0$N9T$H$D$J$,$C$F$7$^$$\e(B
-          \e$B$^$9!#$D$J$,$C$?9T$,2hLL$NI}$h$jD9$/$J$k$H!"7QB3$NI=<($,$5$l$k$G\e(B
-          \e$B$7$g$&!#\e(B
+\e$B$$$/$D$+$N%3%^%s%I$O=i?4<T$,4V0c$C$F;H$o$J$$$h$&;HMQIT2D$K$J$C$F$$$^$9!#\e(B
 
-       >> <Return> \e$B$r2!$7$F!"$b$&0lEY9T6g@Z$j$rA^F~$7$J$5$$!#\e(B
+\e$B$b$72?$l$+$N;HMQIT2D%3%^%s%I$r%?%$%W$7$?$i!"$=$l$O$I$&$$$&%3%^%s%I$+$,\e(B
+\e$BI=<($5$l!"K\Ev$K$=$l$r<B9T$7$?$$$N$+$I$&$+?V$M$i$l$^$9!#\e(B
 
-     Emacs\e$B$N$[$H$s$I$N%3%^%s%I$O!"7+$jJV$7$N2s?t$rM?$($k$3$H$,$G$-$^$9!#$3\e(B
-\e$B$N$3$H$O!"J8;z$NA^F~$K$D$$$F$bEv$F$O$^$j$^$9!#\e(B
+\e$B$b$7K\Ev$K<B9T$7$?$$$N$J$i%9%Z!<%9%-!<$r%?%$%W$7$F2<$5$$!#$b$7<B9T$7$?\e(B
+\e$B$/$J$1$l$P\e(B "n" \e$B$H%?%$%W$7$F2<$5$$!#\e(B
 
-       >> C-u 8 * \e$B$HF~NO$7$F$_$J$5$$!#$I$&$J$j$^$7$?$+!#\e(B
+>> `C-x n p' : \e$B$H%?%$%W$7$F$_$^$7$g$&!J$3$l$O;HMQIT2D%3%^%s%I$G$9!K!#\e(B
+   \e$B$=$l$+$i\e(B n \e$B$H%?%$%W$7$^$7$g$&!#\e(B
 
-     \e$BFs$D$N9T$N4V$K6uGr9T$r:n$j$?$$>l9g$K$O!"FsHVL\$N9T$N@hF,$K9T$-!"\e(BC-o \e$B$r\e(B
-\e$BF~NO$7$^$9!#\e(B
 
-       >> \e$BE,Ev$J9T$N@hF,$K9T$-!"$=$3$G\e(B C-o \e$B$rF~NO$7$F$_$J$5$$!#\e(B
+\e$B!v%&%#%s%I%&\e(B
+============
 
-     \e$B$3$l$G!"\e(BEmacs\e$B$G!"%F%-%9%H$rF~NO$7!"$^$?4V0c$$$r=$@5$9$k$b$C$H$b4pK\E*\e(B
-\e$B$JJ}K!$r3X$s$@$3$H$K$J$j$^$9!#J8;z$HF1$8MM$K!"C18l$d9T$b:o=|$9$k$3$H$,$G$-\e(B
-\e$B$^$9!#:o=|A`:n$K$D$$$FMWLs$9$k$H<!$N$h$&$K$J$j$^$9!#\e(B
+XEmacs \e$B$O4v$D$b$N%&%#%s%I%&$K!"$=$l$>$l8DJL$NJ8>O$rI=<($9$k$3$H$,$G$-\e(B
+\e$B$^$9!#\e(BXEmacs \e$B$G;H$o$l$F$$$k!V%&%#%s%I%&!W$O%&%#%s%I%&%7%9%F%`$G$N=E$J$C\e(B
+\e$B$F$$$kJL$N%&%#%s%I%&$K8@5Z$7$F$$$k$N$G$O$J$/!"C10l$N\e(B X \e$B%&%#%s%I%&2<$G\e(B
+\e$B$NJL$NAk$N$3$H$r8@$C$F$$$k$3$H$KCm0U$7$F$/$@$5$$!#!J\e(BXEmacs \e$B$OJ#?t$N\e(B X
+\e$B$N%&%#%s%I%&!"\e(BXEmacs \e$B$NMQ8l$G$O!V%U%l!<%`!W$r;}$D$3$H$b$G$-$^$9!#$3$l\e(B
+\e$B$O8e$[$I@bL@$7$^$9!#!K\e(B
 
-     <Delete>       \e$B%+!<%=%k$ND>A0$NJ8;z$r:o=|\e(B
-     C-d            \e$B%+!<%=%k$N$"$kJ8;z$r:o=|\e(B
+\e$B$3$3$G$O!"J#?t$N%&%#%s%I%&$r;H$&5;=Q$K$O?($i$J$$$[$&$,8-L@$G$7$g$&!#$G\e(B
+\e$B$b!"%X%k%W$dFCDj$N%3%^%s%I$N=PNO$G8=$l$k$+$b$7$l$J$$M>J,$J%&%#%s%I%&$r\e(B
+\e$B>C$7$F!"$I$&$d$C$F85$N0l$D$N%&%#%s%I%&$N>uBV$KLa$k$+$r@bL@$9$k$3$H$OI,\e(B
+\e$BMW$G$7$g$&!#$=$l$O4JC1$G$9!#\e(B
 
-     ESC <Delete>   \e$B%+!<%=%k$ND>A0$NC18l$r:o=|\e(B
-     ESC d          \e$B%+!<%=%k0LCV0J9_$K$"$kC18l$r:o=|\e(B
+       C-x 1   \e$B%&%#%s%I%&$r#1$D$K$9$k!J$D$^$jB>$N%&%#%s%I%&$rA4It>C$9!K\e(B
 
-     C-k            \e$B%+!<%=%k0LCV$+$i9TKv$^$G$r:o=|\e(B
+\e$B$D$^$j\e(B C-x \e$B$rBG$C$F$+$i$5$i$K\e(B 1 \e$B$rBG$D$N$G$9!#$3$N%3%^%s%I$O%+!<%=%k$N\e(B
+\e$B$"$k%&%#%s%I%&$r2hLLA4BN$K9-$2$^$9!#B>$N%&%#%s%I%&$OA4It>C$($^$9!#\e(B
 
-     \e$B2?$+$r:o=|$7$?8e$G!"$=$l$r85$KLa$7$?$/$J$k$3$H$,$"$j$^$9!#\e(BEmacs\e$B$O!"0l\e(B
-\e$BJ8;z$h$j$bBg$-$$C10L$G:o=|$r9T$C$?;~$K$O!":o=|$7$?FbMF$rJ]B8$7$F$*$-$^$9!#\e(B
-\e$B85$KLa$9$K$O!"\e(BC-y \e$B$r;H$$$^$9!#Cm0U$7$?$$$N$O!"\e(BC-y \e$B$r:o=|$r9T$C$?>l=j$@$1$G\e(B
-\e$B$O$J$/!"$I$3$K$G$b=PMh$k$3$H$G$9!#\e(BC-y  \e$B$O!"J]B8$5$l$?%F%-%9%H$r8=:_%+!<%=%k\e(B
-\e$B$N$"$k>l=j$KA^F~$9$k$?$a$N%3%^%s%I$G$9$+$i!"$3$l$r;H$C$F%F%-%9%H$N0\F0$r9T\e(B
-\e$B$&$3$H$,$G$-$^$9!#\e(B
+>> \e$B%+!<%=%k$r$3$N9T$K;}$C$F$-$F!"\e(BC-u 0 C-l \e$B$H%?%$%W$7$F$_$F2<$5$$!#\e(B
 
-     \e$B:o=|$r9T$&%3%^%s%I$K$O!"\e(B"Delete" \e$B%3%^%s%I$H!"\e(B"Kill" \e$B%3%^%s%I$H$,$"$j$^\e(B
-\e$B$9!#\e(B"Kill"  \e$B%3%^%s%I$G$O:o=|$5$l$?$b$N$OJ]B8$5$l$^$9$,!"\e(B"Delete" \e$B%3%^%s%I$G\e(B
-\e$B$OJ]B8$5$l$^$;$s!#$?$@$7!"7+$jJV$72s?t$,M?$($i$l$k$H!"J]B8$5$l$^$9!#\e(B
+\e$B!J\e(BC-l \e$B$,2hLL$r:FIA2h$9$k$3$H$r;W$$=P$7$F$/$@$5$$!#$=$l$K?tCM0z?t$rM?$(\e(B
+\e$B$k$H!"!V2hLL$r:FIA2h$7$F8=:_$N9T$r2hLL$N:G>eIt$+$i$=$N?t$@$1N%$l$?$H$3\e(B
+\e$B$m$K0\F0$7$J$5$$!W$H$$$&0UL#$K$J$j$^$9!#$G$9$+$i!"\e(BC-u 0 C-l \e$B$O!V2hLL$r\e(B
+\e$B:FIA2h$7$F!"8=:_$N9T$r:G>eIt$K$9$k!W$H$$$&0UL#$K$J$j$^$9!#!K\e(B
 
-      >> C-n \e$B$r#22s$[$I%?%$%W$7$F!"2hLL$NE,Ev$J>l=j$K0\F0$7$J$5$$!#$=$7$F!"\e(B
-          C-k \e$B$G!"$=$N9T$r:o=|$7$J$5$$!#\e(B
+>> \e$BB3$$$F\e(B Control-x 2 \e$B$H%?%$%W$7$F2<$5$$!#\e(B
+   \e$B?7$7$$%&%#%s%I%&$,$3$N%P%C%U%!$NFbMF$rI=<($9$k$?$a$K8=$l$k$H$H$b$K!"\e(B
+   \e$B$3$N%&%#%s%I%&$,$I$N$h$&$K=L$`$+$r8+$F2<$5$$!#\e(B
 
-     \e$B0l2sL\$N\e(B C-k \e$B$G$=$N9T$NFbMF$,:o=|$5$l!"$b$&0lEY\e(B C-k \e$B$rF~NO$9$k$H!"$=$N\e(B
-\e$B9T<+?H$,:o=|$5$l$^$9!#$b$7!"\e(BC-k  \e$B$K7+$jJV$72s?t$r;XDj$7$?>l9g$K$O!"$=$N2s?t\e(B
-\e$B$@$1$N9T$,!JFbMF$H9T<+?H$H$,F1;~$K!K:o=|$5$l$^$9!#\e(B
+>> C-x 1 \e$B$H%?%$%W$7$F!"?7$7$$%&%#%s%I%&$,>C$($k$N$r8+$F2<$5$$!#\e(B
 
-     \e$B:#:o=|$5$l$?%F%-%9%H$O!"J]B8$5$l$F$$$k$N$G!"$=$l$r<h$j=P$9$3$H$,$G$-$^\e(B
-\e$B$9!#$=$N$?$a$K$O!"\e(BC-y \e$B$r%?%$%W$7$^$9!#\e(B
 
-       >> C-y \e$B$r;n$7$F$_$J$5$$!#\e(B
+\e$B!vA^F~$H:o=|\e(B
+============
+
+\e$B%F%-%9%H$rF~NO$7$?$1$l$P!"C1$K$=$l$r%?%$%W$7$F2<$5$$!#\e(BXEmacs \e$B$O!"L\$K\e(B
+\e$B8+$($kJ8;z!J\e(BA, 7, * \e$BEy!K$r%F%-%9%H$G$"$k$H$_$J$9$N$G!"$=$l$i$O$=$N$^$^\e(B
+\e$BA^F~$5$l$^$9!#\e(B<Return>\e$B!J2~9T%-!<!K$r%?%$%W$9$l$P2~9TJ8;z$,A^F~$5$l$^$9!#\e(B
 
-     C-k \e$B$r2?EY$bB3$1$F9T$&$H!":o=|$5$l$k%F%-%9%H$O!"$^$H$a$FJ]B8$5$l!"\e(BC-y
-\e$B$G!"$=$NA4$F$,<h$j=P$5$l$^$9!#\e(B
+\e$BD>A0$KF~NO$7$?J8;z$r:o=|$9$k$K$O!"\e(B<Delete> \e$B$r%?%$%W$7$^$9!#\e(B<Delete> \e$B$O!"\e(B
+\e$B%-!<%\!<%I>e$K!V\e(BDel\e$B!W$H=q$$$F$"$k%-!<$G$9!#;~$K$O\e(B <Backspace> \e$B%-!<$b\e(B
+<Delete> \e$B$H$7$FF0:n$7$^$9$,!"$$$D$b$G$O$"$j$^$;$s!#\e(B
 
-       >> C-k \e$B$r2?EY$b%?%$%W$7$F$_$J$5$$!#\e(B
+\e$B$h$j0lHLE*$K$O!"\e(B<Delete> \e$B$O8=:_%+!<%=%k$N$"$k0LCV$ND>A0$NJ8;z$r:o=|$7\e(B
+\e$B$^$9!#\e(B
 
-       >> \e$B%F%-%9%H$r<h$j=P$9$K$O!"\e(BC-y \e$B$G$9!#%+!<%=%k$r?t9T2<$K0\F0$5$;!"$b\e(B
-          \e$B$&0lEY\e(B C-y \e$B$r%?%$%W$7$F$_$J$5$$!#$3$l$G%F%-%9%H$N%3%T!<$,$G$-$k$o\e(B
-          \e$B$1$G$9!#\e(B
+>> \e$BJ8;z$r$$$/$D$+%?%$%W$7!"$=$l$+$i$=$l$i$r\e(B <Delete> \e$B$r;H$C$F:o=|$7\e(B
+   \e$B$F2<$5$$!#$3$N%U%!%$%k$rJQ99$9$k$3$H$r5$$K$9$kI,MW$O$"$j$^$;$s!#%*\e(B
+   \e$B%j%8%J%k$NF~Lg%,%$%I%U%!%$%k$OJQ99$5$l$^$;$s$+$i!#:#8+$F$$$k%U%!%$\e(B
+   \e$B%k$O$"$J$?$N$?$a$N%3%T!<$G$9!#\e(B
 
-     \e$B8=:_2?$+$N%F%-%9%H$,J]B8$5$l$F$$$F!"$5$i$KB>$N%F%-%9%H$r:o=|$9$k$H$I$&\e(B
-\e$B$J$k$G$7$g$&$+!#\e(BC-y \e$B$O!"$b$C$H$b:G6a:o=|$5$l$?$b$N$r<h$j=P$7$^$9!#\e(B
+\e$BJ8>O$N0l9T$,2hLL$K<}$^$i$J$$DxD9$/$J$C$?>l9g!"$=$N9T$O2hLL>e$N<!$N9T$X\e(B
+\e$B$H7QB3!J\e(Bcontinued\e$B!K$5$l$^$9!#2hLL$N1&C<$N\e(B backslash \e$BJ8;z\e(B ("\") \e$B$O!"$=\e(B
+\e$B$N9T$,7QB3$5$l$F$$$k$3$H$rI=$7$F$$$^$9!#\e(B
 
+>> \e$B2hLL$N1&C<$^$GJ8>O$rF~NO$7!"$5$i$KF~NO$rB3$1$F2<$5$$!#\e(B
+   \e$B7QB39T$,$G$-$k$N$,J,$k$G$7$g$&!#\e(B
 
-       >> \e$B9T$r:o=|$7!"%+!<%=%k$r0\F0$5$;!"JL$N9T$r:o=|$7$J$5$$!#\e(BC-y \e$B$r9T$&\e(B
-          \e$B$H!"#2HVL\$N9T$,F@$i$l$^$9!#\e(B
+>> <Delete> \e$B$r;H$C$F2hLL$K<}$^$k$H$3$m$^$G8=:_$N9T$rC;$/$7$F$_$F$/$@$5\e(B
+   \e$B$$!#7QB39T$O>C$($^$9!#\e(B
 
-\e$B<h$j>C$7\e(B(UNDO)
-==============
+\e$B2~9TJ8;z$bB>$NJ8;z$HF1$8$h$&$K:o=|$G$-$^$9!##2$D$N9T$N4V$N2~9TJ8;z$r>C\e(B
+\e$B$9$H$=$l$i$N9T$,9g$o$5$j#1$D$N9T$K$J$j$^$9!#$b$7$=$N9g$o$5$C$?9T$,2hLL\e(B
+\e$B$NI}$h$j$bD9$$>l9g$O!"7QB39T$H$J$C$FI=<($5$l$^$9!#\e(B
+
+>> \e$B%+!<%=%k$r9T$N@hF,$K0\F0$7!"\e(B<Delete> \e$B$r%?%$%W$7$F2<$5$$!#8=:_$N9T$,\e(B
+   \e$B$=$NA0$N9T$H$D$J$,$j$^$9!#\e(B
+
+>> <Return> \e$B$r%?%$%W$7$F!":#:o=|$7$?2~9TJ8;z$r$^$?A^F~$7$F2<$5$$!#\e(B
+
+XEmacs \e$B$N$[$H$s$I$N%3%^%s%I$O!"7+$jJV$7$N2s?t;XDj$G$-$k$3$H$r;W$$=P$7\e(B
+\e$B$F2<$5$$!#$3$l$O!"J8;z$NA^F~$K$D$$$F$bEv$F$O$^$j$^$9!#\e(B
+
+>> C-u 8 * \e$B$H%?%$%W$9$k$H\e(B ******** \e$B$,A^F~$5$l$^$9!#;n$7$F$_$^$7$g$&!#\e(B
+
+\e$B$3$l$G!"\e(BXEmacs \e$B$G%F%-%9%H$rF~NO$7!"$^$?4V0c$$$r=$@5$9$k$b$C$H$b4pK\E*\e(B
+\e$B$JJ}K!$r3X$s$@$3$H$K$J$j$^$9!#J8;z$HF1$8MM$K!"C18l$d9T$b:o=|$9$k$3$H$,\e(B
+\e$B$G$-$^$9!#:o=|A`:n$K$D$$$FMWLs$9$k$H<!$N$h$&$K$J$j$^$9!#\e(B
+
+       <Delete>     \e$B%+!<%=%k$ND>A0$NJ8;z$r:o=|!J\e(Bdelete\e$B!K\e(B
+       C-d          \e$B%+!<%=%k$N$"$kJ8;z$r:o=|!J\e(Bdelete\e$B!K\e(B
+
+       M-<Delete>   \e$B%+!<%=%k$ND>A0$NC18l$r>C5n!J\e(Bkill\e$B!K\e(B
+       M-d          \e$B%+!<%=%k0LCV0J9_$K$"$kC18l$r>C5n!J\e(Bkill\e$B!K\e(B
+
+       C-k          \e$B%+!<%=%k0LCV$+$i9TKv$^$G$r>C5n!J\e(Bkill\e$B!K\e(B
+       M-k          \e$B%+!<%=%k0LCV$+$iJ8Kv$^$G$r>C5n!J\e(Bkill\e$B!K\e(B
+
+<Delete> \e$B$H\e(B C-d \e$B$KBP$9$k\e(B M-<Delete> \e$B$H\e(B M-d \e$B$O!"\e(BC-f \e$B$H\e(B M-f \e$B$G;O$^$C$?N`\e(B
+\e$B;w@-$r$^$?3HD%$7$^$9!#$3$3$G\e(B <Delete> \e$B$O%3%s%H%m!<%kJ8;z$G$O$"$j$^$;$s\e(B
+\e$B$,!"$^$"!"$=$l$O5$$K$7$J$$$G2<$5$$!#\e(BC-k \e$B$H\e(B M-k \e$B$N4X78$O\e(B C-e \e$B$H\e(B M-e \e$B$N\e(B
+\e$B4X78!J9T$HJ8$NBPHf!K$HF1$8$G$9!#\e(B
+
+\e$B0lEY$K#2J8;z0J>e>C$7$?>l9g!"\e(BXEmacs \e$B$O$=$N>C$7$?%F%-%9%H$rJ]B8$7$F$*$$\e(B
+\e$B$F!"$^$?85$KLa$9$3$H$,$G$-$k$h$&$K$7$F$$$^$9!#$3$N!V85$KLa$9!W$H$$$&F0\e(B
+\e$B:n$r:FF~!J\e(Byanking\e$B!K$H8F$S$^$9!#>C$7$?%F%-%9%H$O!"85$HF1$8>l=j$K$G$b85\e(B
+\e$B$H$O0c$&>l=j$K$G$b:FF~$G$-$^$9!#$^$?!"2?EY$b:FF~$7$F%F%-%9%H$N%3%T!<$r\e(B
+\e$BJ#?t:n$k$3$H$b$G$-$^$9!#:FF~$N$?$a$N%3%^%s%I$O\e(B C-y \e$B$G$9!#\e(B
+
+\e$B!V>C5n!J\e(Bkill\e$B!K!W$H!V:o=|!J\e(Bdelete\e$B!K!W$N0c$$$K5$$r$D$1$F2<$5$$!#>C5n$7$?\e(B
+\e$B%F%-%9%H$O:FF~$G$-$^$9$,!":o=|$7$?$b$N$O:FF~$G$-$^$;$s!#0lHL$K!"BgNL$N\e(B
+\e$B%F%-%9%H$r>C$9%3%^%s%I$O$=$N%F%-%9%H$rJ]B8$7$F$*$-$^$9$,!"0lJ8;z$H$+6u\e(B
+\e$BGr9T$d6uGrJ8;z$r:o=|$9$k%3%^%s%I$O:o=|$7$?$b$N$rJ]B8$7$-$^$;$s!#\e(B
+
+>> \e$B6u9T$G$J$$9T$N@hF,$K%+!<%=%k$r0\F0$5$;$F2<$5$$!#\e(B
+   \e$B$=$l$+$i\e(B C-k \e$B$G$=$N9T$N%F%-%9%H$r>C5n$7$F2<$5$$!#\e(B
+>> \e$B$b$&0lEY\e(B C-k \e$B$r%?%$%W$7$F$/$@$5$$!#$=$N9T$KB3$/2~9TJ8;z$,>C$5$l$k$N\e(B
+   \e$B$,J,$j$^$7$?$+!#\e(B
+
+\e$B0l2sL\$N\e(B C-k \e$B$O$=$N9T$N%F%-%9%H$r>C$7!"#22sL\$N\e(B C-k \e$B$O$=$N9T<+?H$r>C$7\e(B
+\e$B$F$=$N@h$N9T$r>e$2$F$-$^$9!#\e(BC-k \e$B$N?tCM0z?t$N07$$$OFC<l$G$9!#0z?tJ,$N9T\e(B
+\e$B!J9T$NFbMF$H9T<+?H!K$r>C$7$^$9!#$3$l$OC1$J$k7+$jJV$7$G$O$"$j$^$;$s!#\e(B
+C-u 2 C-k \e$B$O#2$D$N9T$H$=$l$>$l$KB3$/2~9TJ8;z$r>C$7$^$9$,!"\e(BC-k \e$B$r#2EY%?\e(B
+\e$B%$%W$7$F$b$=$&$O$J$j$^$;$s!#\e(B
+
+\e$B:G8e$K>C5n$7$?%F%-%9%H$r8=:_%+!<%=%k$,$"$k0LCV$K:FF~$9$k$K$O\e(B C-y \e$B$r%?\e(B
+\e$B%$%W$7$^$9!#\e(B
+
+>> \e$B;n$7$F2<$5$$!#\e(BC-y \e$B$r%?%$%W$7$F:G8e$K>C5n$7$?%F%-%9%H$r:FF~$7$^$7$g$&!#\e(B
+
+C-y \e$B$O!"$"$J$?$,L5$/$7$?$b$N$r<h$jLa$9$b$N$@$H9M$($^$7$g$&!#\e(BC-k \e$B$rB3$1\e(B
+\e$B$F<B9T$9$k$H!">C5n$7$?3F9T$OA4It$^$H$a$FJ]B8$5$l$k$N$G!"0l2s$N\e(B C-y \e$B$G\e(B
+\e$B$=$l$i$N9T$,A4It:FF~$5$l$^$9!#\e(B
+
+>> C-k \e$B$r2?EY$+B3$1$F%?%$%W$7$F$_$F2<$5$$!#\e(B
 
-     \e$B$$$D$G$b!"%F%-%9%H$rJQ99$7$?$1$l$I$b!"$=$l$r$b$H$KLa$7$?$$$H$-$O\e(BC-x u
-\e$B$GD>$j$^$9!#IaDL$O4V0c$($?%3%^%s%I$rL58z$K$9$kF/$-$r$7$^$9!#7+$jJV$7$F\e(BUNDO
-\e$B$r9T$J$*$&$H$9$k;~$O!"2?EY$b$=$N%3%^%s%I$r9T$J$($P=PMh$k$h$&$K$J$C$F$$$^$9!#\e(B
+\e$B$5$"!">C5n$7$?%F%-%9%H$r:FF~$7$^$7$g$&!#\e(B
 
-       >> \e$B$3$N9T$r\e(BC-k\e$B$G>C$7$F2<$5$$!#$=$7$F!"\e(BC-x u\e$B$GLa$7$F2<$5$$!#\e(B
+>> C-y \e$B$r%?%$%W$7$F2<$5$$!#<!$K%+!<%=%k$r?t9T2<$K0\F0$5$;!"$^$?\e(B C-y \e$B$r\e(B
+   \e$B%?%$%W$7$F2<$5$$!#$I$&$d$C$F%F%-%9%H$r%3%T!<$9$k$+J,$j$^$7$?$M!#\e(B
 
-     C-_\e$B$O!"\e(BUNDO\e$B$r9T$J$&!"$b$&0l$D$N%3%^%s%I$G$9!#5!G=$O!"\e(BC-x u\e$B$HF1$8$G$9!#\e(B
+\e$B2a5n$K>C5n$7$?%F%-%9%H$r:FF~$7$?$$$N$K!"JL$N%F%-%9%H$r$=$N8e>C5n$7$?;~\e(B
+\e$B$O$I$&$9$l$P$h$$$G$7$g$&!)\e(B C-y \e$B$O:G8e$K>C5n$7$?$b$N$r:FF~$7$^$9!#$G$b\e(B
+\e$B$=$l$G$h$j0JA0$K>C5n$7$?%F%-%9%H$,$J$/$J$k$o$1$G$O$"$j$^$;$s!#$=$&$$$&\e(B
+\e$B%F%-%9%H$O\e(B M-y \e$B$G:FF~$G$-$^$9!#\e(BC-y \e$B$G:G8e$K>C5n$7$?%F%-%9%H$r:FF~$7$?\e(B
+\e$BD>8e$K\e(BM-y \e$B$r%?%$%W$9$k$H!"$=$N:FF~$5$l$?%F%-%9%H$O$=$l0JA0$K>C5n$7$?$b\e(B
+\e$B$N$KJQ99$5$l$^$9!#2?EY$bB3$1$F\e(B M-y \e$B$r%?%$%W$9$k$H!"$5$i$KA0$K>C5n$7$?\e(B
+\e$B%F%-%9%H$r8F$SLa$;$^$9!#K>$_$N%F%-%9%H$K9T$-Ev$C$?$i!"$=$l$O$=$N$^$^$K\e(B
+\e$B$7$FJT=8:n6H$rB3$1$l$P$h$$$N$G$9!#\e(B
 
-     C-_\e$B$d\e(BC-x u\e$B$K\e(BUNDO\e$B$N2s?t$r!"M?$($k$3$H$,=PMh$^$9!#\e(B
+\e$B$"$k2s?t$@$1\e(B M-y \e$B$r7+$jJV$7$?$i!"$^$?:G=i!J$D$^$j:G8e$K>C5n$7$?%F%-%9\e(B
+\e$B%H!K$KLa$j$^$9!#\e(B
 
+>> \e$B0l9T>C5n$7!"JL$N9T$K9T$C$F$=$N9T$r>C5n$7$F2<$5$$!#\e(B
+   \e$B$=$l$+$i\e(B C-y \e$B$G#2HVL\!J:G8e!K$K>C5n$7$?9T$r:FF~$7$F2<$5$$!#\e(B
+   \e$BB3$$$F\e(B M-y \e$B$G$=$N9T$r:G=i$K>C5n$7$?9T$KJQ$($F2<$5$$!#\e(B
+   M-y \e$B$rB3$1$I$&$J$k$+8+$F$_$^$7$g$&!##2HVL\$K>C5n$7$?9T$,La$C$FMh$k\e(B
+   \e$B$^$G\e(B M-y \e$B$r7+$jJV$7!"$5$i$K$b$&2?EY$+\e(B M-y \e$B$r$7$^$7$g$&!#\e(B
+   \e$B$b$7K>$_$J$i\e(B M-y \e$B$K@5$b$7$/$OIi$N?tCM0z?t$rM?$($F$bNI$$$G$7$g$&!#\e(B
 
-\e$B%U%!%$%k\e(B
-========
 
-     \e$B%F%-%9%H$X$NJQ99$r1J5WE*$K$9$k$?$a$K$O!"$=$l$r%U%!%$%k$KJ]B8$7$J$1$l$P\e(B
-\e$B$J$j$^$;$s!#J]B8$5$l$J$$$H!"$[$I$3$7$?JQ99$O!"\e(BEmacs\e$B$r=*N;$9$k$HF1;~$K<:$o$l\e(B
-\e$B$F$7$^$$$^$9!#\e(B
+\e$B!v<h$j>C$7\e(B(UNDO)
+================
 
-     \e$B$$$^8+$F$$$k%U%!%$%k$KBP$7$F!"$"$J$?$NJT=8$r9T$C$?$b$N$r=q$-9~$_$^$9!#\e(B
-\e$B$$$^8+$F$$$k%U%!%$%k$H$O!"4JC1$K$$$($PJT=8$7$F$$$k%U%!%$%k<+BN$N$3$H$G$9!#\e(B
+\e$B$b$7!"J8>O$rJQ99$7$?8e$G$=$NJQ99$O4V0c$$$@$C$?$H;W$C$?$i!"<h$j>C$7\e(B
+\e$B!J\e(Bundo\e$B!K%3%^%s%I\e(B C-x u \e$B$G$=$NJQ99$r<h$j>C$9$3$H$,$G$-$^$9!#\e(B
 
-     \e$B$"$J$?$,%U%!%$%k$r%;!<%V!JJ]B8$9$k!K$9$k$^$G!":#$^$G$NJQ99$OJT=8$7$F$$\e(B
-\e$B$k%U%!%$%k$K=q$-9~$^$l$k;v$O$"$j$^$;$s!#$=$l$O!"$"$J$?$,$=$N$h$&$K9T$$$?$/\e(B
-\e$B$J$$$N$K!"ESCf$^$GJQ99$r2C$($?$b$N$,>!<j$K=q$-9~$^$l$k$h$&$J;v$,$J$$$h$&$K\e(B
+\e$BDL>o!"\e(BC-x u \e$B$O0l$D$N%3%^%s%I$K$h$kJQ99$r<h$j>C$7$^$9!#B3$1$F2?EY$b\e(B C-x
+u \e$B$r9T$($P$=$N$?$S$K0l$DA0$N%3%^%s%I$,<h$j>C$7$K$J$j$^$9!#\e(B
+
+\e$B$?$@$7$3$l$K$ONc30$,Fs$D$"$j$^$9!#$^$:!"J8>O$rJQ99$7$J$$%3%^%s%I$O<h$j\e(B
+\e$B>C$7$K$J$j$^$;$s!#%+!<%=%k0\F0$d%9%/%m!<%k$N%3%^%s%I$,$=$l$KEv$?$j$^$9!#\e(B
+\e$B$=$l$+$i!"%F%-%9%HJ8;z$NA^F~!J<+8JA^F~%3%^%s%I!K$O\e(B 20 \e$B8D0l$^$H$a$G07$o\e(B
+\e$B$l$^$9!#$3$l$O%F%-%9%H$NA^F~$r<h$j>C$9$?$a$N\e(B C-x u \e$B$N2s?t$r8:$i$9$?$a\e(B
 \e$B$G$9!#\e(B
 
-     \e$B%;!<%V$r9T$C$?8e$G$5$(JQ99$7$?$b$N$,4V0c$C$F$$$?;~$N$?$a$K\e(BEmacs\e$B$OL>A0\e(B
-\e$B$rJQ$($F%*%j%8%J%k$N%U%!%$%k$r;D$7$^$9!#\e(B
+>> \e$B$3$N9T$r\e(BC-k\e$B$G>C$7$F2<$5$$!#$=$7$F!"\e(BC-x u \e$B$GLa$7$F2<$5$$!#\e(B
 
-\e$BHw9M\e(B:          \e$B$^$?!"\e(BEmacs\e$B$OITB,$N;vBV$KBP$7!"0lDj$N%?%$%_%s%0$4$H$K<+F0E*\e(B
-               \e$B$KJT=8$7$F$$$k%U%!%$%k$NFbMF$rL>A0$rJQ$($?%U%!%$%k$K%;!<%V$7\e(B
-               \e$B$^$9!#$3$l$K$h$C$F!"K|0l$N>l9g$O9T$C$?$NJQ99$KBP$7:G>.8B$NHo\e(B
-               \e$B32$G:Q$`$h$&$K$J$C$F$$$^$9!#\e(B
+C-_ \e$B$b<h$j>C$7!J\e(Bundo\e$B!K$r9T$J$&%3%^%s%I$G$9!#5!G=$O!"\e(BC-x u \e$B$HF1$8$G$9$,!"\e(B
+\e$BB3$1$F2?EY$b%?%$%W$9$k>l9g$O$h$jJXMx$G$9!#\e(BC-_ \e$B$NLdBj$O!"%-!<%\!<%I$K$h$C\e(B
+\e$B$F$O$I$&$d$C$F%?%$%W$9$k$N$+J,$j$E$i$$;v$G$9!#$@$+$i\e(B C-x u \e$B$,$"$k$N$G\e(B
+\e$B$9!#C<Kv$K$h$C$F$O!"%3%s%H%m!<%k%-!<$r2!$7$?$^$^\e(B / \e$B$r%?%$%W$9$k$H\e(B C-_ 
+\e$B$r%?%$%W$7$?$3$H$K$J$j$^$9!#\e(B
 
-     \e$B2hLL$N2<$NJ}$r8+$k$H!"$3$N$h$&$J46$8$G%b!<%I%i%$%s$,I=<($5$l$F$$$k$H;W\e(B
-\e$B$$$^$9!#\e(B
+C-_ \e$B$d\e(B C-x u \e$B$O?tCM0z?t$r7+$jJV$72s?t$H2r<a$7$^$9!#\e(B
 
 
-(\e$BNc\e(B)  [--]J:--**-Mule: MULE.tut     (Fundamental) ---55%--------------
+\e$B!v%U%!%$%k\e(B
+==========
 
+\e$BJT=8$7$F$$$kJ8>O$r915WE*$JJ*$K$9$k$K$O!"$=$l$r%U%!%$%k$KJ]B8$7$J$1$l$P\e(B
+\e$B$J$j$^$;$s!#$5$b$J$$$H!"\e(BXEmacs \e$B$N=*N;$HF1;~$K$=$l$O$J$/$J$C$F$7$^$$$^\e(B
+\e$B$9!#JT=8$7$?J*$r%U%!%$%k$KF~$l$k$K$O%U%!%$%k$r3+$$$F$+$i$7$^$9!#!J%U%!\e(B
+\e$B%$%k$r\e(B "visit" \e$B$9$k$H$b8@$$$^$9!K!#\e(B
 
-     \e$B$3$N\e(BEmacs\e$B%A%e!<%H%j%"%k$N%3%T!<$O\e(BMULE.tut\e$B$H8F$P$l$F$$$^$9!#%U%!%$%k$r\e(B
-\e$B%U%!%$%s%I!J%U%!%$%k$r8+$D$1$F%P%C%U%!$KFI$_9~$`$3$H!K$9$k$H!"\e(BMULE.tut\e$B$NIt\e(B
-\e$BJ,$KI=<($5$l$^$9!#Nc$($P!"\e(Bnew-file\e$B$H$$$&L>A0$N%U%!%$%k$r%U%!%$%s%I$7$?$J$i\e(B
-\e$B$P!"\e(B"Mule: new-file"\e$B$H$$$&%b!<%I%i%$%s$K$J$k$G$7$g$&!#\e(B
+\e$B%U%!%$%k$r3+$/$H$O!"$=$N%U%!%$%k$NCf?H$r\e(B XEmacs \e$B$G8+$k$3$H$r0UL#$7$^$9!#\e(B
+\e$B?'!9$J0UL#$G!"$=$l$O$"$J$?$,%U%!%$%k<+?H$rJT=8$7$F$$$k$+$NMM$G$9!#$7$+\e(B
+\e$B$7!"\e(BXEmacs \e$B$G9T$&JQ99$O%U%!%$%k$r%;!<%V$9$kKx$O915WE*$J$b$N$H$J$j$^$;\e(B
+\e$B$s!#$3$l$O!"$=$l$rK>$^$J$$$N$K!"ESCf$^$GJQ99$7$?%U%!%$%k$,;D$k$N$rHr$1\e(B
+\e$B$k$?$a$G$9!#%;!<%V$7$?8e$G$5$(!"JQ99$7$?$b$N$,4V0c$C$F$$$?;~$N$?$a$K!"\e(B
+\e$B85$N%U%!%$%k$OL>A0$rJQ$($F;D$5$l$^$9!#\e(B
 
-\e$BCm0U!'\e(B         \e$B%b!<%I%i%$%s$K$D$$$F$O8e$[$I@bL@$7$^$9!#>/$7$*BT$A$r!#\e(B
+\e$B2hLL$N0lHV2<6a$/$K!"\e(B"ISO7--%%-XEmacs: TUTORIAL.ja" \e$B$NMM$JJ8;zNs$G;O$^\e(B
+\e$B$j\e(B "----" \e$B$G=*$C$F$$$k9T$,$"$k$O$:$G$9!#2hLL$N$3$NItJ,$O>o$K8=:_3+$$$F\e(B
+\e$B$$$k%U%!%$%k$NL>A0$,I=<($5$l$F$$$^$9!#:#$O\e(B "TUTORIAL.ja" \e$B$H$$$&L>$N%U%!\e(B
+\e$B%$%k!J$3$l$O\e(B XEmacs \e$BF~Lg%,%$%I$N$"$J$?MQ$N%3%T!<$G$9!K$r3+$$$F$$$^$9!#\e(B
+XEmacs \e$B$G%U%!%$%k$r3+$/$H$=$N%U%!%$%k$NL>A0$,$3$NItJ,$K8=$l$^$9!#\e(B
 
-     \e$B%U%!%$%k$r%U%!%$%s%I$7$?$j!"%;!<%V$7$?$j$9$k%3%^%s%I$O!"$3$l$^$G$N$b$N\e(B
-\e$B$H$O0c$$!"#2$D$NJ8;z$+$i$J$C$F$$$^$9!#\e(BC-x  \e$B$KB3$$$FF~NO$9$kJ8;z$,!"%U%!%$%k\e(B
-\e$B$KBP$7$F9T$&A`:n$rI=$7$^$9!#\e(B
+\e$B%U%!%$%k$r3+$$$?$jJ]B8$7$?$j$9$k%3%^%s%I$O!"#2$D$NJ8;z$+$i@.$k$H$$$&E@\e(B
+\e$B$G:#$^$G3X$s$@B>$N%3%^%s%I$H$O0c$$$^$9!#N>J}$H$b!"\e(BControl-x \e$B$H$$$&J8;z\e(B
+\e$B$G;O$^$j$^$9!#\e(BControl-x \e$B$G;O$^$k%3%^%s%I$O$?$/$5$s$"$j$^$9!#B?$/$O%U%!\e(B
+\e$B%$%k!"%P%C%U%!$d$=$l$i$K4XO"$7$?$b$N$K4X78$7$?$3$H$r$7$^$9!#$3$l$i$N%3\e(B
+\e$B%^%s%I$O#2!"#3!"#4J8;z$G$9!#\e(B
 
-     \e$B$b$&0l$D$3$l$^$G$N$b$N$H0c$&E@$O!"%U%!%$%s%I$N;~!"%U%!%$%kL>$r\e(BEmacs\e$B$K\e(B
-\e$BLd$o$l$^$9!#$3$N$3$H$r!"C<Kv$+$i0z?t$rFI$_9~$s$G$/$k%3%^%s%I$H8@$C$F$$$^$9!#\e(B
+\e$B%U%!%$%k$r3+$/$?$a$N%3%^%s%I$O$3$l$^$G3X$s$@$b$N$H$O0c$$!"%U%!%$%k$NL>\e(B
+\e$BA0$r;XDj$7$J$1$l$P$J$j$^$;$s!#$3$l$r!"%3%^%s%I$,!VC<Kv$+$i0z?t$rFI$_9~\e(B
+\e$B$`!W$H8@$$$^$9!#:#$N>l9g$O0z?t$O%U%!%$%kL>$G$9!#<!$N%3%^%s%I\e(B
 
-\e$BCm0U!'\e(B         \e$B$3$N>l9g$O%U%!%$%kL>$G$9!#\e(B
+       C-x C-f   Find a file
 
-                    C-x C-f   \e$B%U%!%$%k$r8+$D$1$k!J%U%!%$%s%I$9$k!K\e(B
+\e$B$r%?%$%W$9$k$H!"\e(BXEmacs \e$B$O%U%!%$%kL>$rJ9$$$F$-$^$9!#%?%$%W$7$?%U%!%$%k\e(B
+\e$BL>$O2hLL$N:G2<9T$KI=<($5$l$^$9!#$3$N:G2<9T$O!"$3$&$$$&F~NO$N$?$a$K;H$C\e(B
+\e$B$F$$$k;~$O!"%_%K%P%C%U%!$H8F$S$^$9!#DL>o$NJT=8%3%^%s%I$G%U%!%$%kL>$rJT\e(B
+\e$B=8$9$k$3$H$b$G$-$^$9!#\e(B
 
-     Emacs\e$B$O%U%!%$%kL>$rJ9$$$F$-$^$9!#$=$l$O!"2hLL$N2<$N9T$K8=$l$^$9!#%U%!\e(B
-\e$B%$%kL>$r;XDj$7$F$$$kItJ,$O!"%_%K%P%C%U%!$H8F$P$l$k$b$N$G$9!#%_%K%P%C%U%!$O\e(B
-\e$B$3$NMM$J;H$o$lJ}$r$7$^$9!#%U%!%$%kL>$KB3$$$F!"%j%?!<%s%-!<$r2!$9$H!"%_%K%P\e(B
-\e$B%C%U%!$KI=<($5$l$F$$$?FbMF$O$b$&I,MW$G$O$J$/$J$k$N$G>C$($F$7$^$$$^$9!#\e(B
+\e$B%U%!%$%kL>$NF~NOCf!J$"$k$$$O$=$NB>$N%_%K%P%C%U%!F~NOCf!K$K\e(B C-g \e$B$K$h$C\e(B
+\e$B$F%3%^%s%I$r%-%c%s%;%k$G$-$^$9!#\e(B
 
-       >> C-x C-f\e$B$H%?%$%W$7$?8e$K\e(BC-g\e$B$H%?%$%W$7$F2<$5$$!#%_%K%P%C%U%!$NFbMF\e(B
-          \e$B$r<h$j>C$7!"$^$?!"\e(BC-x C-f\e$B%3%^%s%I$b<h$j>C$7$^$9!#$H8@$&Lu$G!"2?$b\e(B
-         \e$B%U%!%$%k$r8+$D$1$k$h$&$J$3$H$O$7$^$;$s!#\e(B
+>> C-x C-f \e$B$r%?%$%W$7$F$+$i\e(B C-g \e$B$r%?%$%W$7$F$_$^$7$g$&!#%_%K%P%C%U%!$,\e(B
+   \e$B<h$j>C$5$l!"$=$l$r;H$C$F$$$?%3%^%s%I\e(B C-x C-f \e$B<+BN$b<h$j>C$5$l$^$9!#\e(B
+   \e$B$@$+$i!"%U%!%$%k$O2?$b3+$+$l$^$;$s!#\e(B
 
-     \e$B:#EY$O%U%!%$%k$r%;!<%V$7$F$_$^$7$g$&!#:#$^$G$NJQ99$rJ]B8$9$k$?$a$K$O<!\e(B
-\e$B$N$h$&$J%3%^%s%I$r;H$$$^$9!#\e(B
+\e$B%U%!%$%kL>$rF~NO$7$?$i!"\e(B<Return>\e$B%-!<$r%?%$%W$7F~NO$r40N;$5$;$^$9!#$=$&\e(B
+\e$B$9$k$H!"\e(BC-x C-f \e$B%3%^%s%I$,Av$j;O$a;XDj$7$?%U%!%$%k$r3+$-$^$9!#%_%K%P%C\e(B
+\e$B%U%!$O\e(B C-x C-f \e$B%3%^%s%I$N=*N;$H$H$b$K>C$($^$9!#\e(B
 
-     C-x C-s   \e$B%U%!%$%k$r%;!<%V$9$k\e(B
+\e$B%U%!%$%k$NFbMF$,2hLL$KI=<($5$l$k$H!"$=$NFbMF$rJQ99$9$k$3$H$,$G$-$^$9!#\e(B
+\e$B2C$($?JQ99$r915WE*$J$b$N$K$7$?$1$l$P!"<!$N%3%^%s%I$r%?%$%W$7$^$9!#\e(B
 
-     Emacs\e$B$NFbMF$O%U%!%$%k$K=q$-=P$5$l$^$9!#%;!<%V$9$k;~!"%*%j%8%J%k$N\e(B
-\e$B%U%!%$%k$O?7$7$$L>A0$r$D$1$i$l$F;D$5$l$F$$$k$N$GFbMF$O<:$o$l$^$;$s!#$=\e(B
-\e$B$N?7$7$$L>A0$O%*%j%8%J%k$N%U%!%$%k$NL>A0$K\e(B'~'\e$B$r$D$1$?$b$N$G$9!#\e(B
+       C-x C-s   Save the file
 
-     \e$B%;!<%V$,=*$o$k$H!"\e(BEmacs\e$B$O%;!<%V$7$?%U%!%$%k$NL>A0$rI=<($7$^$9!#\e(B
+\e$B$3$l$O\e(B XEmacs \e$B$,J];}$7$F$$$kJ8>O$r%U%!%$%k$K%3%T!<$7$^$9!#=i$a$F$3$l$r\e(B
+\e$B<B9T$9$k$H$-$O!"85$N%U%!%$%k$r?7$7$$L>A0$KIU$1BX$($k$N$G!"$=$NFbMF$O<:\e(B
+\e$B$o$l$^$;$s!#$=$N?7$7$$L>A0$O85$N%U%!%$%k$NL>A0$N:G8e$K\e(B'~'\e$B$r$D$1$?$b$N\e(B
+\e$B$G$9!#\e(B
 
-       >> C-x C-s\e$B$H%?%$%W$7$F%A%e!<%H%j%"%k$N%3%T!<$r%;!<%V$7$F2<$5$$!#$=$N\e(B
-          \e$B;~!"2hLL$N2<$NJ}$K\e(B"Wrote ...../MULE.tut"\e$B$HI=<($5$l$^$9!#\e(B
+\e$B%;!<%V$,=*$o$k$H!"%;!<%V$7$?%U%!%$%k$NL>A0$,I=<($5$l$^$9!#3d$HIQHK$K%;!<\e(B
+\e$B%V$7$?J}$,NI$$$G$7$g$&!#%7%9%F%`$,Mn$A$F$b$;$C$+$/$N:n6H$,%Q%"$K$J$i$J\e(B
+\e$B$$$h$&$K!#\e(B
 
-     \e$B?7$7$$%U%!%$%k$r:n$k;~!"$"$?$+$b0JA0$+$i$"$C$?%U%!%$%k$r%U%!%$%s%I$9$k\e(B
-\e$B$h$&$J%U%j$r$7$^$9!#$=$&$7$F!"$=$N%U%!%$%s%I$7$?%U%!%$%k$K%?%$%W$7$F$$$-$^\e(B
-\e$B$9!#\e(B
+>> C-x C-s \e$B$H%?%$%W$7$F$3$NF~Lg%,%$%I$N%3%T!<$r%;!<%V$7$F2<$5$$!#\e(B
+   \e$B2hLL:G2<CJ$K\e(B "Wrote ...TUTORIAL.ja" \e$B$HI=<($5$l$^$9!#\e(B
 
-     \e$B%U%!%$%k$r%;!<%V$7$h$&$H$7$?;~$K=i$a$F!"\e(BEmacs\e$B$O:#$^$GJT=8$7$F$$$?FbMF\e(B
-\e$B$r%U%!%$%k$NCf$K=q$-9~$_$^$9!#\e(B
+\e$BCm0U!'%7%9%F%`$K$h$C$F$O\e(B C-x C-s \e$B$H%?%$%W$9$k$H2hLL$,F0$+$J$/$J$j\e(B 
+XEmacs \e$B$,I=<($7$h$&$H$9$k$b$N$,2?$b2hLL$K=P$J$/$J$j$^$9!#$3$l$O!"%U%m!<\e(B
+\e$B%3%s%H%m!<%k$H8F$P$l$k#O#S$N5!G=$,\e(B C-s \e$B$rB*$(!"\e(BXEmacs \e$B$KEO$5$J$$$h$&$K\e(B
+\e$B$7$F$$$k$N$G$9!#$3$l$r2r=|$9$k$K$O\e(B C-q \e$B$r%?%$%W$7$^$9!#$=$l$+$i\e(B XEmacs 
+\e$B%^%K%e%"%k$N\e(B "Spontaneous Entry to Incremental Search (\e$BCN$i$L4V$K%$%s\e(B
+\e$B%/%j%a%s%?%k%5!<%A$K$J$k\e(B)" \e$B$N@a$rFI$s$G$/$@$5$$!#$3$N$d$C$+$$$J#O#S$N\e(B
+\e$B5!G=$K$I$&BP=h$9$l$PNI$$$+$,:\$C$F$$$^$9!#\e(B
 
+\e$B4{B8$N%U%!%$%k$r3+$-!"FbMF$r8+!"JT=8$9$k$3$H$,$G$-$^$9!#B8:_$7$J$$%U%!\e(B
+\e$B%$%k$r3+$/$3$H$b$G$-$^$9!#\e(BXEmacs \e$B$G?7$7$$%U%!%$%k$r:n$k$K$O<!$N$h$&$K\e(B
+\e$B$7$^$9!#%U%!%$%k$r3+$-$^$9!#:G=i$O6u$C$]$G$9$M!#J8>O$rF~NO$7$F$$$-$^$9!#\e(B
+\e$B%U%!%$%k$r%;!<%V$7$h$&$H$7$?;~$K=i$a$F?7$7$$%U%!%$%k$,:n$i$l!":#$^$GF~\e(B
+\e$BNO$7$?FbMF$,$=$l$K=q$-9~$^$l$^$9!#$=$l0J9_$O!"$"$J$?$O4{B8$N%U%!%$%k\e(B
+\e$B!J$?$C$?:#:n$i$l$?%U%!%$%k!K$rJT=8$7$F$$$k$H;W$C$F2<$5$$!#\e(B
 
-\e$B%P%C%U%!\e(B
-========
 
-     \e$B$b$7!"#2HVL\$N%U%!%$%k$r\e(B C-x C-f \e$B$G<h$j=P$9$H!"#1HVL\$N%U%!%$%k$O\e(BEmacs
-\e$BFbIt$K;D$j$^$9!#\e(BEmacs\e$BFbIt$K$"$k%U%!%$%k$+$i%F%-%9%H$rFI$_9~$s$GJ]B8$7$F$$$k\e(B
-\e$B$b$N$O%P%C%U%!$H8F$P$l$^$9!#%U%!%$%k$N<h$j=P$7$O!"\e(BEmacs\e$BFbIt$K?7$7$$%P%C%U%!\e(B
-\e$B$r:n$j$^$9!#\e(B
+\e$B!v%P%C%U%!\e(B
+==========
 
-     Emacs\e$B$NCf$KJ]B8$7$F$$$k%P%C%U%!$N%j%9%H$r8+$k$K$O!"<!$N$h$&$K%?%$%W$7\e(B
-\e$B$^$9!#\e(B
+\e$B#2$DL\$N%U%!%$%k$r\e(B C-x C-f \e$B$G3+$$$F$b!":G=i$N%U%!%$%k$O\e(B XEmacs \e$BFbIt$K\e(B
+\e$B;D$C$?$^$^$G$9!#$=$C$A$N%U%!%$%k$KLa$k$K$O$b$&0lEY\e(B C-x C-f \e$B$G$=$N%U%!\e(B
+\e$B%$%k$r3+$1$P$h$$$N$G$9!#$3$&$d$C$F!"4v$D$b$N%U%!%$%k$r\e(B XEmacs \e$B$G3+$/$3\e(B
+\e$B$H$,$G$-$^$9!#\e(B
 
-     C-x C-b
+>> "foo" \e$B$H$$$&L>$N%U%!%$%k$r:n$j$^$7$g$&!#\e(BC-x C-f foo <Return> \e$B$G$9!#\e(B
+   \e$B2?$+J8>O$rF~$l!"JT=8$7!"\e(BC-x C-s \e$B$G\e(B "foo" \e$B$r%;!<%V$7$F2<$5$$!#\e(B
+   \e$B:G8e$K\e(B C-x C-f TUTORIAL.ja <Retrun> \e$B$H%?%$%W$7\e(B
+   \e$BF~Lg%,%$%I$KLa$j$^$7$g$&!#\e(B
+   
+XEmacs \e$B$O%U%!%$%k$NFbMF$r%P%C%U%!!J\e(Bbuffer\e$B!K$H8F$P$l$k$b$N$NCf$K3JG<$7\e(B
+\e$B$F$$$^$9!#%U%!%$%k$r3+$/$H?7$7$$%P%C%U%!$,$G$-$^$9!#\e(BXEmacs \e$B$,8=:_;}$C\e(B
+\e$B$F$$$k%P%C%U%!$N%j%9%H$r8+$k$K$O!"<!$N$h$&$K%?%$%W$7$^$9!#\e(B
 
-       >> C-x C-b \e$B$H%?%$%W$7$J$5$$!#$=$l$>$l$N%P%C%U%!$,$I$N$h$&$KL>A0$r;}\e(B
-          \e$B$C$F$$$k$+!"$=$7$F!"$I$N$h$&$J%U%!%$%kL>$r$D$1$F$$$k$N$+4Q;!$7$J\e(B
-          \e$B$5$$!#\e(B
+       C-x C-b   List buffers
 
-     \e$B%P%C%U%!$K$O%U%!%$%k$H0lCW$J$$$b$N$b$"$j$^$9!#$?$H$($P!"\e(B
-"*Buffer List*" \e$B$H$$$&%U%!%$%k$O$"$j$^$;$s!#$3$l$O\e(B C-x C-b \e$B$K$h$C$F:n$i$l\e(B
-\e$B$?%P%C%U%!%j%9%H$KBP$7$F$N%P%C%U%!$G$9!#\e(B
+>> C-x C-b \e$B$r;n$7$F$_$^$7$g$&!#\e(B
 
-     \e$B$"$J$?$,8+$F$$$k\e(BEmacs\e$B%&%#%s%I%&Fb$K$"$k!"$I$s$J%F%-%9%H$G$b!"$$$:$l$+\e(B
-\e$B$N%P%C%U%!Fb$K$"$j$^$9!#\e(B
+\e$B3F%P%C%U%!$,$I$s$JIw$KL>A0$d$=$l$,3+$$$F$$$k%U%!%$%k$KBP$9$k%U%!%$%kL>\e(B
+\e$B$r;}$C$F$$$k$+8+$F2<$5$$!#%U%!%$%k$r3+$$$F$$$J$$%P%C%U%!$b$"$j$^$9!#$?\e(B
+\e$B$H$($P!"\e(B"*Buffer List*" \e$B$H$$$&L>$N%P%C%U%!$O$I$s$J%U%!%$%k$b3+$$$F$$$^\e(B
+\e$B$;$s!#$3$l$O%P%C%U%!$N%j%9%H$rFbMF$H$9$k%P%C%U%!$G!"\e(BC-x C-b \e$B$G:n$i$l$?\e(B
+\e$B$b$N$G$9!#\e(BXEmacs \e$B$N%&%#%s%I%&Fb$K$"$k%F%-%9%H$O$I$l$b!"$$$:$l$+$N%P%C\e(B
+\e$B%U%!$N0lIt$G$9!#\e(B
 
-       >> \e$B%P%C%U%!%j%9%H$r>C$9$?$a\e(B C-x 1 \e$B$H%?%$%W$7$J$5$$!#\e(B
+>> C-x 1 \e$B$H%?%$%W$7$F%P%C%U%!%j%9%H$r>C$7$^$7$g$&!#\e(B
 
-     \e$B$b$7!"$"$k%U%!%$%k$N%F%-%9%H$KJQ99$r9T$J$C$F$+$i!"B>$N%U%!%$%k$r<h$j=P\e(B
-\e$B$7$?$H$7$?$i!":G=i$N%U%!%$%k$O%;!<%V$5$l$F$$$^$;$s!#$=$NJQ99$O\e(BEmacs\e$BFbIt$N%U\e(B
-\e$B%!%$%k$HBP1~$9$k%P%C%U%!$NCf$@$1$K9T$J$o$l$F$$$^$9!#\e(B
+\e$B$"$k%U%!%$%k$NFbMF$K$J$s$i$+$NJQ99$r2C$(!"$=$l$+$iB>$N%U%!%$%k$r3+$$$F\e(B
+\e$B$b!":G=i$N%U%!%$%k$O$^$@%;!<%V$5$l$^$;$s!#JQ99$O\e(B XEmacs \e$B$NFbIt!"$=$N%U%!\e(B
+\e$B%$%k$KBP1~$9$k%P%C%U%!$NCf$K;D$C$?$^$^$G$9!##2HVL\$N%U%!%$%k$N%P%C%U%!\e(B
+\e$B$r:n$C$?$j!"JT=8$7$?$j$7$F$b!":G=i$N%U%!%$%k$N%P%C%U%!$K$O2?$N1F6A$b$"\e(B
+\e$B$j$^$;$s!#$3$l$O$H$F$bLr$KN)$A$^$9$,!":G=i$N%U%!%$%k$N%P%C%U%!$r%;!<%V\e(B
+\e$B$9$k2?$+JXMx$JJ}K!$,I,MW$@$H$$$&$3$H$G$b$"$j$^$9!#\e(B C-x C-s \e$B$G%;!<%V$9\e(B
+\e$B$k$?$a$K\e(B C-x C-f \e$B$G85$N%P%C%U%!$KLa$k$N$O$OLq2p$G$9!#$=$3$G<!$N%3%^%s\e(B
+\e$B%I$r;H$$$^$9!#\e(B
 
-     \e$B#2HVL\$N%U%!%$%k$KBP1~$9$k%P%C%U%!$r:n$C$?$j!"%(%G%#%C%H$7$?$j$7$F$b!"\e(B
-\e$B#1HVL\$N%U%!%$%k$KBP1~$9$k%P%C%U%!$K$O2?$b1F6A$rM?$($^$;$s!#$3$l$O$H$F$b;H\e(B
-\e$B$$0W$/!"$^$?!"#1HVL\$N%U%!%$%k$KBP1~$9$k%P%C%U%!$r<h$C$F$*$/$?$a$KLr$KN)$D\e(B
-\e$BJ}K!$G$9!#\e(B
+     C-x s   \e$B2?$l$+$N%P%C%U%!$r%;!<%V$9$k\e(B
 
-     C-x C-s \e$B$G%P%C%U%!$r%;!<%V$9$k$?$a$K\e(B C-x C-f \e$B$G%P%C%U%!$r@Z$jBX$($k$N\e(B
-\e$B$OLq2p$G$9!#$=$3$G<!$N%3%^%s%I$r;H$$$^$9!#\e(B
+C-x s \e$B$O!"$^$@%;!<%V$7$F$$$J$$JQ99$,$"$k%P%C%U%!$=$l$>$l$K$D$$$F!"$=$l\e(B
+\e$B$r%;!<%V$9$k$+$I$&$+$rJ9$$$F$-$^$9!#\e(B
 
-     C-x s   \e$B8=:_$"$k%P%C%U%!$r%;!<%V$9$k!#\e(B
+>> \e$B0l9T%F%-%9%H$rF~NO$7$F$+$i\e(B C-x s \e$B$H%?%$%W$7$F2<$5$$!#\e(B
+   TUTORIAL.ja \e$B$H$$$&%P%C%U%!$r%;!<%V$9$k$+$I$&$+J9$$$F$/$k$O$:$G$9!#\e(B
+   \e$B!V$O$$!W$HEz$($k$?$a$K\e(B "y" \e$B$H%?%$%W$7$F2<$5$$!#\e(B
 
-     C-x s \e$B$OFbMF$rJQ$($?%P%C%U%!A4$F$r%U%!%$%k$K%;!<%V$7$^$9!#$3$N;~!"$R$H\e(B
-\e$B$D$R$H$D$N\e(B(\e$B%;!<%V$5$l$k$Y$-\e(B)\e$B%P%C%U%!$KBP$7$F!"%;!<%V$9$k$+!"$7$J$$$+$r\e(By\e$B$+\e(Bn
-\e$B$GLd$o$l$^$9!#$3$NI=<($O2hLL$N2<$N9T$KI=<($5$l$^$9!#Nc$($P!"$3$N$h$&$K$G$9!#\e(B
+\e$B!v%a%K%e!<$r;H$&\e(B
+----------------
 
-             Save file  /usr/private/yours/MULE.tut? (y or n)
+\e$B$b$7\e(B X \e$BC<Kv$r;H$C$F$$$l$P!"\e(BXEmacs \e$B$N2hLL$N:G>eIt$K%a%K%e!<%P!<$,$"$k$3\e(B
+\e$B$H$K5$IU$/$G$7$g$&!#$3$N%a%K%e!<%P!<$r;H$C$F!V%U%!%$%k$r3+$/!W$H$$$&$h\e(B
+\e$B$&$J$[$H$s$I$N$h$/;H$&\e(B XEmacs \e$B$N%3%^%s%I$r;HMQ$9$k$3$H$,$G$-$^$9!#FCDj\e(B
+\e$B$N%3%^%s%I$r;HMQ$9$k$?$a$NBG80$r3P$($J$/$F$h$$$N$G!":G=i$O$3$NJ}$,4JC1\e(B
+\e$B$K;W$($k$G$7$g$&!#\e(BXEmacs \e$B$K47$l$F$/$k$K$7$?$,$C$F!"%-!<%\!<%I$N%3%^%s\e(B
+\e$B%I$r;H$&$3$H$,4JC1$K$J$C$F$/$k$G$7$g$&!#BP1~$9$k%-!<%\!<%I%3%^%s%I$,%3\e(B
+\e$B%^%s%I$N<!$K=q$+$l$F$$$k$+$i$G$9!#\e(B
 
+\e$B%a%K%e!<%P!<$K$O%-!<%\!<%I$G40A4$KF1Ey$KBP1~$9$k$b$N$,L5$$9`L\$,B?$/$"\e(B
+\e$B$j$^$9!#Nc$($P!"\e(BBuffers \e$B%a%K%e!<$O:G6a;H$o$l$?=g$KA*Br2DG=$J%P%C%U%!$N\e(B
+\e$B0lMw$rI=<($7$^$9!#C1$K\e(B Buffers \e$B%a%K%e!<$GL>A0$r8+$D$1$FA*Br$9$k$@$1$G\e(B
+\e$B$I$N%P%C%U%!$K$G$b0\F0$G$-$^$9!#\e(B
 
 
-\e$B%3%^%s%I$N3HD%\e(B
-==============
+\e$B!v%^%&%9$r;H$&\e(B
+--------------
+
+X \e$B$N2<$G<B9T$5$l$F$$$k$H$-$O!"\e(BXEmacs \e$B$O40A4$K%^%&%95!G=$H0lBN2=$7$F$$\e(B
+\e$B$^$9!#K>$_$N>l=j$G:8%\%?%s$r%/%j%C%/$9$k$3$H$G%F%-%9%H$N%+!<%=%k$r0\F0\e(B
+\e$B$9$k$3$H$,$G$-!"A*Br$7$?$$%F%-%9%H$r:8%^%&%9%\%?%s$G%I%i%C%0$9$k$3$H$G\e(B
+\e$B%F%-%9%H$rA*Br$9$k$3$H$,$G$-$^$9!#!J$b$7$/$O!"$=$NBe$o$j$K%F%-%9%H$rA*\e(B
+\e$BBr$9$k$?$a$K0lJ}$NC<$G:8%^%&%9%\%?%s$r%/%j%C%/$7!"B>$NC<$K0\F0$7$F\e(B
+Shift \e$B$r2!$7$J$,$i%/%j%C%/$9$k$3$H$,$G$-$^$9!#!K\e(B
+
+\e$BA*Br$7$?%F%-%9%H$r>C5n\e(B \e$B!J\e(Bkill\e$B!K\e(B \e$B$9$k$?$a$K$O!"\e(BC-w \e$B$+!"\e(BEdit \e$B%a%K%e!<$N\e(B
+Cut \e$B9`L\$r;H$($^$9!#$3$l$i$OEy2A$G$O\e(B*\e$BL5$$\e(B*\e$B$3$H$KCm0U$7$F$/$@$5$$\e(B: C-w
+\e$B$O\e(BXEmacs \e$B$NFbIt$N$_$K%F%-%9%H$rJ]B8$7$^$9$,!J>e$G@bL@$7$?\e(B C-k \e$B$H;w$F$$\e(B
+\e$B$^$9!K!"\e(BCut \e$B$O$3$l$H$H$b$K%F%-%9%H$rB>$N%"%W%j%1!<%7%g%s$,;HMQ2DG=$J\e(B X
+\e$B$N%/%j%C%W%\!<%I$K$bF~$l$^$9!#\e(B
 
-     \e$B%(%G%#%?$K$O!"%3%s%H%m!<%k!&%-!<$d%a%?!&%-!<$GF~NO$G$-$k$b$N$h$j$b$:$C\e(B
-\e$B$HB?$/$N%3%^%s%I$,$"$j$^$9!#$3$l$i$r07$&$?$a$K!"3HD%!J\e(BeXtend\e$B!K%3%^%s%I$r\e(B
+X \e$B$N%/%j%C%W%\!<%I$+$i%F%-%9%H$r<hF@$9$k$K$O!"\e(BEdit \e$B%a%K%e!<$N\e(B Paste \e$B9`\e(B
+\e$BL\$r;H$C$F$/$@$5$$!#\e(B
+
+\e$B??Cf$N%^%&%9$N%\%?%s$OIaDL$O2hLL$G8+$($F$$$k$b$N$rA*Br$9$k$?$a$K;H$o$l\e(B
+\e$B$^$9!#Nc$($P!"\e(BInfo\e$B!J%*%s%i%$%s\e(B XEmacs \e$B@bL@J8=q!K$K\e(B C-h i \e$B$+\e(B Help \e$B%a%K%e!<\e(B
+\e$B$r;H$C$FF~$l$P!"%O%$%i%$%H$5$l$?%j%s%/$r??Cf$N%\%?%s$r2!$9$3$H$GDI$&$3\e(B
+\e$B$H$,$G$-$^$9!#F1MM$K!"%U%!%$%kL>$rF~NO$7$F$$$k$H$-$K!JNc$($P!"!V%U%!%$\e(B
+\e$B%k$r3+$/!W$GF~NO$rB%$5$l$?$H$-!K\e(B TAB \e$B$GJd408uJd$rI=<($5$;$k$H!"8uJd$N\e(B
+\e$B0l$D$rA*Br$9$k$?$a$K??Cf$N%\%?%s$G%/%j%C%/$9$k$3$H$,$G$-$^$9!#\e(B
+
+\e$B1&$N%^%&%9$N%\%?%s$O%]%C%W%"%C%W%a%K%e!<$rI=<($7$^$9$3$N%a%K%e!<$NFbMF\e(B
+\e$B$O:#$N%b!<%I$K0MB8$7!"IaDL$O;HMQ$70W$$$h$&$K#2!"#3$NNI$/;H$o$l$k%3%^%s\e(B
+\e$B%I$r4^$s$G$-$^$9!#\e(B
+
+>> \e$B1&%^%&%9%\%?%s$r2!$7$F$/$@$5$$!#\e(B
+
+\e$B%a%K%e!<$rI=<($5$;B3$1$k$?$a$K$O%\%?%s$r2!$7B3$1$kI,MW$,$"$j$^$9!#\e(B
+
+
+\e$B!v%3%^%s%I$N3HD%\e(B
+================
+
+XEmacs \e$B$K$O!"%3%s%H%m!<%kJ8;z$d%a%?J8;z$K3dEv$i$l$k$h$j$b$:$C$H$:$C$H\e(B
+\e$BB?$/$N%3%^%s%I$,$"$j$^$9!#$3$l$i$r07$&$?$a$K!"3HD%!J\e(BeXtend\e$B!K%3%^%s%I$r\e(B
 \e$B;H$$$^$9!#$=$l$K$O!"0J2<$N#2$D$N<oN`$,$"$j$^$9!#\e(B
 
      C-x     \e$BJ8;z$K$h$k3HD%!#B3$1$F0lJ8;z$rF~NO$7$^$9!#\e(B
      ESC x   \e$BL>A0$K$h$k3HD%!#B3$1$F%3%^%s%I$NL>A0$rF~NO$7$^$9!#\e(B
 
-     \e$B$3$l$i$O0lHL$K!"JXMx$@$1$l$I$b!"$3$l$^$G8+$F$-$?$b$N$[$IIQHK$K$OMQ$$$i\e(B
-\e$B$l$J$$%3%^%s%I$N$?$a$N$b$N$G$9!#\e(BC-x  C-f \e$B!J%U%!%$%s%I!K$d\e(B C-x C-s\e$B!J%;!<%V!K\e(B
-\e$B$O$3$NCg4V$G$9!#B>$K!"\e(BC-x C-c\e$B!J%(%G%#%?$N=*N;!K$b$=$&$G$9!#\e(B
+\e$B$3$l$i$O!"0lHLE*$K$OJXMx$@$1$l$I$b!"$3$l$^$G8+$F$-$?$b$N$[$I$OIQHK$KMQ\e(B
+\e$B$$$i$l$J$$%3%^%s%I$G$9!#\e(BC-x C-f \e$B!J%U%!%$%k$r3+$/!K$d\e(B C-x C-s\e$B!J%U%!%$%k\e(B
+\e$B$r%;!<%V!K$O$3$NCg4V$G$9!#B>$K!"\e(BC-x C-c\e$B!J\e(BXEmacs \e$B$r=*N;!K$b$=$&$G$9!#\e(B
+C-x C-c \e$B$K4X$7$F$O!"$=$l$^$G$K2C$($?JQ99$,L5$/$J$k$N$r?4G[$9$kI,MW$O$"\e(B
+\e$B$j$^$;$s!#\e(BXEmacs \e$B$r=*N;$5$;$kA0$KJQ99$5$l$?3F%U%!%$%k$r%;!<%V$9$k$+$I\e(B
+\e$B$&$+J9$$$F$-$^$9$+$i!#\e(B
 
-     C-z\e$B$O\e(BEmacs\e$B$rH4$1$k$N$KNI$/;H$o$l$kJ}K!$G$9!#\e(BEmacs\e$B$r=*N;$9$k$3$H$J$/!"\e(B
-\e$B0lC6!"\e(Bcsh\e$B$N%l%Y%k$KLa$k$K$O0lHVNI$$J}K!$H8@$($k$G$7$g$&!#\e(BC-z\e$B$r9T$J$o$l$F$b\e(B
-Emacs\e$B$O%9%H%C%W$7$F$$$k$@$1$G!"FbMF$,GK2u$5$l$k$H$$$&$3$H$O$"$j$^$;$s!#\e(B
+C-z \e$B$O!V0l;~E*$K!W\e(B XEmacs \e$B$rH4$1$k%3%^%s%I$G$9!#$^$?F1$8\e(B XEmacs \e$B%;%C%7%g\e(B
+\e$B%s$KLa$k$3$H$,$G$-$^$9!#\e(B
 
-\e$BCm0U\e(B:          \e$B$?$@$7\e(BX-window\e$B$G9T$J$C$F$$$k>l9g!"$b$7$/$O;HMQ$7$F$$$k%7%'%k\e(B
-               \e$B$,\e(Bsh\e$B$N;~$O!"$3$N8B$j$G$O$"$j$^$;$s!#\e(B
+\e$B$=$l$,$G$-$k%7%9%F%`>e$J$i!"\e(BC-z \e$B$O\e(B XEmacs \e$B$r!VCfCG!W$5$;$^$9!#$D$^$j\e(B 
+XEmacs \e$B$r=*N;$9$k$3$H$J$/!"%3%^%s%I%7%'%k$KLa$k$3$H$,$G$-$^$9!#BgJ}$N\e(B
+\e$BI8=`E*$J%7%'%k$J$i!"\e(B`fg' \e$B%3%^%s%I$b$7$/$O\e(B `%emacs' \e$B$K$h$C$F\e(B XEmacs \e$B$r\e(B
+\e$B:F3+$G$-$^$9!#\e(B
 
+\e$B!VCfCG!W5!G=$r<BAu$7$F$$$J$$%7%9%F%`$G$O!"\e(BC-z \e$B$O\e(B XEmacs \e$B$N2<$GAv$k%5%V\e(B
+\e$B%7%'%k$r:n$j!"B>$N%W%m%0%i%`$rAv$i$;$F$+$i$^$?\e(B XEmacs \e$B$KLa$k$3$H$,$G$-\e(B
+\e$B$k$h$&$K$7$^$9!#$3$N>l9gK\Ev$K\e(B XEmacs \e$B$+$iH4$1=P$k$o$1$G$O$"$j$^$;$s$N\e(B
+\e$B$G!"%7%'%k%3%^%s%I$N\e(B `exit' \e$B$,$=$N%5%V%7%'%k$+$i\e(B XEmacs \e$B$KLa$kIaDL$N$d\e(B
+\e$B$jJ}$G$9!#\e(B
 
-     C-x  \e$B%3%^%s%I$O!"$?$/$5$s$"$j$^$9!#$9$G$K3X$s$@$b$N$O0J2<$N$b$N$G$9!#\e(B
+C-x C-c \e$B$O%m%0%"%&%H$7$h$&$H;W$&;~$K;H$&$b$N$G$9!#%a!<%k%D!<%k!J\e(Bmail 
+\e$B%3%^%s%IEy!K$d$=$NB>$NMM!9$J%"%W%j%1!<%7%g%s%W%m%0%i%`$,5/F0$7$?\e(B 
+XEmacs \e$B$+$iH4$1=P$k>l9g$K;H$&$N$b@5$7$$;H$$J}$G$9!#$3$l$i$N%W%m%0%i%`\e(B
+\e$B$O\e(B XEmacs \e$B$NCfCG$K$I$&BP=h$7$FNI$$$+CN$i$J$$$G$7$g$&$+$i!#$7$+$7$J$,$i!"\e(B
+\e$BIaDL$N>l9g$O!"%m%0%"%&%H$7$h$&$7$J$$8B$j$O\e(B XEmacs \e$B$r=*N;$5$;$k$h$j$O\e(B 
+C-z \e$B$GCfCG$5$;$kJ}$,NI$$$G$7$g$&!#\e(B
 
-     C-x C-f   \e$B%U%!%$%k$NJT=8!J\e(BFind\e$B!K\e(B
-     C-x C-s   \e$B%U%!%$%k$NJ]B8!J\e(BSave\e$B!K\e(B
-     C-x C-b   \e$B%P%C%U%!%j%9%H$NI=<(\e(B
-     C-x C-c   \e$B%(%G%#%?$r=*N;$9$k!#%U%!%$%k$NJ]B8$O!"<+F0E*$K$O9T$o$l$^$;\e(B
-               \e$B$s!#$7$+$7!"$b$7%U%!%$%k$,JQ99$5$l$F$$$l$P!"%U%!%$%k$NJ]B8\e(B
-               \e$B$r$9$k$N$+$I$&$+$rJ9$$$F$-$^$9!#J]B8$7$F=*N;$9$kIaDL$NJ}K!\e(B
-               \e$B$O!"\e(BC-x C-s C-x C-c \e$B$H$9$k$3$H$G$9!#\e(B
+C-x \e$B%3%^%s%I$O$?$/$5$s$"$j$^$9!#$3$l$^$G$K!"0J2<$r3X$S$^$7$?!#\e(B
 
-     \e$BL>A0$K$h$k3HD%%3%^%s%I$K$O!"$"$^$j;H$o$l$J$$$b$N$d!"FCDj$N%b!<%I$G$7$+\e(B
-\e$B;H$o$J$$$b$N$J$I$,$"$j$^$9!#Nc$H$7$F!"\e(B"command-apropos" \e$B$r$H$j$"$2$^$9!#$3\e(B
-\e$B$N%3%^%s%I$O%-!<%o!<%I$rF~NO$5$;!"$=$l$K%^%C%A$9$kA4$F$N%3%^%s%I$NL>A0$rI=\e(B
-\e$B<($7$^$9!#\e(BESC x \e$B$H%?%$%W$9$k$H!"%9%/%j!<%s$N2<$K\e(B "M-x" \e$B$,I=<($5$l$^$9!#$3$l\e(B
-\e$B$KBP$7$F!"<B9T$9$k%3%^%s%I$NL>A0!J:#$N>l9g!"\e(B"command-apropos"\e$B!K$rF~NO$7$^$9!#\e(B
-"command-a" \e$B$^$GF~NO$7$?8e%9%Z!<%9$rF~$l$l$P!"8e$NItJ,$O<+F0E*$KJd$o$l$^$9!#\e(B
-\e$B$3$N8e!"%-!<%o!<%I$rJ9$+$l$^$9$+$i!"CN$j$?$$J8;zNs$r%?%$%W$7$^$9!#$J$*!"%-!<\e(B
-\e$B%o!<%I$rF~$l$J$$$H!"A4$F$N%3%^%s%I$,I=<($5$l$^$9!#\e(B
+       C-x C-f   \e$B%U%!%$%k$r3+$/!J\e(BFind\e$B!K\e(B
+       C-x C-s   \e$B%U%!%$%k$N%;!<%V!J\e(BSave\e$B!K\e(B
+       C-x C-b   \e$B%P%C%U%!$N%j%9%H%"%C%W\e(B
+       C-x C-c   XEmacs \e$B$r=*N;\e(B
+       C-x u     \e$B<h$j>C$7\e(B        
 
-       >> ESC x \e$B$r%?%$%W$7!"B3$1$F!"\e(B"command-apropos<Return>" \e$B$"$k$$$O\e(B
-          "command-a<Space><Return>" \e$B$H%?%$%W$7$^$9!#<!$K!"\e(B"kanji<Return>"
-          \e$B$H%?%$%W$7$^$9!#\e(B
+\e$BL>A0$K$h$k3HD%%3%^%s%I$K$O!"$"$^$j;H$o$J$$$b$N$d!"FCDj$N%b!<%I$G$7$+;H\e(B
+\e$B$o$J$$$b$N$,$"$j$^$9!#$?$H$($P\e(B replace-string \e$B$G$9$,!"$3$l$OJ8;zNs$rCV\e(B
+\e$B49$9$k$b$N$G$9!#\e(BM-x \e$B$r%?%$%W$9$k$H!"\e(BXEmacs \e$B$O2hLL$N:G2<9T$K\e(B M-x \e$B$HI=<(\e(B
+\e$B$7F~NO$rB%$9$N$G!"$=$3$K%3%^%s%I$NL>A0!J$3$N>l9g\e(B "replace-string"\e$B!K$r\e(B
+\e$BF~$l$J$1$l$P$J$j$^$;$s!#\e(B"repl s<TAB>" \e$B$H$@$1%?%$%W$9$k$H\e(B XEmacs \e$B$,%3%^\e(B
+\e$B%s%IL>$rJd40$7$F$/$l$^$9!#%3%^%s%IL>$rF~$l$?$i\e(B <Return> \e$B$rBG$C$F2<$5$$!#\e(B
 
-     \e$B8=$l$?!V%&%#%s%I%&!W$r>C$9$K$O!"\e(BC-x 1 \e$B$H%?%$%W$7$^$9!#\e(B
+"Replace string" \e$B%3%^%s%I$K$O0z?t$,Fs$DI,MW$G$9!#$I$NJ8;zNs$r$I$&CV49\e(B
+\e$B$9$k$+$G$9!#3F0z?t$rF~NO$9$k$?$S$K\e(B <Return> \e$B$rBG$C$F2<$5$$!#\e(B
 
-\e$B%b!<%I%i%$%s\e(B
-============
 
-     \e$B$b$7$f$C$/$j$H%3%^%s%I$rBG$C$?$J$i$P!"2hLL$N2<Dl$N%(%3!<%(%j%"$H8F$P$l\e(B
-\e$B$k>l=j$KBG$C$?$b$N$,I=<($5$l$^$9!#%(%3!<%(%j%"$O2hLL$N\e(B1\e$B$P$s2<$N9T$G$9!#$=$N\e(B
-\e$B$9$0>e$N9T$O!"%b!<%I%i%$%s$H8F$P$l$F$$$^$9!#%b!<%I%i%$%s$O$3$s$JIw$KI=<($5\e(B
-\e$B$l$F$$$k$G$7$g$&!#\e(B
+>> \e$B%+!<%=%k$r$3$3$+$i#29T2<$N6u9T$K0\F0$5$;$F2<$5$$!#\e(B
+   M-x repl s<Return>changed<Return>Altered<Return> \e$B$H%?%$%W$7$^$7$g$&!#\e(B
 
- [--]J:--**-Mule: MULE.tut     (Fundamental) ---NN%--------------
+   \e$B$3$N9T$,$I$&JQ$o$k$+\e(B(changed)\e$B8+$^$7$g$&!#$"$J$?$O%+!<%=%k0J9_A4It$N\e(B 
+   c-h-a-n-g-e-d \e$B$H$$$&8l$r\e(B "altered" \e$B$KJQ$($?$N$G$9!#\e(B
 
 
-\e$BCm0U\e(B:           NN%\e$B$N\e(BNN\e$B$O?t;z$,F~$C$F$$$^$9!#$"$J$?$,;H$C$F$$$k\e(BEmacs\e$B$N%b!<\e(B
-               \e$B%I%i%$%s$H0c$&$+$bCN$l$J$$$1$I!"92$F$J$$$h$&$K!#Nc$($P!";~4V\e(B
-               \e$B$d\e(Buptime\e$B$,I=<($5$l$F$$$k$N$O!"\e(Bdisplay-time\e$B$H$$$&5!G=$,F0$$$F\e(B
-               \e$B$$$k$+$i$G$9!#\e(B
+\e$B!v<+F0%;!<%V\e(B
+============
 
-     \e$B$3$N9T$K$h$C$FB?$/$NM-MQ$J>pJs$,F@$i$l$^$9!#\e(B
+\e$B%U%!%$%k$KJQ99$r2C$($F$^$@%;!<%V$7$F$$$J$$>l9g!"$=$l$i$NJQ99$O7W;;5!$,\e(B
+\e$B%/%i%C%7%e$9$k$H<:$o$l$F$7$^$&2DG=@-$,$"$j$^$9!#$=$&$$$&;vBV$rHr$1$k$?\e(B
+\e$B$a!"JT=8Cf$N3F%U%!%$%k$K$D$$$F<+F0%;!<%V%U%!%$%k$,Dj4|E*$K=q$+$l$^$9!#\e(B
+\e$B<+F0%;!<%V%U%!%$%k$OF,$H$*?,$K\e(B # \e$B$,IU$$$F$$$^$9!#Nc$($P\e(B "hello.c" \e$B$H$$\e(B
+\e$B$&%U%!%$%k$N<+F0%;!<%V%U%!%$%k$O\e(B "#hello.c#" \e$B$G$9!#DL>o$NJ}K!$G%U%!%$\e(B
+\e$B%k$r%;!<%V$7$?$H$-$K!"$=$&$$$&<+F0%;!<%V%U%!%$%k$O>C$5$l$^$9!#\e(B
 
+\e$B7W;;5!$,%/%i%C%7%e$7$?>l9g!"<+F0%;!<%V$5$l$?JT=8$r2sI|$5$;$k$3$H$,$G$-\e(B
+\e$B$^$9!#IaDL$K%U%!%$%k!JJT=8$7$F$$$?$b$N$G!"<+F0%;!<%V%U%!%$%k$8$c$"$j$^\e(B
+\e$B$;$s!K$r3+$-!"$=$l$+$i\e(B M-x recover file<Return> \e$B$H%?%$%W$9$k$N$G$9!#3N\e(B
+\e$BG'$r5a$a$F$-$^$9$N$G!"\e(Byes<Return> \e$B$H%?%$%W$7<+F0%;!<%V$5$l$?%G!<%?$r2s\e(B
+\e$BI|$7$^$9!#\e(B
 
-     \e$B:#!"$"$J$?$,8+$F$$$k%U%!%$%kL>$rI=<($7$F$$$^$9!#\e(BNN%\e$B$O8=:_%9%/%j!<%s>e\e(B
-\e$B$K%U%!%$%k$N0lHV>e$+$i2?%Q!<%;%s%HL\$,I=<($5$l$F$$$k$+$r<($7$F$$$^$9!#%U%!\e(B
-\e$B%$%k$N0lHV:G=i$rI=<($7$F$$$k$J$i$P!"\e(B--Top--\e$B$HI=<($5$l$F$^$9!#%U%!%$%k$N0lHV\e(B
-\e$B:G8e$rI=<($7$F$$$k$J$i$P!"\e(B--Bot--\e$B$HI=<($5$l$^$9!#2hLL$NCf$K%U%!%$%k$NA4$F$,\e(B
-\e$BI=<($5$l$F$$$k$J$i$P!"\e(B--All--\e$B$HI=<($5$l$^$9!#\e(B
 
-     \e$B%b!<%I%i%$%s$N>.3g8L$NCf$O!":#$I$s$J%b!<%I$KF~$C$F$$$k$+$r<($7$F$$$^$9!#\e(B
-\e$B8=:_$O!"%G%U%)%k%H$N\e(BFundamental\e$B$KF~$C$F$$$^$9!#$3$l$b%a%8%c!<%b!<%I$N0lNc$G\e(B
-\e$B$9!#\e(B
+\e$B!v%(%3!<%(%j%"\e(B
+==============
 
-     Emacs\e$B$O\e(BLisp mode\e$B$d\e(BText mode\e$B$N$h$&$J$3$H$J$k%W%m%0%i%`8@8l$d%F%-%9%H$K\e(B
-\e$BBP$7$F%(%G%#%C%H$r9T$&$?$a$N4v$D$+$N%a%8%c!<%b!<%I$r;}$C$F$$$^$9!#$I$s$J;~\e(B
-\e$B$G$bI,$:$$$:$l$+$N%a%8%c!<%b!<%I$N>uBV$K$J$C$F$$$^$9!#\e(B
+\e$B$b$7$f$C$/$j$H%3%^%s%I$rBG$C$?$J$i$P!"2hLL$N2<$N%(%3!<%(%j%"$H8F$P$l\e(B
+\e$B$k>l=j$KBG$C$?$b$N$,I=<($5$l$^$9!#%(%3!<%(%j%"$O2hLL$N:G2<9T$G$9!#\e(B
 
-     \e$B$=$l$>$l$N%a%8%c!<%b!<%I$O4v$D$+$N%3%^%s%I$rA4$/0c$&?6$kIq$$$K$7$F$7$^\e(B
-\e$B$$$^$9!#Nc$r>e$2$F$_$^$7$g$&!#%W%m%0%i%`$NCf$K%3%a%s%H$r:n$k%3%^%s%I$,$"$j\e(B
-\e$B$^$9!#%3%a%s%H$r$I$NMM$J7A<0$K$9$k$+$O!"3F%W%m%0%i%`8@8l$K$h$C$F0c$$$^$9$,!"\e(B
-\e$B$=$l$>$l$N%a%8%c!<%b!<%I$O!"$-$A$s$HF~$l$F$/$l$^$9!#\e(B
 
-     \e$B$=$l$>$l$N%a%8%c!<%b!<%I$KF~$k$?$a$N%3%^%s%I$O%b!<%IL>$N3HD%$5$l$?$b$N\e(B
-\e$B$K$J$C$F$$$^$9!#Nc$($P!"\e(BM-x fundamental-mode\e$B$O\e(BFundamental\e$B$KF~$k$?$a$N$b$N$G\e(B
-\e$B$9!#\e(B
+\e$B!v%b!<%I%i%$%s\e(B
+==============
 
-     \e$B$b$7!"1Q8l$r%(%G%#%C%H$9$k$J$i$P!"\e(BText mode\e$B$KF~$j$^$9!#\e(B
+\e$B%(%3!<%(%j%"$N$9$0>e$N9T$O!"%b!<%I%i%$%s$H8F$S$^$9!#%b!<%I%i%$%s$O$3$s$JIw$K8+$($k$G$7$g$&!#\e(B
 
-       >> M-x text-mode <Retuen>\e$B$H%?%$%W$7$J$5$$!#\e(B
+ISO7-----XEmacs: TUTORIAL.ja       (Fundamental)--L670--58%----------------
 
-     \e$B8=:_$N%a%8%c!<%b!<%I$K$D$$$F$N%I%-%e%a%s%H$r8+$?$$;~$O!"\e(BC-h m\e$B$H%?%$%W\e(B
-\e$B$7$^$9!#\e(B
+\e$B$3$N9T$O\e(B XEmacs \e$B$N>uBV5Z$SJT=8Cf$NJ8>O$K$D$$$FM-1W$J>pJs$rM?$($F$/$l$^\e(B
+\e$B$9!#\e(B
 
-       >> C-h m \e$B$r;H$C$F\e(BText mode\e$B$H\e(BFundamental mode\e$B$N0c$$$rD4$Y$J$5$$!#\e(B
+\e$B%U%!%$%kL>$K$D$$$F$O$b$&J,$C$F$$$^$9$M!#$=$l$O$"$J$?$,3+$$$?%U%!%$%k$G\e(B
+\e$B$9!#\e(B-NN%-- \e$B$OJ8>OCf$N8=:_0LCV$r<($7$F$$$^$9!#J8>O$N\e(B NN% \e$B$,2hLL:G>eCJ$h\e(B
+\e$B$jA0$K$"$k$H$$$&$3$H$G$9!#$b$7J8>O$N:G=i$N9T$,2hLL$K$"$k;~$K$O\e(B --00%-- 
+\e$B$NBe$j$K\e(B --Top-- \e$B$HI=<($7$^$9!#$b$7J8>O$N:G8e$N9T$,2hLL$K$"$k;~$K$O\e(B 
+--Bot-- \e$B$HI=<($7$^$9!#$b$72hLL$KA4It<}$^$C$F$7$^$&$h$&$JC;$$J8>O$r8+$F\e(B
+\e$B$$$k$H$-$K$O\e(B --All-- \e$B$HI=<($7$^$9!#\e(B
+
+\e$B3g8L$K0O$^$l$?ItJ,$O$I$&$JJT=8%b!<%I$K$$$k$+$r<($7$^$9!#%G%U%)%k%H$O\e(B 
+"Fundamental" \e$B$H$$$&%b!<%I!"$3$l$,8=:_$N%b!<%I$G$9!#$3$l$O!V%a%8%c!<%b!<\e(B
+\e$B%I!J\e(Bmajor mode\e$B!K!W$N0lNc$G$9!#\e(B
+
+XEmacs \e$B$K$OB?$/$N<oN`$N%a%8%c!<%b!<%I$,$"$j$^$9!#\e(BLisp mode \e$B$d\e(BText mode 
+\e$B$N$h$&$K!"$I$s$J%W%m%0%i%`8@8l$d$I$s$J<oN`$NJ8>O$rJT=8Cf$+$r0UL#$9$k$b\e(B
+\e$B$N$b$"$j$^$9!#$$$D$G$bI,$:$$$:$l$+$N%a%8%c!<%b!<%I$N>uBV$K$J$C$F$$$^$9!#\e(B
+\e$B$I$N%a%8%c!<%b!<%I$K$$$k$N$+$O!"%b!<%I%i%$%s$N8=:_$O\e(B "Fundamental" \e$B$H\e(B
+\e$BI=<($7$F$$$kItJ,$r8+$l$PJ,$j$^$9!#\e(B
+
+\e$B3F%a%8%c!<%b!<%I$O4v$D$+$N%3%^%s%I$K0[$J$k?6$kIq$$$r$5$;$^$9!#Nc$($P!"\e(B
+\e$B%W%m%0%i%`%j%9%HCf$K%3%a%s%H$rF~$l$k$?$a$N%3%^%s%I$,$"$j$^$9!#%3%a%s%H\e(B
+\e$B$N7A<0!J%7%s%?%C%/%9!K$O!"%W%m%0%i%`8@8l$K$h$C$F0[$J$j!"%a%8%c!<%b!<%I\e(B
+\e$B$O!"$=$l$KBP1~$9$k8@8l$K9g$C$?7A<0$G%3%a%s%H$rA^F~$7$^$9!#3F%a%8%c!<%b!<\e(B
+\e$B%I$O3HD%%3%^%s%I$NL>A0$K$J$C$F$$$^$9!#$D$^$j$=$N3HD%%3%^%s%I$r;H$C$F%a\e(B
+\e$B%8%c!<%b!<%I$r@Z$j49$($k$N$G$9!#Nc$($P!"\e(BM-x fundamental-mode \e$B$H$$$&$N\e(B
+\e$B$O\e(B Fundamental \e$B%b!<%I$K@Z$j49$($k$?$a$N%3%^%s%I$G$9!#\e(B
+
+\e$B$b$7!"DL>o$N1Q8l$dF|K\8l$NJ8>O!J$3$N%U%!%$%k$N$h$&$J!K$rJT=8$9$k$N$J$i\e(B
+\e$B$P!"\e(BText mode \e$B$r;H$$$^$7$g$&!#\e(B
+
+>> M-x text-mode <Retuen> \e$B$H%?%$%W$7$F$_$F2<$5$$!#\e(B
+
+\e$B?4G[$7$J$$$G!#$3$l$^$G3X$s$@%3%^%s%I$O$?$$$7$FJQ$o$j$^$;$s$+$i!#$@$1$I!"\e(B
+M-f \e$B$d\e(B M-b \e$B$,%"%]%9%H%m%U%#\e(B "'" \e$B$rC18l$N0lIt$@$H2r<a$9$k$h$&$K$J$C$?$N\e(B
+\e$B$,J,$k$G$7$g$&!#0JA0$N\e(B Fundamental \e$B%b!<%I$G$O\e(B M-f \e$B$d\e(B M-b \e$B$O\e(B "'" \e$B$rC18l\e(B
+\e$B$N6h@Z$j$H8+$J$7$F$$$^$7$?!#\e(B
+
+\e$B%a%8%c!<%b!<%I$O$3$N$h$&$K:3:Y$J0c$$$r@8$_$^$9!#Bg35$N%3%^%s%I$O$I$N%a\e(B
+\e$B%8%c!<%b!<%I$G$bF1$8F/$-$r$7$^$9$,!"<B:]$NF0$-$O>/$7$@$1$3$H$J$k$N$G$9!#\e(B
+
+\e$B8=:_$N%a%8%c!<%b!<%I$K$D$$$F$N@bL@J8$r8+$k$K$O\e(B C-h m \e$B$H%?%$%W$7$^$9!#\e(B
+
+>> C-u C-v \e$B$r0lFsEY$d$C$F$3$N9T$r2hLL$N>e$NJ}$K;}$C$F$$$-$^$7$g$&!#\e(B
+>> C-h m \e$B$H%?%$%W$7!"\e(BText mode \e$B$H\e(B Fundamental mode \e$B$N0c$$$r$_$^$7$g$&!#\e(B
+>> q \e$B$G\e(B Text mode \e$B$N@bL@J8$r2hLL$+$i>C$7$^$7$g$&!#\e(B
+
+\e$B%a%8%c!<%b!<%I$,!V%a%8%c!<!W$H$$$&$+$i$K$O!V%^%$%J!<%b!<%I!W$b$"$j$^$9!#\e(B
+\e$B%^%$%J!<%b!<%I$O%a%8%c!<%b!<%I$NBe$o$j$K$J$k$b$N$G$O$J$/!"$=$l$r$A$g$C\e(B
+\e$B$H$@$1=$@5$9$k$b$N$G$9!#3F%^%$%J!<%b!<%I$O!"%a%8%c!<%b!<%I$dB>$N%^%$%J!<\e(B
+\e$B%b!<%I$K1F6A$rM?$($:$K!"$=$l$@$1$r%*%s%*%U$G$-$^$9!#$D$^$j!"%^%$%J!<%b!<\e(B
+\e$B%I$rA4$/;H$o$J$+$C$?$j!"0l8D$@$1;H$C$?$j!"$$$/$D$+$rF1;~$K;H$C$?$j$G$-\e(B
+\e$B$k$N$G$9!#\e(B
+
+\e$BDL>o$NJ8>O$rJT=8$7$F$$$k;~$K$H$F$bJXMx$J%^%$%J!<%b!<%I$N0l$D$K%*!<%H%U%#\e(B
+\e$B%k!J\e(BAuto Fill\e$B!K%b!<%I$H$$$&$N$,$"$j$^$9!#$3$N%b!<%I$,%*%s$N;~$KJ8>O$r\e(B
+\e$BF~NO$7$F$$$C$F9T$rD9$/$7$9$.$?>l9g!"<+F0E*$KC18l$HC18l$N4V$G9T$,J,3d$5\e(B
+\e$B$l$^$9!JF|K\8l$N>l9g$O$I$NJ8;z$N4V$G$b!K!#\e(B
+
+Auto Fill \e$B%b!<%I$O\e(B M-x auto-fill-mode<Return> \e$B$H$d$l$P%*%s$K$G$-$^$9!#\e(B
+\e$B$=$l$,%*%s$N>uBV$G\e(B M-x auto-fill-mode<Return> \e$B$H$d$l$,%*%U$K$G$-$^$9!#\e(B
+\e$B$3$N%3%^%s%I$O!"%b!<%I$,%*%U$J$i%*%s$K!"%*%s$J$i%*%U$K$9$k$N$G$9!#$3$&\e(B
+\e$B$$$&$N$r!V%b!<%I$r%H%0%k$9$k!W$H8@$$$^$9!#\e(B
+
+>> M-x auto-fill-mode<Return> \e$B$H%?%$%W$7$F!"\e(B "asdf " \e$B$G;O$^$k9T$rF~NO\e(B
+   \e$B$7$F2<$5$$!#9T$,J,3d$5$l$k$^$G2?EY$b\e(B "asdf " \e$B$H%?%$%W$7$^$7$g$&!#%9\e(B
+   \e$B%Z!<%9$rK:$l$:$K!#\e(BAuto Fill \e$B$O%9%Z!<%9$,F~NO$5$l$?;~$N$_F/$-$^$9!#\e(B
+
+\e$B1&%^!<%8%s$ODL>o\e(B 70 \e$BJ8;z!J%+%i%`!K$G$9$,!"\e(BC-x f \e$B%3%^%s%I$G$3$l$rJQ99$9\e(B
+\e$B$k$3$H$,$G$-$^$9!#;XDj$NJ8;z?t$r?tCM0z?t$H$7$FM?$($^$9!#\e(B
+
+>> \e$B?tCM0z?t\e(B 20 \e$B$G\e(B C-x f \e$B$r$d$j$^$7$g$&!#\e(B (C-u 2 0 C-x f)\e$B!#\e(B
+   \e$B$=$l$+$iE,Ev$JJ8>O!J1Q8l!K$rF~NO$7!"\e(B20 \e$BJ8;z$G9T$,J,3d$5$l$k$N$r8+$F\e(B
+   \e$B$_$^$7$g$&!#$=$l$+$i\e(B C-x f \e$B%3%^%s%I$G$^$?%^!<%8%s$r\e(B 70 \e$BJ8;z$KLa$7$F\e(B
+   \e$B2<$5$$!#\e(B
+
+\e$B%Q%i%0%i%U$NESCf$rJQ99$7$F$b\e(B Auto Fill \e$B%b!<%I$O$=$l$r<+F0E*$K%U%#%k$7\e(B
+\e$BD>$7$O$7$^$;$s!#\e(B
+\e$B%Q%i%0%i%U$r%U%#%k$7D>$9$K$O%+!<%=%k$r$=$N%Q%i%0%i%U$NCf$KCV$$$F$+$i\e(B
+M-q \e$B$r%?%$%W$7$^$9!#\e(B
+
+>> \e$B%+!<%=%k$r$3$N9TD>A0$N%Q%i%0%i%U$K0\F0$5$;\e(B M-q \e$B$H%?%$%W$7$F2<$5$$!#\e(B
+
+\e$B!v8!:w\e(B
+======
 
-       >> C-x 1\e$B$G%I%-%e%a%s%H$r2hLL$+$i>C$7$J$5$$!#\e(B
+\e$BJ8>OCf$NFCDj$NJ8;zNs$r!"A08~$-$K$b8e8~$-$K$bC5$9;v$,$G$-$^$9!#J8;zNs$r\e(B
+\e$BC5$9$H$$$&$N$O%+!<%=%k0\F0%3%^%s%I$G$9!#$D$^$j!"<!$K$=$NJ8;zNs$,8=$l$k\e(B
+\e$B>l=j$^$G%+!<%=%k$r0\F0$5$;$k$N$G$9!#\e(B
 
-     \e$B:8C<$N\e(B '[--]' \e$B$O8=:_$N%-!<F~NO$N%b!<%I$r<($7$F$$$^$9!#\e(B[--] \e$B$N;~$K$O\e(B
-\e$B1Q8l%"%k%U%!%Y%C%H$,$=$N$^$^F~NO$G$-$^$9!#F~NO%b!<%I$K$D$$$F$N>\$7$$@bL@$O\e(B
-\e$B!V$?$^$4!W$N%^%K%e%"%k$rD4$Y$F2<$5$$!#\e(B
+XEmacs \e$B$N8!:w%3%^%s%I$OB>$NBg35$N%(%G%#%?$N8!:w%3%^%s%I$H$O0[$j!V%$%s\e(B
+\e$B%/%j%a%s%?%k!W$G$9!#8!:w$9$kJ8;zNs$r%?%$%W$7$F$$$k$=$P$+$i8!:w$,5/$k$N\e(B
+\e$B$G$9!#\e(B
 
-     \e$B$=$N$9$01&$K$O%3!<%IBN7O\e(B (coding-system) \e$B$K4X$9$k%U%i%0$N>uBV$,I=\e(B
-\e$B<($5$l$F$$$^$9!#\e(BMule \e$B$O!"%U%!%$%kF~=PNO!"F~NO!"2hLL=PNO$K$D$$$F!"$=$l$>$lFH\e(B
-\e$BN)$K%3!<%IBN7O$r;XDj$5$;$k$3$H$,=PMh$^$9$,!"DL>o$O%U%!%$%kMQ$N%3!<%IBN7O$N\e(B
-\e$B%K!<%b%K%C%/$N$_I=<($7$F$$$^$9!#\e(B
+\e$B8!:w$r;O$a$k$?$a$N%3%^%s%I$O!"A08~$-$K8!:w$9$k$J$i$P\e(B C-s\e$B!"8e8~$-$J$i\e(B
+C-r \e$B$G$9!#$^$@$G$9!*!*:#$O$^$@;n$5$J$$$G2<$5$$!#\e(B
 
-       >> \e$B%b!<%I%i%$%s>e$K\e(B"J:","S:",\e$B$b$7$/$O\e(B "E:"\e$B$,I=<($5$l$F$$$k$+$I$&$+3N\e(B
-         \e$BG'$7$J$5$$!#\e(B
+C-s \e$B$rBG$D$H\e(B "I-search" \e$B$H$$$&J8;zNs$,%(%3!<%(%j%"$KI=<($5$l$k$N$,8+$(\e(B
+\e$B$k$G$7$g$&!#$3$l$O\e(B XEmacs \e$B$,%$%s%/%j%a%s%?%k8!:w$H$$$&>uBV$K$$$F!"$"$J\e(B
+\e$B$?$,C5$7$?$$J8;zNs$rF~NO$9$k$N$rBT$C$F$$$k$N$G$9!#\e(B<Return> \e$B$rBG$F$P8!\e(B
+\e$B:w$r=*$o$l$^$9!#\e(B
 
-     \e$B:G=i$N0lJ8;z$,%3!<%IBN7O$N%K!<%b%K%C%/!"<!$N\e(B ':' \e$B$,8=:_1Q8l0J30$NJ8;z\e(B
-\e$B!JF|K\8l!"Cf9q8l$J$I!K$b$A$c$s$HI=<($9$k$H$$$&$3$H$r<($7$F$$$^$9!#\e(BJ\e$B$O\e(BJUNET 
-\e$B$G;H$o$l$F$$$k\e(B JIS \e$B%3!<%I!"\e(BS \e$B$O\e(B Shift-JIS\e$B!"\e(BE \e$B$OF|K\8l\e(BEUC \e$B$r<($7$F$$$^$9!#\e(B 
-\e$BB?9q8l$NI=<($NM-L5$O\e(B C-x C-k t \e$B$G\e(B ON/OFF\e$B$N%H%0%k$,$G$-$^$9!#\e(B
+>> \e$B$5$F\e(B C-s \e$B$H%?%$%W$7$F8!:w$r;O$a$^$7$g$&!#$f$C$/$j$H#1J8;z$:$D\e(B
+   "cursor" \e$B$H$$$&C18l$rF~NO$7$^$9!##1J8;zBG$DKh$K%+!<%=%k$,$I$&F0$/$+\e(B
+   \e$B8+$^$7$g$&!#\e(B
+   \e$B$5$"!"\e(B"cursor" \e$B$,#12s8+$D$+$j$^$7$?!#\e(B
+>> \e$B$b$&0lEY\e(B C-s \e$B$HBG$C$F<!$N\e(B "cursor" \e$B$r8+$D$1$^$7$g$&!#\e(B
+>> \e$B:#EY$O\e(B <Delete> \e$B$r#42sBG$C$F!"%+!<%=%k$NF0$-$r8+$F2<$5$$!#\e(B
+>> <Return> \e$B$HBG$C$F8!:w$r=*N;$7$^$7$g$&!#\e(B
 
-     \e$B<!$NNc$O!"0lEYB?9q8lI=<($r\e(BOFF\e$B$7$F$+$i!"$b$&0lEY\e(BON\e$B$r9T$C$F$_$^$9!#\e(B
+\e$B2?$,5/$C$?$+J,$j$^$9$+!)%$%s%/%j%a%s%?%k8!:w$G$O!"JXMx$J$?$a$K%O%$%i%$\e(B
+\e$B%H$r$7!"$"$J$?$,$=$l$^$G$KBG$C$?J8;zNs$,8=$l$k$H$3$m$K9T$3$&$H$7$^$9!#\e(B
+\e$B<!$N\e(B "cursor" \e$B$K9T$/$K$O$b$&0lEY\e(B C-s \e$B$HBG$A$^$9!#$b$7$b$&$=$&$$$&J8;z\e(B
+\e$BNs$,L5$+$C$?$i!"%Y%k$r$J$i$7$F8!:w$,8=:_$O<:GT$7$F$$$k$3$H$rCN$i$;$^$9!#\e(B
+C-g \e$B$rBG$F$P8!:w$r=*$o$l$^$9!#\e(B
 
-       >> C-x C-k t\e$B$r\e(B2\e$BEY9T$$$J$5$$!#\e(B
+\e$BCm0U!'%7%9%F%`$K$h$C$F$O\e(B C-s \e$B$H%?%$%W$9$k$H2hLL$,F0$+$J$/$J$j\e(B XEmacs 
+\e$B$,I=<($7$h$&$H$9$k$b$N$,2?$b2hLL$K=P$J$/$J$j$^$9!#$3$l$O!"%U%m!<%3%s%H\e(B
+\e$B%m!<%k$H8F$P$l$k#O#S$N5!G=$,\e(B C-s \e$B$rB*$(!"\e(BXEmacs \e$B$KEO$5$J$$$h$&$K$7$F$$\e(B
+\e$B$k$N$G$9!#$3$l$r2r=|$9$k$K$O\e(B C-q \e$B$r%?%$%W$7$^$9!#$=$l$+$i\e(B XEmacs \e$B%^%K%e\e(B
+\e$B%"%k$N\e(B "Spontaneous Entry to Incremental Search (\e$BCN$i$L4V$K%$%s%/%j%a\e(B
+\e$B%s%?%k%5!<%A$K$J$k\e(B)" \e$B$N@a$rFI$s$G$/$@$5$$!#$3$N$d$C$+$$$J#O#S$N5!G=$K\e(B
+\e$B$I$&BP=h$9$l$PNI$$$+$,:\$C$F$$$^$9!#\e(B
 
-     \e$BF~NO%b!<%I$,\e(BJIS\e$B%3!<%I$N@_Dj$H$J$C$F$$$k;~!"$b$7$"$J$?$N;H$C$F$$$kC<Kv\e(B
-\e$B$K%a%?!&%-!<$,IU$$$F$$$k$J$i!"%(%9%1!<%W!&%-!<$NBe$o$j$K$=$l$r;H$&$3$H$,=P\e(B
-\e$BMh$^$9!#$=$N;~!"%a%?!&%-!<$N;H$$J}$O%3%s%H%m!<%k!&%-!<$HF1MM$K2!$7$J$,$iJ8\e(B
-\e$B;z$r%?%$%W$7$^$9!#\e(BESC <\e$BJ8;z\e(B>\e$B$b\e(BM-<\e$BJ8;z\e(B>\e$B$bF1$8F/$-$r$7$^$9!#:#$^$G$N@bL@$G\e(BESC
-<\e$BJ8;z\e(B>\e$B$H9T$J$C$F$$$?$H$3$m$,!"\e(BM-<\e$BJ8;z\e(B>\e$B$H$J$j$^$9!#Cm0U$7$J$1$l$P$J$i$J$$$N\e(B
-\e$B$O!"%7%U%H\e(BJIS\e$B$d\e(BEUC\e$B%3!<%I$N;~$O;HMQ$G$-$^$;$s!#\e(B
+\e$B%$%s%/%j%a%s%?%k8!:w$NESCf$G\e(B <Delete> \e$B$rBG$D$H8!:wJ8;zNsCf$N#1HV8e$m$N\e(B
+\e$BJ8;z$,>C$($^$9!#$=$7$F!"%+!<%=%k$O!"A02s$N0LCV$KLa$j$^$9!#$?$H$($P!"\e(B
+"c" \e$B$H%?%$%W$7$F:G=i$N\e(B "c" \e$B$rC5$7$^$9!#$=$l$+$i\e(B "u" \e$B$rBG$D$H:G=i$N\e(B
+"cu" \e$B$N>l=j$K%+!<%=%k$,F0$-$^$9!#$=$3$G\e(B <Delete> \e$B$rBG$D$H\e(B "u" \e$B$r8!:wJ8\e(B
+\e$B;zNs$+$i>C$7$F!"%+!<%9%k$O:G=i$K\e(B "c" \e$B$,8=$l$?>l=j$KLa$j$^$9!#\e(B
 
-     \e$B%3!<%IBN7O$N$N@Z$jBX$($O!"3F!9$N%P%C%U%!$KBP$7$F$N$_M-8z$G$9!#$=$l$>$l\e(B
-\e$B$N!"%3!<%IBN7O;XDj$K$D$$$F$O!"\e(BC-h a coding-system <Return>\e$B$G8+$k$3$H\e(B
-\e$B$,=PMh$^$9!#\e(B
 
-       >> C-h a coding-system <Return>\e$B$G=P$F$/$k%I%-%e%a%s%HCf$N!"\e(B
-         set-display-coding-system, set-file-coding-system,
-         set-process-coding-system \e$B$N@bL@$rFI$_$J$5$$!#\e(B
+C-s \e$B$O!"8=:_$N%+!<%=%k0LCV0J9_$K=P$F$/$k8!:wJ8;zNs$rC5$7;O$a$^$9!#$b$7!"\e(B
+\e$BJ8>O$NA0$NJ}$rC5$7$?$+$C$?$i!"\e(BC-r \e$B$r%?%$%W$7$^$9!#$3$l$^$G$N\e(B C-s \e$B$K$D\e(B
+\e$B$$$F$N@bL@$O$9$Y$F\e(B C-r \e$B$K$bEv$F$O$^$j$^$9!#8!:w$NJ}8~$,H?BP$J$@$1$G$9!#\e(B
 
-\e$B8!:w\e(B
-=====
+\e$B!vJ#?t$N%&%#%s%I%&\e(B
+==================
 
-     \e$BJ8;zNs$r!"%U%!%$%kFb$G!"A0J}Kt$O8eJ}$K!"C5$9;v$,$G$-$^$9!#8!:w$r;O$a$k\e(B
-\e$B%3%^%s%I$O!"%+!<%=%k0LCV0J9_$r8!:w$9$k$J$i$P\e(B  C-s\e$B!"%+!<%=%k0LCV0JA0$J$i$P\e(B
-C-r \e$B$G$9!#\e(BC-s \e$B$r%?%$%W$9$k$H!"%(%3!<%(%j%"$K\e(B "I-search:"\e$B$H$$$&J8;zNs$,%W%m\e(B
-\e$B%s%W%H$H$7$FI=<($5$l$^$9!#\e(BESC\e$B$r2!$9$H!"=*N;$G$-$^$9!#\e(B
+XEmacs \e$B$NAGE($J5!G=$N0l$D$H$7$F!"0l$D$N2hLL$KF1;~$K$$$/$D$b$N%&%#%s%I\e(B
+\e$B%&$rI=<($9$k$3$H$,$G$-$^$9!#\e(B
 
+>> \e$B%+!<%=%k$r$3$N9T$K;}$C$F$-$F\e(B C-u 0 C-l \e$B$H%?%$%W$7$F2<$5$$!#\e(B
 
-       >> C-s\e$B$G8!:w$,;O$^$j$^$9!#$=$l$+$i!"$f$C$/$j$H#1J8;z$:$D\e(B"cursor"\e$B$H$$\e(B
-          \e$B$&C18l$rF~NO$7$^$9!##1J8;zF~NO$9$k$4$H$K!"%+!<%=%k$O!"$I$s$JF0$-\e(B
-          \e$B$r$7$^$9$+\e(B?
+>> \e$B$=$l$+$i\e(B C-x 2 \e$B$H%?%$%W$72hLL$r#2$D$N%&%#%s%I%&$KJ,3d$7$^$7$g$&!#\e(B
+   \e$B$I$A$i$N%&%#%s%I%&$b$3$NF~Lg%,%$%I$rI=<($7$F$$$^$9!#%+!<%=%k$O>e$N\e(B
+   \e$B%&%#%s%I%&$K$"$j$^$9!#\e(B
 
-       >> \e$B$b$&#1EY\e(B C-s \e$B$r%?%$%W$9$k$H!"<!$N\e(B"cursor"\e$B$r8+$D$1$i$l$^$9!#\e(B
+>> C-M-v \e$B$H%?%$%W$72<$N%&%#%s%I%&$r%9%/%m!<%k$5$;$^$7$g$&!#\e(B
+   \e$B!J%a%?%-!<$,$J$$>l9g$O\e(B ESC C-v \e$B$H%?%$%W$7$^$9!#!K\e(B
 
-       >> <Delete>\e$B$r#42sF~NO$7$F!"%+!<%=%k$NF0$-$r8+$J$5$$!#\e(B
+>> C-x o \e$B!J\e(B"o" \e$B$O\e(B "other\e$B!JB>J}!K\e(B" \e$B$r0UL#$7$^$9!K$r%?%$%W$72<$N%&%#%s%I\e(B
+   \e$B%&$K%+!<%=%k$r0\$7$F2<$5$$!#\e(B
+>> \e$B2<$N%&%#%s%I%&$G\e(B C-v \e$B$d\e(B M-v \e$B$r;H$C$F%9%/%m!<%k$5$;$^$7$g$&!#\e(B
+   \e$B$3$3$K=q$$$F$"$k;X<($O>e$N%&%#%s%I%&$GFI$_?J$s$G$/$@$5$$!#\e(B
 
-       >> ESC\e$B$r2!$7$F!"=*N;$7$^$9!#\e(B
+>> \e$B$b$&0lEY\e(B C-x o \e$B$H%?%$%W$7!"%+!<%=%k$r>e$N%&%#%s%I%&$KLa$7$^$9!#\e(B
+   \e$B%+!<%=%k$O>e$N%&%#%s%I%&$N85$"$C$?0LCV$KLa$j$^$9!#\e(B
 
-     \e$BC5$7$?$$J8;zNs$r%?%$%WCf$G$b!"%?%$%W$7$?J8;zItJ,$@$1$G!"8!:w$r;O$a$^$9!#\e(B
-\e$B<!$NJ8;z$rC5$9$K$O!":F$S\e(BC-s\e$B$r%?%$%W$7$^$9!#$b$7!"J8;zNs$,B8:_$7$J$+$C$?$i!"\e(B
-\e$B%a%C%;!<%8$,I=<($5$l$^$9!#\e(BC-g \e$B$G$b=*N;$G$-$^$9!#\e(B
+C-x o \e$B$r;H$C$F%&%#%s%I%&4V$r9T$C$?$jMh$?$j$G$-$^$9!#3F%&%#%s%I%&$O$=$l\e(B
+\e$B<+?H$N%+!<%=%k0LCV$rJ];}$7$F$$$^$9$,!"0lEY$K$O0l$D$N%&%#%s%I%&$@$1$,%+!<\e(B
+\e$B%=%k$rI=<($7$^$9!#DL>o$NJT=8%3%^%s%I$O3'%+!<%=%k$,$"$k%&%#%s%I%&$KBP$7\e(B
+\e$B$FF/$-$^$9!#$=$N%&%#%s%I%&$r\e(B "selected window (\e$BA*BrCf$N%&%#%s%I%&\e(B)" \e$B$H\e(B
+\e$B8F$S$^$9!#\e(B
 
-     \e$B8!:w<B9TCf$K\e(B<Delete>\e$B$rF~NO$9$k$H!"8!:wJ8;zNs$N#1HV8e$m$NJ8;z$,>C$($^$9!#\e(B
-\e$B$=$7$F!"%+!<%=%k$O!"A02s$N0LCV$KLa$j$^$9!#$?$H$($P!"\e(B"cu"\e$B$H%?%$%W$7$F!":G=i\e(B
-\e$B$N\e(B"cu"\e$B$N0LCV$K%+!<%=%k$,F0$$$?$H$7$^$9!#$3$3$G\e(B<Delete>\e$B$rF~NO$9$k$H!"%5!<%A\e(B
-\e$B%i%$%s$N\e(B'u'\e$B$,>C$(!"%+!<%=%k$O!"\e(B'u'\e$B$r%?%$%W$9$kA0$K!"%+!<%=%k$,$"$C$?\e(B'c'\e$B$N0L\e(B
-\e$BCV$K!"0\F0$7$^$9!#\e(B
+C-M-v \e$B%3%^%s%I$O!"0l$D$N%&%#%s%I%&$GJ8>O$rJT=8Cf$KB>$N%&%#%s%I%&$r;2>H\e(B
+\e$B$7$F$$$k;~$KLrN)$A$^$9!#JT=8Cf$N>l=j$K%+!<%=%k$rJ]$C$?$^$^!"\e(BC-M-v \e$B$GB>\e(B
+\e$B$N%&%#%s%I%&$rFI$_?J$a$F9T$/$3$H$,$G$-$^$9!#\e(B
 
-     \e$B8!:w<B9TCf$K!"\e(BC-s \e$B$d\e(B C-r \e$B0J30$N%3%s%H%m!<%kJ8;z$r%?%$%W$9$k$H!"8!:w$O\e(B
-\e$B=*N;$7$^$9!#\e(B
+C-M-v \e$B$O%3%s%H%m!<%k%a%?J8;z$N0lNc$G$9!#%a%?%-!<$,$"$k>l9g$O!"%3%s%H%m!<\e(B
+\e$B%k%-!<$H%a%?%-!<$r2!$7$J$,$i\e(B v \e$B$r%?%$%W$7$^$9!#%3%s%H%m!<%k%-!<$H%a%?\e(B
+\e$B%-!<$O$I$A$i$r@h$K2!$7$F$b9=$$$^$;$s!#$I$A$i$b$=$N8e$K%?%$%W$5$l$kJ8;z\e(B
+\e$B$KBP$9$k=$>~%-!<\e(B (modifier key) \e$B$H$7$FF/$/$+$i$G$9!#\e(B
 
-     C-s \e$B$O!"8=:_$N%+!<%=%k0LCV0J9_$K=P$F$/$k8!:wJ8;zNs$rC5$7$^$9!#$b$7!"A0\e(B
-\e$B$NJ}$rC5$7$?$+$C$?$i!"\e(BC-r  \e$B$r%?%$%W$9$k$3$H$G!"5UJ}8~8!:w$,$G$-$^$9!#\e(BC-s \e$B$H\e(B
-C-r \e$B$O!"8!:w$NJ}8~$,H?BP$J$@$1$G!"A4$FF1$8F/$-$r$7$^$9!#\e(B
+\e$B%a%?%-!<$,L5$$>l9g!"\e(BESC \e$B%-!<$r;H$$$^$9$,!"$3$N>l9g=gHV$,Bg;v$G$9!#$^$:\e(B
+ESC \e$B$r2!$7$F$+$iN%$7$F\e(B CTRL-v \e$B$rBG$A$^$9!#\e(BCTRL-ESC v \e$B$G$OBLL\$G$9!#$3\e(B
+\e$B$l$O\e(BESC \e$B$O$=$l<+BN$,0l$D$NJ8;z$G=$>~%-!<$G$O$J$$$+$i$G$9!#\e(B
 
-\e$B%j%+!<%7%V\e(B \e$B%(%G%#%F%#%s%0\e(B \e$B%l%Y%k\e(B
+>> \e$B>e$N%&%#%s%I%&$G\e(B C-x 1 \e$B$H%?%$%W$72<$N%&%#%s%I%&$r>C$7$^$7$g$&\e(B
 
-     \e$B$H$-$I$-!"!JITK\0U$K!K%j%+!<%7%V\e(B \e$B%(%G%#%F%#%s%0\e(B \e$B%l%Y%k$H8F$P$l$k>uBV$K\e(B
-\e$BF~$k$3$H$,$"$j$^$9!#%a%8%c!<%b!<%I$N>.3g8L\e(B'()'\e$B$N2s$j$rCf3g8L\e(B'[]'\e$B$G0O$s$@$b\e(B
-\e$B$N$,%b!<%I%i%$%s>e$KI=<($5$l$^$9!#Nc$($P!"\e(B(Fundamental)\e$B$HI=<($5$l$kBe$o$j$K\e(B
-[(Fundamental)]\e$B$N$h$&$K$J$j$^$9!#\e(B
+\e$B!J$b$72<$N%&%#%s%I%&$G\e(B C-x 1 \e$B$H%?%$%W$9$k$H>e$N%&%#%s%I%&$,>C$($^$9!#\e(B
+\e$B$3$N%3%^%s%I$O!V8=:_<+J,$,$$$k%&%#%s%I%&$@$1$K$7$J$5$$!W$H$$$&$b$N$@$H\e(B
+\e$B;W$C$F2<$5$$!#!K\e(B
 
-\e$BCm0U\e(B:          \e$B$3$3$G$O%j%+!<%7%V\e(B \e$B%(%G%#%F%#%s%0\e(B \e$B%l%Y%k<+BN$K$D$$$F$O@bL@$7\e(B
-               \e$B$^$;$s!#\e(B
+\e$BF1$8%P%C%U%!$rN>J}$N%&%#%s%I%&$KI=<($9$kI,MW$O$"$j$^$;$s!#0lJ}$N%&%#%s\e(B
+\e$B%I%&$G\e(B C-x C-f \e$B$G%U%!%$%k$r3+$$$F$bB>J}$N%&%#%s%I%&$OJQ2=$7$^$;$s!#3F\e(B
+\e$B%&%#%s%I%&$K$*$$$FJL!9$N%U%!%$%k$r3+$/$3$H$,$G$-$k$N$G$9!#\e(B
 
-     \e$B%j%+!<%7%V\e(B \e$B%(%G%#%F%#%s%0\e(B \e$B%l%Y%k$+$iH4$1$G$k$?$a$K$O!"\e(BM-x top-level
-<Return>\e$B$H%?%$%W$7$^$9!#\e(B
+>> C-x 4 C-f \e$B$H%?%$%W$7B3$1$F2?$+<+J,$N%U%!%$%kL>$rF~NO$7$F2<$5$$!#\e(B
+   <Return> \e$B$GF~NO$r=*$o$i$;$F2<$5$$!#:#;XDj$7$?%U%!%$%k$,2<$N%&%#%s%I\e(B
+   \e$B%&$K8=$l$^$9!#%+!<%=%k$b$=$C$A$K0\$j$^$9!#\e(B
 
-       >> \e$B;n$7$F$_$F2<$5$$!#%9%/%j!<%s$NDl$K\e(B"Back to top level"\e$B$HI=<($5$l$^\e(B
-          \e$B$9!#\e(B
+>> C-x o \e$B$H%?%$%W$7>e$N%&%#%s%I%&$KLa$C$F2<$5$$!#$=$l$+$i\e(B C-x 1 \e$B$G2<$N\e(B
+   \e$B%&%#%s%I%&$r>C$7$^$7$g$&!#\e(B
 
-     \e$BK\Ev$O!"$3$N;n$_$,9T$o$l$?;~$O!"$9$G$K%H%C%W%l%Y%k$K$$$?$N$G$9!#\e(BM-x
-top-level\e$B$O!"2?$b1F6A$rM?$($F$$$^$;$s!#\e(B
 
-     \e$B%j%+!<%7%V\e(B \e$B%(%G%#%F%#%s%0\e(B \e$B%l%Y%k$+$iH4$1=P$k$N$KBP$7$F$O\e(BC-g\e$B$O8z$-$^$;\e(B
-\e$B$s!#\e(B
+\e$B!v:F5"JT=8%l%Y%k\e(B (RECURSIVE EDITING LEVELS)
 
+\e$B;~!9!JITK\0U$K!K:F5"JT=8%l%Y%k$H8F$P$l$k>uBV$KF~$k$3$H$,$"$j$^$9!#%b!<\e(B
+\e$B%I%i%$%s$N%a%8%c!<%b!<%IL>$r0O$`4]3g8L\e(B "()" \e$B$,$5$i$Knl3g8L\e(B "[]" \e$B$G0O$^\e(B
+\e$B$l$^$9!#Nc$($P!"\e(B(Fundamental) \e$B$HI=<($5$l$kBe$o$j$K\e(B [(Fundamental)] \e$B$N\e(B
+\e$B$h$&$K$J$j$^$9!#\e(B
 
-\e$B%X%k%W\e(B
-======
+\e$B:F5"JT=8%l%Y%k$+$iH4$1=P$9$K$O\e(B ESC ESC ESC \e$B$H%?%$%W$7$^$9!#$3$l$OHFMQ\e(B
+\e$B!VH4$1=P$7!W%3%^%s%I$G$9!#M>J,$J%&%#%s%I%&$r>C$7$?$j!"%_%K%P%C%U%!$+$i\e(B
+\e$BH4$1$?$j$9$k$N$K$b;H$($^$9!#\e(B
 
-     Emacs\e$B$K$O!"$?$/$5$s$NLr$KN)$D5!G=$,$"$j!"$3$3$G!"$9$Y$F$r@bL@$9$k$3$H\e(B
-\e$B$O!"IT2DG=$G$9!#$7$+$7!"$^$@CN$i$J$$B?$/$N5!G=$r3X$V$?$a$K$O!"\e(B<HELP>\e$B$H8F$P\e(B
-\e$B$l$k\e(B C-h \e$B$r%?%$%W$9$k$3$H$G!"$?$/$5$s$N>pJs$r<j$KF~$l$k$3$H$,$G$-$^$9!#\e(B
 
-     \e$B;H$$J}$O!"\e(BC-h \e$B$r%?%$%W$7!"B3$$$FI,MW$J%*%W%7%g%s$r#1J8;z%?%$%W$7$^$9!#\e(B
-\e$B$o$+$i$J$1$l$P!"\e(BC-h ?  \e$B$H%?%$%W$9$k$H!"$I$s$J%*%W%7%g%s$,$"$k$N$+I=<($5$l$^\e(B
-\e$B$9!#$b$7!"\e(BC-h \e$B$r%?%$%W$7$F$+$i5$$,JQ$o$C$?$i!"\e(BC-g \e$B$r%?%$%W$9$l$P!"<h$j>C$9\e(B
-\e$B$3$H$,$G$-$^$9!#\e(B
+>> M-x \e$B$H%?%$%W$7%_%K%P%C%U%!$KF~$C$F2<$5$$!#$=$l$+$i\e(B ESC ESC ESC \e$B$H%?\e(B
+   \e$B%$%W$7H4$1=P$7$F$_$^$7$g$&!#\e(B
 
-     \e$B:G$b4pK\E*$J$b$N$O!"\e(BC-h c \e$B$G$9!#$3$l$KB3$$$F%-!<$rF~NO$9$k$H!"$=$N%3%^\e(B
-\e$B%s%I$K$D$$$F$NC;$$@bL@$rI=<($7$^$9!#\e(B
+C-g \e$B$G$O:F5"JT=8%l%Y%k$+$i$OH4$1=P$;$^$;$s!#$3$l$O!"\e(BC-g \e$B$,:F5"JT=8%l%Y\e(B
+\e$B%kFb$G$N%3%^%s%I$d0z?t$r<h$j>C$9$N$K;H$o$l$F$$$k$+$i$G$9!#\e(B
 
-       >> C-h c C-p \e$B$H%?%$%W$7$F$_$J$5$$!#\e(B"C-p runs the command previous-
-          line"\e$B$N$h$&$J%a%C%;!<%8$,I=<($5$l$k$O$:$G$9!#\e(B
 
-     \e$B8+$?$3$H$O$"$k$,!"3P$($F$O$$$J$$%3%^%s%I$b;W$$=P$;$k$N$G$9!#\e(BC-x C-s \e$B$N\e(B
-\e$B$h$&$JJ#?t$G#1$D$N%3%^%s%I$b\e(BC-h c \e$B$N8e$m$KB3$1$i$l$^$9!#\e(B
+\e$B!v$b$C$H$b$C$H%X%k%W\e(B
+====================
 
-     \e$B$b$C$H>\$7$/CN$j$?$+$C$?$i!"\e(Bc \e$B$NBe$o$j$K\e(B k \e$B$r;XDj$7$^$9!#\e(B
+\e$B$3$NF~Lg%,%$%I$G$O\e(B XEmacs \e$B$r;H$$;O$a$k$N$K==J,$J>pJs$rDs6!$7$?$D$b$j$G\e(B
+\e$B$9!#\e(BXEmacs \e$B$K$O$"$^$j$K$bB?$/$N5!G=$,$"$k$N$G!"$3$3$G$9$Y$F$r@bL@$9$k\e(B
+\e$B$N$OL5M}$G$9!#$=$l$G$bLr$KN)$D5!G=$r$b$C$HB?$/3X$S$?$$$H;W$&?M$N$?$a$K\e(B
+\e$B$O!"\e(BXEmacs \e$B$N%3%^%s%I$N@bL@$rFI$`$?$a$N%3%^%s%I$,$"$j$^$9!#$3$l$i$N\e(B
+\e$B!V%X%k%W!W%3%^%s%I$O3'\e(B Control-h \e$BJ8;z!J%X%k%WJ8;z$H8F$S$^$9!K$G;O$^$j\e(B
+\e$B$^$9!#\e(B
+
+\e$B%X%k%W5!G=$r;H$&$K$O!"\e(BC-h \e$B$KB3$$$F$I$s$J<oN`$N%X%k%W$,I,MW$+$r<($9#1J8\e(B
+\e$B;z$r%?%$%W$7$^$9!#$b$7$=$l$9$iJ,$i$J$$>l9g$O\e(B C-h ? \e$B$H%?%$%W$7$^$7$g$&!#\e(B
+\e$B$I$s$J<oN`$N%X%k%W$rDs6!$G$-$k$+$,<($5$l$^$9!#$b$7!"\e(BC-h \e$B$r%?%$%W$7$F$+\e(B
+\e$B$i5$$,JQ$o$C$?$i!"\e(BC-g \e$B$r%?%$%W$7$F<h$j>C$9$3$H$,$G$-$^$9!#\e(B
 
-       >> C-h k C-p \e$B$H%?%$%W$7$F$_$J$5$$!#\e(B
+\e$B!J%5%$%H$K$h$C$F$O\e(B C-h \e$BJ8;z$r:FB+G{$7$^$9!#Am3gE*$J<jCJ$H$7$F$=$s$J$3\e(B
+\e$B$H$r$9$k$Y$-$G$O$"$j$^$;$s!#$=$&$$$&>l9g$O%7%9%F%`4IM}<T$KJ86g$r8@$$$^\e(B
+\e$B$7$g$&!#$^!"$H$b$+$/!"$b$7\e(B C-h \e$B$,2hLL$N2<$NJ}$K%X%k%W$N%a%C%;!<%8$r=P\e(B
+\e$B$5$J$1$l$P!"\e(BM-x help RET \e$B$r;n$7$F$_$F2<$5$$!#!K\e(B
 
-     Emacs\e$B$N%&%#%s%I%&$K!"%3%^%s%I$NL>A0$H5!G=$,I=<($5$l$^$9!#FI$_=*$($?$i!"\e(B
-C-x 1 \e$B$H%?%$%W$9$k$H!"H4$1$i$l$^$9!#\e(B
+\e$B:G$b4pK\E*$J%X%k%W5!G=$O\e(B C-h c \e$B$G$9!#\e(BC-h\e$B!"$=$l$+$i\e(B c\e$B!"$=$7$F%3%^%s%I$N\e(B
+\e$BJ8;z<c$7$/$O$=$N%7!<%1%s%9$r%?%$%W$9$k$H!"$=$N%3%^%s%I$K$D$$$F$NC;$$@b\e(B
+\e$BL@$rI=<($7$^$9!#\e(B
 
-     \e$BB>$K$bLr$KN)$D%*%W%7%g%s$,$"$j$^$9!#\e(B
+>> C-h c Control-p \e$B$H%?%$%W$7$F$_$^$7$g$&!#\e(B
+   \e$B0J2<$N$h$&$J%a%C%;!<%8$,I=<($5$l$k$O$:$G$9!#\e(B
 
-    C-h f      \e$B%U%!%s%/%7%g%sL>$rF~NO$9$k$H!"%U%!%s%/%7%g%s$rI=<($7$^$9!#\e(B
+       C-p runs the command previous-line
 
-       >> C-h f previous-line \e$B$r%?%$%W$7!"\e(B<Return> \e$B$r2!$7$J$5$$!#\e(BC-p \e$B%3%^%s\e(B
-          \e$B%I$r<B9T$9$k%U%!%s%/%7%g%s$K$D$$$F$N>pJs$rI=<($7$^$9!#\e(B
+\e$B$3$l$O!V%U%!%s%/%7%g%s$NL>A0!W$rI=<($7$?$N$G$9!#%U%!%s%/%7%g%sL>$O<g$K\e(B 
+XEmacs \e$B$r%+%9%?%^%$%:$7$?$j3HD%$7$?$j$9$k$N$K;H$o$l$^$9!#$7$+$7!"%U%!\e(B
+\e$B%s%/%7%g%sL>$O$=$N%3%^%s%I$,2?$r$9$k$b$N$J$N$+$,J,$k$h$&$KIU$1$i$l$^$9\e(B
+\e$B$N$G!"4JC1$J@bL@$H$7$F$b$=$N$^$^Lr$KN)$A$^$9!#0lEY3X$s$@%3%^%s%I$K$D$$\e(B
+\e$B$F;W$$=P$9$K$O==J,$G$9!#\e(B
 
-    C-h a      \e$B%-!<%o!<%I$rF~NO$9$k$H!"L>A0$K$=$N%-!<%o!<%I$r4^$`!"A4$F$N%3\e(B
-               \e$B%^%s%I$rI=<($7$^$9!#$3$l$i$N%3%^%s%I$O$9$Y$F\e(BESC x \e$B$G<B9T$G$-\e(B
-               \e$B$^$9!#\e(B
+C-x C-s \e$B$d!J%a%?%-!<$d%"%k%H%-!<$,$J$$>l9g$N!K\e(B <ESC> v \e$B$J$I$NJ#?tJ8;z\e(B
+\e$B$N%3%^%s%I$r\e(B C-h c \e$B$N8e$K%?%$%W$9$k$3$H$b$G$-$^$9!#\e(B
 
-       >> C-h a file \e$B$H%?%$%W$7!"\e(B<Return>\e$B$r2!$7$J$5$$!#L>A0$K\e(B"file"\e$B$H$$$&J8\e(B
-          \e$B;z$r;}$DA4$F$N%3%^%s%I$rI=<($7$^$9!#$^$?!"\e(Bfind-file \e$B$d\e(B write-file
-          \e$B$H$$$&L>$N\e(B C-x C-f \e$B$d\e(B C-x C-w \e$B$N$h$&$J%3%^%s%I$bI=<($5$l$^$9!#\e(B
+\e$B%3%^%s%I$K$D$$$F$b$C$HB?$/$N>pJs$,M_$7$1$l$P\e(B C-h c \e$B$NBe$o$j$K\e(B C-h k \e$B$r\e(B
+\e$B;H$$$^$9!#\e(B
 
-\e$B$*$o$j$K\e(B
-========
+>> C-h k Control-p \e$B$H%?%$%W$7$F$_$^$7$g$&!#\e(B
 
-\e$BK:$l$:$K!'\e(B      \e$B=*N;$9$k$K$O!"\e(BC-x C-c \e$B$H$7$^$9!#\e(B
+XEmacs\e$B$N%&%#%s%I%&$K!"%3%^%s%I$NL>A0$HF1;~$K$=$N5!G=$N@bL@$,I=<($5$l$^\e(B
+\e$B$9!#FI$_=*$($?$i!"\e(Bq \e$B$H%?%$%W$7$F%X%k%W$N%F%-%9%H$r>C$7$^$7$g$&!#\e(B
 
+C-h \e$B$K$OB>$K$bLr$KN)$D%*%W%7%g%s$,$"$j$^$9!#\e(B
 
-     \e$B$3$NF~LgJT$O!"$^$C$?$/$N=i?4<T$K$b$o$+$j$d$9$$$h$&$K$H0U?^$7$F$$$^$9!#\e(B
-\e$B$G$9$+$i!"$b$72?$+$o$+$j$K$/$$E@$,$"$C$?$J$i!"0l?M$G6rCT$r8@$&$N$G$O$J$/!"\e(B
-\e$BJ86g$r$D$1$F2<$5$$!#\e(B
+   C-h f       \e$B%U%!%s%/%7%g%s$N@bL@!#%U%!%s%/%7%g%sL>$rF~NO$7$^$9!#\e(B
 
+>> C-h f previous-line<Return> \e$B$H%?%$%W$7$F$_$^$7$g$&!#\e(B
+   C-p \e$B%3%^%s%I$r<B9T$9$k%U%!%s%/%7%g%s$K$D$$$F$N$9$Y$F$N>pJs$rI=<($7\e(B
+   \e$B$^$9!#\e(B
 
-     \e$B$b$7!"\e(BEMACS \e$B$r2?F|$+$G$b;H$C$F$_$l$P!"$=$l$r$d$a$F$7$^$&$3$H$J$I$G$-$J\e(B
-\e$B$/$J$k$G$7$g$&!#:G=i$O8MOG$&$+$bCN$l$^$;$s!#$7$+$7!"$=$l$O$I$s$J%(%G%#%?$G\e(B
-\e$B$bF1MM$G$9!#\e(BEMACS \e$B$N$h$&$K!"Hs>o$KB?$/$N$3$H$,$G$-$k>l9g$K$OFC$K$=$&$G$7$g\e(B
-\e$B$&!#$=$7$F!"\e(BEMACS \e$B$G$O!"<B:]!"2?$G$b$G$-$k$N$G$9$+$i!#\e(B
+   C-h a       \e$B%O%$%Q!<%"%W%m%]%9!#%-!<%o!<%I$rF~NO$9$k$H!"$=$N%-!<%o!<\e(B
+                \e$B%I$rL>A0$K4^$`A4$F$N4X?t$HJQ?t$r%j%9%H%"%C%W$7$^$9!#\e(B
+                Meta-x \e$B$G5/F0$G$-$k%3%^%s%I$K$O:8B&$K%"%9%?%j%9%/$,IU\e(B
+                \e$B$-$^$9!#\e(B
 
+>> C-h a newline<Return> \e$B$H%?%$%W$7$F$_$F2<$5$$!#\e(B
 
+"newline"\e$B$H$$$&J8;zNs$rL>A0$N0lIt$K;}$DA4$F$N4X?t$HJQ?t$rI=<($7$^$9!#\e(B
+\e$B4X?t$dJQ?t$r$h$j>\$7$/CN$k$?$a$K\e(B <Return> \e$B$+??Cf$N%^%&%9%\%?%s$r2!$7$F\e(B
+\e$B$/$@$5$$!#\e(Bhyper-apropos \e$B$r=*N;$9$k$?$a$K$O\e(B `q' \e$B$rF~NO$7$^$9!#\e(B
 
-\e$B<U<-\e(B
-=====
-     \e$B$3$NJ8=q$O!"\e(BJUNET\e$B$GN.$5$l$?\e(B"\e$BF|K\8l\e(B MicroEMACS (kemacs) \e$BF~LgJT\e(B" \e$B$r\e(BGNUE-
-macs (Nemacs)\e$B$N\e(BTutorial\e$BMQ$K=q$-49$($?$b$N$G$9!#\e(B
 
-     Jonathan Payne \e$B$K$h$k\e(B "JOVE Tutorial" (19 January 86) \e$B$rJQ99$7$?$b$N$G\e(B
-     \e$B$"$j!"$=$l$O$b$H$b$H$O!"\e(BCCA-UNIX\e$B$N\e(BSteve Zimmerman \e$B$K$h$C$FJQ99$5$l$?!"\e(B
-     MIT \e$B$N\e(B "Teach-Emacs" \e$BF~LgJT\e(B (31 October 85) \e$B$r!J$5$i$K!KJQ99$7$?$b$N$G\e(B
-     \e$B$7$?!#\e(B
+\e$B!v$*$o$j$K\e(B
+==========
 
-     Update - February 1986 by Dana Hoggatt.
+\e$BK:$l$J$$$G!*\e(BXEmacs \e$B$r=*N;$9$k$K$O!"\e(BC-x C-c \e$B$G$9!#$^$?\e(B XEmacs \e$B$KLa$C$F\e(B
+\e$BMh$i$l$k$h$&$K0l;~E*$K%7%'%k$KLa$k$@$1$J$i\e(B C-z \e$B$G$9!#!J\e(BX \e$B$G$O!"$3$l$O\e(B
+\e$B8=:_$N\e(B XEmacs \e$B$N%U%l!<%`$r%"%$%3%s2=$7$^$9!#!K\e(B
 
-     Update - December 1986 by Kim Leburg.
+\e$B$3$NF~Lg%,%$%I$O!"$^$C$?$/$N=i?4<T$K$b$o$+$j$d$9$$$h$&$K$H0U?^$7$F$$$^\e(B
+\e$B$9!#$G$9$+$i!"$b$72?$+$o$+$j$K$/$$E@$,$"$C$?$J$i!"<+J,$r@U$a$J$$$GJ86g\e(B
+\e$B$r$D$1$F2<$5$$!#\e(B
 
-     Update/Translate - July 1987 by SANETO Takanori
 
-\e$BFCJL$J<U<-\e(B
-==========
+\e$B!v$3$NK]LuHG$K$D$$$F$N<U<-\e(B
+==========================
+
+\e$B$3$NJ8=q$O\e(B XEmacs Ver.21.2 \e$BIUB0$N1Q8lHG$NF~Lg%,%$%I$rF|K\8l$KK]Lu$7$?\e(B
+\e$B$b$N$G$9!#$=$N:]!"\e(BEmacs \e$BIUB0$NF|K\8l%,%$%I$r85$K=$@5$7$^$7$?!#$=$NF|K\\e(B
+\e$B8l%,%$%I$O!"85$O\e(B SANETO Takanori \e$B;a$,F|K\8l\e(B MicroXEmacs(kemacs) \e$BF~LgJT\e(B
+\e$B$H$7$FK]Lu$5$l!"$=$l$rNkLZM5?.;a\e(B <hironobu@sra.co.jp> \e$B$,\e(BNemacs/Mule \e$BMQ\e(B
+\e$B$KJQ99!"$5$i$K5HEDLP<y;a$,=$@5$5$l$?$b$N$G$9!#$3$l$i$NJ}!9$K?<$/46<U$7\e(B
+\e$B$^$9!#\e(B
 
-     \e$B:G=i$K$3$l$NF|K\8lLu$r:n$i$l$?!"\e(BSANETO Takanori\e$B$5$s!#$3$NJ8>O$O\e(BGMW +
-Wnn  + Nemacs\e$B$r;H$C$F=q$-$^$7$?!#$=$N$h$&$JAG@2$i$7$$%W%m%0%i%`$r:n$C$?J}!9\e(B
-\e$B$X46<U$N0U$rI=$7$?$$$H;W$$$^$9!#K]Lu$H$+!"F~NO$H$+$r?'!9$H<jEA$C$F$/$l$?!"\e(B
-\e$BF#86>M;R$5$s!"$I$&$b$"$j$,$H$&!#\e(B
 
+\e$B!vCx:n8"I=<(\e(B
+============
 
+\e$B$3$3$K85$N1Q8lHG$NCx:n8"I=<($r$=$N$^$^IU$1$^$9!#$3$NK]LuHG$b$3$l$K=>$$\e(B
+\e$B$^$9!#\e(B
 
+This tutorial descends from a long line of Emacs tutorials
+starting with the one written by Stuart Cracraft for the original Emacs.
+Ben Wing updated the tutorial for X Windows.  Martin Buchholz and
+Hrvoje Niksic added more corrections for XEmacs.
 
+This version of the tutorial, like XEmacs, is copyrighted, and comes
+with permission to distribute copies on certain conditions:
 
-\e$B8mLu!"13!"$=$NB>!"$NJ8@U$O!"0J2<$N<T$K$"$j$^$9!#\e(B
+Copyright (c) 1985, 1996 Free Software Foundation
 
-                        \e$BNkLZM5?.\e(B hironobu@sra.co.jp
+   Permission is granted to anyone to make or distribute verbatim copies
+   of this document as received, in any medium, provided that the
+   copyright notice and permission notice are preserved,
+   and that the distributor grants the recipient permission
+   for further redistribution as permitted by this notice.
 
+   Permission is granted to distribute modified versions
+   of this document, or of portions of it,
+   under the above conditions, provided also that they
+   carry prominent notices stating who last altered them.
 
-Update/Add - December 1987 by Hironobu Suzuki
-Update/Add - November 1989 by Ken'ichi Handa
-Update/Add - January  1990 by Shigeki Yoshida
-Update/Add - March    1992 by Kenichi HANDA
+The conditions for copying XEmacs itself are more complex, but in the
+same spirit.  Please read the file COPYING and then do give copies of
+XEmacs to your friends.  Help stamp out software obstructionism
+("ownership") by using, writing, and sharing free software!
index 6cef740..51c9517 100644 (file)
@@ -31,9 +31,9 @@ Indirect:
 cl.info-1: 1164
 cl.info-2: 46306
 cl.info-3: 89087
-cl.info-4: 137816
-cl.info-5: 175812
-cl.info-6: 218417
+cl.info-4: 137810
+cl.info-5: 175806
+cl.info-6: 218409
 \1f
 Tag Table:
 (Indirect)
@@ -74,33 +74,33 @@ Node: Other Clauses\7f105149
 Node: Multiple Values\7f111218
 Node: Macros\7f113111
 Node: Declarations\7f116329
-Node: Symbols\7f124821
-Node: Property Lists\7f125102
-Node: Creating Symbols\7f127293
-Node: Numbers\7f129371
-Node: Predicates on Numbers\7f129851
-Node: Numerical Functions\7f130880
-Node: Random Numbers\7f135107
-Node: Implementation Parameters\7f137816
-Node: Sequences\7f141388
-Node: Sequence Basics\7f142061
-Node: Mapping over Sequences\7f145639
-Node: Sequence Functions\7f151493
-Node: Searching Sequences\7f157668
-Node: Sorting Sequences\7f160705
-Node: Lists\7f163253
-Node: List Functions\7f163678
-Node: Substitution of Expressions\7f167941
-Node: Lists as Sets\7f169827
-Node: Association Lists\7f173889
-Node: Hash Tables\7f175592
-Node: Structures\7f175812
-Node: Assertions\7f190595
-Node: Efficiency Concerns\7f193538
-Node: Common Lisp Compatibility\7f199865
-Node: Old CL Compatibility\7f203021
-Node: Porting Common Lisp\7f207404
-Node: Function Index\7f218417
-Node: Variable Index\7f229566
+Node: Symbols\7f124815
+Node: Property Lists\7f125096
+Node: Creating Symbols\7f127287
+Node: Numbers\7f129365
+Node: Predicates on Numbers\7f129845
+Node: Numerical Functions\7f130874
+Node: Random Numbers\7f135101
+Node: Implementation Parameters\7f137810
+Node: Sequences\7f141382
+Node: Sequence Basics\7f142055
+Node: Mapping over Sequences\7f145633
+Node: Sequence Functions\7f151487
+Node: Searching Sequences\7f157662
+Node: Sorting Sequences\7f160699
+Node: Lists\7f163247
+Node: List Functions\7f163672
+Node: Substitution of Expressions\7f167935
+Node: Lists as Sets\7f169821
+Node: Association Lists\7f173883
+Node: Hash Tables\7f175586
+Node: Structures\7f175806
+Node: Assertions\7f190589
+Node: Efficiency Concerns\7f193532
+Node: Common Lisp Compatibility\7f199859
+Node: Old CL Compatibility\7f203015
+Node: Porting Common Lisp\7f207398
+Node: Function Index\7f218409
+Node: Variable Index\7f229558
 \1f
 End Tag Table
index 4c211f0..4642aa8 100644 (file)
@@ -40,152 +40,150 @@ Foundation instead of in the original English.
 \1f
 Indirect:
 internals.info-1: 1776
-internals.info-2: 46607
-internals.info-3: 94313
-internals.info-4: 142724
-internals.info-5: 184821
-internals.info-6: 234636
-internals.info-7: 281302
-internals.info-8: 328518
-internals.info-9: 374004
+internals.info-2: 46628
+internals.info-3: 94270
+internals.info-4: 143272
+internals.info-5: 189524
+internals.info-6: 239216
+internals.info-7: 282833
+internals.info-8: 331699
 \1f
 Tag Table:
 (Indirect)
 Node: Top\7f1776
-Node: A History of Emacs\7f7010
-Node: Through Version 18\7f8535
-Node: Lucid Emacs\7f11983
-Node: GNU Emacs 19\7f15001
-Node: GNU Emacs 20\7f17184
-Node: XEmacs\7f17611
-Node: XEmacs From the Outside\7f20790
-Node: The Lisp Language\7f22557
-Node: XEmacs From the Perspective of Building\7f32099
-Node: XEmacs From the Inside\7f38224
-Node: The XEmacs Object System (Abstractly Speaking)\7f46607
-Node: How Lisp Objects Are Represented in C\7f60693
-Node: Rules When Writing New C Code\7f69251
-Node: General Coding Rules\7f70055
-Node: Writing Lisp Primitives\7f75830
-Node: Adding Global Lisp Variables\7f86999
-Node: Coding for Mule\7f90637
-Node: Character-Related Data Types\7f91616
-Node: Working With Character and Byte Positions\7f94313
-Node: Conversion to and from External Data\7f98063
-Node: General Guidelines for Writing Mule-Aware Code\7f102944
-Node: An Example of Mule-Aware Code\7f104975
-Node: Techniques for XEmacs Developers\7f106962
-Node: A Summary of the Various XEmacs Modules\7f110729
-Node: Low-Level Modules\7f111549
-Node: Basic Lisp Modules\7f119119
-Node: Modules for Standard Editing Operations\7f127440
-Node: Editor-Level Control Flow Modules\7f133328
-Node: Modules for the Basic Displayable Lisp Objects\7f136774
-Node: Modules for other Display-Related Lisp Objects\7f139296
-Node: Modules for the Redisplay Mechanism\7f140373
-Node: Modules for Interfacing with the File System\7f142724
-Node: Modules for Other Aspects of the Lisp Interpreter and Object System\7f146422
-Node: Modules for Interfacing with the Operating System\7f151875
-Node: Modules for Interfacing with X Windows\7f159536
-Node: Modules for Internationalization\7f162972
-Node: Allocation of Objects in XEmacs Lisp\7f165609
-Node: Introduction to Allocation\7f166145
-Node: Garbage Collection\7f171652
-Node: GCPROing\7f174605
-Node: Garbage Collection - Step by Step\7f181415
-Node: Invocation\7f181807
-Node: garbage_collect_1\7f184821
-Node: mark_object\7f194301
-Node: gc_sweep\7f196113
-Node: sweep_lcrecords_1\7f201176
-Node: compact_string_chars\7f202171
-Node: sweep_strings\7f204351
-Node: sweep_bit_vectors_1\7f205316
-Node: Integers and Characters\7f205992
-Node: Allocation from Frob Blocks\7f206744
-Node: lrecords\7f208348
-Node: Low-level allocation\7f220810
-Node: Pure Space\7f224978
-Node: Cons\7f225153
-Node: Vector\7f225869
-Node: Bit Vector\7f226446
-Node: Symbol\7f226939
-Node: Marker\7f227508
-Node: String\7f228063
-Node: Compiled Function\7f231676
-Node: Dumping\7f231845
-Node: Overview\7f234066
-Node: Data descriptions\7f234636
-Node: Dumping phase\7f236641
-Node: Object inventory\7f237043
-Node: Address allocation\7f239897
-Node: The header\7f241284
-Node: Data dumping\7f241792
-Node: Pointers dumping\7f242453
-Node: Reloading phase\7f243671
-Node: Remaining issues\7f245432
-Node: Events and the Event Loop\7f246393
-Node: Introduction to Events\7f246843
-Node: Main Loop\7f248792
-Node: Specifics of the Event Gathering Mechanism\7f252367
-Node: Specifics About the Emacs Event\7f264820
-Node: The Event Stream Callback Routines\7f265075
-Node: Other Event Loop Functions\7f265320
-Node: Converting Events\7f266460
-Node: Dispatching Events; The Command Builder\7f267069
-Node: Evaluation; Stack Frames; Bindings\7f267304
-Node: Evaluation\7f267646
-Node: Dynamic Binding; The specbinding Stack; Unwind-Protects\7f274229
-Node: Simple Special Forms\7f276613
-Node: Catch and Throw\7f277395
-Node: Symbols and Variables\7f279970
-Node: Introduction to Symbols\7f280234
-Node: Obarrays\7f281302
-Node: Symbol Values\7f284835
-Node: Buffers and Textual Representation\7f287123
-Node: Introduction to Buffers\7f287781
-Node: The Text in a Buffer\7f290487
-Node: Buffer Lists\7f297637
-Node: Markers and Extents\7f299588
-Node: Bufbytes and Emchars\7f301853
-Node: The Buffer Object\7f302068
-Node: MULE Character Sets and Encodings\7f305548
-Node: Character Sets\7f306610
-Node: Encodings\7f310095
-Node: Japanese EUC (Extended Unix Code)\7f311162
-Node: JIS7\7f311994
-Node: Internal Mule Encodings\7f313344
-Node: Internal String Encoding\7f315174
-Node: Internal Character Encoding\7f317319
-Node: CCL\7f319043
-Node: The Lisp Reader and Compiler\7f325795
-Node: Lstreams\7f326008
-Node: Creating an Lstream\7f327039
-Node: Lstream Types\7f328266
-Node: Lstream Functions\7f328518
-Node: Lstream Methods\7f332084
-Node: Consoles; Devices; Frames; Windows\7f335226
-Node: Introduction to Consoles; Devices; Frames; Windows\7f335541
-Node: Point\7f338076
-Node: Window Hierarchy\7f339355
-Node: The Window Object\7f343803
-Node: The Redisplay Mechanism\7f347240
-Node: Critical Redisplay Sections\7f348032
-Node: Line Start Cache\7f349019
-Node: Redisplay Piece by Piece\7f352255
-Node: Extents\7f354291
-Node: Introduction to Extents\7f354825
-Node: Extent Ordering\7f355967
-Node: Format of the Extent Info\7f357208
-Node: Zero-Length Extents\7f359095
-Node: Mathematics of Extent Ordering\7f360493
-Node: Extent Fragments\7f365250
-Node: Faces\7f366336
-Node: Glyphs\7f366452
-Node: Specifiers\7f369470
-Node: Menus\7f369599
-Node: Subprocesses\7f371857
-Node: Interface to X Windows\7f373833
-Node: Index\7f374004
+Node: A History of Emacs\7f7030
+Node: Through Version 18\7f8555
+Node: Lucid Emacs\7f12003
+Node: GNU Emacs 19\7f15021
+Node: GNU Emacs 20\7f17204
+Node: XEmacs\7f17631
+Node: XEmacs From the Outside\7f20810
+Node: The Lisp Language\7f22577
+Node: XEmacs From the Perspective of Building\7f32120
+Node: XEmacs From the Inside\7f38245
+Node: The XEmacs Object System (Abstractly Speaking)\7f46628
+Node: How Lisp Objects Are Represented in C\7f60714
+Node: Rules When Writing New C Code\7f65207
+Node: General Coding Rules\7f66011
+Node: Writing Lisp Primitives\7f71722
+Node: Adding Global Lisp Variables\7f82891
+Node: Coding for Mule\7f86529
+Node: Character-Related Data Types\7f87508
+Node: Working With Character and Byte Positions\7f90505
+Node: Conversion to and from External Data\7f94270
+Node: General Guidelines for Writing Mule-Aware Code\7f100411
+Node: An Example of Mule-Aware Code\7f103099
+Node: Techniques for XEmacs Developers\7f105080
+Node: A Summary of the Various XEmacs Modules\7f109290
+Node: Low-Level Modules\7f110110
+Node: Basic Lisp Modules\7f117680
+Node: Modules for Standard Editing Operations\7f124290
+Node: Editor-Level Control Flow Modules\7f130178
+Node: Modules for the Basic Displayable Lisp Objects\7f133624
+Node: Modules for other Display-Related Lisp Objects\7f136146
+Node: Modules for the Redisplay Mechanism\7f137223
+Node: Modules for Interfacing with the File System\7f139574
+Node: Modules for Other Aspects of the Lisp Interpreter and Object System\7f143272
+Node: Modules for Interfacing with the Operating System\7f148725
+Node: Modules for Interfacing with X Windows\7f156386
+Node: Modules for Internationalization\7f159822
+Node: Allocation of Objects in XEmacs Lisp\7f162459
+Node: Introduction to Allocation\7f162980
+Node: Garbage Collection\7f166666
+Node: GCPROing\7f167822
+Node: Garbage Collection - Step by Step\7f174826
+Node: Invocation\7f175218
+Node: garbage_collect_1\7f178232
+Node: mark_object\7f187712
+Node: gc_sweep\7f189524
+Node: sweep_lcrecords_1\7f194587
+Node: compact_string_chars\7f195582
+Node: sweep_strings\7f197762
+Node: sweep_bit_vectors_1\7f198727
+Node: Integers and Characters\7f199403
+Node: Allocation from Frob Blocks\7f200155
+Node: lrecords\7f201759
+Node: Low-level allocation\7f213569
+Node: Cons\7f217731
+Node: Vector\7f218457
+Node: Bit Vector\7f219034
+Node: Symbol\7f219527
+Node: Marker\7f219881
+Node: String\7f220436
+Node: Compiled Function\7f224049
+Node: Dumping\7f224218
+Node: Overview\7f226439
+Node: Data descriptions\7f227009
+Node: Dumping phase\7f229014
+Node: Object inventory\7f229416
+Node: Address allocation\7f232270
+Node: The header\7f233657
+Node: Data dumping\7f234165
+Node: Pointers dumping\7f234826
+Node: Reloading phase\7f236044
+Node: Remaining issues\7f237805
+Node: Events and the Event Loop\7f238766
+Node: Introduction to Events\7f239216
+Node: Main Loop\7f241165
+Node: Specifics of the Event Gathering Mechanism\7f244740
+Node: Specifics About the Emacs Event\7f257193
+Node: The Event Stream Callback Routines\7f257448
+Node: Other Event Loop Functions\7f257693
+Node: Converting Events\7f258833
+Node: Dispatching Events; The Command Builder\7f259442
+Node: Evaluation; Stack Frames; Bindings\7f259677
+Node: Evaluation\7f260019
+Node: Dynamic Binding; The specbinding Stack; Unwind-Protects\7f266574
+Node: Simple Special Forms\7f268958
+Node: Catch and Throw\7f269741
+Node: Symbols and Variables\7f272316
+Node: Introduction to Symbols\7f272580
+Node: Obarrays\7f273648
+Node: Symbol Values\7f277181
+Node: Buffers and Textual Representation\7f279469
+Node: Introduction to Buffers\7f280127
+Node: The Text in a Buffer\7f282833
+Node: Buffer Lists\7f289983
+Node: Markers and Extents\7f291934
+Node: Bufbytes and Emchars\7f294199
+Node: The Buffer Object\7f294414
+Node: MULE Character Sets and Encodings\7f297894
+Node: Character Sets\7f298956
+Node: Encodings\7f302441
+Node: Japanese EUC (Extended Unix Code)\7f303508
+Node: JIS7\7f304340
+Node: Internal Mule Encodings\7f305690
+Node: Internal String Encoding\7f307520
+Node: Internal Character Encoding\7f309665
+Node: CCL\7f311389
+Node: The Lisp Reader and Compiler\7f318141
+Node: Lstreams\7f318354
+Node: Creating an Lstream\7f319385
+Node: Lstream Types\7f320612
+Node: Lstream Functions\7f320864
+Node: Lstream Methods\7f324430
+Node: Consoles; Devices; Frames; Windows\7f327572
+Node: Introduction to Consoles; Devices; Frames; Windows\7f327887
+Node: Point\7f330420
+Node: Window Hierarchy\7f331699
+Node: The Window Object\7f336147
+Node: The Redisplay Mechanism\7f339584
+Node: Critical Redisplay Sections\7f340376
+Node: Line Start Cache\7f341363
+Node: Redisplay Piece by Piece\7f344599
+Node: Extents\7f346636
+Node: Introduction to Extents\7f347170
+Node: Extent Ordering\7f348312
+Node: Format of the Extent Info\7f349553
+Node: Zero-Length Extents\7f351440
+Node: Mathematics of Extent Ordering\7f352838
+Node: Extent Fragments\7f357595
+Node: Faces\7f358681
+Node: Glyphs\7f358797
+Node: Specifiers\7f361814
+Node: Menus\7f361943
+Node: Subprocesses\7f364201
+Node: Interface to X Windows\7f366177
+Node: Index\7f366348
 \1f
 End Tag Table
index 20db3d2..51dd8c1 100644 (file)
@@ -74,6 +74,8 @@ File: internals.info,  Node: Top,  Next: A History of Emacs,  Prev: (dir),  Up:
 * Index::
 
 
+--- The Detailed Node Listing ---
+
 A History of Emacs
 
 * Through Version 18::          Unification prevails.
@@ -123,7 +125,6 @@ Allocation of Objects in XEmacs Lisp
 * Allocation from Frob Blocks::
 * lrecords::
 * Low-level allocation::
-* Pure Space::
 * Cons::
 * Vector::
 * Bit Vector::
@@ -822,13 +823,13 @@ different from C):
 
    Unfortunately, there is no perfect language.  Static typing allows a
 compiler to catch programmer errors and produce more efficient code, but
-makes programming more tedious and less fun.  For the forseeable future,
-an Ideal Editing and Programming Environment (and that is what XEmacs
-aspires to) will be programmable in multiple languages: high level ones
-like Lisp for user customization and prototyping, and lower level ones
-for infrastructure and industrial strength applications.  If I had my
-way, XEmacs would be friendly towards the Python, Scheme, C++, ML,
-etc... communities.  But there are serious technical difficulties to
+makes programming more tedious and less fun.  For the foreseeable
+future, an Ideal Editing and Programming Environment (and that is what
+XEmacs aspires to) will be programmable in multiple languages: high
+level ones like Lisp for user customization and prototyping, and lower
+level ones for infrastructure and industrial strength applications.  If
+I had my way, XEmacs would be friendly towards the Python, Scheme, C++,
+ML, etc... communities.  But there are serious technical difficulties to
 achieving that goal.
 
    The word "application" in the previous paragraph was used
index 17e7222..e8fe7d4 100644 (file)
@@ -405,24 +405,16 @@ representation stuffs a pointer together with a tag, as follows:
       [ 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 ]
       [ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 ]
      
-        <---> ^ <------------------------------------------------------>
-         tag  |       a pointer to a structure, or an integer
-              |
-            mark bit
-
-   The tag describes the type of the Lisp object.  For integers and
-chars, the lower 28 bits contain the value of the integer or char; for
-all others, the lower 28 bits contain a pointer.  The mark bit is used
-during garbage-collection, and is always 0 when garbage collection is
-not happening. (The way that garbage collection works, basically, is
-that it loops over all places where Lisp objects could exist--this
-includes all global variables in C that contain Lisp objects [including
-`Vobarray', the C equivalent of `obarray'; through this, all Lisp
-variables will get marked], plus various other places--and recursively
-scans through the Lisp objects, marking each object it finds by setting
-the mark bit.  Then it goes through the lists of all objects allocated,
-freeing the ones that are not marked and turning off the mark bit of
-the ones that are marked.)
+        <---------------------------------------------------------> <->
+                 a pointer to a structure, or an integer            tag
+
+   A tag of 00 is used for all pointer object types, a tag of 10 is used
+for characters, and the other two tags 01 and 11 are joined together to
+form the integer object type.  This representation gives us 31 bits
+integers, 30 bits characters and pointers are represented directly
+without any bit masking.  This representation, though, assumes that
+pointers to structs are always aligned to multiples of 4, so the lower 2
+bits are always zero.
 
    Lisp objects use the typedef `Lisp_Object', but the actual C type
 used for the Lisp object can vary.  It can be either a simple type
@@ -439,87 +431,16 @@ Lisp objects when debugging.  The choice of which type to use is
 determined by the preprocessor constant `USE_UNION_TYPE' which is
 defined via the `--use-union-type' option to `configure'.
 
-   Note that there are only eight types that the tag can represent, but
-many more actual types than this.  This is handled by having one of the
-tag types specify a meta-type called a "record"; for all such objects,
-the first four bytes of the pointed-to structure indicate what the
-actual type is.
-
-   Note also that having 28 bits for pointers and integers restricts a
-lot of things to 256 megabytes of memory. (Basically, enough pointers
-and indices and whatnot get stuffed into Lisp objects that the total
-amount of memory used by XEmacs can't grow above 256 megabytes.  In
-older versions of XEmacs and GNU Emacs, the tag was 5 bits wide,
-allowing for 32 types, which was more than the actual number of types
-that existed at the time, and no "record" type was necessary.  However,
-this limited the editor to 64 megabytes total, which some users who
-edited large files might conceivably exceed.)
-
-   Also, note that there is an implicit assumption here that all
-pointers are low enough that the top bits are all zero and can just be
-chopped off.  On standard machines that allocate memory from the bottom
-up (and give each process its own address space), this works fine.  Some
-machines, however, put the data space somewhere else in memory (e.g.
-beginning at 0x80000000).  Those machines cope by defining
-`DATA_SEG_BITS' in the corresponding `m/' or `s/' file to the proper
-mask.  Then, pointers retrieved from Lisp objects are automatically
-OR'ed with this value prior to being used.
-
-   A corollary of the previous paragraph is that *(pointers to)
-stack-allocated structures cannot be put into Lisp objects*.  The stack
-is generally located near the top of memory; if you put such a pointer
-into a Lisp object, it will get its top bits chopped off, and you will
-lose.
-
-   Actually, there's an alternative representation of a `Lisp_Object',
-invented by Kyle Jones, that is used when the `--use-minimal-tagbits'
-option to `configure' is used.  In this case the 2 lower bits are used
-for the tag bits.  This representation assumes that pointers to structs
-are always aligned to multiples of 4, so the lower 2 bits are always
-zero.
-
-      [ 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 ]
-      [ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 ]
-     
-        <---------------------------------------------------------> <->
-                 a pointer to a structure, or an integer            tag
-
-   A tag of 00 is used for all pointer object types, a tag of 10 is used
-for characters, and the other two tags 01 and 11 are joined together to
-form the integer object type.  The markbit is moved to part of the
-structure being pointed at (integers and chars do not need to be marked,
-since no memory is allocated).  This representation has these
-advantages:
-
-  1. 31 bits can be used for Lisp Integers.
-
-  2. _Any_ pointer can be represented directly, and no bit masking
-     operations are necessary.
-
-   The disadvantages are:
-
-  1. An extra level of indirection is needed when accessing the object
-     types that were not record types.  So checking whether a Lisp
-     object is a cons cell becomes a slower operation.
-
-  2. Mark bits can no longer be stored directly in Lisp objects, so
-     another place for them must be found.  This means that a cons cell
-     requires more memory than merely room for 2 lisp objects, leading
-     to extra memory use.
-
    Various macros are used to construct Lisp objects and extract the
 components.  Macros of the form `XINT()', `XCHAR()', `XSTRING()',
-`XSYMBOL()', etc. mask out the pointer/integer field and cast it to the
-appropriate type.  All of the macros that construct pointers will `OR'
-with `DATA_SEG_BITS' if necessary.  `XINT()' needs to be a bit tricky
-so that negative numbers are properly sign-extended: Usually it does
-this by shifting the number four bits to the left and then four bits to
-the right.  This assumes that the right-shift operator does an
-arithmetic shift (i.e. it leaves the most-significant bit as-is rather
-than shifting in a zero, so that it mimics a divide-by-two even for
-negative numbers).  Not all machines/compilers do this, and on the ones
-that don't, a more complicated definition is selected by defining
-`EXPLICIT_SIGN_EXTEND'.
+`XSYMBOL()', etc. shift out the tag field if needed cast it to the
+appropriate type.  `XINT()' needs to be a bit tricky so that negative
+numbers are properly sign-extended.  Since integers are stored
+left-shifted, if the right-shift operator does an arithmetic shift
+(i.e. it leaves the most-significant bit as-is rather than shifting in
+a zero, so that it mimics a divide-by-two even for negative numbers)
+the shift to remove the tag bit is enough.  This is the case on all the
+systems we support.
 
    Note that when `ERROR_CHECK_TYPECHECK' is defined, the extractor
 macros become more complicated--they check the tag bits and/or the type
@@ -624,8 +545,7 @@ dumping process: If possible, the initialized data segment is re-mapped
 so that it becomes part of the (unmodifiable) code segment in the
 dumped executable.  This allows this memory to be shared among multiple
 running XEmacs processes.  XEmacs is careful to place as much constant
-data as possible into initialized variables (in particular, into what's
-called the "pure space"--see below) during the `temacs' phase.
+data as possible into initialized variables during the `temacs' phase.
 
    *Please note:* This kludge only works on a few systems nowadays, and
 is rapidly becoming irrelevant because most modern operating systems
@@ -1026,27 +946,32 @@ glance at the declaration can tell the intended use of the variable.
      The data representing the text in a buffer or string is logically
      a set of `Bufbyte's.
 
-     XEmacs does not work with character formats all the time; when
-     reading characters from the outside, it decodes them to an
+     XEmacs does not work with the same character formats all the time;
+     when reading characters from the outside, it decodes them to an
      internal format, and likewise encodes them when writing.
      `Bufbyte' (in fact `unsigned char') is the basic unit of XEmacs
-     internal buffers and strings format.
+     internal buffers and strings format.  A `Bufbyte *' is the type
+     that points at text encoded in the variable-width internal
+     encoding.
 
      One character can correspond to one or more `Bufbyte's.  In the
-     current implementation, an ASCII character is represented by the
-     same `Bufbyte', and extended characters are represented by a
-     sequence of `Bufbyte's.
+     current Mule implementation, an ASCII character is represented by
+     the same `Bufbyte', and other characters are represented by a
+     sequence of two or more `Bufbyte's.
 
-     Without Mule support, a `Bufbyte' is equivalent to an `Emchar'.
+     Without Mule support, there are exactly 256 characters, implicitly
+     Latin-1, and each character is represented using one `Bufbyte', and
+     there is a one-to-one correspondence between `Bufbyte's and
+     `Emchar's.
 
 `Bufpos'
 `Charcount'
      A `Bufpos' represents a character position in a buffer or string.
      A `Charcount' represents a number (count) of characters.
      Logically, subtracting two `Bufpos' values yields a `Charcount'
-     value.  Although all of these are `typedef'ed to `int', we use
-     them in preference to `int' to make it clear what sort of position
-     is being used.
+     value.  Although all of these are `typedef'ed to `EMACS_INT', we
+     use them in preference to `EMACS_INT' to make it clear what sort
+     of position is being used.
 
      `Bufpos' and `Charcount' values are the only ones that are ever
      visible to Lisp.
@@ -1054,9 +979,9 @@ glance at the declaration can tell the intended use of the variable.
 `Bytind'
 `Bytecount'
      A `Bytind' represents a byte position in a buffer or string.  A
-     `Bytecount' represents the distance between two positions in bytes.
-     The relationship between `Bytind' and `Bytecount' is the same as
-     the relationship between `Bufpos' and `Charcount'.
+     `Bytecount' represents the distance between two positions, in
+     bytes.  The relationship between `Bytind' and `Bytecount' is the
+     same as the relationship between `Bufpos' and `Charcount'.
 
 `Extbyte'
 `Extcount'
@@ -1065,3 +990,102 @@ glance at the declaration can tell the intended use of the variable.
      is the distance between two `Extbyte's.  Extbytes and Extcounts
      are not all that frequent in XEmacs code.
 
+\1f
+File: internals.info,  Node: Working With Character and Byte Positions,  Next: Conversion to and from External Data,  Prev: Character-Related Data Types,  Up: Coding for Mule
+
+Working With Character and Byte Positions
+-----------------------------------------
+
+   Now that we have defined the basic character-related types, we can
+look at the macros and functions designed for work with them and for
+conversion between them.  Most of these macros are defined in
+`buffer.h', and we don't discuss all of them here, but only the most
+important ones.  Examining the existing code is the best way to learn
+about them.
+
+`MAX_EMCHAR_LEN'
+     This preprocessor constant is the maximum number of buffer bytes to
+     represent an Emacs character in the variable width internal
+     encoding.  It is useful when allocating temporary strings to keep
+     a known number of characters.  For instance:
+
+          {
+            Charcount cclen;
+            ...
+            {
+              /* Allocate place for CCLEN characters. */
+              Bufbyte *buf = (Bufbyte *)alloca (cclen * MAX_EMCHAR_LEN);
+          ...
+
+     If you followed the previous section, you can guess that,
+     logically, multiplying a `Charcount' value with `MAX_EMCHAR_LEN'
+     produces a `Bytecount' value.
+
+     In the current Mule implementation, `MAX_EMCHAR_LEN' equals 4.
+     Without Mule, it is 1.
+
+`charptr_emchar'
+`set_charptr_emchar'
+     The `charptr_emchar' macro takes a `Bufbyte' pointer and returns
+     the `Emchar' stored at that position.  If it were a function, its
+     prototype would be:
+
+          Emchar charptr_emchar (Bufbyte *p);
+
+     `set_charptr_emchar' stores an `Emchar' to the specified byte
+     position.  It returns the number of bytes stored:
+
+          Bytecount set_charptr_emchar (Bufbyte *p, Emchar c);
+
+     It is important to note that `set_charptr_emchar' is safe only for
+     appending a character at the end of a buffer, not for overwriting a
+     character in the middle.  This is because the width of characters
+     varies, and `set_charptr_emchar' cannot resize the string if it
+     writes, say, a two-byte character where a single-byte character
+     used to reside.
+
+     A typical use of `set_charptr_emchar' can be demonstrated by this
+     example, which copies characters from buffer BUF to a temporary
+     string of Bufbytes.
+
+          {
+            Bufpos pos;
+            for (pos = beg; pos < end; pos++)
+              {
+                Emchar c = BUF_FETCH_CHAR (buf, pos);
+                p += set_charptr_emchar (buf, c);
+              }
+          }
+
+     Note how `set_charptr_emchar' is used to store the `Emchar' and
+     increment the counter, at the same time.
+
+`INC_CHARPTR'
+`DEC_CHARPTR'
+     These two macros increment and decrement a `Bufbyte' pointer,
+     respectively.  They will adjust the pointer by the appropriate
+     number of bytes according to the byte length of the character
+     stored there.  Both macros assume that the memory address is
+     located at the beginning of a valid character.
+
+     Without Mule support, `INC_CHARPTR (p)' and `DEC_CHARPTR (p)'
+     simply expand to `p++' and `p--', respectively.
+
+`bytecount_to_charcount'
+     Given a pointer to a text string and a length in bytes, return the
+     equivalent length in characters.
+
+          Charcount bytecount_to_charcount (Bufbyte *p, Bytecount bc);
+
+`charcount_to_bytecount'
+     Given a pointer to a text string and a length in characters,
+     return the equivalent length in bytes.
+
+          Bytecount charcount_to_bytecount (Bufbyte *p, Charcount cc);
+
+`charptr_n_addr'
+     Return a pointer to the beginning of the character offset CC (in
+     characters) from P.
+
+          Bufbyte *charptr_n_addr (Bufbyte *p, Charcount cc);
+
index 256af14..97fd42d 100644 (file)
@@ -75,26 +75,26 @@ lispref.info-21: 971557
 lispref.info-22: 1018476
 lispref.info-23: 1065503
 lispref.info-24: 1114902
-lispref.info-25: 1164584
-lispref.info-26: 1214494
-lispref.info-27: 1263717
-lispref.info-28: 1312483
-lispref.info-29: 1361919
-lispref.info-30: 1403254
-lispref.info-31: 1452397
-lispref.info-32: 1501610
-lispref.info-33: 1551184
-lispref.info-34: 1599663
-lispref.info-35: 1645345
-lispref.info-36: 1687344
-lispref.info-37: 1732284
-lispref.info-38: 1781971
-lispref.info-39: 1831075
-lispref.info-40: 1880479
-lispref.info-41: 1929805
-lispref.info-42: 1978506
-lispref.info-43: 2023933
-lispref.info-44: 2062269
+lispref.info-25: 1164575
+lispref.info-26: 1214485
+lispref.info-27: 1263708
+lispref.info-28: 1312474
+lispref.info-29: 1361910
+lispref.info-30: 1403245
+lispref.info-31: 1452388
+lispref.info-32: 1501601
+lispref.info-33: 1551175
+lispref.info-34: 1599654
+lispref.info-35: 1645336
+lispref.info-36: 1687335
+lispref.info-37: 1732275
+lispref.info-38: 1781962
+lispref.info-39: 1831066
+lispref.info-40: 1880470
+lispref.info-41: 1929796
+lispref.info-42: 1978497
+lispref.info-43: 2023924
+lispref.info-44: 2062260
 \1f
 Tag Table:
 (Indirect)
@@ -529,361 +529,361 @@ Node: Backup Files\7f1117641
 Node: Making Backups\7f1119038
 Node: Rename or Copy\7f1121787
 Node: Numbered Backups\7f1124280
-Node: Backup Names\7f1126524
-Node: Auto-Saving\7f1129816
-Node: Reverting\7f1137958
-Node: Buffers\7f1141116
-Node: Buffer Basics\7f1142533
-Node: Current Buffer\7f1144586
-Node: Buffer Names\7f1149274
-Node: Buffer File Name\7f1152479
-Node: Buffer Modification\7f1156598
-Node: Modification Time\7f1158791
-Node: Read Only Buffers\7f1162166
-Node: The Buffer List\7f1164584
-Node: Creating Buffers\7f1169414
-Node: Killing Buffers\7f1171560
-Node: Indirect Buffers\7f1175291
-Node: Windows\7f1177863
-Node: Basic Windows\7f1179341
-Node: Splitting Windows\7f1182439
-Node: Deleting Windows\7f1189328
-Node: Selecting Windows\7f1192008
-Node: Cyclic Window Ordering\7f1195137
-Node: Buffers and Windows\7f1199761
-Node: Displaying Buffers\7f1201602
-Node: Choosing Window\7f1206778
-Node: Window Point\7f1214494
-Node: Window Start\7f1216540
-Node: Vertical Scrolling\7f1221030
-Node: Horizontal Scrolling\7f1227167
-Node: Size of Window\7f1230676
-Node: Position of Window\7f1235394
-Node: Resizing Windows\7f1237634
-Node: Window Configurations\7f1243063
-Node: Frames\7f1246488
-Node: Creating Frames\7f1248257
-Node: Frame Properties\7f1249598
-Node: Property Access\7f1250414
-Node: Initial Properties\7f1251263
-Node: X Frame Properties\7f1253749
-Node: Size and Position\7f1258383
-Node: Frame Name\7f1260379
-Node: Frame Titles\7f1261293
-Node: Deleting Frames\7f1263117
-Node: Finding All Frames\7f1263717
-Node: Frames and Windows\7f1265711
-Node: Minibuffers and Frames\7f1267416
-Node: Input Focus\7f1268334
-Node: Visibility of Frames\7f1271411
-Node: Raising and Lowering\7f1273330
-Node: Frame Configurations\7f1275706
-Node: Frame Hooks\7f1276300
-Node: Consoles and Devices\7f1278105
-Node: Basic Console Functions\7f1280848
-Node: Basic Device Functions\7f1281271
-Node: Console Types and Device Classes\7f1281987
-Node: Connecting to a Console or Device\7f1284184
-Node: The Selected Console and Device\7f1286347
-Node: Console and Device I/O\7f1287373
-Node: Positions\7f1288137
-Node: Point\7f1289106
-Node: Motion\7f1292196
-Node: Character Motion\7f1292963
-Node: Word Motion\7f1295200
-Node: Buffer End Motion\7f1296701
-Node: Text Lines\7f1298198
-Node: Screen Lines\7f1302793
-Node: List Motion\7f1306856
-Node: Skipping Characters\7f1310264
-Node: Excursions\7f1312483
-Node: Narrowing\7f1315515
-Node: Markers\7f1320840
-Node: Overview of Markers\7f1321746
-Node: Predicates on Markers\7f1326438
-Node: Creating Markers\7f1327684
-Node: Information from Markers\7f1331721
-Node: Changing Markers\7f1332819
-Node: The Mark\7f1334197
-Node: The Region\7f1342691
-Node: Text\7f1348377
-Node: Near Point\7f1351076
-Node: Buffer Contents\7f1355263
-Node: Comparing Text\7f1356669
-Node: Insertion\7f1358077
-Node: Commands for Insertion\7f1361919
-Node: Deletion\7f1364875
-Node: User-Level Deletion\7f1368470
-Node: The Kill Ring\7f1372631
-Node: Kill Ring Concepts\7f1374805
-Node: Kill Functions\7f1375859
-Node: Yank Commands\7f1377764
-Node: Low-Level Kill Ring\7f1379635
-Node: Internals of Kill Ring\7f1382421
-Node: Undo\7f1385201
-Node: Maintaining Undo\7f1389530
-Node: Filling\7f1392150
-Node: Margins\7f1398144
-Node: Auto Filling\7f1402073
-Node: Sorting\7f1403254
-Node: Columns\7f1412554
-Node: Indentation\7f1415070
-Node: Primitive Indent\7f1415849
-Node: Mode-Specific Indent\7f1417093
-Node: Region Indent\7f1419604
-Node: Relative Indent\7f1422552
-Node: Indent Tabs\7f1424934
-Node: Motion by Indent\7f1426255
-Node: Case Changes\7f1427034
-Node: Text Properties\7f1430285
-Node: Examining Properties\7f1432098
-Node: Changing Properties\7f1433965
-Node: Property Search\7f1437556
-Node: Special Properties\7f1442267
-Node: Saving Properties\7f1442548
-Node: Substitution\7f1445690
-Node: Registers\7f1448960
-Node: Transposition\7f1451503
-Node: Change Hooks\7f1452397
-Node: Transformations\7f1454437
-Node: Searching and Matching\7f1458822
-Node: String Search\7f1459953
-Node: Regular Expressions\7f1464677
-Node: Syntax of Regexps\7f1466044
-Node: Regexp Example\7f1480423
-Node: Regexp Search\7f1482593
-Node: POSIX Regexps\7f1488681
-Node: Search and Replace\7f1490516
-Node: Match Data\7f1493881
-Node: Simple Match Data\7f1495011
-Node: Replacing Match\7f1499276
-Node: Entire Match Data\7f1501610
-Node: Saving Match Data\7f1503601
-Node: Searching and Case\7f1504982
-Node: Standard Regexps\7f1507016
-Node: Syntax Tables\7f1509214
-Node: Syntax Basics\7f1510328
-Node: Syntax Descriptors\7f1513300
-Node: Syntax Class Table\7f1515150
-Node: Syntax Flags\7f1521188
-Node: Syntax Table Functions\7f1524405
-Node: Motion and Syntax\7f1528269
-Node: Parsing Expressions\7f1529721
-Node: Standard Syntax Tables\7f1535790
-Node: Syntax Table Internals\7f1536634
-Node: Abbrevs\7f1537660
-Node: Abbrev Mode\7f1539463
-Node: Abbrev Tables\7f1540183
-Node: Defining Abbrevs\7f1541716
-Node: Abbrev Files\7f1543621
-Node: Abbrev Expansion\7f1545394
-Node: Standard Abbrev Tables\7f1550025
-Node: Extents\7f1551184
-Node: Intro to Extents\7f1552427
-Node: Creating and Modifying Extents\7f1556421
-Node: Extent Endpoints\7f1557928
-Node: Finding Extents\7f1561191
-Node: Mapping Over Extents\7f1564939
-Node: Extent Properties\7f1571056
-Node: Detached Extents\7f1581200
-Node: Extent Parents\7f1583059
-Node: Duplicable Extents\7f1584753
-Node: Extents and Events\7f1587974
-Node: Atomic Extents\7f1589881
-Node: Specifiers\7f1590328
-Node: Introduction to Specifiers\7f1592441
-Node: Specifiers In-Depth\7f1594751
-Node: Specifier Instancing\7f1599663
-Node: Specifier Types\7f1602925
-Node: Adding Specifications\7f1607999
-Node: Retrieving Specifications\7f1617361
-Node: Specifier Tag Functions\7f1621096
-Node: Specifier Instancing Functions\7f1624330
-Node: Specifier Example\7f1627737
-Node: Creating Specifiers\7f1630893
-Node: Specifier Validation Functions\7f1633142
-Node: Other Specification Functions\7f1635526
-Node: Faces and Window-System Objects\7f1639345
-Node: Faces\7f1639669
-Node: Merging Faces\7f1641286
-Node: Basic Face Functions\7f1643247
-Node: Face Properties\7f1645345
-Node: Face Convenience Functions\7f1655587
-Node: Other Face Display Functions\7f1658717
-Node: Fonts\7f1659530
-Node: Font Specifiers\7f1660231
-Node: Font Instances\7f1660472
-Node: Font Instance Names\7f1661439
-Node: Font Instance Size\7f1662280
-Node: Font Instance Characteristics\7f1663566
-Node: Font Convenience Functions\7f1664735
-Node: Colors\7f1666025
-Node: Color Specifiers\7f1666465
-Node: Color Instances\7f1666692
-Node: Color Instance Properties\7f1667436
-Node: Color Convenience Functions\7f1668062
-Node: Glyphs\7f1669115
-Node: Glyph Functions\7f1670707
-Node: Creating Glyphs\7f1671114
-Node: Glyph Properties\7f1672701
-Node: Glyph Convenience Functions\7f1681868
-Node: Glyph Dimensions\7f1685815
-Node: Images\7f1686895
-Node: Image Specifiers\7f1687344
-Node: Image Instantiator Conversion\7f1698765
-Node: Image Instances\7f1700130
-Node: Image Instance Types\7f1700881
-Node: Image Instance Functions\7f1703536
-Node: Glyph Types\7f1708105
-Node: Mouse Pointer\7f1709877
-Node: Redisplay Glyphs\7f1712880
-Node: Subwindows\7f1713913
-Node: Annotations\7f1714156
-Node: Annotation Basics\7f1715172
-Node: Annotation Primitives\7f1719110
-Node: Annotation Properties\7f1720439
-Node: Locating Annotations\7f1723479
-Node: Margin Primitives\7f1724316
-Node: Annotation Hooks\7f1726210
-Node: Display\7f1726870
-Node: Refresh Screen\7f1727848
-Node: Truncation\7f1729759
-Node: The Echo Area\7f1732284
-Node: Warnings\7f1738719
-Node: Invisible Text\7f1743155
-Node: Selective Display\7f1745734
-Node: Overlay Arrow\7f1749860
-Node: Temporary Displays\7f1751213
-Node: Blinking\7f1755334
-Node: Usual Display\7f1757519
-Node: Display Tables\7f1760068
-Node: Display Table Format\7f1760872
-Node: Active Display Table\7f1762314
-Node: Character Descriptors\7f1763506
-Node: Beeping\7f1764263
-Node: Hash Tables\7f1769029
-Node: Introduction to Hash Tables\7f1769637
-Node: Working With Hash Tables\7f1775660
-Node: Weak Hash Tables\7f1776777
-Node: Range Tables\7f1778576
-Node: Introduction to Range Tables\7f1779265
-Node: Working With Range Tables\7f1779696
-Node: Databases\7f1780581
-Node: Connecting to a Database\7f1780880
-Node: Working With a Database\7f1781971
-Node: Other Database Functions\7f1782829
-Node: Processes\7f1783403
-Node: Subprocess Creation\7f1785627
-Node: Synchronous Processes\7f1788916
-Node: MS-DOS Subprocesses\7f1795634
-Node: Asynchronous Processes\7f1796708
-Node: Deleting Processes\7f1800421
-Node: Process Information\7f1802292
-Node: Input to Processes\7f1806218
-Node: Signals to Processes\7f1808508
-Node: Output from Processes\7f1812928
-Node: Process Buffers\7f1813740
-Node: Filter Functions\7f1816607
-Node: Accepting Output\7f1822177
-Node: Sentinels\7f1823704
-Node: Process Window Size\7f1827194
-Node: Transaction Queues\7f1827543
-Node: Network\7f1829241
-Node: System Interface\7f1831075
-Node: Starting Up\7f1832345
-Node: Start-up Summary\7f1832939
-Node: Init File\7f1836493
-Node: Terminal-Specific\7f1838874
-Node: Command Line Arguments\7f1842033
-Node: Getting Out\7f1845522
-Node: Killing XEmacs\7f1846091
-Node: Suspending XEmacs\7f1847760
-Node: System Environment\7f1851102
-Node: User Identification\7f1857769
-Node: Time of Day\7f1861298
-Node: Time Conversion\7f1864085
-Node: Timers\7f1869125
-Node: Terminal Input\7f1871298
-Node: Input Modes\7f1871801
-Node: Translating Input\7f1874214
-Node: Recording Input\7f1878379
-Node: Terminal Output\7f1880479
-Node: Flow Control\7f1884102
-Node: Batch Mode\7f1887894
-Node: X-Windows\7f1889276
-Node: X Selections\7f1890147
-Node: X Server\7f1892357
-Node: Resources\7f1892808
-Node: Server Data\7f1898117
-Node: Grabs\7f1899324
-Node: X Miscellaneous\7f1900904
-Node: ToolTalk Support\7f1903289
-Node: XEmacs ToolTalk API Summary\7f1903506
-Node: Sending Messages\7f1904806
-Node: Example of Sending Messages\7f1905057
-Node: Elisp Interface for Sending Messages\7f1906119
-Node: Receiving Messages\7f1912511
-Node: Example of Receiving Messages\7f1912734
-Node: Elisp Interface for Receiving Messages\7f1913570
-Node: LDAP Support\7f1917395
-Node: Building XEmacs with LDAP support\7f1917891
-Node: XEmacs LDAP API\7f1918869
-Node: LDAP Variables\7f1919599
-Node: The High-Level LDAP API\7f1922075
-Node: The Low-Level LDAP API\7f1923180
-Node: The LDAP Lisp Object\7f1923454
-Node: Opening and Closing a LDAP Connection\7f1924007
-Node: Searching on a LDAP Server (Low-level)\7f1925790
-Node: Syntax of Search Filters\7f1927183
-Node: Internationalization\7f1928481
-Node: I18N Levels 1 and 2\7f1928818
-Node: I18N Level 3\7f1929524
-Node: Level 3 Basics\7f1929805
-Node: Level 3 Primitives\7f1930638
-Node: Dynamic Messaging\7f1932244
-Node: Domain Specification\7f1932707
-Node: Documentation String Extraction\7f1934610
-Node: I18N Level 4\7f1935528
-Node: MULE\7f1935720
-Node: Internationalization Terminology\7f1936831
-Node: Charsets\7f1945365
-Node: Charset Properties\7f1946061
-Node: Basic Charset Functions\7f1950747
-Node: Charset Property Functions\7f1952928
-Node: Predefined Charsets\7f1954970
-Node: MULE Characters\7f1957890
-Node: Composite Characters\7f1958737
-Node: ISO 2022\7f1959991
-Node: Coding Systems\7f1966133
-Node: Coding System Types\7f1968054
-Node: EOL Conversion\7f1969873
-Node: Coding System Properties\7f1971056
-Node: Basic Coding System Functions\7f1974908
-Node: Coding System Property Functions\7f1976812
-Node: Encoding and Decoding Text\7f1977370
-Node: Detection of Textual Encoding\7f1978506
-Node: Big5 and Shift-JIS Functions\7f1980042
-Node: CCL\7f1981130
-Node: CCL Syntax\7f1984234
-Node: CCL Statements\7f1985822
-Node: CCL Expressions\7f1990470
-Node: Calling CCL\7f1993009
-Node: CCL Examples\7f1995998
-Node: Category Tables\7f1996135
-Node: Tips\7f1998493
-Node: Style Tips\7f1999134
-Node: Compilation Tips\7f2008653
-Node: Documentation Tips\7f2010567
-Node: Comment Tips\7f2016076
-Node: Library Headers\7f2019078
-Node: Building XEmacs and Object Allocation\7f2023050
-Node: Building XEmacs\7f2023933
-Node: Pure Storage\7f2030268
-Node: Garbage Collection\7f2033056
-Node: Standard Errors\7f2044195
-Node: Standard Buffer-Local Variables\7f2048404
-Node: Standard Keymaps\7f2051037
-Node: Standard Hooks\7f2054769
-Node: Index\7f2062269
+Node: Backup Names\7f1126515
+Node: Auto-Saving\7f1129807
+Node: Reverting\7f1137949
+Node: Buffers\7f1141107
+Node: Buffer Basics\7f1142524
+Node: Current Buffer\7f1144577
+Node: Buffer Names\7f1149265
+Node: Buffer File Name\7f1152470
+Node: Buffer Modification\7f1156589
+Node: Modification Time\7f1158782
+Node: Read Only Buffers\7f1162157
+Node: The Buffer List\7f1164575
+Node: Creating Buffers\7f1169405
+Node: Killing Buffers\7f1171551
+Node: Indirect Buffers\7f1175282
+Node: Windows\7f1177854
+Node: Basic Windows\7f1179332
+Node: Splitting Windows\7f1182430
+Node: Deleting Windows\7f1189319
+Node: Selecting Windows\7f1191999
+Node: Cyclic Window Ordering\7f1195128
+Node: Buffers and Windows\7f1199752
+Node: Displaying Buffers\7f1201593
+Node: Choosing Window\7f1206769
+Node: Window Point\7f1214485
+Node: Window Start\7f1216531
+Node: Vertical Scrolling\7f1221021
+Node: Horizontal Scrolling\7f1227158
+Node: Size of Window\7f1230667
+Node: Position of Window\7f1235385
+Node: Resizing Windows\7f1237625
+Node: Window Configurations\7f1243054
+Node: Frames\7f1246479
+Node: Creating Frames\7f1248248
+Node: Frame Properties\7f1249589
+Node: Property Access\7f1250405
+Node: Initial Properties\7f1251254
+Node: X Frame Properties\7f1253740
+Node: Size and Position\7f1258374
+Node: Frame Name\7f1260370
+Node: Frame Titles\7f1261284
+Node: Deleting Frames\7f1263108
+Node: Finding All Frames\7f1263708
+Node: Frames and Windows\7f1265702
+Node: Minibuffers and Frames\7f1267407
+Node: Input Focus\7f1268325
+Node: Visibility of Frames\7f1271402
+Node: Raising and Lowering\7f1273321
+Node: Frame Configurations\7f1275697
+Node: Frame Hooks\7f1276291
+Node: Consoles and Devices\7f1278096
+Node: Basic Console Functions\7f1280839
+Node: Basic Device Functions\7f1281262
+Node: Console Types and Device Classes\7f1281978
+Node: Connecting to a Console or Device\7f1284175
+Node: The Selected Console and Device\7f1286338
+Node: Console and Device I/O\7f1287364
+Node: Positions\7f1288128
+Node: Point\7f1289097
+Node: Motion\7f1292187
+Node: Character Motion\7f1292954
+Node: Word Motion\7f1295191
+Node: Buffer End Motion\7f1296692
+Node: Text Lines\7f1298189
+Node: Screen Lines\7f1302784
+Node: List Motion\7f1306847
+Node: Skipping Characters\7f1310255
+Node: Excursions\7f1312474
+Node: Narrowing\7f1315506
+Node: Markers\7f1320831
+Node: Overview of Markers\7f1321737
+Node: Predicates on Markers\7f1326429
+Node: Creating Markers\7f1327675
+Node: Information from Markers\7f1331712
+Node: Changing Markers\7f1332810
+Node: The Mark\7f1334188
+Node: The Region\7f1342682
+Node: Text\7f1348368
+Node: Near Point\7f1351067
+Node: Buffer Contents\7f1355254
+Node: Comparing Text\7f1356660
+Node: Insertion\7f1358068
+Node: Commands for Insertion\7f1361910
+Node: Deletion\7f1364866
+Node: User-Level Deletion\7f1368461
+Node: The Kill Ring\7f1372622
+Node: Kill Ring Concepts\7f1374796
+Node: Kill Functions\7f1375850
+Node: Yank Commands\7f1377755
+Node: Low-Level Kill Ring\7f1379626
+Node: Internals of Kill Ring\7f1382412
+Node: Undo\7f1385192
+Node: Maintaining Undo\7f1389521
+Node: Filling\7f1392141
+Node: Margins\7f1398135
+Node: Auto Filling\7f1402064
+Node: Sorting\7f1403245
+Node: Columns\7f1412545
+Node: Indentation\7f1415061
+Node: Primitive Indent\7f1415840
+Node: Mode-Specific Indent\7f1417084
+Node: Region Indent\7f1419595
+Node: Relative Indent\7f1422543
+Node: Indent Tabs\7f1424925
+Node: Motion by Indent\7f1426246
+Node: Case Changes\7f1427025
+Node: Text Properties\7f1430276
+Node: Examining Properties\7f1432089
+Node: Changing Properties\7f1433956
+Node: Property Search\7f1437547
+Node: Special Properties\7f1442258
+Node: Saving Properties\7f1442539
+Node: Substitution\7f1445681
+Node: Registers\7f1448951
+Node: Transposition\7f1451494
+Node: Change Hooks\7f1452388
+Node: Transformations\7f1454428
+Node: Searching and Matching\7f1458813
+Node: String Search\7f1459944
+Node: Regular Expressions\7f1464668
+Node: Syntax of Regexps\7f1466035
+Node: Regexp Example\7f1480414
+Node: Regexp Search\7f1482584
+Node: POSIX Regexps\7f1488672
+Node: Search and Replace\7f1490507
+Node: Match Data\7f1493872
+Node: Simple Match Data\7f1495002
+Node: Replacing Match\7f1499267
+Node: Entire Match Data\7f1501601
+Node: Saving Match Data\7f1503592
+Node: Searching and Case\7f1504973
+Node: Standard Regexps\7f1507007
+Node: Syntax Tables\7f1509205
+Node: Syntax Basics\7f1510319
+Node: Syntax Descriptors\7f1513291
+Node: Syntax Class Table\7f1515141
+Node: Syntax Flags\7f1521179
+Node: Syntax Table Functions\7f1524396
+Node: Motion and Syntax\7f1528260
+Node: Parsing Expressions\7f1529712
+Node: Standard Syntax Tables\7f1535781
+Node: Syntax Table Internals\7f1536625
+Node: Abbrevs\7f1537651
+Node: Abbrev Mode\7f1539454
+Node: Abbrev Tables\7f1540174
+Node: Defining Abbrevs\7f1541707
+Node: Abbrev Files\7f1543612
+Node: Abbrev Expansion\7f1545385
+Node: Standard Abbrev Tables\7f1550016
+Node: Extents\7f1551175
+Node: Intro to Extents\7f1552418
+Node: Creating and Modifying Extents\7f1556412
+Node: Extent Endpoints\7f1557919
+Node: Finding Extents\7f1561182
+Node: Mapping Over Extents\7f1564930
+Node: Extent Properties\7f1571047
+Node: Detached Extents\7f1581191
+Node: Extent Parents\7f1583050
+Node: Duplicable Extents\7f1584744
+Node: Extents and Events\7f1587965
+Node: Atomic Extents\7f1589872
+Node: Specifiers\7f1590319
+Node: Introduction to Specifiers\7f1592432
+Node: Specifiers In-Depth\7f1594742
+Node: Specifier Instancing\7f1599654
+Node: Specifier Types\7f1602916
+Node: Adding Specifications\7f1607990
+Node: Retrieving Specifications\7f1617352
+Node: Specifier Tag Functions\7f1621087
+Node: Specifier Instancing Functions\7f1624321
+Node: Specifier Example\7f1627728
+Node: Creating Specifiers\7f1630884
+Node: Specifier Validation Functions\7f1633133
+Node: Other Specification Functions\7f1635517
+Node: Faces and Window-System Objects\7f1639336
+Node: Faces\7f1639660
+Node: Merging Faces\7f1641277
+Node: Basic Face Functions\7f1643238
+Node: Face Properties\7f1645336
+Node: Face Convenience Functions\7f1655578
+Node: Other Face Display Functions\7f1658708
+Node: Fonts\7f1659521
+Node: Font Specifiers\7f1660222
+Node: Font Instances\7f1660463
+Node: Font Instance Names\7f1661430
+Node: Font Instance Size\7f1662271
+Node: Font Instance Characteristics\7f1663557
+Node: Font Convenience Functions\7f1664726
+Node: Colors\7f1666016
+Node: Color Specifiers\7f1666456
+Node: Color Instances\7f1666683
+Node: Color Instance Properties\7f1667427
+Node: Color Convenience Functions\7f1668053
+Node: Glyphs\7f1669106
+Node: Glyph Functions\7f1670698
+Node: Creating Glyphs\7f1671105
+Node: Glyph Properties\7f1672692
+Node: Glyph Convenience Functions\7f1681859
+Node: Glyph Dimensions\7f1685806
+Node: Images\7f1686886
+Node: Image Specifiers\7f1687335
+Node: Image Instantiator Conversion\7f1698756
+Node: Image Instances\7f1700121
+Node: Image Instance Types\7f1700872
+Node: Image Instance Functions\7f1703527
+Node: Glyph Types\7f1708096
+Node: Mouse Pointer\7f1709868
+Node: Redisplay Glyphs\7f1712871
+Node: Subwindows\7f1713904
+Node: Annotations\7f1714147
+Node: Annotation Basics\7f1715163
+Node: Annotation Primitives\7f1719101
+Node: Annotation Properties\7f1720430
+Node: Locating Annotations\7f1723470
+Node: Margin Primitives\7f1724307
+Node: Annotation Hooks\7f1726201
+Node: Display\7f1726861
+Node: Refresh Screen\7f1727839
+Node: Truncation\7f1729750
+Node: The Echo Area\7f1732275
+Node: Warnings\7f1738710
+Node: Invisible Text\7f1743146
+Node: Selective Display\7f1745725
+Node: Overlay Arrow\7f1749851
+Node: Temporary Displays\7f1751204
+Node: Blinking\7f1755325
+Node: Usual Display\7f1757510
+Node: Display Tables\7f1760059
+Node: Display Table Format\7f1760863
+Node: Active Display Table\7f1762305
+Node: Character Descriptors\7f1763497
+Node: Beeping\7f1764254
+Node: Hash Tables\7f1769020
+Node: Introduction to Hash Tables\7f1769628
+Node: Working With Hash Tables\7f1775651
+Node: Weak Hash Tables\7f1776768
+Node: Range Tables\7f1778567
+Node: Introduction to Range Tables\7f1779256
+Node: Working With Range Tables\7f1779687
+Node: Databases\7f1780572
+Node: Connecting to a Database\7f1780871
+Node: Working With a Database\7f1781962
+Node: Other Database Functions\7f1782820
+Node: Processes\7f1783394
+Node: Subprocess Creation\7f1785618
+Node: Synchronous Processes\7f1788907
+Node: MS-DOS Subprocesses\7f1795625
+Node: Asynchronous Processes\7f1796699
+Node: Deleting Processes\7f1800412
+Node: Process Information\7f1802283
+Node: Input to Processes\7f1806209
+Node: Signals to Processes\7f1808499
+Node: Output from Processes\7f1812919
+Node: Process Buffers\7f1813731
+Node: Filter Functions\7f1816598
+Node: Accepting Output\7f1822168
+Node: Sentinels\7f1823695
+Node: Process Window Size\7f1827185
+Node: Transaction Queues\7f1827534
+Node: Network\7f1829232
+Node: System Interface\7f1831066
+Node: Starting Up\7f1832336
+Node: Start-up Summary\7f1832930
+Node: Init File\7f1836484
+Node: Terminal-Specific\7f1838865
+Node: Command Line Arguments\7f1842024
+Node: Getting Out\7f1845513
+Node: Killing XEmacs\7f1846082
+Node: Suspending XEmacs\7f1847751
+Node: System Environment\7f1851093
+Node: User Identification\7f1857760
+Node: Time of Day\7f1861289
+Node: Time Conversion\7f1864076
+Node: Timers\7f1869116
+Node: Terminal Input\7f1871289
+Node: Input Modes\7f1871792
+Node: Translating Input\7f1874205
+Node: Recording Input\7f1878370
+Node: Terminal Output\7f1880470
+Node: Flow Control\7f1884093
+Node: Batch Mode\7f1887885
+Node: X-Windows\7f1889267
+Node: X Selections\7f1890138
+Node: X Server\7f1892348
+Node: Resources\7f1892799
+Node: Server Data\7f1898108
+Node: Grabs\7f1899315
+Node: X Miscellaneous\7f1900895
+Node: ToolTalk Support\7f1903280
+Node: XEmacs ToolTalk API Summary\7f1903497
+Node: Sending Messages\7f1904797
+Node: Example of Sending Messages\7f1905048
+Node: Elisp Interface for Sending Messages\7f1906110
+Node: Receiving Messages\7f1912502
+Node: Example of Receiving Messages\7f1912725
+Node: Elisp Interface for Receiving Messages\7f1913561
+Node: LDAP Support\7f1917386
+Node: Building XEmacs with LDAP support\7f1917882
+Node: XEmacs LDAP API\7f1918860
+Node: LDAP Variables\7f1919590
+Node: The High-Level LDAP API\7f1922066
+Node: The Low-Level LDAP API\7f1923171
+Node: The LDAP Lisp Object\7f1923445
+Node: Opening and Closing a LDAP Connection\7f1923998
+Node: Searching on a LDAP Server (Low-level)\7f1925781
+Node: Syntax of Search Filters\7f1927174
+Node: Internationalization\7f1928472
+Node: I18N Levels 1 and 2\7f1928809
+Node: I18N Level 3\7f1929515
+Node: Level 3 Basics\7f1929796
+Node: Level 3 Primitives\7f1930629
+Node: Dynamic Messaging\7f1932235
+Node: Domain Specification\7f1932698
+Node: Documentation String Extraction\7f1934601
+Node: I18N Level 4\7f1935519
+Node: MULE\7f1935711
+Node: Internationalization Terminology\7f1936822
+Node: Charsets\7f1945356
+Node: Charset Properties\7f1946052
+Node: Basic Charset Functions\7f1950738
+Node: Charset Property Functions\7f1952919
+Node: Predefined Charsets\7f1954961
+Node: MULE Characters\7f1957881
+Node: Composite Characters\7f1958728
+Node: ISO 2022\7f1959982
+Node: Coding Systems\7f1966124
+Node: Coding System Types\7f1968045
+Node: EOL Conversion\7f1969864
+Node: Coding System Properties\7f1971047
+Node: Basic Coding System Functions\7f1974899
+Node: Coding System Property Functions\7f1976803
+Node: Encoding and Decoding Text\7f1977361
+Node: Detection of Textual Encoding\7f1978497
+Node: Big5 and Shift-JIS Functions\7f1980033
+Node: CCL\7f1981121
+Node: CCL Syntax\7f1984225
+Node: CCL Statements\7f1985813
+Node: CCL Expressions\7f1990461
+Node: Calling CCL\7f1993000
+Node: CCL Examples\7f1995989
+Node: Category Tables\7f1996126
+Node: Tips\7f1998484
+Node: Style Tips\7f1999125
+Node: Compilation Tips\7f2008644
+Node: Documentation Tips\7f2010558
+Node: Comment Tips\7f2016067
+Node: Library Headers\7f2019069
+Node: Building XEmacs and Object Allocation\7f2023041
+Node: Building XEmacs\7f2023924
+Node: Pure Storage\7f2030259
+Node: Garbage Collection\7f2033047
+Node: Standard Errors\7f2044186
+Node: Standard Buffer-Local Variables\7f2048395
+Node: Standard Keymaps\7f2051028
+Node: Standard Hooks\7f2054760
+Node: Index\7f2062260
 \1f
 End Tag Table
index 10ff1ba..593db53 100644 (file)
@@ -38,20 +38,20 @@ xemacs.info-4: 144439
 xemacs.info-5: 189703
 xemacs.info-6: 237773
 xemacs.info-7: 286800
-xemacs.info-8: 336141
-xemacs.info-9: 383895
-xemacs.info-10: 433201
-xemacs.info-11: 483034
-xemacs.info-12: 532929
-xemacs.info-13: 582109
-xemacs.info-14: 631472
-xemacs.info-15: 681291
-xemacs.info-16: 729785
-xemacs.info-17: 778484
-xemacs.info-18: 828140
-xemacs.info-19: 872498
-xemacs.info-20: 921169
-xemacs.info-21: 963076
+xemacs.info-8: 336132
+xemacs.info-9: 383886
+xemacs.info-10: 433192
+xemacs.info-11: 483025
+xemacs.info-12: 532920
+xemacs.info-13: 582100
+xemacs.info-14: 631463
+xemacs.info-15: 681282
+xemacs.info-16: 729776
+xemacs.info-17: 778475
+xemacs.info-18: 828131
+xemacs.info-19: 872489
+xemacs.info-20: 921160
+xemacs.info-21: 963067
 \1f
 Tag Table:
 (Indirect)
@@ -161,247 +161,247 @@ Node: Saving\7f293486
 Node: Backup\7f298409
 Node: Backup Names\7f299805
 Node: Backup Deletion\7f301288
-Node: Backup Copying\7f302447
-Node: Interlocking\7f304153
-Node: Reverting\7f308281
-Node: Auto Save\7f310193
-Node: Auto Save Files\7f311160
-Node: Auto Save Control\7f313001
-Node: Recover\7f314839
-Node: Version Control\7f315994
-Node: Concepts of VC\7f318032
-Node: Editing with VC\7f319642
-Node: Variables for Check-in/out\7f324898
-Node: Log Entries\7f326797
-Node: Change Logs and VC\7f327977
-Node: Old Versions\7f331244
-Node: VC Status\7f333247
-Node: Renaming and VC\7f334961
-Node: Snapshots\7f335640
-Node: Making Snapshots\7f336141
-Node: Snapshot Caveats\7f337434
-Node: Version Headers\7f339243
-Node: ListDir\7f341942
-Node: Comparing Files\7f343991
-Node: Dired\7f345524
-Node: Dired Enter\7f346195
-Node: Dired Edit\7f347020
-Node: Dired Deletion\7f348767
-Node: Dired Immed\7f351990
-Node: Misc File Ops\7f353266
-Node: Buffers\7f355754
-Node: Select Buffer\7f357912
-Node: List Buffers\7f359707
-Node: Misc Buffer\7f361465
-Node: Kill Buffer\7f363108
-Node: Several Buffers\7f364238
-Node: Windows\7f368104
-Node: Basic Window\7f368815
-Node: Split Window\7f370534
-Node: Other Window\7f372667
-Node: Pop Up Window\7f375096
-Node: Change Window\7f376601
-Node: Mule\7f379509
-Node: Mule Intro\7f380772
-Node: Language Environments\7f381788
-Node: Input Methods\7f383895
-Node: Select Input Method\7f387615
-Node: Coding Systems\7f389770
-Node: Recognize Coding\7f393956
-Node: Specify Coding\7f397282
-Node: Major Modes\7f402213
-Node: Choosing Modes\7f404432
-Node: Indentation\7f406822
-Node: Indentation Commands\7f408917
-Node: Tab Stops\7f411646
-Node: Just Spaces\7f413495
-Node: Text\7f414310
-Node: Text Mode\7f416293
-Node: Nroff Mode\7f418372
-Node: TeX Mode\7f420015
-Node: TeX Editing\7f422267
-Node: TeX Print\7f425701
-Node: Outline Mode\7f428920
-Node: Outline Format\7f430401
-Node: Outline Motion\7f433201
-Node: Outline Visibility\7f434754
-Node: Words\7f437675
-Node: Sentences\7f440622
-Node: Paragraphs\7f442818
-Node: Pages\7f445106
-Node: Filling\7f447706
-Node: Auto Fill\7f448277
-Node: Fill Commands\7f450424
-Node: Fill Prefix\7f452589
-Node: Case\7f454777
-Node: Programs\7f456805
-Node: Program Modes\7f459354
-Node: Lists\7f461586
-Node: Defuns\7f467426
-Node: Grinding\7f470079
-Node: Basic Indent\7f470707
-Node: Multi-line Indent\7f472728
-Node: Lisp Indent\7f474344
-Node: C Indent\7f477794
-Node: Matching\7f483034
-Node: Comments\7f484556
-Node: Balanced Editing\7f491008
-Node: Lisp Completion\7f492022
-Node: Documentation\7f493037
-Node: Change Log\7f494276
-Node: Tags\7f496854
-Node: Tag Syntax\7f498503
-Node: Create Tags Table\7f502447
-Node: Etags Regexps\7f506507
-Node: Select Tags Table\7f511165
-Node: Find Tag\7f514938
-Node: Tags Search\7f517902
-Node: List Tags\7f521358
-Node: Fortran\7f522387
-Node: Fortran Motion\7f523463
-Node: Fortran Indent\7f524283
-Node: ForIndent Commands\7f524968
-Node: ForIndent Num\7f526113
-Node: ForIndent Conv\7f527387
-Node: ForIndent Vars\7f528163
-Node: Fortran Comments\7f529331
-Node: Fortran Columns\7f532929
-Node: Fortran Abbrev\7f534352
-Node: Asm Mode\7f535261
-Node: Running\7f535813
-Node: Compilation\7f536783
-Node: Lisp Modes\7f541633
-Node: Lisp Libraries\7f542906
-Node: Loading\7f543460
-Node: Compiling Libraries\7f547920
-Node: Mocklisp\7f550811
-Node: Lisp Eval\7f551488
-Node: Lisp Debug\7f555128
-Node: Lisp Interaction\7f560553
-Node: External Lisp\7f561908
-Node: Packages\7f563982
-Node: Package Terminology\7f564723
-Node: Using Packages\7f566081
-Node: Building Packages\7f574940
-Node: Abbrevs\7f577462
-Node: Defining Abbrevs\7f579662
-Node: Expanding Abbrevs\7f582109
-Node: Editing Abbrevs\7f584811
-Node: Saving Abbrevs\7f586684
-Node: Dynamic Abbrevs\7f588624
-Node: Picture\7f589926
-Node: Basic Picture\7f592359
-Node: Insert in Picture\7f594644
-Node: Tabs in Picture\7f596066
-Node: Rectangles in Picture\7f597587
-Node: Sending Mail\7f599495
-Node: Mail Format\7f601206
-Node: Mail Headers\7f602556
-Node: Mail Mode\7f608964
-Node: Reading Mail\7f612577
-Node: Calendar/Diary\7f614152
-Node: Calendar Motion\7f615824
-Node: Calendar Unit Motion\7f616707
-Node: Move to Beginning or End\7f619030
-Node: Specified Dates\7f620163
-Node: Scroll Calendar\7f621051
-Node: Mark and Region\7f622842
-Node: General Calendar\7f624748
-Node: LaTeX Calendar\7f626356
-Node: Holidays\7f628370
-Node: Sunrise/Sunset\7f631472
-Node: Lunar Phases\7f634515
-Node: Other Calendars\7f635900
-Node: Calendar Systems\7f637387
-Node: To Other Calendar\7f640498
-Node: From Other Calendar\7f642489
-Node: Mayan Calendar\7f644794
-Node: Diary\7f647989
-Node: Diary Commands\7f649738
-Node: Format of Diary File\7f653044
-Node: Date Formats\7f655914
-Node: Adding to Diary\7f658488
-Node: Special Diary Entries\7f660119
-Node: Calendar Customization\7f665458
-Node: Calendar Customizing\7f666320
-Node: Holiday Customizing\7f669539
-Node: Date Display Format\7f676007
-Node: Time Display Format\7f676965
-Node: Daylight Savings\7f678103
-Node: Diary Customizing\7f681291
-Node: Hebrew/Islamic Entries\7f685912
-Node: Fancy Diary Display\7f689252
-Node: Included Diary Files\7f691149
-Node: Sexp Diary Entries\7f692130
-Node: Appt Customizing\7f697220
-Node: Sorting\7f698266
-Node: Shell\7f703072
-Node: Single Shell\7f704365
-Node: Interactive Shell\7f705964
-Node: Shell Mode\7f709729
-Node: Terminal emulator\7f712220
-Node: Term Mode\7f714529
-Node: Paging in Term\7f715443
-Node: Narrowing\7f716241
-Node: Hardcopy\7f718191
-Node: Recursive Edit\7f719163
-Node: Dissociated Press\7f722150
-Node: CONX\7f724713
-Node: Amusements\7f725737
-Node: Emulation\7f726217
-Node: Customization\7f728061
-Node: Minor Modes\7f729785
-Node: Variables\7f731417
-Node: Examining\7f733373
-Node: Easy Customization\7f734834
-Node: Customization Groups\7f735848
-Node: Changing an Option\7f738777
-Node: Face Customization\7f745033
-Node: Specific Customization\7f746797
-Node: Edit Options\7f749404
-Node: Locals\7f750988
-Node: File Variables\7f754167
-Node: Keyboard Macros\7f758721
-Node: Basic Kbd Macro\7f760892
-Node: Save Kbd Macro\7f762824
-Node: Kbd Macro Query\7f764493
-Node: Key Bindings\7f766435
-Node: Keymaps\7f767309
-Node: Rebinding\7f771159
-Node: Interactive Rebinding\7f771858
-Node: Programmatic Rebinding\7f774050
-Node: Key Bindings Using Strings\7f776857
-Node: Disabling\7f778484
-Node: Syntax\7f780256
-Node: Syntax Entry\7f781137
-Node: Syntax Change\7f785221
-Node: Init File\7f787390
-Node: Init Syntax\7f788895
-Node: Init Examples\7f791247
-Node: Terminal Init\7f795437
-Node: Audible Bell\7f797147
-Node: Faces\7f800578
-Node: X Resources\7f805415
-Node: Geometry Resources\7f807063
-Node: Iconic Resources\7f809511
-Node: Resource List\7f809983
-Node: Face Resources\7f816490
-Node: Widgets\7f820167
-Node: Menubar Resources\7f821106
-Node: Quitting\7f822039
-Node: Lossage\7f825017
-Node: Stuck Recursive\7f825661
-Node: Screen Garbled\7f826367
-Node: Text Garbled\7f827501
-Node: Unasked-for Search\7f828140
-Node: Emergency Escape\7f828925
-Node: Total Frustration\7f830704
-Node: Bugs\7f831335
-Node: Glossary\7f840869
-Node: Manifesto\7f872498
-Node: Key Index\7f895974
-Node: Command Index\7f921169
-Node: Variable Index\7f963076
-Node: Concept Index\7f979213
+Node: Backup Copying\7f302438
+Node: Interlocking\7f304144
+Node: Reverting\7f308272
+Node: Auto Save\7f310184
+Node: Auto Save Files\7f311151
+Node: Auto Save Control\7f312992
+Node: Recover\7f314830
+Node: Version Control\7f315985
+Node: Concepts of VC\7f318023
+Node: Editing with VC\7f319633
+Node: Variables for Check-in/out\7f324889
+Node: Log Entries\7f326788
+Node: Change Logs and VC\7f327968
+Node: Old Versions\7f331235
+Node: VC Status\7f333238
+Node: Renaming and VC\7f334952
+Node: Snapshots\7f335631
+Node: Making Snapshots\7f336132
+Node: Snapshot Caveats\7f337425
+Node: Version Headers\7f339234
+Node: ListDir\7f341933
+Node: Comparing Files\7f343982
+Node: Dired\7f345515
+Node: Dired Enter\7f346186
+Node: Dired Edit\7f347011
+Node: Dired Deletion\7f348758
+Node: Dired Immed\7f351981
+Node: Misc File Ops\7f353257
+Node: Buffers\7f355745
+Node: Select Buffer\7f357903
+Node: List Buffers\7f359698
+Node: Misc Buffer\7f361456
+Node: Kill Buffer\7f363099
+Node: Several Buffers\7f364229
+Node: Windows\7f368095
+Node: Basic Window\7f368806
+Node: Split Window\7f370525
+Node: Other Window\7f372658
+Node: Pop Up Window\7f375087
+Node: Change Window\7f376592
+Node: Mule\7f379500
+Node: Mule Intro\7f380763
+Node: Language Environments\7f381779
+Node: Input Methods\7f383886
+Node: Select Input Method\7f387606
+Node: Coding Systems\7f389761
+Node: Recognize Coding\7f393947
+Node: Specify Coding\7f397273
+Node: Major Modes\7f402204
+Node: Choosing Modes\7f404423
+Node: Indentation\7f406813
+Node: Indentation Commands\7f408908
+Node: Tab Stops\7f411637
+Node: Just Spaces\7f413486
+Node: Text\7f414301
+Node: Text Mode\7f416284
+Node: Nroff Mode\7f418363
+Node: TeX Mode\7f420006
+Node: TeX Editing\7f422258
+Node: TeX Print\7f425692
+Node: Outline Mode\7f428911
+Node: Outline Format\7f430392
+Node: Outline Motion\7f433192
+Node: Outline Visibility\7f434745
+Node: Words\7f437666
+Node: Sentences\7f440613
+Node: Paragraphs\7f442809
+Node: Pages\7f445097
+Node: Filling\7f447697
+Node: Auto Fill\7f448268
+Node: Fill Commands\7f450415
+Node: Fill Prefix\7f452580
+Node: Case\7f454768
+Node: Programs\7f456796
+Node: Program Modes\7f459345
+Node: Lists\7f461577
+Node: Defuns\7f467417
+Node: Grinding\7f470070
+Node: Basic Indent\7f470698
+Node: Multi-line Indent\7f472719
+Node: Lisp Indent\7f474335
+Node: C Indent\7f477785
+Node: Matching\7f483025
+Node: Comments\7f484547
+Node: Balanced Editing\7f490999
+Node: Lisp Completion\7f492013
+Node: Documentation\7f493028
+Node: Change Log\7f494267
+Node: Tags\7f496845
+Node: Tag Syntax\7f498494
+Node: Create Tags Table\7f502438
+Node: Etags Regexps\7f506498
+Node: Select Tags Table\7f511156
+Node: Find Tag\7f514929
+Node: Tags Search\7f517893
+Node: List Tags\7f521349
+Node: Fortran\7f522378
+Node: Fortran Motion\7f523454
+Node: Fortran Indent\7f524274
+Node: ForIndent Commands\7f524959
+Node: ForIndent Num\7f526104
+Node: ForIndent Conv\7f527378
+Node: ForIndent Vars\7f528154
+Node: Fortran Comments\7f529322
+Node: Fortran Columns\7f532920
+Node: Fortran Abbrev\7f534343
+Node: Asm Mode\7f535252
+Node: Running\7f535804
+Node: Compilation\7f536774
+Node: Lisp Modes\7f541624
+Node: Lisp Libraries\7f542897
+Node: Loading\7f543451
+Node: Compiling Libraries\7f547911
+Node: Mocklisp\7f550802
+Node: Lisp Eval\7f551479
+Node: Lisp Debug\7f555119
+Node: Lisp Interaction\7f560544
+Node: External Lisp\7f561899
+Node: Packages\7f563973
+Node: Package Terminology\7f564714
+Node: Using Packages\7f566072
+Node: Building Packages\7f574931
+Node: Abbrevs\7f577453
+Node: Defining Abbrevs\7f579653
+Node: Expanding Abbrevs\7f582100
+Node: Editing Abbrevs\7f584802
+Node: Saving Abbrevs\7f586675
+Node: Dynamic Abbrevs\7f588615
+Node: Picture\7f589917
+Node: Basic Picture\7f592350
+Node: Insert in Picture\7f594635
+Node: Tabs in Picture\7f596057
+Node: Rectangles in Picture\7f597578
+Node: Sending Mail\7f599486
+Node: Mail Format\7f601197
+Node: Mail Headers\7f602547
+Node: Mail Mode\7f608955
+Node: Reading Mail\7f612568
+Node: Calendar/Diary\7f614143
+Node: Calendar Motion\7f615815
+Node: Calendar Unit Motion\7f616698
+Node: Move to Beginning or End\7f619021
+Node: Specified Dates\7f620154
+Node: Scroll Calendar\7f621042
+Node: Mark and Region\7f622833
+Node: General Calendar\7f624739
+Node: LaTeX Calendar\7f626347
+Node: Holidays\7f628361
+Node: Sunrise/Sunset\7f631463
+Node: Lunar Phases\7f634506
+Node: Other Calendars\7f635891
+Node: Calendar Systems\7f637378
+Node: To Other Calendar\7f640489
+Node: From Other Calendar\7f642480
+Node: Mayan Calendar\7f644785
+Node: Diary\7f647980
+Node: Diary Commands\7f649729
+Node: Format of Diary File\7f653035
+Node: Date Formats\7f655905
+Node: Adding to Diary\7f658479
+Node: Special Diary Entries\7f660110
+Node: Calendar Customization\7f665449
+Node: Calendar Customizing\7f666311
+Node: Holiday Customizing\7f669530
+Node: Date Display Format\7f675998
+Node: Time Display Format\7f676956
+Node: Daylight Savings\7f678094
+Node: Diary Customizing\7f681282
+Node: Hebrew/Islamic Entries\7f685903
+Node: Fancy Diary Display\7f689243
+Node: Included Diary Files\7f691140
+Node: Sexp Diary Entries\7f692121
+Node: Appt Customizing\7f697211
+Node: Sorting\7f698257
+Node: Shell\7f703063
+Node: Single Shell\7f704356
+Node: Interactive Shell\7f705955
+Node: Shell Mode\7f709720
+Node: Terminal emulator\7f712211
+Node: Term Mode\7f714520
+Node: Paging in Term\7f715434
+Node: Narrowing\7f716232
+Node: Hardcopy\7f718182
+Node: Recursive Edit\7f719154
+Node: Dissociated Press\7f722141
+Node: CONX\7f724704
+Node: Amusements\7f725728
+Node: Emulation\7f726208
+Node: Customization\7f728052
+Node: Minor Modes\7f729776
+Node: Variables\7f731408
+Node: Examining\7f733364
+Node: Easy Customization\7f734825
+Node: Customization Groups\7f735839
+Node: Changing an Option\7f738768
+Node: Face Customization\7f745024
+Node: Specific Customization\7f746788
+Node: Edit Options\7f749395
+Node: Locals\7f750979
+Node: File Variables\7f754158
+Node: Keyboard Macros\7f758712
+Node: Basic Kbd Macro\7f760883
+Node: Save Kbd Macro\7f762815
+Node: Kbd Macro Query\7f764484
+Node: Key Bindings\7f766426
+Node: Keymaps\7f767300
+Node: Rebinding\7f771150
+Node: Interactive Rebinding\7f771849
+Node: Programmatic Rebinding\7f774041
+Node: Key Bindings Using Strings\7f776848
+Node: Disabling\7f778475
+Node: Syntax\7f780247
+Node: Syntax Entry\7f781128
+Node: Syntax Change\7f785212
+Node: Init File\7f787381
+Node: Init Syntax\7f788886
+Node: Init Examples\7f791238
+Node: Terminal Init\7f795428
+Node: Audible Bell\7f797138
+Node: Faces\7f800569
+Node: X Resources\7f805406
+Node: Geometry Resources\7f807054
+Node: Iconic Resources\7f809502
+Node: Resource List\7f809974
+Node: Face Resources\7f816481
+Node: Widgets\7f820158
+Node: Menubar Resources\7f821097
+Node: Quitting\7f822030
+Node: Lossage\7f825008
+Node: Stuck Recursive\7f825652
+Node: Screen Garbled\7f826358
+Node: Text Garbled\7f827492
+Node: Unasked-for Search\7f828131
+Node: Emergency Escape\7f828916
+Node: Total Frustration\7f830695
+Node: Bugs\7f831326
+Node: Glossary\7f840860
+Node: Manifesto\7f872489
+Node: Key Index\7f895965
+Node: Command Index\7f921160
+Node: Variable Index\7f963067
+Node: Concept Index\7f979204
 \1f
 End Tag Table
index 07877cd..4fd173f 100644 (file)
@@ -1,3 +1,7 @@
+2000-02-21  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.30 is released.
+
 2000-02-16  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.29 is released.
index 941ada9..6fa783e 100644 (file)
@@ -204,7 +204,9 @@ struct option longopts[] =
 #define DEFAULT_LOCKING DOTLOCKING
 #endif
 
+#ifndef DISABLE_DIRECT_ACCESS
 static void lock_dot(char *);
+#endif
 static void unlock_dot(char *);
 static int parse_lock_method(char *);
 static char *unparse_lock_method(int);
@@ -566,6 +568,7 @@ dot_filename(char *filename)
 
 static char *dotlock_filename = NULL;
 
+#ifndef DISABLE_DIRECT_ACCESS
 static void
 lock_dot(char *filename)
 {
@@ -625,6 +628,7 @@ lock_dot(char *filename)
     }
   strcpy(dotlock_filename, filename);
 }
+#endif /* not DISABLE_DIRECT_ACCESS */
 
 static void
 unlock_dot(char *filename)
index d61cb8d..d6e24e5 100644 (file)
@@ -1,3 +1,88 @@
+2000-02-21  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.30 is released.
+
+2000-02-19  Martin Buchholz  <martin@xemacs.org>
+
+       * byte-optimize.el (byte-optimize-plus): 
+       (byte-optimize-minus): 
+       (byte-optimize-multiply): 
+       Optimize (- 0) to 0, not (-)
+       Optimize (+ 5 3.0) to 8.0
+        Optimize (* 5 3.0) to 15.0
+       Improve readability.
+
+2000-02-21  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+       * modeline.el: (modeline-scrolling-method): change modeline
+       mswindows cursor appearance according to the value.
+
+       * msw-faces.el: (mswindows-init-device-faces): Initialise 'default
+       and 'gui-element face colors and 'gui-element face font to Windows
+       defaults.
+
+2000-02-09 Stef Epardaud  <stef@lunatech.com>
+       
+       * font-lock.el: Javadoc enhancements 
+
+1999-11-27  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
+
+       * ldap.el (toplevel): Test if LDAP support has been compiled in
+       (ldap-verbose): New option
+       (ldap-search-entries): Renamed from the previous ldap-search
+       Conditionalize message display on ldap-verbose
+       (ldap-add-entries, ldap-modify-entries, ldap-delete-entries): New
+       defuns
+       (ldap-search): Is now defined as an obsolete wrapper calling 
+       ldap-search-basic or ldap-search-entries
+
+
+1999-12-06  Hirokazu FUKUI  <hfukui@sannet.ne.jp> 
+            Shuhei KOBAYASHI <shuhei@aqua.ocn.ne.jp>
+           Jan Vroonhof  <jan@xemacs.org>
+        * byte-optimize.el (byte-optimize-form-code-walker): Fixed. 
+        When for-effect is true, didn't call `byte-optimize-form' 
+        in and/or subforms without last. 
+1999-12-07  Jan Vroonhof  <vroonhof@math.ethz.ch> 
+        * package-get.el (package-get-download-sites): Use correct custom 
+        type. 
+2000-02-15  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>
+
+       * files.el (write-file): Ask for coding system when compiled with
+       file-coding.
+
+2000-02-16  Andy Piper  <andy@xemacs.org>
+
+       * buffer.el (switch-to-buffer): give norecord argument to
+       set-window-buffer instead of explicitly recording.
+
+       * gutter-items.el (buffers-tab-switch-to-buffer): don't record if
+       we have to pick a window.
+
+1999-12-24  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+       * mule/mule-cmds.el (describe-language-support): Don't add
+       unexist function to help-map.
+       (describe-coding-system): Don't use already assigend `C'.
+
+2000-01-23  Björn Torkelsson  <torkel@hpc2n.umu.se>
+
+       * info.el (Info-save-auto-generated-dir): nil -> 'never to make it
+       work in custom.
+
+2000-02-04  Kazuyuki IENAGA <kazz@imasy.or.jp>
+
+       * about.el: Ienaga's e-mail address change.
+
+2000-02-16  Samuel Mikes  <smikes@alumni.hmc.edu>
+
+        * etags.el (find-tag): force new window -- even if buf already
+        visible -- when other-window is t
+
 2000-02-16  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.29 is released.
index 47f7768..ea2061c 100644 (file)
@@ -71,7 +71,7 @@
     (jmiller  "Jeff Miller"       "jmiller@smart.net")
     (juhp     "Jens-Ulrik Holger Petersen" "petersen@kurims.kyoto-u.ac.jp")
     (jwz      "Jamie Zawinski"    "jwz@jwz.org")
-    (kazz     "IENAGA Kazuyuki"   "ienaga@jsys.co.jp")
+    (kazz     "IENAGA Kazuyuki"   "ienaga@xemacs.org")
     (kyle     "Kyle Jones"        "kyle_jones@wonderworks.com")
     (larsi    "Lars Magne Ingebrigtsen" "larsi@gnus.org")
     (marcpa   "Marc Paquette"    "marcpa@CAM.ORG")
index c829284..002ce0d 100644 (file)
@@ -60,11 +60,10 @@ the window-buffer correspondences."
            (set-buffer-major-mode buf))))
     (push-window-configuration)
     (set-buffer buf)
-    (or norecord (record-buffer buf))
     (set-window-buffer (if (eq (selected-window) (minibuffer-window))
                           (next-window (minibuffer-window))
                         (selected-window))
-                      buf)
+                      buf norecord)
     buf))
 
 (defun pop-to-buffer (bufname &optional not-this-window-p on-frame)
index 6c4847e..2ab79db 100644 (file)
                     (byte-compile-log
                      "  all subforms of %s called for effect; deleted" form))
                 (and backwards
+                      ;; Now optimize the rest of the forms. We need the return
+                      ;; values. We already did the car.
+                      (setcdr backwards
+                              (mapcar 'byte-optimize-form (cdr backwards)))
                      (cons fn (nreverse backwards))))
             (cons fn (mapcar 'byte-optimize-form (cdr form)))))
 
   (setq form (byte-optimize-delay-constants-math form 1 '+))
   (if (memq 0 form) (setq form (delq 0 (copy-sequence form))))
   ;;(setq form (byte-optimize-associative-two-args-math form))
+
   (case (length (cdr form))
-    ((0)
+    ((0)                               ; (+)
      (condition-case ()
         (eval form)
        (error form)))
 
-    ;; `add1' and `sub1' are a marginally fewer instructions
-    ;; than `plus' and `minus', so use them when possible.
-    ((2)
-     (cond
-      ((eq (nth 1 form)  1) `(1+ ,(nth 2 form))) ; (+ 1 x)   -->  (1+ x)
-      ((eq (nth 2 form)  1) `(1+ ,(nth 1 form))) ; (+ x 1)   -->  (1+ x)
-      ((eq (nth 1 form) -1) `(1- ,(nth 2 form))) ; (+ -1 x)  -->  (1- x)
-      ((eq (nth 2 form) -1) `(1- ,(nth 1 form))) ; (+ x -1)  -->  (1- x)
-      (t form)))
-
     ;; It is not safe to delete the function entirely
-    ;; (actually, it would be safe if we know the sole arg
+    ;; (actually, it would be safe if we knew the sole arg
     ;; is not a marker).
-    ;; ((null (cdr (cdr form))) (nth 1 form))
-    (t form)))
+    ;; ((1)
+    ;;  (nth 1 form))
+
+    ((2)                               ; (+ x y)
+     (byte-optimize-predicate
+      (cond
+       ;; `add1' and `sub1' are a marginally fewer instructions
+       ;; than `plus' and `minus', so use them when possible.
+       ((eq (nth 1 form)  1) `(1+ ,(nth 2 form))) ; (+ 1 x)   -->  (1+ x)
+       ((eq (nth 2 form)  1) `(1+ ,(nth 1 form))) ; (+ x 1)   -->  (1+ x)
+       ((eq (nth 1 form) -1) `(1- ,(nth 2 form))) ; (+ -1 x)  -->  (1- x)
+       ((eq (nth 2 form) -1) `(1- ,(nth 1 form))) ; (+ x -1)  -->  (1- x)
+       (t form))))
+
+    (t (byte-optimize-predicate form))))
 
 (defun byte-optimize-minus (form)
   ;; Put constants at the end, except the last constant.
   (setq form (byte-optimize-delay-constants-math form 2 '+))
-  ;; Now only first and last element can be a number.
-  (let ((last (car (reverse (nthcdr 3 form)))))
+  ;; Now only first and last element can be an integer.
+  (let ((last (last (nthcdr 3 form))))
     (cond ((eq 0 last)
           ;; (- x y ... 0)  --> (- x y ...)
           (setq form (copy-sequence form))
                (numberp last))
           (setq form (nconc (list '- (- (nth 1 form) last) (nth 2 form))
                             (delq last (copy-sequence (nthcdr 3 form))))))))
-  (setq form
-;;; It is not safe to delete the function entirely
-;;; (actually, it would be safe if we know the sole arg
-;;; is not a marker).
-;;;  (if (eq (nth 2 form) 0)
-;;;      (nth 1 form)                  ; (- x 0)  -->  x
-    (byte-optimize-predicate
-     (if (and (null (cdr (cdr (cdr form))))
-             (eq (nth 1 form) 0))      ; (- 0 x)  -->  (- x)
-        (cons (car form) (cdr (cdr form)))
-       form))
-;;;    )
-    )
-
-  ;; `add1' and `sub1' are a marginally fewer instructions than `plus'
-  ;; and `minus', so use them when possible.
-  (cond ((and (null (nthcdr 3 form))
-             (eq (nth 2 form) 1))
-        (list '1- (nth 1 form)))       ; (- x 1)  -->  (1- x)
-       ((and (null (nthcdr 3 form))
-             (eq (nth 2 form) -1))
-        (list '1+ (nth 1 form)))       ; (- x -1)  -->  (1+ x)
-       (t
-        form))
-  )
+
+  (case (length (cdr form))
+    ((0)                               ; (-)
+     (condition-case ()
+        (eval form)
+       (error form)))
+
+    ;; It is not safe to delete the function entirely
+    ;; (actually, it would be safe if we knew the sole arg
+    ;; is not a marker).
+    ;; ((1)
+    ;;  (nth 1 form)
+
+    ((2)                               ; (+ x y)
+     (byte-optimize-predicate
+      (cond
+       ;; `add1' and `sub1' are a marginally fewer instructions than `plus'
+       ;; and `minus', so use them when possible.
+       ((eq (nth 2 form)  1) `(1- ,(nth 1 form))) ; (- x 1)  --> (1- x)
+       ((eq (nth 2 form) -1) `(1+ ,(nth 1 form))) ; (- x -1) --> (1+ x)
+       ((eq (nth 1 form)  0) `(-  ,(nth 2 form))) ; (- 0 x)  --> (- x)
+       (t form))))
+
+    (t (byte-optimize-predicate form))))
 
 (defun byte-optimize-multiply (form)
   (setq form (byte-optimize-delay-constants-math form 1 '*))
-  ;; If there is a constant in FORM, it is now the last element.
+  ;; If there is a constant integer in FORM, it is now the last element.
   (cond ((null (cdr form)) 1)
 ;;; It is not safe to delete the function entirely
 ;;; (actually, it would be safe if we know the sole arg
 ;;; is not a marker or if it appears in other arithmetic).
 ;;;    ((null (cdr (cdr form))) (nth 1 form))
-       ((let ((last (car (reverse form))))
-          (cond ((eq 0 last)  (cons 'progn (cdr form)))
-                ((eq 1 last)  (delq 1 (copy-sequence form)))
-                ((eq -1 last) (list '- (delq -1 (copy-sequence form))))
-                ((and (eq 2 last)
-                      (memq t (mapcar 'symbolp (cdr form))))
-                 (prog1 (setq form (delq 2 (copy-sequence form)))
-                   (while (not (symbolp (car (setq form (cdr form))))))
-                   (setcar form (list '+ (car form) (car form)))))
-                (form))))))
+       ((let ((last (last form)))
+          (byte-optimize-predicate
+           (cond ((eq 0 last)  (cons 'progn (cdr form)))
+                 ((eq 1 last)  (delq 1 (copy-sequence form)))
+                 ((eq -1 last) (list '- (delq -1 (copy-sequence form))))
+                 ((and (eq 2 last)
+                       (memq t (mapcar 'symbolp (cdr form))))
+                  (prog1 (setq form (delq 2 (copy-sequence form)))
+                    (while (not (symbolp (car (setq form (cdr form))))))
+                    (setcar form (list '+ (car form) (car form)))))
+                 (form)))))))
 
 (defun byte-optimize-divide (form)
   (setq form (byte-optimize-delay-constants-math form 2 '*))
-  (let ((last (car (reverse (cdr (cdr form))))))
+  ;; If there is a constant integer in FORM, it is now the last element.
+  (let ((last (last (cdr (cdr form)))))
     (if (numberp last)
        (cond ((= (length form) 3)
               (if (and (numberp (nth 1 form))
     (cond
 ;;;      ((null (cdr (cdr form)))
 ;;;       (nth 1 form))
-         ((eq (nth 1 form) 0)
-          (append '(progn) (cdr (cdr form)) '(0)))
-         ((eq last -1)
-          (list '- (if (nthcdr 3 form)
-                       (butlast form)
-                     (nth 1 form))))
-         (form))))
+     ((eq (nth 1 form) 0)
+      (append '(progn) (cdr (cdr form)) '(0)))
+     ((eq last -1)
+      (list '- (if (nthcdr 3 form)
+                  (butlast form)
+                (nth 1 form))))
+     (form))))
 
 (defun byte-optimize-logmumble (form)
   (setq form (byte-optimize-delay-constants-math form 1 (car form)))
index cba03e0..f68527b 100644 (file)
@@ -771,7 +771,7 @@ Variables of note:
                       '(find-tag find-tag-other-window tags-loop-continue))))
        (push-tag-mark))
     (if other-window
-       (pop-to-buffer tag-buf)
+       (pop-to-buffer tag-buf t)
       (switch-to-buffer tag-buf))
     (widen)
     (push-mark)
@@ -787,7 +787,7 @@ Variables of note:
 
 ;;;###autoload
 (defun find-tag-other-window (tagname &optional next)
-  "*Find tag whose name contains TAGNAME.
+  "*Find tag whose name contains TAGNAME, in another window.
  Selects the buffer that the tag is contained in in another window
 and puts point at its definition.
  If TAGNAME is a null string, the expression in the buffer
index 2b8a77d..1c4ad7e 100644 (file)
@@ -1831,7 +1831,7 @@ with a prefix argument, you will be prompted for the coding system."
                                          (buffer-local-variables)))
                               nil nil (buffer-name)))
         t
-        (if (and current-prefix-arg (featurep 'mule))
+        (if (and current-prefix-arg (featurep 'file-coding))
             (read-coding-system "Coding system: "))))
   (and (eq (current-buffer) mouse-grabbed-buffer)
        (error "Can't write minibuffer window"))
index be8df46..b942db4 100644 (file)
@@ -2339,8 +2339,9 @@ The name is assumed to begin with a capital letter.")
         '("\\<\\(false\\|null\\|true\\)\\>" (1 font-lock-keyword-face))
 
         ;; Class names:
-        (list (concat "\\<class\\>\\s *" java-font-lock-identifier-regexp)
-              1 'font-lock-function-name-face)
+        (list (concat "\\<\\(class\\|interface\\)\\>\\s *"
+                                                                java-font-lock-identifier-regexp)
+              2 'font-lock-function-name-face)
         
         ;; Package declarations:
         (list (concat "\\<\\(package\\|import\\)\\>\\s *"
@@ -2478,7 +2479,7 @@ The name is assumed to begin with a capital letter.")
  
         (list
 
-         ;; Java doc tags
+         ;; Javadoc tags
          '("@\\(author\\|exception\\|throws\\|deprecated\\|param\\|return\\|see\\|since\\|version\\)\\s "
            0 font-lock-keyword-face t)
 
@@ -2487,34 +2488,30 @@ The name is assumed to begin with a capital letter.")
                1 'font-lock-variable-name-face t)
 
          ;; Doc tag - Exception types
-         (list (concat "@exception\\s +"
+         (list (concat "@\\(exception\\|throws\\)\\s +"
                        java-font-lock-identifier-regexp)
-               '(1 (if (equal (char-after (match-end 0)) ?.)
+               '(2 (if (equal (char-after (match-end 0)) ?.)
                        font-lock-reference-face font-lock-type-face) t)
                (list (concat "\\=\\." java-font-lock-identifier-regexp)
                      '(goto-char (match-end 0)) nil
                      '(1 (if (equal (char-after (match-end 0)) ?.)
                              'font-lock-reference-face 'font-lock-type-face) t)))
     
-         ;; Doc tag - Exception types
-         (list (concat "@exception\\s +"
-                       java-font-lock-identifier-regexp)
-               '(1 (if (equal (char-after (match-end 0)) ?.)
-                       font-lock-reference-face font-lock-type-face) t)
-               (list (concat "\\=\\." java-font-lock-identifier-regexp)
-                     '(goto-char (match-end 0)) nil
-                     '(1 (if (equal (char-after (match-end 0)) ?.)
-                             'font-lock-reference-face 'font-lock-type-face) t)))
-
          ;; Doc tag - Cross-references, usually to methods 
          '("@see\\s +\\(\\S *[^][ \t\n\r\f(){},.;:]\\)"
            1 font-lock-function-name-face t)
     
+         ;; Doc tag - docRoot (1.3)
+         '("\\({ *@docRoot *}\\)"
+           0 font-lock-keyword-face t)
+         ;; Doc tag - beaninfo, unofficial but widely used, even by Sun
+         '("\\(@beaninfo\\)"
+           0 font-lock-keyword-face t)
          ;; Doc tag - Links
-         '("{@link\\s +\\([^}]*\\)}"
+         '("{ *@link\\s +\\([^}]+\\)}"
            0 font-lock-keyword-face t)
          ;; Doc tag - Links
-         '("{@link\\s +\\(\\S +\\s +\\S +\\)}"
+         '("{ *@link\\s +\\(\\(\\S +\\)\\|\\(\\S +\\s +\\S +\\)\\) *}"
            1 font-lock-function-name-face t)
     
          )))
index fd8905c..9581a49 100644 (file)
@@ -160,7 +160,7 @@ If this is 0, then the full buffer name will be shown."
   "For use as a value for `buffers-tab-switch-to-buffer-function'."
   (unless (eq (window-buffer) buffer)
     (if (> (length (windows-of-buffer buffer)) 0)
-       (select-window (car (windows-of-buffer buffer)))
+       (select-window (car (windows-of-buffer buffer)) t)
       (switch-to-buffer buffer t))))
 
 (defun select-buffers-tab-buffers-by-mode (buf1 buf2)
index 344adf4..0bcda60 100644 (file)
@@ -413,7 +413,7 @@ nil or `never' never auto-generate a directory listing,
                 (const :tag "if-outdated" if-outdated))
   :group 'info)
 
-(defcustom Info-save-auto-generated-dir nil
+(defcustom Info-save-auto-generated-dir 'never
   "*Whether an auto-generated info directory listing should be saved.
 Possible values are:
 nil or `never', the default, auto-generated info directory 
index a0eaddf..c27747a 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch>
 ;; Maintainer: Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch>
 ;; Created: Jan 1998
-;; Version: $Revision: 1.7.2.6 $
+;; Version: $Revision: 1.7.2.7 $
 ;; Keywords: help comm
 
 ;; This file is part of XEmacs
 
 ;;; Code:
 
+(eval-when '(load)
+  (if (not (fboundp 'ldap-open))
+      (error "No LDAP support compiled in this XEmacs")))
+
 (defgroup ldap nil
   "Lightweight Directory Access Protocol"
   :group 'comm)
@@ -145,6 +149,11 @@ Valid properties include:
                                   (integer :tag "(number of records)")))))
 :group 'ldap)
 
+(defcustom ldap-verbose nil
+  "*If non-nil, LDAP operations echo progress messages."
+  :type 'boolean
+  :group 'ldap)
+
 (defcustom ldap-ignore-attribute-codings nil
   "*If non-nil, do not perform any encoding/decoding on LDAP attribute values."
   :type 'boolean
@@ -436,8 +445,17 @@ and the corresponding decoder is then retrieved from
        (cons name (mapcar decoder values))
       attr)))
     
+(defun ldap-search (arg1 &rest args)
+  "Perform an LDAP search."  
+      (apply (if (ldapp arg1)
+                'ldap-search-basic
+              'ldap-search-entries) arg1 args))
+
+(make-obsolete 'ldap-search 
+              "Use `ldap-search-entries' instead or 
+`ldap-search-basic' for the low-level search API.")
 
-(defun ldap-search (filter &optional host attributes attrsonly withdn)
+(defun ldap-search-entries (filter &optional host attributes attrsonly withdn)
   "Perform an LDAP search.
 FILTER is the search filter in RFC1558 syntax, i.e., something that
 looks like \"(cn=John Smith)\".
@@ -459,13 +477,16 @@ entry according to the value of WITHDN."
   (let ((host-plist (cdr (assoc host ldap-host-parameters-alist)))
        ldap
        result)
-    (message "Opening LDAP connection to %s..." host)
+    (if ldap-verbose
+       (message "Opening LDAP connection to %s..." host))
     (setq ldap (ldap-open host host-plist))
-    (message "Searching with LDAP on %s..." host)
-    (setq result (ldap-search-internal ldap filter 
-                                      (plist-get host-plist 'base)
-                                      (plist-get host-plist 'scope)
-                                      attributes attrsonly withdn))
+    (if ldap-verbose
+       (message "Searching with LDAP on %s..." host))
+    (setq result (ldap-search ldap filter 
+                             (plist-get host-plist 'base)
+                             (plist-get host-plist 'scope)
+                             attributes attrsonly withdn
+                             ldap-verbose))
     (ldap-close ldap)
     (if ldap-ignore-attribute-codings
        result
@@ -474,6 +495,120 @@ entry according to the value of WITHDN."
                 (mapcar 'ldap-decode-attribute record)))
              result))))
 
+(defun ldap-add-entries (entries &optional host binddn passwd)
+  "Add entries to an LDAP directory.
+ENTRIES is a list of entry specifications of 
+the form (DN (ATTR . VALUE) (ATTR . VALUE) ...) where
+DN is the distinguished name of an entry to add, the following
+are cons cells containing attribute/value string pairs.
+HOST is the LDAP host, defaulting to `ldap-default-host'
+BINDDN is the DN to bind as to the server
+PASSWD is the corresponding password"
+  (or host
+      (setq host ldap-default-host)
+      (error "No LDAP host specified"))
+  (let ((host-plist (cdr (assoc host ldap-host-parameters-alist)))
+       ldap
+       (i 1))
+    (if (or binddn passwd)
+       (setq host-plist (copy-seq host-plist)))
+    (if binddn
+       (setq host-plist (plist-put host-plist 'binddn binddn)))
+    (if passwd
+       (setq host-plist (plist-put host-plist 'passwd passwd)))
+    (if ldap-verbose
+       (message "Opening LDAP connection to %s..." host))
+    (setq ldap (ldap-open host host-plist))
+    (if ldap-verbose
+       (message "Adding LDAP entries..."))
+    (mapcar (function
+            (lambda (thisentry)
+              (ldap-add ldap (car thisentry) (cdr thisentry))
+              (if ldap-verbose
+                  (message "%d added" i))
+              (setq i (1+ i))))
+           entries)
+    (ldap-close ldap)))
+
+
+(defun ldap-modify-entries (entry-mods &optional host binddn passwd)
+  "Modify entries of an LDAP directory.
+ENTRY_MODS is a list of entry modifications of the form 
+  (DN MOD-SPEC1 MOD-SPEC2 ...) where DN is the distinguished name of 
+the entry to modify, the following are modification specifications. 
+A modification specification is itself a list of the form 
+(MOD-OP ATTR VALUE1 VALUE2 ...) MOD-OP and ATTR are mandatory, 
+VALUEs are optional depending on MOD-OP.
+MOD-OP is the type of modification, one of the symbols `add', `delete'
+or `replace'. ATTR is the LDAP attribute type to modify.
+HOST is the LDAP host, defaulting to `ldap-default-host'
+BINDDN is the DN to bind as to the server
+PASSWD is the corresponding password"
+  (or host
+      (setq host ldap-default-host)
+      (error "No LDAP host specified"))
+  (let ((host-plist (cdr (assoc host ldap-host-parameters-alist)))
+       ldap
+       (i 1))
+    (if (or binddn passwd)
+       (setq host-plist (copy-seq host-plist)))
+    (if binddn
+       (setq host-plist (plist-put host-plist 'binddn binddn)))
+    (if passwd
+       (setq host-plist (plist-put host-plist 'passwd passwd)))
+    (if ldap-verbose
+       (message "Opening LDAP connection to %s..." host))
+    (setq ldap (ldap-open host host-plist))
+    (if ldap-verbose
+       (message "Modifying LDAP entries..."))
+    (mapcar (function
+            (lambda (thisentry)
+              (ldap-modify ldap (car thisentry) (cdr thisentry))
+              (if ldap-verbose
+                  (message "%d modified" i))
+              (setq i (1+ i))))
+           entry-mods)
+    (ldap-close ldap)))
+
+
+(defun ldap-delete-entries (dn &optional host binddn passwd)
+  "Delete an entry from an LDAP directory.
+DN is the distinguished name of an entry to delete or 
+a list of those.
+HOST is the LDAP host, defaulting to `ldap-default-host'
+BINDDN is the DN to bind as to the server
+PASSWD is the corresponding password."
+  (or host
+      (setq host ldap-default-host)
+      (error "No LDAP host specified"))
+  (let ((host-plist (cdr (assoc host ldap-host-parameters-alist)))
+       ldap)
+    (if (or binddn passwd)
+       (setq host-plist (copy-seq host-plist)))
+    (if binddn
+       (setq host-plist (plist-put host-plist 'binddn binddn)))
+    (if passwd
+       (setq host-plist (plist-put host-plist 'passwd passwd)))
+    (if ldap-verbose
+       (message "Opening LDAP connection to %s..." host))
+    (setq ldap (ldap-open host host-plist))
+    (if (consp dn)
+       (let ((i 1))
+         (if ldap-verbose
+             (message "Deleting LDAP entries..."))
+         (mapcar (function
+                  (lambda (thisdn)
+                    (ldap-delete ldap thisdn)
+                    (if ldap-verbose
+                        (message "%d deleted" i))
+                    (setq i (1+ i))))
+                 dn))
+      (if ldap-verbose
+         (message "Deleting LDAP entry..."))
+      (ldap-delete ldap dn))
+    (ldap-close ldap)))
+
+
 (provide 'ldap)
                
 ;;; ldap.el ends here
index 08886a9..c5e428d 100644 (file)
@@ -79,7 +79,23 @@ a scrollbar for its own text, which then moves in the opposite direction."
                  (set-glyph-image modeline-pointer-glyph "fleur" 'global 'x))
                 (t
                  (set-glyph-image modeline-pointer-glyph "sb_v_double_arrow"
-                                  'global 'x)))))
+                                  'global 'x))))
+        (when (featurep 'mswindows)
+          (cond ((eq val t)
+                 (set-glyph-image modeline-pointer-glyph
+                                  [mswindows-resource :resource-type cursor
+                                                      :resource-id "SizeAll"]
+                                  'global 'mswindows))
+                ((eq val 'scrollbar)
+                 (set-glyph-image modeline-pointer-glyph
+                                  [mswindows-resource :resource-type cursor
+                                                      :resource-id "Normal"]
+                                  'global 'mswindows))
+                (t
+                 (set-glyph-image modeline-pointer-glyph
+                                  [mswindows-resource :resource-type cursor
+                                                      :resource-id "SizeNS"]
+                                  'global 'mswindows)))))
   :group 'modeline)
 
 (defun mouse-drag-modeline (event)
index f4e4125..7c34cc7 100644 (file)
 ;; This file does the magic to parse mswindows font names, and make sure that
 ;; the default and modeline attributes of new frames are specified enough.
 
-;;; Force creation of the default face font so that if it fails we get an
-;;; error now instead of a crash at frame creation.
 (defun mswindows-init-device-faces (device)
-  (unless (face-font-instance 'default device)
-    (error "Can't find a suitable default font")))
-
+  (let ((color-default (device-system-metric device 'color-default))
+       (color-3d-face (device-system-metric device 'color-3d-face)))
+    ; Force creation of the default face font so that if it fails we get
+    ; an error now instead of a crash at frame creation.
+    (unless (face-font-instance 'default device)
+      (error "Can't find a suitable default font"))
+    
+    (if (car color-default)
+       (set-face-foreground 'default (car color-default)) device)
+    (if (cdr color-default)
+       (set-face-background 'default (cdr color-default)) device)
+    (if (car color-3d-face)
+       (set-face-foreground 'gui-element (car color-3d-face)) device)
+    (if (cdr color-3d-face)
+       (set-face-background 'gui-element (cdr color-3d-face)) device)
+    (set-face-font 'gui-element "MS Sans Serif:Regular:8" device)))
 
 (defun mswindows-init-frame-faces (frame)
   )
index 4ae3c49..c6e689f 100644 (file)
 (define-key mule-keymap "r" 'toggle-display-direction)  ; XEmacs
 (define-key mule-keymap "l" 'set-language-environment)
 
-(define-key help-map "\C-L" 'describe-language-support)
 (define-key help-map "L" 'describe-language-environment)
 (define-key help-map "\C-\\" 'describe-input-method)
 (define-key help-map "I" 'describe-input-method)
-(define-key help-map "C" 'describe-coding-system)
 (define-key help-map "h" 'view-hello-file)
 
 ;; Menu for XEmacs were moved to menubar-items.el.
index b84b4a7..587ea39 100644 (file)
@@ -239,7 +239,7 @@ is the directory on the site in which packages may be found.
 This variable is used to initialize `package-get-remote', the
 variable actually used to specify package download sites."
   :tag "Package download sites"
-  :type '(repeat (list hostname directory))
+  :type '(repeat (list (string :tag "Name") host-name directory))
   :group 'package-get)
 
 (defcustom package-get-remove-copy t
index 3424d79..bf5ee4b 100644 (file)
@@ -1,3 +1,33 @@
+2000-02-21  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.30 is released.
+
+2000-02-21  Andy Piper  <andy@xemacs.org>
+
+       * lwlib.c (merge_widget_value_args): don't delete the args before
+       copying, lw_copy_widget_value_args will do this for us if
+       necessary.
+       (lw_add_widget_value_arg): Allow existing args to be replaced.
+       (free_widget_value_args): Set args to 0 rather than 0xdeadbeef,
+       reference couting works better that way.
+       (lw_copy_widget_value_args): Do the right thing.
+
+       * lwlib-Xm.c (xm_create_progress): Make sensitive as this looks
+       much better.
+       * lwlib-Xaw.c (xaw_create_progress): ditto.
+
+2000-02-12  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+       * xlwmenu.h (XmUNSPECIFIED_PIXMAP): Define this if we are using Motif
+       compatible resource names.
+
+       * xlwmenu.c (make_shadow_gcs): Always check for XmUNSPECIFIED_PIXMAP
+       even if we are only 'compatible' with the Motif resources.
+
+2000-02-15  Andy Piper  <andy@xemacs.org>
+
+       * xlwgauge.c (GaugeExpose): remove shadows.
+
 2000-02-16  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.29 is released.
index 3ff9460..dd766dc 100644 (file)
@@ -788,7 +788,7 @@ xaw_create_progress (widget_instance *instance)
   int ac = 0;
   Widget scale = 0;
   widget_value* val = instance->info->val;
-
+#if 0          /* This looks too awful, although more correct. */
   if (!val->call_data)
     {
       XtSetArg (al [ac], XtNsensitive, False);         ac++;
@@ -797,6 +797,10 @@ xaw_create_progress (widget_instance *instance)
     {
       XtSetArg (al [ac], XtNsensitive, val->enabled);          ac++;
     }
+#else
+  XtSetArg (al [ac], XtNsensitive, True);              ac++;
+#endif
+
   XtSetArg (al [ac], XtNmappedWhenManaged, FALSE);     ac++;
   XtSetArg (al [ac], XtNorientation, XtorientHorizontal);      ac++;
   XtSetArg (al [ac], XtNhighlightThickness, (Dimension)0);ac++;
index 87008b5..ff1b8ff 100644 (file)
@@ -1646,7 +1646,7 @@ xm_create_progress (widget_instance *instance)
   int ac = 0;
   Widget scale = 0;
   widget_value* val = instance->info->val;
-
+#if 0          /* This looks too awful, although more correct. */
   if (!val->call_data)
     {
       XtSetArg (al [ac], XmNsensitive, False);         ac++;
@@ -1655,6 +1655,9 @@ xm_create_progress (widget_instance *instance)
     {
       XtSetArg (al [ac], XmNsensitive, val->enabled);          ac++;
     }
+#else
+  XtSetArg (al [ac], XmNsensitive, True);              ac++;
+#endif
   XtSetArg (al [ac], XmNalignment, XmALIGNMENT_BEGINNING);     ac++;
   XtSetArg (al [ac], XmNuserData, val->call_data);             ac++;
   XtSetArg (al [ac], XmNmappedWhenManaged, FALSE);     ac++;
index 35be751..27f7a08 100644 (file)
@@ -261,7 +261,6 @@ merge_widget_value_args (widget_value *old, widget_value *new)
     {
       /* #### Do something more sensible here than just copying the
          new values (like actually merging the values). */
-      free_widget_value_args (old);
       lw_copy_widget_value_args (new, old);
       changed = True;
     }
@@ -1365,6 +1364,7 @@ void lw_add_value_args_to_args (widget_value* wv, ArgList addto, int* offset)
 
 void lw_add_widget_value_arg (widget_value* wv, String name, XtArgVal value)
 {
+  int i = 0;
   if (!wv->args)
     {
       wv->args = (widget_args *) malloc (sizeof (widget_args));
@@ -1378,7 +1378,19 @@ void lw_add_widget_value_arg (widget_value* wv, String name, XtArgVal value)
   if (wv->args->nargs > 10)
     return;
 
-  XtSetArg (wv->args->args [wv->args->nargs], name, value);   wv->args->nargs++;
+  /* If the arg is already there then we must replace it. */
+  for (i = 0; i < wv->args->nargs; i++)
+    {
+      if (!strcmp (wv->args->args[i].name, name))
+       {
+         XtSetArg (wv->args->args [i], name, value);
+         break;
+       }
+    }
+  if (i >= wv->args->nargs)
+    {
+      XtSetArg (wv->args->args [wv->args->nargs], name, value);   wv->args->nargs++;
+    }
 }
 
 static void free_widget_value_args (widget_value* wv)
@@ -1397,20 +1409,22 @@ static void free_widget_value_args (widget_value* wv)
 #endif
          free (wv->args->args);
          free (wv->args);
-         wv->args = (widget_args*)0xDEADBEEF;
+         wv->args = 0;
        }
     }
 }
 
 void lw_copy_widget_value_args (widget_value* val, widget_value* copy)
 {
-  if (!val->args)
+  if (val == copy || val->args == copy->args)
+    return;
+
+  if (copy->args)
     {
-      if (copy->args)
-       free_widget_value_args (copy);
-      copy->args = 0;
+      free_widget_value_args (copy);
     }
-  else
+
+  if (val->args)
     {
       copy->args = val->args;
       copy->args->ref_count++;
index db08040..3d81e8f 100644 (file)
@@ -466,7 +466,7 @@ register Window     win = XtWindow(w) ;
        if( gw->gauge.nlabels > 1 )
        {
          char  label[20], *s = label ;
-         int   len, w,h =0 ;
+         int   xlen, wd,h =0 ;
 
          if( gw->gauge.orientation == XtorientHorizontal )
            y = gw->gauge.lmargin + gw->label.font->max_bounds.ascent - 1 ;
@@ -483,13 +483,13 @@ register Window   win = XtWindow(w) ;
              s = gw->gauge.labels[i] ;
            if( s != NULL ) {
              x = e0 + i*(e1-e0-1)/(gw->gauge.nlabels-1) ;
-             len = strlen(s) ;
+             xlen = strlen(s) ;
              if( gw->gauge.orientation == XtorientHorizontal ) {
-               w = XTextWidth(gw->label.font, s, len) ;
-               XDrawString(dpy,win,gc, x-w/2,y, s,len) ;
+               wd = XTextWidth(gw->label.font, s, xlen) ;
+               XDrawString(dpy,win,gc, x-wd/2,y, s,xlen) ;
              }
              else {
-               XDrawString(dpy,win,gc, y,x+h, s,len) ;
+               XDrawString(dpy,win,gc, y,x+h, s,xlen) ;
              }
            }
          }
index c7ef3b4..a35a629 100644 (file)
@@ -2809,30 +2809,22 @@ make_shadow_gcs (XlwMenuWidget mw)
   xgcv.foreground = mw->menu.top_shadow_color;
   xgcv.background = mw->core.background_pixel;
 /*  xgcv.stipple = mw->menu.top_shadow_pixmap; gtb */
-#ifdef NEED_MOTIF
   if (mw->menu.top_shadow_pixmap &&
       mw->menu.top_shadow_pixmap != XmUNSPECIFIED_PIXMAP)
      xgcv.stipple = mw->menu.top_shadow_pixmap;
   else
      xgcv.stipple = 0;
-#else
-  xgcv.stipple = mw->menu.top_shadow_pixmap;
-#endif /* NEED_MOTIF */
   pm = (xgcv.stipple ? GCStipple|GCFillStyle : 0);
   mw->menu.shadow_top_gc =
     XtGetGC((Widget)mw, GCForeground|GCBackground|pm, &xgcv);
 
   xgcv.foreground = mw->menu.bottom_shadow_color;
 /*  xgcv.stipple = mw->menu.bottom_shadow_pixmap; gtb */
-#ifdef NEED_MOTIF
   if (mw->menu.bottom_shadow_pixmap &&
       mw->menu.bottom_shadow_pixmap != XmUNSPECIFIED_PIXMAP)
      xgcv.stipple = mw->menu.bottom_shadow_pixmap;
   else
      xgcv.stipple = 0;
-#else
-  xgcv.stipple = mw->menu.bottom_shadow_pixmap;
-#endif /* NEED_MOTIF */
   pm = (xgcv.stipple ? GCStipple|GCFillStyle : 0);
   mw->menu.shadow_bottom_gc =
     XtGetGC ((Widget)mw, GCForeground|GCBackground|pm, &xgcv);
index 24d9635..2644a2b 100644 (file)
@@ -56,6 +56,7 @@
 # define XmCTopShadowPixmap    "TopShadowPixmap"
 # define XmNbottomShadowPixmap "bottomShadowPixmap"
 # define XmCBottomShadowPixmap "BottomShadowPixmap"
+# define XmUNSPECIFIED_PIXMAP   2
 # define XmRHorizontalDimension        "HorizontalDimension"
 # define XmNspacing            "spacing"
 # define XmCSpacing            "Spacing"
index c548505..142c7d2 100644 (file)
@@ -1,3 +1,23 @@
+2000-02-21  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.30 is released.
+
+2000-02-21  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+       * internals/internals.texi: Made texinfmt-friendly.
+
+2000-01-20  Mark Thomas  <mthomas@jprc.com>
+
+       * lispref/backups.texi (Numbered Backups):
+       * xemacs/files.texi (Backup Deletion):
+       Change trim-versions-without-asking to delete-old-versions.
+
+2000-02-19  Martin Buchholz  <martin@xemacs.org>
+
+       * internals/internals.texi (Conversion to and from External Data):
+       Document TO_EXTERNAL_FORMAT and friends.
+       Doc bug fixes.
+
 2000-02-16  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.29 is released.
index a3c3100..27d6d72 100644 (file)
@@ -3218,8 +3218,8 @@ Emacs 19.
 @example
 (declaim (inline foo bar))
 (eval-when (compile load eval) (proclaim '(inline foo bar)))
-(proclaim-inline foo bar)      ; XEmacs only
-(defsubst foo (...) ...)       ; instead of defun; Emacs 19 only
+(proclaim-inline foo bar)   ; XEmacs only
+(defsubst foo (...) ...)    ; instead of defun; Emacs 19 only
 @end example
 
 @strong{Please note:}  This declaration remains in effect after the
@@ -5549,8 +5549,8 @@ referring to the name of a function.  In Emacs Lisp, it works
 just as well to use a regular quote:
 
 @example
-(loop for x in y by #'cddr collect (mapcar #'plusp x))  ; Common Lisp
-(loop for x in y by 'cddr collect (mapcar 'plusp x))    ; Emacs Lisp
+(loop for x in y by #'cddr collect (mapcar #'plusp x)) ; Common Lisp
+(loop for x in y by 'cddr collect (mapcar 'plusp x))   ; Emacs Lisp
 @end example
 
 When @code{#'} introduces a @code{lambda} form, it is best to
index c858f39..f432589 100644 (file)
@@ -138,7 +138,9 @@ This Info file contains v1.0 of the XEmacs Internals Manual.
 * Interface to X Windows::
 * Index::
 
-@detailmenu --- The Detailed Node Listing ---
+@detailmenu
+
+--- The Detailed Node Listing ---
 
 A History of Emacs
 
@@ -189,7 +191,6 @@ Allocation of Objects in XEmacs Lisp
 * Allocation from Frob Blocks::
 * lrecords::
 * Low-level allocation::
-* Pure Space::
 * Cons::
 * Vector::
 * Bit Vector::
@@ -966,7 +967,7 @@ Java, which is inexcusable.
 
 Unfortunately, there is no perfect language.  Static typing allows a
 compiler to catch programmer errors and produce more efficient code, but
-makes programming more tedious and less fun.  For the forseeable future,
+makes programming more tedious and less fun.  For the foreseeable future,
 an Ideal Editing and Programming Environment (and that is what XEmacs
 aspires to) will be programmable in multiple languages: high level ones
 like Lisp for user customization and prototyping, and lower level ones
@@ -1619,25 +1620,17 @@ stuffs a pointer together with a tag, as follows:
  [ 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 ]
  [ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 ]
 
-   <---> ^ <------------------------------------------------------>
-    tag  |       a pointer to a structure, or an integer
-         |
-       mark bit
-@end example
-
-The tag describes the type of the Lisp object.  For integers and chars,
-the lower 28 bits contain the value of the integer or char; for all
-others, the lower 28 bits contain a pointer.  The mark bit is used
-during garbage-collection, and is always 0 when garbage collection is
-not happening. (The way that garbage collection works, basically, is that it
-loops over all places where Lisp objects could exist---this includes
-all global variables in C that contain Lisp objects [including
-@code{Vobarray}, the C equivalent of @code{obarray}; through this, all
-Lisp variables will get marked], plus various other places---and
-recursively scans through the Lisp objects, marking each object it finds
-by setting the mark bit.  Then it goes through the lists of all objects
-allocated, freeing the ones that are not marked and turning off the mark
-bit of the ones that are marked.)
+   <---------------------------------------------------------> <->
+            a pointer to a structure, or an integer            tag
+@end example
+
+A tag of 00 is used for all pointer object types, a tag of 10 is used
+for characters, and the other two tags 01 and 11 are joined together to
+form the integer object type.  This representation gives us 31 bits
+integers, 30 bits characters and pointers are represented directly
+without any bit masking.  This representation, though, assumes that
+pointers to structs are always aligned to multiples of 4, so the lower 2
+bits are always zero.
 
 Lisp objects use the typedef @code{Lisp_Object}, but the actual C type
 used for the Lisp object can vary.  It can be either a simple type
@@ -1654,97 +1647,16 @@ decode Lisp objects when debugging.  The choice of which type to use is
 determined by the preprocessor constant @code{USE_UNION_TYPE} which is
 defined via the @code{--use-union-type} option to @code{configure}.
 
-@cindex record type
-
-Note that there are only eight types that the tag can represent, but
-many more actual types than this.  This is handled by having one of the
-tag types specify a meta-type called a @dfn{record}; for all such
-objects, the first four bytes of the pointed-to structure indicate what
-the actual type is.
-
-Note also that having 28 bits for pointers and integers restricts a lot
-of things to 256 megabytes of memory. (Basically, enough pointers and
-indices and whatnot get stuffed into Lisp objects that the total amount
-of memory used by XEmacs can't grow above 256 megabytes.  In older
-versions of XEmacs and GNU Emacs, the tag was 5 bits wide, allowing for
-32 types, which was more than the actual number of types that existed at
-the time, and no ``record'' type was necessary.  However, this limited
-the editor to 64 megabytes total, which some users who edited large
-files might conceivably exceed.)
-
-Also, note that there is an implicit assumption here that all pointers
-are low enough that the top bits are all zero and can just be chopped
-off.  On standard machines that allocate memory from the bottom up (and
-give each process its own address space), this works fine.  Some
-machines, however, put the data space somewhere else in memory
-(e.g. beginning at 0x80000000).  Those machines cope by defining
-@code{DATA_SEG_BITS} in the corresponding @file{m/} or @file{s/} file to
-the proper mask.  Then, pointers retrieved from Lisp objects are
-automatically OR'ed with this value prior to being used.
-
-A corollary of the previous paragraph is that @strong{(pointers to)
-stack-allocated structures cannot be put into Lisp objects}.  The stack
-is generally located near the top of memory; if you put such a pointer
-into a Lisp object, it will get its top bits chopped off, and you will
-lose.
-
-Actually, there's an alternative representation of a @code{Lisp_Object},
-invented by Kyle Jones, that is used when the
-@code{--use-minimal-tagbits} option to @code{configure} is used.  In
-this case the 2 lower bits are used for the tag bits.  This
-representation assumes that pointers to structs are always aligned to
-multiples of 4, so the lower 2 bits are always zero.
-
-@example
- [ 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 ]
- [ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 ]
-
-   <---------------------------------------------------------> <->
-            a pointer to a structure, or an integer            tag
-@end example
-
-A tag of 00 is used for all pointer object types, a tag of 10 is used
-for characters, and the other two tags 01 and 11 are joined together to
-form the integer object type.  The markbit is moved to part of the
-structure being pointed at (integers and chars do not need to be marked,
-since no memory is allocated).  This representation has these
-advantages:
-
-@enumerate
-@item
-31 bits can be used for Lisp Integers.
-@item
-@emph{Any} pointer can be represented directly, and no bit masking
-operations are necessary.
-@end enumerate
-
-The disadvantages are:
-
-@enumerate
-@item
-An extra level of indirection is needed when accessing the object types
-that were not record types.  So checking whether a Lisp object is a cons
-cell becomes a slower operation.
-@item
-Mark bits can no longer be stored directly in Lisp objects, so another
-place for them must be found.  This means that a cons cell requires more
-memory than merely room for 2 lisp objects, leading to extra memory use.
-@end enumerate
-
 Various macros are used to construct Lisp objects and extract the
 components.  Macros of the form @code{XINT()}, @code{XCHAR()},
-@code{XSTRING()}, @code{XSYMBOL()}, etc. mask out the pointer/integer
-field and cast it to the appropriate type.  All of the macros that
-construct pointers will @code{OR} with @code{DATA_SEG_BITS} if
-necessary.  @code{XINT()} needs to be a bit tricky so that negative
-numbers are properly sign-extended: Usually it does this by shifting the
-number four bits to the left and then four bits to the right.  This
-assumes that the right-shift operator does an arithmetic shift (i.e. it
-leaves the most-significant bit as-is rather than shifting in a zero, so
-that it mimics a divide-by-two even for negative numbers).  Not all
-machines/compilers do this, and on the ones that don't, a more
-complicated definition is selected by defining
-@code{EXPLICIT_SIGN_EXTEND}.
+@code{XSTRING()}, @code{XSYMBOL()}, etc. shift out the tag field if
+needed cast it to the appropriate type.  @code{XINT()} needs to be a bit
+tricky so that negative numbers are properly sign-extended.  Since
+integers are stored left-shifted, if the right-shift operator does an
+arithmetic shift (i.e. it leaves the most-significant bit as-is rather
+than shifting in a zero, so that it mimics a divide-by-two even for
+negative numbers) the shift to remove the tag bit is enough.  This is
+the case on all the systems we support.
 
 Note that when @code{ERROR_CHECK_TYPECHECK} is defined, the extractor
 macros become more complicated---they check the tag bits and/or the
@@ -1844,9 +1756,8 @@ done during the dumping process: If possible, the initialized data
 segment is re-mapped so that it becomes part of the (unmodifiable) code
 segment in the dumped executable.  This allows this memory to be shared
 among multiple running XEmacs processes.  XEmacs is careful to place as
-much constant data as possible into initialized variables (in
-particular, into what's called the @dfn{pure space}---see below) during
-the @file{temacs} phase.
+much constant data as possible into initialized variables during the
+@file{temacs} phase.
 
 @cindex copy-on-write
 @strong{Please note:} This kludge only works on a few systems nowadays,
@@ -2265,19 +2176,22 @@ Without Mule support, an @code{Emchar} is equivalent to an
 The data representing the text in a buffer or string is logically a set
 of @code{Bufbyte}s.
 
-XEmacs does not work with character formats all the time; when reading
-characters from the outside, it decodes them to an internal format, and
-likewise encodes them when writing.  @code{Bufbyte} (in fact
+XEmacs does not work with the same character formats all the time; when
+reading characters from the outside, it decodes them to an internal
+format, and likewise encodes them when writing.  @code{Bufbyte} (in fact
 @code{unsigned char}) is the basic unit of XEmacs internal buffers and
-strings format.
+strings format.  A @code{Bufbyte *} is the type that points at text
+encoded in the variable-width internal encoding.
 
 One character can correspond to one or more @code{Bufbyte}s.  In the
-current implementation, an ASCII character is represented by the same
-@code{Bufbyte}, and extended characters are represented by a sequence of
-@code{Bufbyte}s.
+current Mule implementation, an ASCII character is represented by the
+same @code{Bufbyte}, and other characters are represented by a sequence
+of two or more @code{Bufbyte}s.
 
-Without Mule support, a @code{Bufbyte} is equivalent to an
-@code{Emchar}.
+Without Mule support, there are exactly 256 characters, implicitly
+Latin-1, and each character is represented using one @code{Bufbyte}, and
+there is a one-to-one correspondence between @code{Bufbyte}s and
+@code{Emchar}s.
 
 @item Bufpos
 @itemx Charcount
@@ -2287,8 +2201,8 @@ A @code{Bufpos} represents a character position in a buffer or string.
 A @code{Charcount} represents a number (count) of characters.
 Logically, subtracting two @code{Bufpos} values yields a
 @code{Charcount} value.  Although all of these are @code{typedef}ed to
-@code{int}, we use them in preference to @code{int} to make it clear
-what sort of position is being used.
+@code{EMACS_INT}, we use them in preference to @code{EMACS_INT} to make
+it clear what sort of position is being used.
 
 @code{Bufpos} and @code{Charcount} values are the only ones that are
 ever visible to Lisp.
@@ -2298,7 +2212,7 @@ ever visible to Lisp.
 @cindex Bytind
 @cindex Bytecount
 A @code{Bytind} represents a byte position in a buffer or string.  A
-@code{Bytecount} represents the distance between two positions in bytes.
+@code{Bytecount} represents the distance between two positions, in bytes.
 The relationship between @code{Bytind} and @code{Bytecount} is the same
 as the relationship between @code{Bufpos} and @code{Charcount}.
 
@@ -2325,10 +2239,10 @@ learn about them.
 @table @code
 @item MAX_EMCHAR_LEN
 @cindex MAX_EMCHAR_LEN
-This preprocessor constant is the maximum number of buffer bytes per
-Emacs character, i.e. the byte length of an @code{Emchar}.  It is useful
-when allocating temporary strings to keep a known number of characters.
-For instance:
+This preprocessor constant is the maximum number of buffer bytes to
+represent an Emacs character in the variable width internal encoding.
+It is useful when allocating temporary strings to keep a known number of
+characters.  For instance:
 
 @example
 @group
@@ -2449,107 +2363,135 @@ stuff (such as the infamous \201 characters) leak out.
 
 The interface to conversion between the internal and external
 representations of text are the numerous conversion macros defined in
-@file{buffer.h}.  Before looking at them, we'll look at the external
-formats supported by these macros.
-
-Currently meaningful formats are @code{FORMAT_BINARY},
-@code{FORMAT_FILENAME}, @code{FORMAT_OS}, and @code{FORMAT_CTEXT}.  Here
-is a description of these.
+@file{buffer.h}.  There used to be a fixed set of external formats
+supported by these macros, but now any coding system can be used with
+these macros.  The coding system alias mechanism is used to create the
+following logical coding systems, which replace the fixed external
+formats.  The (dontusethis-set-symbol-value-handler) mechanism was
+enhanced to make this possible (more work on that is needed - like
+remove the @code{dontusethis-} prefix).
 
 @table @code
-@item FORMAT_BINARY
-Binary format.  This is the simplest format and is what we use in the
-absence of a more appropriate format.  This converts according to the
-@code{binary} coding system:
+@item Qbinary
+This is the simplest format and is what we use in the absence of a more
+appropriate format.  This converts according to the @code{binary} coding
+system:
 
 @enumerate a
 @item
-On input, bytes 0--255 are converted into characters 0--255.
+On input, bytes 0--255 are converted into (implicitly Latin-1)
+characters 0--255.  A non-Mule xemacs doesn't really know about
+different character sets and the fonts to display them, so the bytes can
+be treated as text in different 1-byte encodings by simply setting the
+appropriate fonts.  So in a sense, non-Mule xemacs is a multi-lingual
+editor if, for example, different fonts are used to display text in
+different buffers, faces, or windows.  The specifier mechanism gives the
+user complete control over this kind of behavior.
 @item
 On output, characters 0--255 are converted into bytes 0--255 and other
-characters are converted into `X'.
+characters are converted into `~'.
 @end enumerate
 
-@item FORMAT_FILENAME
-Format used for filenames.  In the original Mule, this is user-definable
-with the @code{pathname-coding-system} variable.  For the moment, we
-just use the @code{binary} coding system.
+@item Qfile_name
+Format used for filenames.  This is user-definable via either the
+@code{file-name-coding-system} or @code{pathname-coding-system} (now
+obsolete) variables.
 
-@item FORMAT_OS
+@item Qnative
 Format used for the external Unix environment---@code{argv[]}, stuff
 from @code{getenv()}, stuff from the @file{/etc/passwd} file, etc.
+Currently this is the same as Qfile_name.  The two should be
+distinguished for clarity and possible future separation.
 
-Perhaps should be the same as FORMAT_FILENAME.
-
-@item FORMAT_CTEXT
-Compound--text format.  This is the standard X format used for data
+@item Qctext
+Compound--text format.  This is the standard X11 format used for data
 stored in properties, selections, and the like.  This is an 8-bit
-no-lock-shift ISO2022 coding system.
+no-lock-shift ISO2022 coding system.  This is a real coding system,
+unlike Qfile_name, which is user-definable.
 @end table
 
-The macros to convert between these formats and the internal format, and
-vice versa, follow.
+There are two fundamental macros to convert between external and
+internal format.
+
+@code{TO_INTERNAL_FORMAT} converts external data to internal format, and
+@code{TO_EXTERNAL_FORMAT} converts the other way around.  The arguments
+each of these receives are a source type, a source, a sink type, a sink,
+and a coding system (or a symbol naming a coding system).
+
+A typical call looks like
+@example
+TO_EXTERNAL_FORMAT (LISP_STRING, str, C_STRING_MALLOC, ptr, Qfile_name);
+@end example
+
+which means that the contents of the lisp string @code{str} are written
+to a malloc'ed memory area which will be pointed to by @code{ptr}, after
+the function returns.  The conversion will be done using the
+@code{file-name} coding system, which will be controlled by the user
+indirectly by setting or binding the variable
+@code{file-name-coding-system}.
+
+Some sources and sinks require two C variables to specify.  We use some
+preprocessor magic to allow different source and sink types, and even
+different numbers of arguments to specify different types of sources and
+sinks.
+
+So we can have a call that looks like
+@example
+TO_INTERNAL_FORMAT (DATA, (ptr, len),
+                    MALLOC, (ptr, len),
+                    coding_system);
+@end example
+
+The parenthesized argument pairs are required to make the preprocessor
+magic work.
+
+Here are the different source and sink types:
 
 @table @code
-@item GET_CHARPTR_INT_DATA_ALLOCA
-@itemx GET_CHARPTR_EXT_DATA_ALLOCA
-These two are the most basic conversion macros.
-@code{GET_CHARPTR_INT_DATA_ALLOCA} converts external data to internal
-format, and @code{GET_CHARPTR_EXT_DATA_ALLOCA} converts the other way
-around.  The arguments each of these receives are @var{ptr} (pointer to
-the text in external format), @var{len} (length of texts in bytes),
-@var{fmt} (format of the external text), @var{ptr_out} (lvalue to which
-new text should be copied), and @var{len_out} (lvalue which will be
-assigned the length of the internal text in bytes).  The resulting text
-is stored to a stack-allocated buffer.  If the text doesn't need
-changing, these macros will do nothing, except for setting
-@var{len_out}.
-
-The macros above take many arguments which makes them unwieldy.  For
-this reason, a number of convenience macros are defined with obvious
-functionality, but accepting less arguments.  The general rule is that
-macros with @samp{INT} in their name convert text to internal Emacs
-representation, whereas the @samp{EXT} macros convert to external
-representation.
-
-@item GET_C_CHARPTR_INT_DATA_ALLOCA
-@itemx GET_C_CHARPTR_EXT_DATA_ALLOCA
-As their names imply, these macros work on C char pointers, which are
-zero-terminated, and thus do not need @var{len} or @var{len_out}
-parameters.
-
-@item GET_STRING_EXT_DATA_ALLOCA
-@itemx GET_C_STRING_EXT_DATA_ALLOCA
-These two macros convert a Lisp string into an external representation.
-The difference between them is that @code{GET_STRING_EXT_DATA_ALLOCA}
-stores its output to a generic string, providing @var{len_out}, the
-length of the resulting external string.  On the other hand,
-@code{GET_C_STRING_EXT_DATA_ALLOCA} assumes that the caller will be
-satisfied with output string being zero-terminated.
-
-Note that for Lisp strings only one conversion direction makes sense.
-
-@item GET_C_CHARPTR_EXT_BINARY_DATA_ALLOCA
-@itemx GET_CHARPTR_EXT_BINARY_DATA_ALLOCA
-@itemx GET_STRING_BINARY_DATA_ALLOCA
-@itemx GET_C_STRING_BINARY_DATA_ALLOCA
-@itemx GET_C_CHARPTR_EXT_FILENAME_DATA_ALLOCA
-@itemx ...
-These macros convert internal text to a specific external
-representation, with the external format being encoded into the name of
-the macro.  Note that the @code{GET_STRING_...} and
-@code{GET_C_STRING...}  macros lack the @samp{EXT} tag, because they
-only make sense in that direction.
-
-@item GET_C_CHARPTR_INT_BINARY_DATA_ALLOCA
-@itemx GET_CHARPTR_INT_BINARY_DATA_ALLOCA
-@itemx GET_C_CHARPTR_INT_FILENAME_DATA_ALLOCA
-@itemx ...
-These macros convert external text of a specific format to its internal
-representation, with the external format being incoded into the name of
-the macro.
+@item @code{DATA, (ptr, len),}
+input data is a fixed buffer of size @var{len} at address @var{ptr}
+@item @code{ALLOCA, (ptr, len),}
+output data is placed in an alloca()ed buffer of size @var{len} pointed to by @var{ptr}
+@item @code{MALLOC, (ptr, len),}
+output data is in a malloc()ed buffer of size @var{len} pointed to by @var{ptr}
+@item @code{C_STRING_ALLOCA, ptr,}
+equivalent to @code{ALLOCA (ptr, len_ignored)} on output.
+@item @code{C_STRING_MALLOC, ptr,}
+equivalent to @code{MALLOC (ptr, len_ignored)} on output
+@item @code{C_STRING, ptr,}
+equivalent to @code{DATA, (ptr, strlen (ptr) + 1)} on input
+@item @code{LISP_STRING, string,}
+input or output is a Lisp_Object of type string
+@item @code{LISP_BUFFER, buffer,}
+output is written to @code{(point)} in lisp buffer @var{buffer}
+@item @code{LISP_LSTREAM, lstream,}
+input or output is a Lisp_Object of type lstream
+@item @code{LISP_OPAQUE, object,}
+input or output is a Lisp_Object of type opaque
 @end table
 
+Often, the data is being converted to a '\0'-byte-terminated string,
+which is the format required by many external system C APIs.  For these
+purposes, a source type of @code{C_STRING} or a sink type of
+@code{C_STRING_ALLOCA} or @code{C_STRING_MALLOC} is appropriate.
+Otherwise, we should try to keep XEmacs '\0'-byte-clean, which means
+using (ptr, len) pairs.
+
+The sinks to be specified must be lvalues, unless they are the lisp
+object types @code{LISP_LSTREAM} or @code{LISP_BUFFER}.
+
+For the sink types @code{ALLOCA} and @code{C_STRING_ALLOCA}, the
+resulting text is stored in a stack-allocated buffer, which is
+automatically freed on returning from the function.  However, the sink
+types @code{MALLOC} and @code{C_STRING_MALLOC} return @code{xmalloc()}ed
+memory.  The caller is responsible for freeing this memory using
+@code{xfree()}.
+
+Note that it doesn't make sense for @code{LISP_STRING} to be a source
+for @code{TO_INTERNAL_FORMAT} or a sink for @code{TO_EXTERNAL_FORMAT}.
+You'll get an assertion failure if you try.
+
+
 @node General Guidelines for Writing Mule-Aware Code, An Example of Mule-Aware Code, Conversion to and from External Data, Coding for Mule
 @subsection General Guidelines for Writing Mule-Aware Code
 
@@ -2577,10 +2519,23 @@ XEmacs can crash if unexpected 8bit sequences are copied to its internal
 buffers literally.
 
 This means that when a system function, such as @code{readdir}, returns
-a string, you need to convert it using one of the conversion macros
+a string, you may need to convert it using one of the conversion macros
 described in the previous chapter, before passing it further to Lisp.
-In the case of @code{readdir}, you would use the
-@code{GET_C_CHARPTR_INT_FILENAME_DATA_ALLOCA} macro.
+
+Actually, most of the basic system functions that accept '\0'-terminated
+string arguments, like @code{stat()} and @code{open()}, have been
+@strong{encapsulated} so that they are they @code{always} do internal to
+external conversion themselves.  This means you must pass internally
+encoded data, typically the @code{XSTRING_DATA} of a Lisp_String to
+these functions.  This is actually a design bug, since it unexpectedly
+changes the semantics of the system functions.  A better design would be
+to provide separate versions of these system functions that accepted
+Lisp_Objects which were lisp strings in place of their current
+@code{char *} arguments.
+
+@example
+int stat_lisp (Lisp_Object path, struct stat *buf); /* Implement me */
+@end example
 
 Also note that many internal functions, such as @code{make_string},
 accept Bufbytes, which removes the need for them to convert the data
@@ -2592,10 +2547,9 @@ passed around in internal format.
 @node An Example of Mule-Aware Code,  , General Guidelines for Writing Mule-Aware Code, Coding for Mule
 @subsection An Example of Mule-Aware Code
 
-As an example of Mule-aware code, we shall will analyze the
-@code{string} function, which conses up a Lisp string from the character
-arguments it receives.  Here is the definition, pasted from
-@code{alloc.c}:
+As an example of Mule-aware code, we will analyze the @code{string}
+function, which conses up a Lisp string from the character arguments it
+receives.  Here is the definition, pasted from @code{alloc.c}:
 
 @example
 @group
@@ -2708,7 +2662,7 @@ All @file{.c} files should @code{#include <config.h>} first.  Almost all
 Generated header files should be included using the @code{#include <...>} syntax,
 not the @code{#include "..."} syntax.  The generated headers are:
 
-@file{config.h puresize-adjust.h sheap-adjust.h paths.h Emacs.ad.h}
+@file{config.h sheap-adjust.h paths.h Emacs.ad.h}
 
 The basic rule is that you should assume builds using @code{--srcdir}
 and the @code{#include <...>} syntax needs to be used when the
@@ -2741,6 +2695,27 @@ make check
 @end example
 @end itemize
 
+Here is a checklist of things to do when creating a new lisp object type
+named @var{foo}:
+
+@enumerate
+@item
+create @var{foo}.h
+@item
+create @var{foo}.c
+@item
+add definitions of syms_of_@var{foo}, etc. to @var{foo}.c
+@item
+add declarations of syms_of_@var{foo}, etc. to symsinit.h
+@item
+add calls to syms_of_@var{foo}, etc. to emacs.c(main_1)
+@item
+add definitions of macros like CHECK_FOO and FOOP to @var{foo}.h
+@item
+add the new type index to enum lrecord_type
+@item
+add DEFINE_LRECORD_IMPLEMENTATION call to @var{foo}.c
+@end enumerate
 
 @node A Summary of the Various XEmacs Modules, Allocation of Objects in XEmacs Lisp, Rules When Writing New C Code, Top
 @chapter A Summary of the Various XEmacs Modules
@@ -3039,8 +3014,6 @@ special-purpose argument types requiring definitions not in
 
 @example
 alloc.c
-pure.c
-puresize.h
 @end example
 
 The large module @file{alloc.c} implements all of the basic allocation and
@@ -3066,35 +3039,6 @@ require changes to the generic subsystem code or affect any of the other
 subtypes in the subsystem; this provides a great deal of robustness to
 the XEmacs code.
 
-@cindex pure space
-@file{pure.c} contains the declaration of the @dfn{purespace} array.
-Pure space is a hack used to place some constant Lisp data into the code
-segment of the XEmacs executable, even though the data needs to be
-initialized through function calls.  (See above in section VIII for more
-info about this.)  During startup, certain sorts of data is
-automatically copied into pure space, and other data is copied manually
-in some of the basic Lisp files by calling the function @code{purecopy},
-which copies the object if possible (this only works in temacs, of
-course) and returns the new object.  In particular, while temacs is
-executing, the Lisp reader automatically copies all compiled-function
-objects that it reads into pure space.  Since compiled-function objects
-are large, are never modified, and typically comprise the majority of
-the contents of a compiled-Lisp file, this works well.  While XEmacs is
-running, any attempt to modify an object that resides in pure space
-causes an error.  Objects in pure space are never garbage collected --
-almost all of the time, they're intended to be permanent, and in any
-case you can't write into pure space to set the mark bits.
-
-@file{puresize.h} contains the declaration of the size of the pure space
-array.  This depends on the optional features that are compiled in, any
-extra purespace requested by the user at compile time, and certain other
-factors (e.g. 64-bit machines need more pure space because their Lisp
-objects are larger).  The smallest size that suffices should be used, so
-that there's no wasted space.  If there's not enough pure space, you
-will get an error during the build process, specifying how much more
-pure space is needed.
-
-
 
 @example
 eval.c
@@ -4418,7 +4362,6 @@ Asian-language support, and is not currently used.
 * Allocation from Frob Blocks::
 * lrecords::
 * Low-level allocation::
-* Pure Space::
 * Cons::
 * Vector::
 * Bit Vector::
@@ -4449,10 +4392,10 @@ Some Lisp objects, especially those that are primarily used internally,
 have no corresponding Lisp primitives.  Every Lisp object, though,
 has at least one C primitive for creating it.
 
-  Recall from section (VII) that a Lisp object, as stored in a 32-bit
-or 64-bit word, has a mark bit, a few tag bits, and a ``value'' that
-occupies the remainder of the bits.  We can separate the different
-Lisp object types into four broad categories:
+  Recall from section (VII) that a Lisp object, as stored in a 32-bit or
+64-bit word, has a few tag bits, and a ``value'' that occupies the
+remainder of the bits.  We can separate the different Lisp object types
+into three broad categories:
 
 @itemize @bullet
 @item
@@ -4463,54 +4406,28 @@ for such objects.  Lisp objects of these types do not need to be
 @code{GCPRO}ed.
 @end itemize
 
-  In the remaining three categories, the value is a pointer to a
-structure.
-
-@itemize @bullet
-@item
-@cindex frob block
-(b) Those for whom the tag directly specifies the type.  Recall that
-there are only three tag bits; this means that at most five types can be
-specified this way.  The most commonly-used types are stored in this
-format; this includes conses, strings, vectors, and sometimes symbols.
-With the exception of vectors, objects in this category are allocated in
-@dfn{frob blocks}, i.e. large blocks of memory that are subdivided into
-individual objects.  This saves a lot on malloc overhead, since there
-are typically quite a lot of these objects around, and the objects are
-small.  (A cons, for example, occupies 8 bytes on 32-bit machines---4
-bytes for each of the two objects it contains.) Vectors are individually
-@code{malloc()}ed since they are of variable size.  (It would be
-possible, and desirable, to allocate vectors of certain small sizes out
-of frob blocks, but it isn't currently done.) Strings are handled
-specially: Each string is allocated in two parts, a fixed size structure
-containing a length and a data pointer, and the actual data of the
-string.  The former structure is allocated in frob blocks as usual, and
-the latter data is stored in @dfn{string chars blocks} and is relocated
-during garbage collection to eliminate holes.
-@end itemize
-
   In the remaining two categories, the type is stored in the object
 itself.  The tag for all such objects is the generic @dfn{lrecord}
-(Lisp_Record) tag.  The first four bytes (or eight, for 64-bit machines)
-of the object's structure are a pointer to a structure that describes
-the object's type, which includes method pointers and a pointer to a
-string naming the type.  Note that it's possible to save some space by
-using a one- or two-byte tag, rather than a four- or eight-byte pointer
-to store the type, but it's not clear it's worth making the change.
+(Lisp_Type_Record) tag.  The first bytes of the object's structure are an
+integer (actually a char) characterising the object's type and some
+flags, in particular the mark bit used for garbage collection.  A
+structure describing the type is accessible thru the
+lrecord_implementation_table indexed with said integer.  This structure
+includes the method pointers and a pointer to a string naming the type.
 
 @itemize @bullet
 @item
-(c) Those lrecords that are allocated in frob blocks (see above).  This
+(b) Those lrecords that are allocated in frob blocks (see above).  This
 includes the objects that are most common and relatively small, and
-includes floats, compiled functions, symbols (when not in category (b)),
+includes conses, strings, subrs, floats, compiled functions, symbols,
 extents, events, and markers.  With the cleanup of frob blocks done in
 19.12, it's not terribly hard to add more objects to this category, but
-it's a bit trickier than adding an object type to type (d) (esp. if the
+it's a bit trickier than adding an object type to type (c) (esp. if the
 object needs a finalization method), and is not likely to save much
 space unless the object is small and there are many of them. (In fact,
 if there are very few of them, it might actually waste space.)
 @item
-(d) Those lrecords that are individually @code{malloc()}ed.  These are
+(c) Those lrecords that are individually @code{malloc()}ed.  These are
 called @dfn{lcrecords}.  All other types are in this category.  Adding a
 new type to this category is comparatively easy, and all types added
 since 19.8 (when the current allocation scheme was devised, by Richard
@@ -4519,17 +4436,11 @@ category.
 @end itemize
 
   Note that bit vectors are a bit of a special case.  They are
-simple lrecords as in category (c), but are individually @code{malloc()}ed
+simple lrecords as in category (b), but are individually @code{malloc()}ed
 like vectors.  You can basically view them as exactly like vectors
 except that their type is stored in lrecord fashion rather than
 in directly-tagged fashion.
 
-  Note that FSF Emacs redesigned their object system in 19.29 to follow
-a similar scheme.  However, given RMS's expressed dislike for data
-abstraction, the FSF scheme is not nearly as clean or as easy to
-extend. (FSF calls items of type (c) @code{Lisp_Misc} and items of type
-(d) @code{Lisp_Vectorlike}, with separate tags for each, although
-@code{Lisp_Vectorlike} is also used for vectors.)
 
 @node Garbage Collection, GCPROing, Introduction to Allocation, Allocation of Objects in XEmacs Lisp
 @section Garbage Collection
@@ -4549,61 +4460,11 @@ Traversing all these objects means traversing all frob blocks,
 all vectors (which are chained in one big list), and all
 lcrecords (which are likewise chained).
 
-  Note that, when an object is marked, the mark has to occur
-inside of the object's structure, rather than in the 32-bit
-@code{Lisp_Object} holding the object's pointer; i.e. you can't just
-set the pointer's mark bit.  This is because there may be many
-pointers to the same object.  This means that the method of
-marking an object can differ depending on the type.  The
-different marking methods are approximately as follows:
-
-@enumerate
-@item
-For conses, the mark bit of the car is set.
-@item
-For strings, the mark bit of the string's plist is set.
-@item
-For symbols when not lrecords, the mark bit of the
-symbol's plist is set.
-@item
-For vectors, the length is negated after adding 1.
-@item
-For lrecords, the pointer to the structure describing
-the type is changed (see below).
-@item
-Integers and characters do not need to be marked, since
-no allocation occurs for them.
-@end enumerate
-
-  The details of this are in the @code{mark_object()} function.
-
-  Note that any code that operates during garbage collection has
-to be especially careful because of the fact that some objects
-may be marked and as such may not look like they normally do.
-In particular:
+  Garbage collection can be invoked explicitly by calling
+@code{garbage-collect} but is also called automatically by @code{eval},
+once a certain amount of memory has been allocated since the last
+garbage collection (according to @code{gc-cons-threshold}).
 
-@itemize @bullet
-Some object pointers may have their mark bit set.  This will make
-@code{FOOBARP()} predicates fail.  Use @code{GC_FOOBARP()} to deal with
-this.
-@item
-Even if you clear the mark bit, @code{FOOBARP()} will still fail
-for lrecords because the implementation pointer has been
-changed (see below).  @code{GC_FOOBARP()} will correctly deal with
-this.
-@item
-Vectors have their size field munged, so anything that
-looks at this field will fail.
-@item
-Note that @code{XFOOBAR()} macros @emph{will} work correctly on object
-pointers with their mark bit set, because the logical shift operations
-that remove the tag also remove the mark bit.
-@end itemize
-
-  Finally, note that garbage collection can be invoked explicitly
-by calling @code{garbage-collect} but is also called automatically
-by @code{eval}, once a certain amount of memory has been allocated
-since the last garbage collection (according to @code{gc-cons-threshold}).
 
 @node GCPROing, Garbage Collection - Step by Step, Garbage Collection, Allocation of Objects in XEmacs Lisp
 @section @code{GCPRO}ing
@@ -4616,14 +4477,17 @@ of accessibility are:
 
 @enumerate
 @item
-All objects that have been @code{staticpro()}d.  This is used for
-any global C variables that hold Lisp objects.  A call to
-@code{staticpro()} happens implicitly as a result of any symbols
-declared with @code{defsymbol()} and any variables declared with
-@code{DEFVAR_FOO()}.  You need to explicitly call @code{staticpro()}
-(in the @code{vars_of_foo()} method of a module) for other global
-C variables holding Lisp objects. (This typically includes
-internal lists and such things.)
+All objects that have been @code{staticpro()}d or
+@code{staticpro_nodump()}ed.  This is used for any global C variables
+that hold Lisp objects.  A call to @code{staticpro()} happens implicitly
+as a result of any symbols declared with @code{defsymbol()} and any
+variables declared with @code{DEFVAR_FOO()}.  You need to explicitly
+call @code{staticpro()} (in the @code{vars_of_foo()} method of a module)
+for other global C variables holding Lisp objects. (This typically
+includes internal lists and such things.).  Use
+@code{staticpro_nodump()} only in the rare cases when you do not want
+the pointed variable to be saved at dump time but rather recompute it at
+startup.
 
 Note that @code{obarray} is one of the @code{staticpro()}d things.
 Therefore, all functions and variables get marked through this.
@@ -4822,16 +4686,16 @@ function evaluates calls of elisp functions and works according to
 
 The upshot is that garbage collection can basically occur everywhere
 @code{Feval}, respectively @code{Ffuncall}, is used - either directly or
-through another function. Since calls to these two functions are
-hidden in various other functions, many calls to
-@code{garabge_collect_1} are not obviously foreseeable, and therefore
-unexpected. Instances where they are used that are worth remembering are
-various elisp commands, as for example @code{or},
-@code{and}, @code{if}, @code{cond}, @code{while}, @code{setq}, etc.,
-miscellaneous @code{gui_item_...} functions, everything related to
-@code{eval} (@code{Feval_buffer}, @code{call0}, ...) and inside
-@code{Fsignal}. The latter is used to handle signals, as for example the
-ones raised by every @code{QUITE}-macro triggered after pressing Ctrl-g.
+through another function. Since calls to these two functions are hidden
+in various other functions, many calls to @code{garbage_collect_1} are
+not obviously foreseeable, and therefore unexpected. Instances where
+they are used that are worth remembering are various elisp commands, as
+for example @code{or}, @code{and}, @code{if}, @code{cond}, @code{while},
+@code{setq}, etc., miscellaneous @code{gui_item_...} functions,
+everything related to @code{eval} (@code{Feval_buffer}, @code{call0},
+...) and inside @code{Fsignal}. The latter is used to handle signals, as
+for example the ones raised by every @code{QUITE}-macro triggered after
+pressing Ctrl-g.
 
 @node garbage_collect_1, mark_object, Invocation, Garbage Collection - Step by Step
 @subsection @code{garbage_collect_1}
@@ -4852,7 +4716,7 @@ Next the correct frame in which to put
 all the output occurring during garbage collecting is determined. In
 order to be able to restore the old display's state after displaying the
 message, some data about the current cursor position has to be
-saved. The variables @code{pre_gc_curser} and @code{cursor_changed} take
+saved. The variables @code{pre_gc_cursor} and @code{cursor_changed} take
 care of that.
 @item
 The state of @code{gc_currently_forbidden} must be restored after
@@ -4995,7 +4859,7 @@ carefully by going over it and removing just the unmarked pairs.
 
 @item
 The function @code{prune_specifiers} checks all listed specifiers held
-in @code{Vall_speficiers} and removes the ones from the lists that are
+in @code{Vall_specifiers} and removes the ones from the lists that are
 unmarked.
 
 @item
@@ -5301,25 +5165,15 @@ more defensive but less efficient and is used for error-checking.)
   [see @file{lrecord.h}]
 
   All lrecords have at the beginning of their structure a @code{struct
-lrecord_header}.  This just contains a pointer to a @code{struct
+lrecord_header}.  This just contains a type number and some flags,
+including the mark bit.  The type number, thru the
+@code{lrecord_implementation_table}, gives access to a @code{struct
 lrecord_implementation}, which is a structure containing method pointers
 and such.  There is one of these for each type, and it is a global,
 constant, statically-declared structure that is declared in the
-@code{DEFINE_LRECORD_IMPLEMENTATION()} macro. (This macro actually
-declares an array of two @code{struct lrecord_implementation}
-structures.  The first one contains all the standard method pointers,
-and is used in all normal circumstances.  During garbage collection,
-however, the lrecord is @dfn{marked} by bumping its implementation
-pointer by one, so that it points to the second structure in the array.
-This structure contains a special indication in it that it's a
-@dfn{marked-object} structure: the finalize method is the special
-function @code{this_marks_a_marked_record()}, and all other methods are
-null pointers.  At the end of garbage collection, all lrecords will
-either be reclaimed or unmarked by decrementing their implementation
-pointers, so this second structure pointer will never remain past
-garbage collection.
-
-  Simple lrecords (of type (c) above) just have a @code{struct
+@code{DEFINE_LRECORD_IMPLEMENTATION()} macro.
+
+  Simple lrecords (of type (b) above) just have a @code{struct
 lrecord_header} at their beginning.  lcrecords, however, actually have a
 @code{struct lcrecord_header}.  This, in turn, has a @code{struct
 lrecord_header} at its beginning, so sanity is preserved; but it also
@@ -5534,7 +5388,7 @@ simply return the object's size in bytes, exactly as you might expect.
 For an example, see the methods for window configurations and opaques.
 @end enumerate
 
-@node Low-level allocation, Pure Space, lrecords, Allocation of Objects in XEmacs Lisp
+@node Low-level allocation, Cons, lrecords, Allocation of Objects in XEmacs Lisp
 @section Low-level allocation
 
   Memory that you want to allocate directly should be allocated using
@@ -5606,12 +5460,7 @@ appropriate times; this keeps statistics on how much memory is
 allocated, so that garbage-collection can be invoked when the
 threshold is reached.
 
-@node Pure Space, Cons, Low-level allocation, Allocation of Objects in XEmacs Lisp
-@section Pure Space
-
-  Not yet documented.
-
-@node Cons, Vector, Pure Space, Allocation of Objects in XEmacs Lisp
+@node Cons, Vector, Low-level allocation, Allocation of Objects in XEmacs Lisp
 @section Cons
 
   Conses are allocated in standard frob blocks.  The only thing to
@@ -5649,13 +5498,8 @@ tag field in bit vector Lisp words is ``lrecord'' rather than
 @node Symbol, Marker, Bit Vector, Allocation of Objects in XEmacs Lisp
 @section Symbol
 
-  Symbols are also allocated in frob blocks.  Note that the code
-exists for symbols to be either lrecords (category (c) above)
-or simple types (category (b) above), and are lrecords by
-default (I think), although there is no good reason for this.
-
-  Note that symbols in the awful horrible obarray structure are
-chained through their @code{next} field.
+  Symbols are also allocated in frob blocks.  Symbols in the awful
+horrible obarray structure are chained through their @code{next} field.
 
 Remember that @code{intern} looks up a symbol in an obarray, creating
 one if necessary.
@@ -6006,12 +5850,17 @@ A bunch of tables needed to reassign properly the global pointers are
 then written.  They are:
 
 @enumerate
-@item the staticpro array
-@item the dumpstruct array
-@item the lrecord_implementation_table array
-@item a vector of all the offsets to the objects in the file that include a
+@item
+the staticpro array
+@item
+the dumpstruct array
+@item
+the lrecord_implementation_table array
+@item
+a vector of all the offsets to the objects in the file that include a
 description (for faster relocation at reload time)
-@item the pdump_wired and pdump_wired_list arrays
+@item
+the pdump_wired and pdump_wired_list arrays
 @end enumerate
 
 For each of the arrays we write both the pointer to the variables and
@@ -6581,13 +6430,13 @@ in the lambda list.
 are converted into an internal form for faster execution.
 
 When a compiled function is executed for the first time by
-@code{funcall_compiled_function()}, or when it is @code{Fpurecopy()}ed
-during the dump phase of building XEmacs, the byte-code instructions are
-converted from a @code{Lisp_String} (which is inefficient to access,
-especially in the presence of MULE) into a @code{Lisp_Opaque} object
-containing an array of unsigned char, which can be directly executed by
-the byte-code interpreter.  At this time the byte code is also analyzed
-for validity and transformed into a more optimized form, so that
+@code{funcall_compiled_function()}, or during the dump phase of building
+XEmacs, the byte-code instructions are converted from a
+@code{Lisp_String} (which is inefficient to access, especially in the
+presence of MULE) into a @code{Lisp_Opaque} object containing an array
+of unsigned char, which can be directly executed by the byte-code
+interpreter.  At this time the byte code is also analyzed for validity
+and transformed into a more optimized form, so that
 @code{execute_optimized_program()} can really fly.
 
 Here are some of the optimizations performed by the internal byte-code
@@ -6602,7 +6451,7 @@ variable are checked for being correct non-constant (i.e. not @code{t},
 @code{nil}, or @code{keywordp}) symbols, so that the byte interpreter
 doesn't have to.
 @item
-The maxiumum number of variable bindings in the byte-code is
+The maximum number of variable bindings in the byte-code is
 pre-computed, so that space on the @code{specpdl} stack can be
 pre-reserved once for the whole function execution.
 @item
@@ -6708,7 +6557,7 @@ All of these are very simple and work as expected, calling
 @code{let} and @code{let*}) using @code{specbind()} to create bindings
 and @code{unbind_to()} to undo the bindings when finished.
 
-Note that, with the exeption of @code{Fprogn}, these functions are
+Note that, with the exception of @code{Fprogn}, these functions are
 typically called in real life only in interpreted code, since the byte
 compiler knows how to convert calls to these functions directly into
 byte code.
@@ -8049,7 +7898,7 @@ Furthermore, there is logically a @dfn{selected console},
 @dfn{selected display}, @dfn{selected frame}, and @dfn{selected window}.
 Each of these objects is distinguished in various ways, such as being the
 default object for various functions that act on objects of that type.
-Note that every containing object rememembers the ``selected'' object
+Note that every containing object remembers the ``selected'' object
 among the objects that it contains: e.g. not only is there a selected
 window, but every frame remembers the last window in it that was
 selected, and changing the selected frame causes the remembered window
@@ -8422,7 +8271,7 @@ Output changes Implemented by @code{redisplay-output.c},
 @code{redisplay-x.c}, @code{redisplay-msw.c} and @code{redisplay-tty.c}
 @end enumerate
 
-Steps 1 and 2 are device-independant and relatively complex.  Step 3 is
+Steps 1 and 2 are device-independent and relatively complex.  Step 3 is
 mostly device-dependent.
 
 Determining the desired display
@@ -8433,7 +8282,7 @@ Display attributes are stored in @code{display_line} structures. Each
 dynarr's of @code{display_line}'s are held by each window representing
 the current display and the desired display.
 
-The @code{display_line} structures are tighly tied to buffers which
+The @code{display_line} structures are tightly tied to buffers which
 presents a problem for redisplay as this connection is bogus for the
 modeline. Hence the @code{display_line} generation routines are
 duplicated for generating the modeline. This means that the modeline
@@ -8766,7 +8615,7 @@ is generally possible to display an image-instance in multiple
 domains. For instance if we create a Pixmap, we can actually display
 this on multiple windows - even though we only need a single Pixmap
 instance to do this. If caching wasn't done then it would be necessary
-to create image-instances for every displayable occurrance of a glyph -
+to create image-instances for every displayable occurrence of a glyph -
 and every usage - and this would be extremely memory and cpu intensive.
 
 Widget-glyphs (a.k.a native widgets) are not cached in this way. This is
@@ -8802,7 +8651,7 @@ tree recursively.
 This has desirable properties such as lw_modify_all_widgets which is
 called from glyphs-x.c and updates all the properties of a widget
 without having to know what the widget is or what toolkit it is from.
-Unfortunately this also has hairy properrties such as making the lwlib
+Unfortunately this also has hairy properties such as making the lwlib
 code quite complex. And of course lwlib has to know at some level what
 the widget is and how to set its properties.
 
index 59aa856..62fc2e8 100644 (file)
@@ -226,7 +226,7 @@ backup version 3 is excess.  The function @code{find-backup-file-name}
 (@pxref{Backup Names}) is responsible for determining which backup
 versions to delete, but does not delete them itself.
 
-@defopt trim-versions-without-asking
+@defopt delete-old-versions
 If this variable is non-@code{nil}, then saving a file deletes excess
 backup versions silently.  Otherwise, it asks the user whether to delete
 them.
index 7ca98a7..7ee4fcf 100644 (file)
@@ -477,8 +477,8 @@ The values are used just after a new backup version is made;
 that newly made backup is included in the count in @code{kept-new-versions}.
 By default, both variables are 2.
 
-@vindex trim-versions-without-asking
-  If @code{trim-versions-without-asking} is non-@code{nil},  excess
+@vindex delete-old-versions
+  If @code{delete-old-versions} is non-@code{nil},  excess
 middle versions are deleted without notification.  If it is @code{nil}, the
 default, you are asked whether the excess middle versions should
 really be deleted.
index 7565951..0ec6b19 100644 (file)
@@ -1,3 +1,18 @@
+2000-02-21  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.30 is released.
+
+2000-02-21  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+       * README: Tidy up.
+       Document need for makeinfo program or texinfo package.
+
+       * Xmd.patch: New file, previously in README.
+
+2000-02-17  Martin Buchholz  <martin@xemacs.org>
+
+       * config.h: Delete unused HAVE_LINUX_VERSION_H.
+
 2000-02-16  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.29 is released.
index a6e5c95..67c6889 100644 (file)
--- a/nt/README
+++ b/nt/README
@@ -1,4 +1,4 @@
-            Building and Installing XEmacs on Windows NT
+Building and Installing XEmacs on Windows NT            -*- mode:outline -*-
 
                             David Hobley
                            Marc Paquette
@@ -8,28 +8,61 @@ The port was made much easier by the groundbreaking work of Geoff Voelker
 and others who worked on the GNU Emacs port to NT. Their version is available
 from http://www.cs.washington.edu/homes/voelker/ntemacs.html
 
-To get it working you will need:
 
-1.  You will need Visual C++ V4.0 or later to compile everything. Personally we
-    have tested V4.0, V4.2 and V5.0.
-    Note that Visual C++ assumes a couple of environment variables INCLUDE and
-    LIB to be set which specify the location of the includes and libraries.
-    Your PATH environment variable also needs to include the DevStudio vc\bin
-    and sharedide\bin directories.
+* Required tools and sources
+============================
+
+1.  You will need Visual C++ V4.0 or later to compile everything. Personally
+    we have tested V4.0, V4.2, V5.0 and v6.0.
+
+    Note that Visual C++ assumes that the environment variables INCLUDE and
+    LIB are set to specify the location of the includes and libraries.
+    Your PATH environment variable also needs to include the DevStudio
+    vc\bin and sharedide\bin directories.
+
     Visual C++ V5.0 installs a batch file called vcvars32.bat in
     c:\Program Files\DevStudio\VC\bin\ (or wherever you installed it) that you
     can run before building to set up all of these environment variables.
 
-2.  Grab the latest XEmacs source from ftp.xemacs.org if necessary. All Win32
-    support is in the nt\ subdirectory. You'll also need the xemacs-base
-    package from the binary-packages subdirectory and you'll probably also
-    want at least the edit-utils, text-modes, fsf-compat, cc-mode,
-    prog-modes and xemacs-devel packages.
+2.  Grab the latest XEmacs source from ftp.xemacs.org if necessary.
+
+    You'll also need the xemacs-base package from the binary-packages
+    subdirectory and you'll probably also want at least the edit-utils,
+    text-modes, fsf-compat, cc-mode, prog-modes and xemacs-devel
+    packages.
+
+    You'll also need the texinfo package unless you have a copy of
+    makeinfo.exe on your machine.
+
     Unpack the packages into, say, "c:\Program Files\XEmacs\xemacs-packages".
 
-3.  At this point you can select X or Win32 native GUI support.
+3.  At this point you can choose to build for X and/or for Win32 native GUI.
+    If you only want to build for the Win32 native GUI then skip the next
+    section.
+
+
+** Extra tools and sources required for X
+
+If you want support for X you will also need:
+
+1.  An X server. MI/X is available on the Internet for free; It is 
+    available from: http://www.microimages.com/www/html/freestuf/mixdlfrm.htm
+
+2.  Source for the MIT X11R6.3 libraries, available from: ftp.x.org
+
+3.  You'll need to compile the MIT libraries without multi-thread support.
+    To do this, there is an example Win32.cf and site.def provided which set
+    the relevant flags. You will also need to apply the patch in nt/X11.patch
+    in the xc/lib/X11 directory which will fix the DLL definition file.
+
+    Once compiled and installed, you will need to apply the patch in
+    nt/Xmd.patch. This is messy and better solutions would be appreciated.
+
+4.  Goto step 2 under 'Optional libraries' below.
+
 
-If you want to build for native GUI:
+* Optional libraries
+====================
 
 1.  If you want XPM image and toolbar support grab the latest version of the
     xpm sources (xpm-3.4k.tar.gz at time of writing) and unpack them somewhere.
@@ -63,10 +96,14 @@ If you want to build for native GUI:
     directory.  cd to that directory and build libcompface with 
     'nmake -f compface.mak'.
 
-6.  cd to the nt subdirectory of the xemacs distribution and build xemacs:
+
+* Building
+==========
+
+1.  cd to the nt subdirectory of the xemacs distribution and build xemacs:
     `nmake install -f xemacs.mak`, but read on before hitting Enter.
 
-7.  If you're building with XPM support, add this to the nmake command line:
+2.  If you're building with XPM support, add this to the nmake command line:
        HAVE_XPM=1 XPM_DIR="x:\location\of\your\xpm\sources"
     and similarly for JPEG and TIFF support.
 
@@ -78,77 +115,79 @@ If you want to build for native GUI:
        HAVE_GIF=1
 
     If you're building with X-Face support, add this to the nmake command line:
-    HAVE_XFACE=1 COMPFACE_DIR="x:\location\of\your\compface\sources"
+        HAVE_XFACE=1 COMPFACE_DIR="x:\location\of\your\compface\sources"
+
+    If you're building for X, add this to the nmake command line:
+       HAVE_X=1 X11_DIR=x:\root\directory\of\your\X11\installation
 
-8.  By default, XEmacs will expect to find its packages in the subdirectories
+3.  By default, XEmacs will expect to find its packages in the subdirectories
     "site-packages", "mule-packages" and "xemacs-packages" under the package
     prefix directory "c:\Program Files\XEmacs". If you want it to look for
     these subdirectories elsewhere, add this to the nmake command line:
        PACKAGE_PREFIX="x:\your\package\directory"
     If you change your mind and want to alter the package prefix directory
-    after you've built XEmacs, delete the file .\obj\emacs.obj and rebuild with
-    the new PACKAGE_PREFIX.
+    after you've built XEmacs, delete the file nt\obj\emacs.obj and rebuild
+    with the new PACKAGE_PREFIX setting.
 
-9.  By default, XEmacs will be installed in directories under the directory
-    "c:\Program Files\XEmacs\XEmacs-21.0". If you want to install it elsewhere,
-    add this to the nmake command line:
+4.  By default, XEmacs will be installed in directories under the directory
+    "c:\Program Files\XEmacs\XEmacs-21.2". If you want to install it
+    elsewhere, add this to the nmake command line:
        INSTALL_DIR="x:\your\installation\directory"
 
-10. Now you can press Enter. nmake will build temacs, the DOC file, update the
-    elc's, dump xemacs and install the relevant files in the directories under
-    the installation directory. Unless you set INSTALL_DIR above, the file that
-    you should run to start XEmacs will be installed as 
-    "c:\Program Files\XEmacs\XEmacs-21.0\i386-pc-win32\runemacs.exe". You may
-    want to create a shortcut to that file from your Desktop or Start Menu.
-
-11. The build process always creates debugging and "Source Browser" information
-    in the source tree for use with MS DevStudio. If you actually want to debug
-    XEmacs you should run XEmacs from the source directory instead of from the
-    installation directory. You should probably also build a debug version of
-    XEmacs; to do this start with a clean source tree and add DEBUG_XEMACS=1 to
-    the nmake command line. You probably don't want to install your debug build
-    so you should tell nmake to build the 'all' target instead of the 'install'
-    target.
-
-    To make use of the debugging and "Source Browser" information, create a new
-    "console" project in MS DevStudio and, under Project/Settings, set:
+5.  XEmacs can build its info files more quickly if you have a copy of the
+    makeinfo program. If you have a copy, add this to the nmake command line:
+       MAKEINFO="x:\location\of\makeinfo.exe"
+    If you don't have a copy of makeinfo then you'll need to have installed
+    the XEmacs texinfo package.
+
+6.  Now you can press Enter. nmake will build temacs, the DOC file, update
+    the elc's, dump xemacs and install the relevant files in the directories
+    under the installation directory.
+
+    Unless you set INSTALL_DIR above, the file that you should run to start
+    XEmacs will be installed as
+        "c:\Program Files\XEmacs\XEmacs-21.2\i586-pc-win32\runxemacs.exe".
+    You may want to create a shortcut to that file from your Desktop or
+    Start Menu.
+
+
+* Debugging under MS Developer Studio
+=====================================
+
+The build process always creates debugging and "Source Browser" information
+in the source tree for use with DevStudio. If you actually want to debug
+XEmacs you should probably build a debug version of XEmacs:
+
+1.  Delete the directory nt\obj and it's contents.
+
+2.  Add DEBUG_XEMACS=1 to the nmake command line and rebuild. You probably
+    don't want to install your debug build so you should tell nmake to build
+    the 'all' target instead of the 'install' target.
+
+3.  To make use of the debugging and "Source Browser" information, create a
+    new "console" project in DevStudio and, under Project/Settings, set:
        Debug: executable name = full path of src\xemacs.exe
        Link: output file name = full path of src\temacs.exe
        Browse Info: browse info file name = full path of src\temacs.bsc
     Remember to close the Source Browser file in DevStudio before rebuilding.
 
+4.  Start XEmacs from within DevStudio or by running src\xemacs.exe so that
+    you get a console window which may contain helpful debugging info.
 
-If you want support for X you will need:
+5.  To display the contents of a lisp variable click Debug/QuickWatch, type
+    debug_print(variable) and click Recalculate. The output will appear in
+    the console window.
 
-1.  An X server. MI/X is available on the Internet for free; It is 
-    available from:  http://www.microimages.com/www/html/freestuf/mixdlfrm.htm
-
-2.  The MIT X11R6.3 libraries available from: ftp.x.org
+6.  To view lisp variables in the "Watch" window wrap the variable in one of
+    the helper functions from the file src\console-msw.c. eg type
+    DSTRING(variable) in the "Watch" window to inspect a lisp string.
 
-3.  You'll need to compile the MIT libraries without multi-thread support.
-    To do this, there is an example Win32.cf and site.def provided which
-    set the relevant flags. You will also need to apply the patch in 
-    nt/X11.patch in the xc/lib/X11 directory which will fix the DLL definition
-    file. Once compiled and installed, you will need to apply the following
-    patch to Xmd.h. This is messy and better solutions would be appreciated. 
 
-4.  Goto 2 under 'native GUI' above and add this to the nmake command line:
-       HAVE_X=1 X11_DIR=x:\root\directory\of\your\X11\installation
+* Known Problems
+================
 
---- Xmd.h~     Thu Jun 08 23:20:40 1995
-+++ Xmd.h      Sun Mar 16 13:09:10 1997
-@@ -150,8 +150,9 @@
- typedef CARD16                BITS16;
- typedef CARD8         BYTE;
-+#ifndef WIN32
- typedef CARD8           BOOL;
--
-+#endif
-Known Problems:
-Please look at the TODO list for the current list of problems and people 
-working on them.
+Please look at the PROBLEMS file for known problems and at the TODO list for
+the current list of problems and people working on them.
 
 Any other problems you need clarified, please email us and we will endeavour
 to provide any assistance we can:
index 9a155f0..f751412 100644 (file)
@@ -154,7 +154,6 @@ Boston, MA 02111-1307, USA.  */
 #undef HAVE_UTIME_H
 #undef HAVE_SYS_WAIT_H
 #undef HAVE_LIBGEN_H
-#undef HAVE_LINUX_VERSION_H
 #undef WORDS_BIGENDIAN
 #undef TIME_WITH_SYS_TIME
 
index 3969701..46c21a4 100644 (file)
@@ -64,16 +64,13 @@ function ldp {
   call debug_print ($1);
 }
 
+Lisp_Type_Int=-2
+
 # A bug in dbx prevents string variables from having values beginning with `-'!!
 function XEmacsInit {
   function ToInt { eval "$1=\$[(int) \`alloc.c\`$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
@@ -122,9 +119,12 @@ function decode_object {
   fi
 
   if test $type = $Lisp_Type_Record; then
-    typeset lheader="((struct lrecord_header *) $val)"
+    lheader="((struct lrecord_header *) $val)"
+    lrecord_type=$[(enum lrecord_type) $lheader->type]
     imp=$[(void*)(`alloc.c`lrecord_implementations_table[$lheader->type])]
   else
+    lheader="((struct lrecord_header *) -1)"
+    lrecord_type=-1
     imp="0xdeadbeef"
   fi
   # printvar obj val type imp
@@ -144,10 +144,6 @@ 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]"
@@ -220,14 +216,11 @@ function dump-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
+function pstruct { # pstruct foo.c struct-name
+  module "$1" > /dev/null
+  type_ptr="((struct $2 *) $val)"
+  print $type_ptr
+  print *$type_ptr
 }
 
 document pobj << 'end'
@@ -245,104 +238,110 @@ function pobj {
     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 $lrecord_type = lrecord_type_string; then
+    pstruct alloc.c Lisp_String
+  elif test $lrecord_type = lrecord_type_cons; then
+    pstruct alloc.c Lisp_Cons
+  elif test $lrecord_type = lrecord_type_symbol; then
+    pstruct symbols.c Lisp_Symbol
+    echo "Symbol name: $[(char *)($type_ptr->name->data)]"
+  elif test $lrecord_type = lrecord_type_vector; then
+    pstruct alloc.c Lisp_Vector
+    echo "Vector of length $[$type_ptr->size]"
+  elif test $lrecord_type = lrecord_type_bit_vector; then
+    pstruct fns.c Lisp_Bit_Vector
+  elif test $lrecord_type = lrecord_type_buffer; then
+    pstruct buffer.c buffer
+  elif test $lrecord_type = lrecord_type_char_table; then
+    pstruct chartab.c Lisp_Char_Table
+  elif test $lrecord_type = lrecord_type_char_table_entry; then
+    pstruct chartab.c Lisp_Char_Table_Entry
+  elif test $lrecord_type = lrecord_type_charset; then
+    pstruct mule-charset.c Lisp_Charset
+  elif test $lrecord_type = lrecord_type_coding_system; then
+    pstruct file-coding.c Lisp_Coding_System
+  elif test $lrecord_type = lrecord_type_color_instance; then
+    pstruct objects.c Lisp_Color_Instance
+  elif test $lrecord_type = lrecord_type_command_builder; then
+    pstruct event-stream.c command_builder
+  elif test $lrecord_type = lrecord_type_compiled_function; then
+    pstruct bytecode.c Lisp_Compiled_Function
+  elif test $lrecord_type = lrecord_type_console; then
+    pstruct console.c console
+  elif test $lrecord_type = lrecord_type_database; then
+    pstruct database.c Lisp_Database
+  elif test $lrecord_type = lrecord_type_device; then
+    pstruct device.c device
+  elif test $lrecord_type = lrecord_type_event; then
+    pstruct events.c Lisp_Event
+  elif test $lrecord_type = lrecord_type_extent; then
+    pstruct extents.c extent
+  elif test $lrecord_type = lrecord_type_extent_auxiliary; then
+    pstruct extents.c extent_auxiliary
+  elif test $lrecord_type = lrecord_type_extent_info; then
+    pstruct extents.c extent_info
+  elif test $lrecord_type = lrecord_type_face; then
+    pstruct faces.c Lisp_Face
+  elif test $lrecord_type = lrecord_type_float; then
+    pstruct floatfns.c Lisp_Float
+  elif test $lrecord_type = lrecord_type_font_instance; then
+    pstruct objects.c Lisp_Font_Instance
+  elif test $lrecord_type = lrecord_type_frame; then
+    pstruct frame.c frame
+  elif test $lrecord_type = lrecord_type_glyph; then
+    pstruct glyph.c Lisp_Glyph
+  elif test $lrecord_type = lrecord_type_gui_item; then
+    pstruct gui.c Lisp_Gui_Item
+  elif test $lrecord_type = lrecord_type_hash_table; then
+    pstruct elhash.c Lisp_Hash_Table
+  elif test $lrecord_type = lrecord_type_image_instance; then
+    pstruct glyphs.c Lisp_Image_Instance
+  elif test $lrecord_type = lrecord_type_keymap; then
+    pstruct keymap.c Lisp_Keymap
+  elif test $lrecord_type = lrecord_type_lcrecord_list; then
+    pstruct alloc.c lcrecord_list
+  elif test $lrecord_type = lrecord_type_ldap; then
+    pstruct ldap.c Lisp_LDAP
+  elif test $lrecord_type = lrecord_type_lstream; then
+    pstruct lstream.c lstream
+  elif test $lrecord_type = lrecord_type_marker; then
+    pstruct marker.c Lisp_Marker
+  elif test $lrecord_type = lrecord_type_opaque; then
+    pstruct opaque.c Lisp_Opaque
+  elif test $lrecord_type = lrecord_type_opaque_ptr; then
+    pstruct opaque.c Lisp_Opaque_Ptr
+  elif test $lrecord_type = lrecord_type_popup_data; then
+    pstruct gui-x.c popup_data
+  elif test $lrecord_type = lrecord_type_process; then
+    pstruct process.c Lisp_Process
+  elif test $lrecord_type = lrecord_type_range_table; then
+    pstruct rangetab.c Lisp_Range_Table
+  elif test $lrecord_type = lrecord_type_specifier; then
+    pstruct specifier.c Lisp_Specifier
+  elif test $lrecord_type = lrecord_type_subr; then
+    pstruct eval.c Lisp_Subr
+  elif test $lrecord_type = lrecord_type_symbol_value_buffer_local; then
+    pstruct symbols.c symbol_value_buffer_local
+  elif test $lrecord_type = lrecord_type_symbol_value_forward; then
+    pstruct symbols.c symbol_value_forward
+  elif test $lrecord_type = lrecord_type_symbol_value_lisp_magic; then
+    pstruct symbols.c symbol_value_lisp_magic
+  elif test $lrecord_type = lrecord_type_symbol_value_varalias; then
+    pstruct symbols.c symbol_value_varalias
+  elif test $lrecord_type = lrecord_type_timeout; then
+    pstruct event-stream.c Lisp_Timeout
+  elif test $lrecord_type = lrecord_type_toolbar_button; then
+    pstruct toolbar.c toolbar_button
+  elif test $lrecord_type = lrecord_type_tooltalk_message; then
+    pstruct tooltalk.c Lisp_Tooltalk_Message
+  elif test $lrecord_type = lrecord_type_tooltalk_pattern; then
+    pstruct tooltalk.c Lisp_Tooltalk_Pattern
+  elif test $lrecord_type = lrecord_type_weak_list; then
+    pstruct data.c weak_list
+  elif test $lrecord_type = lrecord_type_window; then
+    pstruct window.c window
+  elif test $lrecord_type = lrecord_type_window_configuration; then
+    pstruct window.c window_config
   elif test "$type" = "null_pointer"; then
     echo "Lisp Object is a null pointer!!"
   else
@@ -351,14 +350,8 @@ function pobj {
   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
+# dbxenv mt_watchpoints on
 
 function dp_core {
   print ((struct x_frame *)(((struct frame*)(Fselected_frame(Qnil)&0x00FFFFFF))->frame_data))->widget->core
index b08c0a0..13ff77d 100644 (file)
 set print union off
 set print pretty off
 
+set $Lisp_Type_Int = -2
+
 define decode_object
   set $obj = (unsigned long) $arg0
   if $obj & 1
   # It's an int
     set $val = $obj >> 1
-    set $type = Lisp_Type_Int
+    set $type = $Lisp_Type_Int
   else
     set $type = $obj & dbg_typemask
     if $type == Lisp_Type_Char
@@ -65,9 +67,12 @@ define decode_object
   end
 
   if $type == Lisp_Type_Record
-    set $lheader = (struct lrecord_header *) $val
-    set $imp = lrecord_implementations_table[$lheader->type]
+    set $lheader = ((struct lrecord_header *) $val)
+    set $lrecord_type = ($lheader->type)
+    set $imp = lrecord_implementations_table[$lrecord_type]
   else
+    set $lrecord_type = -1
+    set $lheader = -1
     set $imp = -1
   end
 end
@@ -85,30 +90,13 @@ end
 
 define xtype
   decode_object $arg0
-  if $type == Lisp_Type_Int
+  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
@@ -240,15 +228,21 @@ end
 
 # GDB's command language makes you want to ...
 
-define pstruct
-  set $xstruct = (struct $arg0 *) $val
-  print $xstruct
-  print *$xstruct
+define ptype
+  set $type_ptr = ($arg0 *) $val
+  print $type_ptr
+  print *$type_ptr
+end
+
+define pstructtype
+  set $type_ptr = (struct $arg0 *) $val
+  print $type_ptr
+  print *$type_ptr
 end
 
 define pobj
   decode_object $arg0
-  if $type == Lisp_Type_Int
+  if $type == $Lisp_Type_Int
     printf "Integer: %d\n", $val
   else
   if $type == Lisp_Type_Char
@@ -258,152 +252,161 @@ define pobj
       printf "Char: %d\n", $val
     end
   else
-  if $type == Lisp_Type_String || $imp == &lrecord_string
-    pstruct Lisp_String
+  if $lrecord_type == lrecord_type_string
+    ptype Lisp_String
+  else
+  if $lrecord_type == lrecord_type_cons
+    ptype Lisp_Cons
+  else
+  if $lrecord_type == lrecord_type_symbol
+    ptype Lisp_Symbol
+    printf "Symbol name: %s\n", $type_ptr->name->data
   else
-  if $type == Lisp_Type_Cons   || $imp == &lrecord_cons
-    pstruct Lisp_Cons
+  if $lrecord_type == lrecord_type_vector
+    ptype Lisp_Vector
+    printf "Vector of length %d\n", $type_ptr->size
+    #print *($type_ptr->data) @ $type_ptr->size
   else
-  if $type == Lisp_Type_Symbol || $imp == &lrecord_symbol
-    pstruct Lisp_Symbol
-    printf "Symbol name: %s\n", $xstruct->name->data
+  if $lrecord_type == lrecord_type_bit_vector
+    ptype Lisp_Bit_Vector
   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
+  if $lrecord_type == lrecord_type_buffer
+    pstructtype buffer
   else
-  if $imp == &lrecord_bit_vector
-    pstruct Lisp_Bit_Vector
+  if $lrecord_type == lrecord_type_char_table
+    ptype Lisp_Char_Table
   else
-  if $imp == &lrecord_buffer
-    pstruct buffer
+  if $lrecord_type == lrecord_type_char_table_entry
+    ptype Lisp_Char_Table_Entry
   else
-  if $imp == &lrecord_char_table
-    pstruct Lisp_Char_Table
+  if $lrecord_type == lrecord_type_charset
+    ptype Lisp_Charset
   else
-  if $imp == &lrecord_char_table_entry
-    pstruct Lisp_Char_Table_Entry
+  if $lrecord_type == lrecord_type_coding_system
+    ptype Lisp_Coding_System
   else
-  if $imp == &lrecord_charset
-    pstruct Lisp_Charset
+  if $lrecord_type == lrecord_type_color_instance
+    ptype Lisp_Color_Instance
   else
-  if $imp == &lrecord_coding_system
-    pstruct Lisp_Coding_System
+  if $lrecord_type == lrecord_type_command_builder
+    ptype command_builder
   else
-  if $imp == &lrecord_color_instance
-    pstruct Lisp_Color_Instance
+  if $lrecord_type == lrecord_type_compiled_function
+    ptype Lisp_Compiled_Function
   else
-  if $imp == &lrecord_command_builder
-    pstruct command_builder
+  if $lrecord_type == lrecord_type_console
+    pstructtype console
   else
-  if $imp == &lrecord_compiled_function
-    pstruct Lisp_Compiled_Function
+  if $lrecord_type == lrecord_type_database
+    ptype Lisp_Database
   else
-  if $imp == &lrecord_console
-    pstruct console
+  if $lrecord_type == lrecord_type_device
+    pstructtype device
   else
-  if $imp == &lrecord_database
-    pstruct Lisp_Database
+  if $lrecord_type == lrecord_type_event
+    ptype Lisp_Event
   else
-  if $imp == &lrecord_device
-    pstruct device
+  if $lrecord_type == lrecord_type_extent
+    pstructtype extent
   else
-  if $imp == &lrecord_event
-    pstruct Lisp_Event
+  if $lrecord_type == lrecord_type_extent_auxiliary
+    pstructtype extent_auxiliary
   else
-  if $imp == &lrecord_extent
-    pstruct extent
+  if $lrecord_type == lrecord_type_extent_info
+    pstructtype extent_info
   else
-  if $imp == &lrecord_extent_auxiliary
-    pstruct extent_auxiliary
+  if $lrecord_type == lrecord_type_face
+    ptype Lisp_Face
   else
-  if $imp == &lrecord_extent_info
-    pstruct extent_info
+  if $lrecord_type == lrecord_type_float
+    ptype Lisp_Float
   else
-  if $imp == &lrecord_face
-    pstruct Lisp_Face
+  if $lrecord_type == lrecord_type_font_instance
+    ptype Lisp_Font_Instance
   else
-  if $imp == &lrecord_float
-    pstruct Lisp_Float
+  if $lrecord_type == lrecord_type_frame
+    pstructtype frame
   else
-  if $imp == &lrecord_font_instance
-    pstruct Lisp_Font_Instance
+  if $lrecord_type == lrecord_type_glyph
+    ptype Lisp_Glyph
   else
-  if $imp == &lrecord_frame
-    pstruct frame
+  if $lrecord_type == lrecord_type_gui_item
+    ptype Lisp_Gui_Item
   else
-  if $imp == &lrecord_glyph
-    pstruct Lisp_Glyph
+  if $lrecord_type == lrecord_type_hash_table
+    ptype Lisp_Hash_Table
   else
-  if $imp == &lrecord_hash_table
-    pstruct Lisp_Hash_Table
+  if $lrecord_type == lrecord_type_image_instance
+    ptype Lisp_Image_Instance
   else
-  if $imp == &lrecord_image_instance
-    pstruct Lisp_Image_Instance
+  if $lrecord_type == lrecord_type_keymap
+    ptype Lisp_Keymap
   else
-  if $imp == &lrecord_keymap
-    pstruct Lisp_Keymap
+  if $lrecord_type == lrecord_type_lcrecord_list
+    pstructtype lcrecord_list
   else
-  if $imp == &lrecord_lcrecord_list
-    pstruct lcrecord_list
+  if $lrecord_type == lrecord_type_ldap
+    ptype Lisp_LDAP
   else
-  if $imp == &lrecord_lstream
-    pstruct lstream
+  if $lrecord_type == lrecord_type_lstream
+    pstructtype lstream
   else
-  if $imp == &lrecord_marker
-    pstruct Lisp_Marker
+  if $lrecord_type == lrecord_type_marker
+    ptype Lisp_Marker
   else
-  if $imp == &lrecord_opaque
-    pstruct Lisp_Opaque
+  if $lrecord_type == lrecord_type_opaque
+    ptype Lisp_Opaque
   else
-  if $imp == &lrecord_opaque_ptr
-    pstruct Lisp_Opaque_Ptr
+  if $lrecord_type == lrecord_type_opaque_ptr
+    ptype Lisp_Opaque_Ptr
   else
-  if $imp == &lrecord_popup_data
-    pstruct popup_data
+  if $lrecord_type == lrecord_type_popup_data
+    ptype popup_data
   else
-  if $imp == &lrecord_process
-    pstruct Lisp_Process
+  if $lrecord_type == lrecord_type_process
+    ptype Lisp_Process
   else
-  if $imp == &lrecord_range_table
-    pstruct Lisp_Range_Table
+  if $lrecord_type == lrecord_type_range_table
+    ptype Lisp_Range_Table
   else
-  if $imp == &lrecord_specifier
-    pstruct Lisp_Specifier
+  if $lrecord_type == lrecord_type_specifier
+    ptype Lisp_Specifier
   else
-  if $imp == &lrecord_subr
-    pstruct Lisp_Subr
+  if $lrecord_type == lrecord_type_subr
+    ptype Lisp_Subr
   else
-  if $imp == &lrecord_symbol_value_buffer_local
-    pstruct symbol_value_buffer_local
+  if $lrecord_type == lrecord_type_symbol_value_buffer_local
+    pstructtype symbol_value_buffer_local
   else
-  if $imp == &lrecord_symbol_value_forward
-    pstruct symbol_value_forward
+  if $lrecord_type == lrecord_type_symbol_value_forward
+    pstructtype symbol_value_forward
   else
-  if $imp == &lrecord_symbol_value_lisp_magic
-    pstruct symbol_value_lisp_magic
+  if $lrecord_type == lrecord_type_symbol_value_lisp_magic
+    pstructtype symbol_value_lisp_magic
   else
-  if $imp == &lrecord_symbol_value_varalias
-    pstruct symbol_value_varalias
+  if $lrecord_type == lrecord_type_symbol_value_varalias
+    pstructtype symbol_value_varalias
   else
-  if $imp == &lrecord_toolbar_button
-    pstruct toolbar_button
+  if $lrecord_type == lrecord_type_timeout
+    ptype Lisp_Timeout
   else
-  if $imp == &lrecord_tooltalk_message
-    pstruct Lisp_Tooltalk_Message
+  if $lrecord_type == lrecord_type_toolbar_button
+    pstructtype toolbar_button
   else
-  if $imp == &lrecord_tooltalk_pattern
-    pstruct Lisp_Tooltalk_Pattern
+  if $lrecord_type == lrecord_type_tooltalk_message
+    ptype Lisp_Tooltalk_Message
   else
-  if $imp == &lrecord_weak_list
-    pstruct weak_list
+  if $lrecord_type == lrecord_type_tooltalk_pattern
+    ptype Lisp_Tooltalk_Pattern
   else
-  if $imp == &lrecord_window
-    pstruct window
+  if $lrecord_type == lrecord_type_weak_list
+    pstructtype weak_list
   else
-  if $imp == &lrecord_window_configuration
-    pstruct window_config
+  if $lrecord_type == lrecord_type_window
+    pstructtype window
+  else
+  if $lrecord_type == lrecord_type_window_configuration
+    pstructtype window_config
   else
     echo Unknown Lisp Object type\n
     print $arg0
@@ -423,6 +426,8 @@ define pobj
   end
   end
   end
+  end
+  end
   # Repeat after me... gdb sux, gdb sux, gdb sux...
   end
   end
@@ -460,6 +465,7 @@ define pobj
   end
   end
   end
+  end
 end
 
 document pobj
index b484860..485d8f7 100644 (file)
@@ -1,3 +1,254 @@
+2000-02-21  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.30 is released.
+
+2000-02-20  Martin Buchholz  <martin@xemacs.org>
+
+       Performance hacking.
+       * *.c (syms_of_*):
+       Add INIT_LRECORD_IMPLEMENTATION macros, paired with
+       DEFINE_LRECORD_IMPLEMENTATION macros in the same file.
+       * emacs.c (main_1):
+       * lisp.h (DEFUN):
+       * console.c (DEFVAR_CONSOLE_LOCAL_1):
+       * buffer.c (DEFVAR_BUFFER_LOCAL_1):
+       * symeval.h (DEFVAR_SYMVAL_FWD):
+       * symbols.c (guts_of_unbound_marker):
+       Make all c_readonly objects also lisp_readonly and marked for life.
+       * lrecord.h (struct lrecord_implementation):
+       Document flags better.
+       * lrecord.h (DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION_WITH_PROPS):
+       * lrecord.h (DECLARE_LRECORD):
+       * lrecord.h (XSETRECORD):
+       * lrecord.h (RECORDP):
+       * lrecord.h (RECORD_TYPEP):
+       * lrecord.h (RECORD_MARKER): New.
+       * lrecord.h (error_check_*):
+       * lrecord.h (CONCHECK_NONRECORD):
+       * lrecord.h (MAKE_LRECORD_IMPLEMENTATION):
+       * lrecord.h (INIT_LRECORD_IMPLEMENTATION): New.
+       * lrecord.h (set_lheader_implementation):
+       * lrecord.h (enum lrecord_type): New.
+       * symeval.h (SYMBOL_VALUE_MAGIC_P):
+       * alloc.c (disksave_object_finalization_1):
+       * alloc.c (mark_object):
+       * alloc.c (lrecord_type_index):
+       * alloc.c (tick_lcrecord_stats):
+       * alloc.c (Fgarbage_collect):
+       * alloc.c (init_alloc_once_early):
+       * alloc.c (pdump_load):
+       * alloc.c (GC_CHECK_LHEADER_INVARIANTS): New.
+       * alloc.c (lrecord_type_index): Delete.
+       Make lisp object type indexes be constant.  
+         Makes (byte-compile) 5% faster.
+       Put all marker functions into their own array.  
+         Makes (garbage-collect) 5% faster.
+       Optimize SYMBOL_VALUE_MAGIC_P.
+         Makes (byte-compile) 2-3% faster.
+       * config.h.in (gc_checking_assert): New.
+       * alloc.c: Use gc_checking_assert().
+       * .dbxrc: Make compatible with new object type implementation.
+       * .gdbinit: Make compatible with new object type implementation.
+       * alloc.c: Delete all symbols defined only for debugging, such as
+       Lisp_Type_Vector and lrecord_charset.
+
+2000-02-21  Andy Piper  <andy@xemacs.org>
+
+       * gui-msw.c (Fmswindows_shell_execute): fix file location
+       problems.
+
+       * buffer.c (Fkill_buffer): remove buffer from alist buffer
+       unshowing so that set_window_buffer doesn't undo
+       kill_buffer_hook's hard work.
+
+       * glyphs-widget.c (tab_control_query_geometry): don't count the
+       first item when calculating geometry.
+
+       * glyphs.c (map_subwindow): remove redundant code.
+       (update_frame_subwindows): be more circumspect about when to
+       update subwindows.
+
+       * glyphs-x.c (x_update_widget): Properly fix sizing bug. Fix bug
+       when items haven't changed. Update faces if faces have changed as
+       well as just the widget face.
+       (x_tab_control_update): Update faces if faces have changed as well
+       as just the widget face.
+
+2000-02-21  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+       * device-msw.c: (mswindows_delete_device): Remove redundant DDE
+       registration.
+       (build_syscolor_string): Use mswindows_color_to_string to try to
+       get a named color.
+       (mswindows_device_system_metrics): Reverse the foreground and
+       background colors so that they match the documentation.
+
+       * objects-msw.c: (mswindows_X_color_map): tweak some values so
+       they match the default Windows palette.
+       (mswindows_color_to_string): New function.
+       
+2000-02-21  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+       * s/windowsnt.h: Only use __declspec(noreturn) with MSVC>=6.
+
+2000-02-18  Olivier Galibert  <galibert@pobox.com>
+
+       * m/*, s/*: Removed obsolete DATA_SEG_BITS, PURE_SEG_BITS,
+       WORD_MACHINE, SIGN_EXTEND_CHAR and EXPLICIT_SIGN_EXTEND.
+       
+       * symbols.c (init_symbols_once_early): Removed obsolete
+       DATA_SEG_BITS related kludge.
+       (defvar_magic): Ditto.
+
+       * malloc.c: Removed obsolete DATA_SEG_BITS
+       * ralloc.c: Ditto.
+       * mem-limits.h: Ditto.
+
+       * Makefile.in.in: Removed obsolete HAVE_SHM
+       * emacs.c: Ditto.
+
+2000-02-13  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+       *  device-msw.c (mswindows_delete_device): Free DDE string
+       handles.
+
+2000-02-16  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>
+
+       * keymap.c (get_keyelt): 
+       * unexnt.c (unexec):
+       * vm-limit.c (memory_warnings):
+       * ntheap.c (recreate_heap):
+       * ntheap.h (UNINIT_PTR):
+       * select-msw.c (Fmswindows_get_clipboard): 
+       (Fmswindows_set_clipboard):
+       * objects-msw.h (MSWINDOWS_BAD_HFONT):
+       * objects-msw.c:
+       * menubar-msw.c (displayable_menu_item):
+       * glyphs-msw.c:
+       * glyphs-msw.h (IMAGE_INSTANCE_MSWINDOWS_MASK):
+       * sysdep.c (sys_subshell):
+       * process-nt.c (nt_create_process):
+       * nt.c (normalize_filename):
+       (dostounix_filename): 
+       (unixtodos_filename):
+       * ntproc.c (win32_executable_type):
+       * ntplay.c (play_sound_data_1):
+       (play_sound_file): 
+       * editfns.c (get_home_directory): 
+       * event-msw.c (struct winsock_stream): 
+       (mswindows_dde_callback): 
+       * device-msw.c (msprinter_init_device): 
+       (msprinter_get_devmode_copy): Frobbed syntax frivolities.
+
+       * toolbar-msw.c (mswindows_free_frame_toolbars): Paramters to
+       mswindows_clear_toolbar were swapped!
+
+       * objects-msw.c:(colormap_t):
+       (fontmap_t):
+       * emacs.c (struct standard_args): Fixed const jumble.
+
+       * glyphs-widget.c (update_widget): Fixed comparison notation.
+
+       * event-msw.c (mswindows_dde_callback): Removed extraneous ';'.
+       
+       * s\windowsnt.h (DOESNT_RETURN): Defined to support the MSVC
+       __declspec(noreturn) syntax.
+
+2000-02-19  Martin Buchholz  <martin@xemacs.org>
+
+       * eldap.c (Fldap_open): 
+       (Fldap_search_basic): 
+       (Fldap_add): 
+       (Fldap_modify): 
+       Use new coding system conversion macros.
+
+2000-01-06  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+       * console-tty.c (tty_init_console): Change MULE to FILE_CODING.
+
+1999-11-27  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
+
+       * eldap.h (Fldap_search) Renamed from Fldap_search_internal: 
+       (Fldap_add, Fldap_modify, Fldap_delete): New functions
+
+       * eldap.c (Qadd, Qreplace): New constant symbols
+       (Fldap_open): Use the LDAP_OPT_RESTART option to avoid
+       interruptions by XEmacs signals
+       Remove unnecessary calls to slow_down_interrupts and
+       speed_up_interrupts
+       (Fldap_search_basic): Renamed from Fldap_search_internal
+       Added new optional parameter VERBOSE that triggers the 
+       display of progress messages
+       Remove unnecessary calls to slow_down_interrupts and
+       speed_up_interrupts
+       LDAP result code analysis rewritten
+       (Fldap_add, Fldap_modify, Fldap_delete): New functions
+       (syms_of_eldap): Define the new symbols and functions
+
+
+2000-02-17  Martin Buchholz  <martin@xemacs.org>
+
+       * realpath.c: Determine PATH_MAX maximally portably.
+
+       * insdel.c (bytecount_to_charcount): Optimize.
+       The function used to be optimized for entirely ASCII sequences.
+       Now it is optimized for successive characters from the same
+       charset.  This also wins big for _mostly_ ASCII sequences.
+
+       * fileio.c (Ffile_truename): convert return from realpath() using
+       Qfile_name, not Qbinary.  Fixes obvious bug with non-ASCII symlinks.
+       - Rewrite GCPROing slightly.
+
+       * sysdep.c (sys_open): Do filename conversion, like all other
+       sys_* functions.  Fixes bug:
+       (let ((file-name-coding-system 'iso-8859-2))
+          (write-region x y latin2-name))
+       ==> writes filename using internal encoding.
+
+2000-02-18  Martin Buchholz  <martin@xemacs.org>
+
+       * buffer.c (DEFVAR_BUFFER_LOCAL_1): Turn on c_readonly. Always const.
+       * console.c (DEFVAR_CONSOLE_LOCAL_1): Turn on c_readonly. Always const.
+       * symeval.h (DEFVAR_SYMVAL_FWD): Turn on c_readonly. Always const.
+       * eval.c (lrecord_subr): Remove this_one_is_unmarkable.
+       * symbols.c (lrecord_symbol_value_forward): Remove this_one_is_unmarkable.
+       * symbols.c (guts_of_unbound_marker): Turn on c_readonly.
+       * lrecord.h (UNMARKABLE_LRECORD_HEADER_P): Delete.
+       (CONST_IF_NOT_DEBUG): Delete.
+       * alloc.c (this_one_is_unmarkable): Delete.
+       (mark_object): Don't check for this_one_is_unmarkable. Use the
+       c_readonly flag instead.
+       * lisp.h (DEFUN): Define a Lisp_Subr as c_readonly.
+
+2000-02-18  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+       * event-msw.c (mswindows_drain_windows_queue):
+       (emacs_mswindows_handle_magic_event): Remove attempt to optimise
+       away redundant repaint events.
+
+2000-02-17  Andy Piper  <andy@xemacs.org>
+
+       * redisplay.h: declare mark_redisplay_structs.
+
+       * redisplay.c (redisplay_window):
+       (redisplay_frame): don't check subwindows_state_changed.
+       (mark_redisplay): mark gutters here.
+
+       * glyphs.c: (instantiate_image_instantiator): always layout if we
+       haven't done so already.
+       (allocate_image_instance): don't mark as dirty.
+       (update_subwindow): bind inhibit_quit.
+
+       * gutter.c (mark_gutters): new function.
+
+       * glyphs-x.c (x_update_widget): Always resize to get round a
+       widget bug.
+
+       * glyphs-msw.c (mswindows_tab_control_update): remove `;' that was
+       breaking absolutely everything.
+
+       * gutter.h: declare mark_gutters.
+
 2000-02-16  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.29 is released.
        * general.c (syms_of_general): Initialized it.
 
        * redisplay-msw.c (get_frame_dc): Conditionally start a new page.
-       (get_frame_dc): 
+       (get_frame_dc):
        (get_frame_compdc): Made inline.
 
        * console.h (struct console_methods): Added eject_page method.
        * device.c (Fdevice_printer_p): Used these.
 
        * frame.c (allocate_frame_core): Initialize page number.
-       (Fprint_job_page_number): 
+       (Fprint_job_page_number):
        (Fprint_job_eject_page): Implemented.
 
        * frame-msw.c (msprinter_eject_page): Added method.
 
        * alloc.c (alloc_lcrecord): Add more type checking assertions.
        (vector_hash): New.  Code from internal_hash.
-       * lrecord.h: 
+       * lrecord.h:
        Fix up allocation subsystem comments.
 
        * config.h.in: Add __EXTENSIONS__ for Solaris.
        * sunplay.c (sighandler): Fix prototype to use SIGTYPE.
 
        * lisp.h (STRETCHY_STRUCT_SIZEOF): Delete.
-       * fns.c (size_bit_vector): 
-       * alloc.c (size_vector): 
-       (make_vector_internal): 
-       (make_bit_vector_internal): 
-       (sweep_bit_vectors_1): 
+       * fns.c (size_bit_vector):
+       * alloc.c (size_vector):
+       (make_vector_internal):
+       (make_bit_vector_internal):
+       (sweep_bit_vectors_1):
        Replace calls to STRETCHY_STRUCT_SIZEOF with offsetof expression.
 
 2000-02-10  Martin Buchholz  <martin@xemacs.org>
        * config.h.in: Add HAVE_XCONVERTCASE.
 
 2000-02-07  Andy Piper  <andy@xemacs.org>
-       
+
        * glyphs.c (image_instance_layout): undo 2000-01-29 change since
        it breaks many things.
 
 
        * minibuf.c (echo_area_append): Workaround egcs-20000131 c++ compiler bug
 
-       * ExternalShell.c: 
-       * ExternalClient.c: 
-       * EmacsShell-sub.c: 
-       * EmacsManager.c: 
-       * EmacsFrame.c: 
+       * ExternalShell.c:
+       * ExternalClient.c:
+       * EmacsShell-sub.c:
+       * EmacsManager.c:
+       * EmacsFrame.c:
        Use consistent style for specifying X resources.
 
        * symbols.c (Fset): Further implement SYMVAL_LISP_MAGIC.
        This makes (dontusethis-set-symbol-value-handler) actually usable.
 
        * lrecord.h (lrecord_decription_type):
-       * alloc.c (pdump_register_sub): 
-       (pdump_dump_data): 
-       (pdump_reloc_one): 
+       * alloc.c (pdump_register_sub):
+       (pdump_dump_data):
+       (pdump_reloc_one):
        Add XD_LISP_OBJECT_ARRAY to describe multiple Lisp_Objects.
        Comply with XEmacs coding style.
        All lrecord descriptions updated to use XD_LISP_OBJECT with 2
        args, and XD_LISP_OBJECT_ARRAY with 3 args.
 
-       * keymap.c (Faccessible_keymaps): 
+       * keymap.c (Faccessible_keymaps):
        Make (accessible-keymaps map "\C-h") do the Right Thing.
        Make (accessible-keymaps map []) do the Right Thing.
        Make (accessible-keymaps map "") do the Right Thing.
 2000-01-30  Martin Buchholz  <martin@xemacs.org>
 
        * redisplay.c (init_redisplay): Fix small memory leak.
-       * elhash.h: 
-       * elhash.c (pdump_reorganize_hash_table): 
+       * elhash.h:
+       * elhash.c (pdump_reorganize_hash_table):
        Rename from reorganize_hash_table. Change prototype.
        Reuse the original memory for hentries.  Save 100k.
        * alloc.c (PDUMP_READ): new macro.
        ifdefs in readable order.
        (NEED_STARTS): Do not force NEED_STARTS when PDUMPing.
        (start_of_text):
-       (end_of_text): 
+       (end_of_text):
        (end_of_data): Do not compile in if using PDUMP.
 
        * symsinit.h: Protptyped vars_of_nt().
        (fstat, stat): Do not compile in if using MSVC 5.0 and above -
        stat has been fixed in the C runtime.
        (vars_of_nt): Added, defined the nt_fake_unix_uid variable there.
-       
+
        * file-coding.c (struct file_coding_dump): Do not define
        ucs_to_mule_table in the struct if not MULE.
        (struct struct lrecord_description fcd_description_1): Do not dump
        * faces.c: Moved 'left-margin and 'right-margin defsymbols to
        general.c.
 
-       * console-msw.h: Added more msprinter device private slots.     
+       * console-msw.h: Added more msprinter device private slots.
 
 2000-02-01  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>
 
        only.
 
        * console-msw.h: Moved a few function prototypes here from
-       event-msw.c. 
+       event-msw.c.
 
        * gui-msw.c (mswindows_handle_gui_wm_command): Changed the ID
        parameter from unsigned short to unsigned long.
 
 2000-01-27  URA Hiroshi <ura@hiru.aoba.yokohama.jp>
 
-       * sysdep.c (init_system_name): 
-         process-unix.c (unix_canonicalized_host_name): 
+       * sysdep.c (init_system_name):
+         process-unix.c (unix_canonicalized_host_name):
        Don't call freeaddrinfo() if getaddrinfo() fails.
 
        * process-unix.c (unix_open_unix_network_stream):
 
 2000-01-27  Martin Buchholz  <martin@xemacs.org>
 
-       * buffer.c (reinit_vars_of_buffer): 
+       * buffer.c (reinit_vars_of_buffer):
        The right place to initialize conversion_in_dynarr and
        conversion_out_dynarr.
 
        file-name-coding-system, terminal-coding-system, and
        keyboard-coding-system magical variables that are equivalent to
        defining the corresponding coding system aliases.
-       
+
        * file-coding.c (Fcoding_system_canonical_name_p): New function.
        * file-coding.c (Fcoding_system_alias_p): New function.
        * file-coding.c (Fcoding_system_aliasee): New function.
 
 2000-01-24  Martin Buchholz  <martin@xemacs.org>
 
-       * realpath.c (xrealpath): 
+       * realpath.c (xrealpath):
        Don't call getwd().
 
 2000-01-25  Martin Buchholz  <martin@xemacs.org>
 
 2000-01-24  Martin Buchholz  <martin@xemacs.org>
 
-       * glyphs-widget.c (layout_query_geometry): 
+       * glyphs-widget.c (layout_query_geometry):
        (layout_layout): Use correct types for gheight, gwidth.
 
 2000-01-24  Martin Buchholz  <martin@xemacs.org>
 
 2000-01-23  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>
 
-       * callproc.c: 
-       * dired-msw.c: 
-       * fileio.c: 
-       * process-nt.c: 
-       * redisplay-msw.c: 
+       * callproc.c:
+       * dired-msw.c:
+       * fileio.c:
+       * process-nt.c:
+       * redisplay-msw.c:
        * sysdep.c: Removed redundant #include <windows.h>
 
 2000-01-22  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>
        * frame.c (delete_frame_internal): Do not delete device when its
        implementation so declares.
        (delete_frame_internal): Set device selected frame to nil when
-       last frame goes away. 
+       last frame goes away.
 
        * device-msw.c (msprinter_device_system_metrics): Implemented.
        (mswindows_device_system_metrics): Added 'device-dpi property.
 2000-01-22  Martin Buchholz  <martin@xemacs.org>
 
        * process.c (Fset_process_coding_system):
-       * device-x.c (Fx_keysym_hash_table): 
+       * device-x.c (Fx_keysym_hash_table):
        Docstring fixes.
 
        * lstream.c (Lstream_write): Return documented value, not 0.
 
-       * fileio.c (directory_file_name): 
-       (Fsubstitute_in_file_name): 
-       (Fsubstitute_insert_file_contents_internal): 
+       * fileio.c (directory_file_name):
+       (Fsubstitute_in_file_name):
+       (Fsubstitute_insert_file_contents_internal):
        (Fwrite_region_internal):
        * emacs.c:
        * sysdep.c:
-       * getloadavg.c: 
+       * getloadavg.c:
        * systty.h:
        Remove vestigial APOLLO-conditional code.
 
        * miscplay.h: Add guard macros.
        * *.h: Use consistent C-standards-approved guard macro names.
 
-       * opaque.c (make_opaque): Switch parameter order. 
+       * opaque.c (make_opaque): Switch parameter order.
        * opaque.h (make_opaque): Switch parameter order.
        Update all callers.
        * buffer.h (MAKE_MIRROR_TRT_TABLE): Use symbolic constant OPAQUE_CLEAR.
index ba45163..bcc0103 100644 (file)
@@ -326,17 +326,10 @@ release: temacs ${libsrc}DOC $(mo_file) ${other_files}
 #ifdef CANNOT_DUMP
        ln temacs ${PROGNAME}
 #else
-#ifdef HAVE_SHM
-       -if [ -w ${srcdir}/../lisp ]; then \
-         w=`pwd`; cd ${srcdir} && $${w}/temacs -nl -batch -l ${srcdir}/../lisp/inc-vers; \
-       else true; fi
-       -$(DUMPENV) ./temacs -nl -batch -l ${srcdir}/../lisp/loadup.el dump
-#else /* ! defined (HAVE_SHM) */
        -if [ -w ${srcdir}/../lisp ]; then \
          w=`pwd`; cd ${srcdir} && $${w}/temacs -batch -l ${srcdir}/../lisp/inc-vers; \
        else true; fi
        -$(DUMPENV) ./temacs -batch -l ${srcdir}/../lisp/loadup.el dump
-#endif /* ! defined (HAVE_SHM) */
        touch release
 #endif /* ! defined (CANNOT_DUMP) */
 
index 89f3040..74b6559 100644 (file)
@@ -383,17 +383,14 @@ alloc_lcrecord (size_t size, const struct lrecord_implementation *implementation
 {
   struct lcrecord_header *lcheader;
 
-#ifdef ERROR_CHECK_TYPECHECK
-  if (implementation->static_size == 0)
-    assert (implementation->size_in_bytes_method);
-  else
-    assert (implementation->static_size == size);
-
-  assert (! implementation->basic_p);
-
-  if (implementation->hash == NULL)
-    assert (implementation->equal == NULL);
-#endif
+  type_checking_assert
+    ((implementation->static_size == 0 ?
+      implementation->size_in_bytes_method != NULL :
+      implementation->static_size == size)
+     &&
+     (! implementation->basic_p)
+     &&
+     (! (implementation->hash == NULL && implementation->equal != NULL)));
 
   lcheader = (struct lcrecord_header *) allocate_lisp_storage (size);
   set_lheader_implementation (&(lcheader->lheader), implementation);
@@ -455,24 +452,12 @@ disksave_object_finalization_1 (void)
 
   for (header = all_lcrecords; header; header = header->next)
     {
-      if (LHEADER_IMPLEMENTATION(&header->lheader)->finalizer &&
+      if (LHEADER_IMPLEMENTATION (&header->lheader)->finalizer &&
          !header->free)
-       ((LHEADER_IMPLEMENTATION(&header->lheader)->finalizer)
-        (header, 1));
+       LHEADER_IMPLEMENTATION (&header->lheader)->finalizer (header, 1);
     }
 }
 
-/* Semi-kludge -- lrecord_symbol_value_forward objects get stuck
-   in const space and you get SEGV's if you attempt to mark them.
-   This sits in lheader->implementation->marker. */
-
-Lisp_Object
-this_one_is_unmarkable (Lisp_Object obj)
-{
-  abort ();
-  return Qnil;
-}
-
 \f
 /************************************************************************/
 /*                       Debugger support                              */
@@ -491,42 +476,6 @@ unsigned char dbg_USE_UNION_TYPE = 1;
 unsigned char dbg_USE_UNION_TYPE = 0;
 #endif
 
-unsigned char Lisp_Type_Int = 100;
-unsigned char Lisp_Type_Cons = 101;
-unsigned char Lisp_Type_String = 102;
-unsigned char Lisp_Type_Vector = 103;
-unsigned char Lisp_Type_Symbol = 104;
-
-#ifndef MULE
-unsigned char lrecord_char_table_entry;
-unsigned char lrecord_charset;
-#ifndef FILE_CODING
-unsigned char lrecord_coding_system;
-#endif
-#endif
-
-#if !((defined HAVE_X_WINDOWS) && \
-      (defined (HAVE_MENUBARS)   || \
-       defined (HAVE_SCROLLBARS) || \
-       defined (HAVE_DIALOGS)    || \
-       defined (HAVE_TOOLBARS)   || \
-       defined (HAVE_WIDGETS)))
-unsigned char lrecord_popup_data;
-#endif
-
-#ifndef HAVE_TOOLBARS
-unsigned char lrecord_toolbar_button;
-#endif
-
-#ifndef TOOLTALK
-unsigned char lrecord_tooltalk_message;
-unsigned char lrecord_tooltalk_pattern;
-#endif
-
-#ifndef HAVE_DATABASE
-unsigned char lrecord_database;
-#endif
-
 unsigned char dbg_valbits = VALBITS;
 unsigned char dbg_gctypebits = GCTYPEBITS;
 
@@ -2272,22 +2221,23 @@ mark_lcrecord_list (Lisp_Object obj)
       struct free_lcrecord_header *free_header =
        (struct free_lcrecord_header *) lheader;
 
-#ifdef ERROR_CHECK_GC
-      const struct lrecord_implementation *implementation
-       = LHEADER_IMPLEMENTATION(lheader);
-
-      /* There should be no other pointers to the free list. */
-      assert (!MARKED_RECORD_HEADER_P (lheader));
-      /* Only lcrecords should be here. */
-      assert (!implementation->basic_p);
-      /* Only free lcrecords should be here. */
-      assert (free_header->lcheader.free);
-      /* The type of the lcrecord must be right. */
-      assert (implementation == list->implementation);
-      /* So must the size. */
-      assert (implementation->static_size == 0
-             || implementation->static_size == list->size);
-#endif /* ERROR_CHECK_GC */
+      gc_checking_assert
+       (/* There should be no other pointers to the free list. */
+        ! MARKED_RECORD_HEADER_P (lheader)
+        &&
+        /* Only lcrecords should be here. */
+        ! LHEADER_IMPLEMENTATION (lheader)->basic_p
+        &&
+        /* Only free lcrecords should be here. */
+        free_header->lcheader.free
+        &&
+        /* The type of the lcrecord must be right. */
+        LHEADER_IMPLEMENTATION (lheader) == list->implementation
+        &&
+        /* So must the size. */
+        (LHEADER_IMPLEMENTATION (lheader)->static_size == 0 ||
+         LHEADER_IMPLEMENTATION (lheader)->static_size == list->size)
+        );
 
       MARK_RECORD_HEADER (lheader);
       chain = free_header->chain;
@@ -2325,23 +2275,21 @@ allocate_managed_lcrecord (Lisp_Object lcrecord_list)
        (struct free_lcrecord_header *) XPNTR (val);
 
 #ifdef ERROR_CHECK_GC
-      struct lrecord_header *lheader =
-       (struct lrecord_header *) free_header;
-      const struct lrecord_implementation *implementation
-       = LHEADER_IMPLEMENTATION (lheader);
+      struct lrecord_header *lheader = &free_header->lcheader.lheader;
 
       /* There should be no other pointers to the free list. */
-      assert (!MARKED_RECORD_HEADER_P (lheader));
+      assert (! MARKED_RECORD_HEADER_P (lheader));
       /* Only lcrecords should be here. */
-      assert (!implementation->basic_p);
+      assert (! LHEADER_IMPLEMENTATION (lheader)->basic_p);
       /* Only free lcrecords should be here. */
       assert (free_header->lcheader.free);
       /* The type of the lcrecord must be right. */
-      assert (implementation == list->implementation);
+      assert (LHEADER_IMPLEMENTATION (lheader) == list->implementation);
       /* So must the size. */
-      assert (implementation->static_size == 0
-             || implementation->static_size == list->size);
+      assert (LHEADER_IMPLEMENTATION (lheader)->static_size == 0 ||
+             LHEADER_IMPLEMENTATION (lheader)->static_size == list->size);
 #endif /* ERROR_CHECK_GC */
+
       list->free = free_header->chain;
       free_header->lcheader.free = 0;
       return val;
@@ -2362,19 +2310,16 @@ free_managed_lcrecord (Lisp_Object lcrecord_list, Lisp_Object lcrecord)
   struct lcrecord_list *list = XLCRECORD_LIST (lcrecord_list);
   struct free_lcrecord_header *free_header =
     (struct free_lcrecord_header *) XPNTR (lcrecord);
-  struct lrecord_header *lheader =
-    (struct lrecord_header *) free_header;
+  struct lrecord_header *lheader = &free_header->lcheader.lheader;
   const struct lrecord_implementation *implementation
     = LHEADER_IMPLEMENTATION (lheader);
 
-#ifdef ERROR_CHECK_GC
   /* Make sure the size is correct.  This will catch, for example,
      putting a window configuration on the wrong free list. */
-  if (implementation->size_in_bytes_method)
-    assert (implementation->size_in_bytes_method (lheader) == list->size);
-  else
-    assert (implementation->static_size == list->size);
-#endif /* ERROR_CHECK_GC */
+  gc_checking_assert ((implementation->size_in_bytes_method ?
+                      implementation->size_in_bytes_method (lheader) :
+                      implementation->static_size)
+                     == list->size);
 
   if (implementation->finalizer)
     implementation->finalizer (lheader, 0);
@@ -2398,7 +2343,6 @@ Does not copy symbols.
   return obj;
 }
 
-
 \f
 /************************************************************************/
 /*                        Garbage Collection                           */
@@ -2407,8 +2351,16 @@ Does not copy symbols.
 /* This will be used more extensively In The Future */
 static int last_lrecord_type_index_assigned;
 
-const struct lrecord_implementation *lrecord_implementations_table[128];
-#define max_lrecord_type (countof (lrecord_implementations_table) - 1)
+/* All the built-in lisp object types are enumerated in `enum lrecord_type'.
+   Additional ones may be defined by a module (none yet).  We leave some
+   room in `lrecord_implementations_table' for such new lisp object types. */
+#define MODULE_DEFINABLE_TYPE_COUNT 32
+const struct lrecord_implementation *lrecord_implementations_table[lrecord_type_count + MODULE_DEFINABLE_TYPE_COUNT];
+
+/* Object marker functions are in the lrecord_implementation structure.
+   But copying them to a parallel array is much more cache-friendly.
+   This hack speeds up (garbage-collect) by about 5%. */
+Lisp_Object (*lrecord_markers[countof (lrecord_implementations_table)]) (Lisp_Object);
 
 struct gcpro *gcprolist;
 
@@ -2525,6 +2477,19 @@ pdump_wire_list (Lisp_Object *varaddress)
   pdump_wirevec_list[pdump_wireidx_list++] = varaddress;
 }
 
+#ifdef ERROR_CHECK_GC
+#define GC_CHECK_LHEADER_INVARIANTS(lheader) do {              \
+  struct lrecord_header * GCLI_lh = (lheader);                 \
+  assert (GCLI_lh != 0);                                       \
+  assert (GCLI_lh->type <= last_lrecord_type_index_assigned);  \
+  assert (! C_READONLY_RECORD_HEADER_P (GCLI_lh) ||            \
+         (MARKED_RECORD_HEADER_P (GCLI_lh) &&                  \
+          LISP_READONLY_RECORD_HEADER_P (GCLI_lh)));           \
+} while (0)
+#else
+#define GC_CHECK_LHEADER_INVARIANTS(lheader)
+#endif
+
 \f
 /* Mark reference to a Lisp_Object.  If the object referred to has not been
    seen yet, recursively mark all the references contained in it. */
@@ -2534,9 +2499,6 @@ mark_object (Lisp_Object obj)
 {
  tail_recurse:
 
-#ifdef ERROR_CHECK_GC
-  assert (! (EQ (obj, Qnull_pointer)));
-#endif
   /* Checks we used to perform */
   /* if (EQ (obj, Qnull_pointer)) return; */
   /* if (!POINTER_TYPE_P (XGCTYPE (obj))) return; */
@@ -2545,25 +2507,21 @@ mark_object (Lisp_Object obj)
   if (XTYPE (obj) == Lisp_Type_Record)
     {
       struct lrecord_header *lheader = XRECORD_LHEADER (obj);
-#if defined (ERROR_CHECK_GC)
-      assert (lheader->type <= last_lrecord_type_index_assigned);
-#endif
-      if (C_READONLY_RECORD_HEADER_P (lheader))
-       return;
 
-      if (! MARKED_RECORD_HEADER_P (lheader) &&
-         ! UNMARKABLE_RECORD_HEADER_P (lheader))
+      GC_CHECK_LHEADER_INVARIANTS (lheader);
+
+      gc_checking_assert (LHEADER_IMPLEMENTATION (lheader)->basic_p ||
+                         ! ((struct lcrecord_header *) lheader)->free);
+
+      /* All c_readonly objects have their mark bit set,
+        so that we only need to check the mark bit here. */
+      if (! MARKED_RECORD_HEADER_P (lheader))
        {
-         const struct lrecord_implementation *implementation =
-           LHEADER_IMPLEMENTATION (lheader);
          MARK_RECORD_HEADER (lheader);
-#ifdef ERROR_CHECK_GC
-         if (!implementation->basic_p)
-           assert (! ((struct lcrecord_header *) lheader)->free);
-#endif
-         if (implementation->marker)
+
+         if (RECORD_MARKER (lheader))
            {
-             obj = implementation->marker (obj);
+             obj = RECORD_MARKER (lheader) (obj);
              if (!NILP (obj)) goto tail_recurse;
            }
        }
@@ -2603,24 +2561,6 @@ static int gc_count_short_string_total_size;
 /* static int gc_count_total_records_used, gc_count_records_total_size; */
 
 \f
-int
-lrecord_type_index (const struct lrecord_implementation *implementation)
-{
-  int type_index = *(implementation->lrecord_type_index);
-  /* Have to do this circuitous validation test because of problems
-     dumping out initialized variables (ie can't set xxx_type_index to -1
-     because that would make xxx_type_index read-only in a dumped emacs. */
-  if (type_index < 0 || type_index > max_lrecord_type
-      || lrecord_implementations_table[type_index] != implementation)
-    {
-      assert (last_lrecord_type_index_assigned < max_lrecord_type);
-      type_index = ++last_lrecord_type_index_assigned;
-      lrecord_implementations_table[type_index] = implementation;
-      *(implementation->lrecord_type_index) = type_index;
-    }
-  return type_index;
-}
-
 /* stats on lcrecords in use - kinda kludgy */
 
 static struct
@@ -2635,21 +2575,21 @@ static struct
 static void
 tick_lcrecord_stats (const struct lrecord_header *h, int free_p)
 {
-  const struct lrecord_implementation *implementation =
-    LHEADER_IMPLEMENTATION (h);
-  int type_index = lrecord_type_index (implementation);
+  unsigned int type_index = h->type;
 
   if (((struct lcrecord_header *) h)->free)
     {
-      assert (!free_p);
+      gc_checking_assert (!free_p);
       lcrecord_stats[type_index].instances_on_free_list++;
     }
   else
     {
-      size_t sz = (implementation->size_in_bytes_method
-                  ? implementation->size_in_bytes_method (h)
-                  : implementation->static_size);
+      const struct lrecord_implementation *implementation =
+       LHEADER_IMPLEMENTATION (h);
 
+      size_t sz = (implementation->size_in_bytes_method ?
+                  implementation->size_in_bytes_method (h) :
+                  implementation->static_size);
       if (free_p)
        {
          lcrecord_stats[type_index].instances_freed++;
@@ -2687,9 +2627,10 @@ sweep_lcrecords_1 (struct lcrecord_header **prev, int *used)
   for (header = *prev; header; header = header->next)
     {
       struct lrecord_header *h = &(header->lheader);
-      if (!C_READONLY_RECORD_HEADER_P(h)
-         && !MARKED_RECORD_HEADER_P (h)
-         && ! (header->free))
+
+      GC_CHECK_LHEADER_INVARIANTS (h);
+
+      if (! MARKED_RECORD_HEADER_P (h) && ! header->free)
        {
          if (LHEADER_IMPLEMENTATION (h)->finalizer)
            LHEADER_IMPLEMENTATION (h)->finalizer (h, 0);
@@ -2699,9 +2640,9 @@ sweep_lcrecords_1 (struct lcrecord_header **prev, int *used)
   for (header = *prev; header; )
     {
       struct lrecord_header *h = &(header->lheader);
-      if (C_READONLY_RECORD_HEADER_P(h) || MARKED_RECORD_HEADER_P (h))
+      if (MARKED_RECORD_HEADER_P (h))
        {
-         if (MARKED_RECORD_HEADER_P (h))
+         if (! C_READONLY_RECORD_HEADER_P (h))
            UNMARK_RECORD_HEADER (h);
          num_used++;
          /* total_size += n->implementation->size_in_bytes (h);*/
@@ -2740,9 +2681,9 @@ sweep_bit_vectors_1 (Lisp_Object *prev,
     {
       Lisp_Bit_Vector *v = XBIT_VECTOR (bit_vector);
       int len = v->size;
-      if (C_READONLY_RECORD_HEADER_P(&(v->lheader)) || MARKED_RECORD_P (bit_vector))
+      if (MARKED_RECORD_P (bit_vector))
        {
-         if (MARKED_RECORD_P (bit_vector))
+         if (! C_READONLY_RECORD_HEADER_P(&(v->lheader)))
            UNMARK_RECORD_HEADER (&(v->lheader));
          total_size += len;
           total_storage +=
@@ -2798,7 +2739,7 @@ do {                                                                      \
            {                                                           \
              num_used++;                                               \
            }                                                           \
-         else if (!MARKED_RECORD_HEADER_P (&SFTB_victim->lheader))     \
+         else if (! MARKED_RECORD_HEADER_P (&SFTB_victim->lheader))    \
            {                                                           \
              num_free++;                                               \
              FREE_FIXED_TYPE (typename, obj_type, SFTB_victim);        \
@@ -2853,7 +2794,7 @@ do {                                                                              \
              SFTB_empty = 0;                                                   \
              num_used++;                                                       \
            }                                                                   \
-         else if (!MARKED_RECORD_HEADER_P (&SFTB_victim->lheader))             \
+         else if (! MARKED_RECORD_HEADER_P (&SFTB_victim->lheader))            \
            {                                                                   \
              num_free++;                                                       \
              FREE_FIXED_TYPE (typename, obj_type, SFTB_victim);                \
@@ -3032,12 +2973,8 @@ sweep_markers (void)
 void
 free_marker (Lisp_Marker *ptr)
 {
-#ifdef ERROR_CHECK_GC
   /* Perhaps this will catch freeing an already-freed marker. */
-  Lisp_Object temmy;
-  XSETMARKER (temmy, ptr);
-  assert (MARKERP (temmy));
-#endif /* ERROR_CHECK_GC */
+  gc_checking_assert (ptr->lheader.type = lrecord_type_marker);
 
 #ifndef ALLOC_NO_POOLS
   FREE_FIXED_TYPE_WHEN_NOT_IN_GC (marker, Lisp_Marker, ptr);
@@ -3253,9 +3190,6 @@ sweep_strings (void)
 int
 marked_p (Lisp_Object obj)
 {
-#ifdef ERROR_CHECK_GC
-  assert (! (EQ (obj, Qnull_pointer)));
-#endif
   /* Checks we used to perform. */
   /* if (EQ (obj, Qnull_pointer)) return 1; */
   /* if (!POINTER_TYPE_P (XGCTYPE (obj))) return 1; */
@@ -3264,10 +3198,10 @@ marked_p (Lisp_Object obj)
   if (XTYPE (obj) == Lisp_Type_Record)
     {
       struct lrecord_header *lheader = XRECORD_LHEADER (obj);
-#if defined (ERROR_CHECK_GC)
-      assert (lheader->type <= last_lrecord_type_index_assigned);
-#endif
-      return C_READONLY_RECORD_HEADER_P (lheader) || MARKED_RECORD_HEADER_P (lheader);
+
+      GC_CHECK_LHEADER_INVARIANTS (lheader);
+
+      return MARKED_RECORD_HEADER_P (lheader);
     }
   return 1;
 }
@@ -3345,7 +3279,9 @@ gc_sweep (void)
            {
              for (i=0; i<rt->count; i++)
                {
-                 UNMARK_RECORD_HEADER ((struct lrecord_header *)(*(EMACS_INT *)p));
+                 struct lrecord_header *lh = * (struct lrecord_header **) p;
+                 if (! C_READONLY_RECORD_HEADER_P (lh))
+                   UNMARK_RECORD_HEADER (lh);
                  p += sizeof (EMACS_INT);
                }
            } else
@@ -3726,7 +3662,7 @@ Garbage collection happens automatically if you cons more than
           const char *name = lrecord_implementations_table[i]->name;
          int len = strlen (name);
          /* save this for the FSFmacs-compatible part of the summary */
-         if (i == *lrecord_vector.lrecord_type_index)
+         if (i == lrecord_vector.lrecord_type_index)
            gc_count_vector_total_size =
              lcrecord_stats[i].bytes_in_use + lcrecord_stats[i].bytes_freed;
 
@@ -4055,31 +3991,20 @@ reinit_alloc_once_early (void)
 void
 init_alloc_once_early (void)
 {
-  int iii;
-
   reinit_alloc_once_early ();
 
-  last_lrecord_type_index_assigned = -1;
-  for (iii = 0; iii < countof (lrecord_implementations_table); iii++)
-    {
-      lrecord_implementations_table[iii] = 0;
-    }
+  last_lrecord_type_index_assigned = lrecord_type_count - 1;
 
-  /*
-   * All the staticly
-   * defined subr lrecords were initialized with lheader->type == 0.
-   * See subr_lheader_initializer in lisp.h.  Force type index 0 to be
-   * assigned to lrecord_subr so that those predefined indexes match
-   * reality.
-   */
-  lrecord_type_index (&lrecord_subr);
-  assert (*(lrecord_subr.lrecord_type_index) == 0);
-  /*
-   * The same is true for symbol_value_forward objects, except the
-   * type is 1.
-   */
-  lrecord_type_index (&lrecord_symbol_value_forward);
-  assert (*(lrecord_symbol_value_forward.lrecord_type_index) == 1);
+  {
+    int i;
+    for (i = 0; i < countof (lrecord_implementations_table); i++)
+      lrecord_implementations_table[i] = 0;
+  }
+
+  INIT_LRECORD_IMPLEMENTATION (cons);
+  INIT_LRECORD_IMPLEMENTATION (vector);
+  INIT_LRECORD_IMPLEMENTATION (string);
+  INIT_LRECORD_IMPLEMENTATION (lcrecord_list);
 
   staticidx = 0;
 }
@@ -5190,13 +5115,10 @@ pdump_load (void)
   memcpy (lrecord_implementations_table, p, sizeof (lrecord_implementations_table));
   p += sizeof (lrecord_implementations_table);
 
-  /* Give back their numbers to the lrecord implementations */
-  for (i = 0; i < countof (lrecord_implementations_table); i++)
+  /* Reinitialize lrecord_markers from lrecord_implementations_table */
+  for (i=0; i < countof (lrecord_implementations_table); i++)
     if (lrecord_implementations_table[i])
-      {
-       *(lrecord_implementations_table[i]->lrecord_type_index) = i;
-       last_lrecord_type_index_assigned = i;
-      }
+      lrecord_markers[i] = lrecord_implementations_table[i]->marker;
 
   /* Do the relocations */
   pdump_rt_list = p;
@@ -5256,3 +5178,4 @@ pdump_load (void)
 }
 
 #endif /* PDUMP */
+
index 3be44f8..51e8756 100644 (file)
@@ -567,7 +567,7 @@ finish_init_buffer (struct buffer *b, Lisp_Object name)
      local_var_alist is set to Qnil at the same point, in
      nuke_all_buffer_slots(). */
   reset_buffer_local_variables (b, 1);
-  b->directory = ((current_buffer) ? current_buffer->directory : Qnil);
+  b->directory = current_buffer ? current_buffer->directory : Qnil;
 
   b->last_window_start = 1;
 
@@ -1304,13 +1304,13 @@ with `delete-process'.
 
     kill_buffer_processes (buf);
 
+    delete_from_buffer_alist (buf);
+
     /* #### This is a problem if this buffer is in a dedicated window.
        Need to undedicate any windows of this buffer first (and delete them?)
        */
     Freplace_buffer_in_windows (buf);
 
-    delete_from_buffer_alist (buf);
-
     font_lock_buffer_was_killed (b);
 
     /* Delete any auto-save file, if we saved it in this session.  */
@@ -2148,6 +2148,8 @@ dfc_convert_to_internal_format (dfc_conversion_type source_type,
 void
 syms_of_buffer (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (buffer);
+
   defsymbol (&Qbuffer_live_p, "buffer-live-p");
   defsymbol (&Qbuffer_or_string_p, "buffer-or-string-p");
   defsymbol (&Qmode_class, "mode-class");
@@ -2373,20 +2375,16 @@ List of functions called with no args to query before killing a buffer.
 
 /* Renamed from DEFVAR_PER_BUFFER because FSFmacs D_P_B takes
    a bogus extra arg, which confuses an otherwise identical make-docfile.c */
-
-/* Declaring this stuff as const produces 'Cannot reinitialize' messages
-   from SunPro C's fix-and-continue feature (a way neato feature that
-   makes debugging unbelievably more bearable) */
 #define DEFVAR_BUFFER_LOCAL_1(lname, field_name, forward_type, magicfun) do {  \
-  static CONST_IF_NOT_DEBUG struct symbol_value_forward I_hate_C =             \
+  static const struct symbol_value_forward I_hate_C =                          \
   { /* struct symbol_value_forward */                                          \
     { /* struct symbol_value_magic */                                          \
       { /* struct lcrecord_header */                                           \
        { /* struct lrecord_header */                                           \
-         1, /* type - index into lrecord_implementations_table */              \
-         0, /* mark bit */                                                     \
-         0, /* c_readonly bit */                                               \
-         0  /* lisp_readonly bit */                                            \
+         lrecord_type_symbol_value_forward, /* lrecord_type_index */           \
+         1, /* mark bit */                                                     \
+         1, /* c_readonly bit */                                               \
+         1  /* lisp_readonly bit */                                            \
        },                                                                      \
        0, /* next */                                                           \
        0, /* uid  */                                                           \
index fd35a0e..b0ff4e0 100644 (file)
@@ -2410,6 +2410,8 @@ If STACK-DEPTH is incorrect, Emacs may crash.
 void
 syms_of_bytecode (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (compiled_function);
+
   deferror (&Qinvalid_byte_code, "invalid-byte-code",
            "Invalid byte code", Qerror);
   defsymbol (&Qbyte_code, "byte-code");
index f78a17b..c2d1324 100644 (file)
@@ -1804,7 +1804,11 @@ word_boundary_p (Emchar c1, Emchar c2)
 void
 syms_of_chartab (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (char_table);
+
 #ifdef MULE
+  INIT_LRECORD_IMPLEMENTATION (char_table_entry);
+
   defsymbol (&Qcategory_table_p, "category-table-p");
   defsymbol (&Qcategory_designator_p, "category-designator-p");
   defsymbol (&Qcategory_table_value_p, "category-table-value-p");
index 3ca219b..fe5e60b 100644 (file)
@@ -198,30 +198,31 @@ char *alloca();
 /* Some things figured out by the configure script, grouped as they are in
    configure.in. */
 #undef HAVE_MCHECK_H
+#undef HAVE_A_OUT_H
+#undef HAVE_CYGWIN_VERSION_H
+#undef HAVE_FCNTL_H
+#undef HAVE_INTTYPES_H
+#undef HAVE_LIBGEN_H
+#undef HAVE_LOCALE_H
 #undef HAVE_MACH_MACH_H
+#undef HAVE_SYS_PARAM_H
+#undef HAVE_SYS_PSTAT_H
 #undef HAVE_SYS_STROPTS_H
-#undef HAVE_SYS_TIMEB_H
 #undef HAVE_SYS_TIME_H
+#undef HAVE_SYS_TIMEB_H
+#undef HAVE_SYS_UN_H
+#undef HAVE_ULIMIT_H
 #undef HAVE_UNISTD_H
 #undef HAVE_UTIME_H
+
 #undef HAVE_SYS_WAIT_H
 #undef HAVE_LIBINTL_H
-#undef HAVE_LIBGEN_H
-#undef HAVE_LOCALE_H
-#undef HAVE_FCNTL_H
-#undef HAVE_ULIMIT_H
 #undef HAVE_X11_XLOCALE_H
-#undef HAVE_LINUX_VERSION_H
-#undef HAVE_CYGWIN_VERSION_H
-#undef HAVE_INTTYPES_H
-#undef HAVE_SYS_UN_H
-#undef HAVE_A_OUT_H
 #undef STDC_HEADERS
 #undef TIME_WITH_SYS_TIME
 #undef WORDS_BIGENDIAN
 #undef HAVE_VFORK_H
 #undef HAVE_KSTAT_H
-#undef HAVE_SYS_PSTAT_H
 #undef vfork
 
 #undef HAVE_LONG_FILE_NAMES
@@ -438,6 +439,11 @@ char *alloca();
 
 /* Attempt to catch bugs related to garbage collection (e.g. not GCPRO'ing). */
 #undef ERROR_CHECK_GC
+#ifdef ERROR_CHECK_GC
+#define gc_checking_assert(assertion) assert (assertion)
+#else
+#define gc_checking_assert(assertion)
+#endif
 
 /* Attempt to catch freeing of a non-malloc()ed block, heap corruption, etc. */
 #undef ERROR_CHECK_MALLOC
index c8912fb..9ebfbf3 100644 (file)
@@ -115,7 +115,7 @@ tty_init_console (struct console *con, Lisp_Object props)
 
   tty_con->instream  = make_filedesc_input_stream  (tty_con->infd,  0, -1, 0);
   tty_con->outstream = make_filedesc_output_stream (tty_con->outfd, 0, -1, 0);
-#ifdef MULE
+#ifdef FILE_CODING
   tty_con->instream =
     make_decoding_input_stream (XLSTREAM (tty_con->instream),
                                Fget_coding_system (Vkeyboard_coding_system));
@@ -123,7 +123,7 @@ tty_init_console (struct console *con, Lisp_Object props)
   tty_con->outstream =
     make_encoding_output_stream (XLSTREAM (tty_con->outstream),
                                 Fget_coding_system (Vterminal_coding_system));
-#endif /* MULE */
+#endif /* FILE_CODING */
   tty_con->terminal_type = terminal_type;
   tty_con->controlling_process = controlling_process;
 
index 0c7c2ad..068200e 100644 (file)
@@ -1073,6 +1073,8 @@ The elements of this list correspond to the arguments of
 void
 syms_of_console (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (console);
+
   DEFSUBR (Fvalid_console_type_p);
   DEFSUBR (Fconsole_type_list);
   DEFSUBR (Fcdfw_console);
@@ -1195,20 +1197,16 @@ One argument, the to-be-deleted console.
 }
 
 /* The docstrings for DEFVAR_* are recorded externally by make-docfile.  */
-
-/* Declaring this stuff as const produces 'Cannot reinitialize' messages
-   from SunPro C's fix-and-continue feature (a way neato feature that
-   makes debugging unbelievably more bearable) */
 #define DEFVAR_CONSOLE_LOCAL_1(lname, field_name, forward_type, magicfun) do { \
-  static CONST_IF_NOT_DEBUG struct symbol_value_forward I_hate_C =             \
+  static const struct symbol_value_forward I_hate_C =                          \
   { /* struct symbol_value_forward */                                          \
     { /* struct symbol_value_magic */                                          \
       { /* struct lcrecord_header */                                           \
        { /* struct lrecord_header */                                           \
-         1, /* type - index into lrecord_implementations_table */              \
-         0, /* mark bit */                                                     \
-         0, /* c_readonly bit */                                               \
-         0  /* lisp_readonly bit */                                            \
+         lrecord_type_symbol_value_forward, /* lrecord_type_index */           \
+         1, /* mark bit */                                                     \
+         1, /* c_readonly bit */                                               \
+         1  /* lisp_readonly bit */                                            \
        },                                                                      \
        0, /* next */                                                           \
        0, /* uid  */                                                           \
index 2309297..09e9c9d 100644 (file)
@@ -2076,6 +2076,8 @@ init_errors_once_early (void)
 void
 syms_of_data (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (weak_list);
+
   defsymbol (&Qquote, "quote");
   defsymbol (&Qlambda, "lambda");
   defsymbol (&Qlistp, "listp");
index d6edc87..0b73c47 100644 (file)
@@ -759,6 +759,8 @@ each key and value in the database.
 void
 syms_of_database (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (database);
+
   defsymbol (&Qdatabasep, "databasep");
 #ifdef HAVE_DBM
   defsymbol (&Qdbm, "dbm");
index 67d08ad..ded93db 100644 (file)
@@ -34,6 +34,7 @@ Boston, MA 02111-1307, USA.  */
 
 #include "console-msw.h"
 #include "console-stream.h"
+#include "objects-msw.h"
 #include "events.h"
 #include "faces.h"
 #include "frame.h"
@@ -68,18 +69,7 @@ Lisp_Object Qinit_pre_mswindows_win, Qinit_post_mswindows_win;
 static Lisp_Object
 build_syscolor_string (int idx)
 {
-  DWORD clr;
-  char buf[16];
-
-  if (idx < 0)
-    return Qnil;
-
-  clr = GetSysColor (idx);
-  sprintf (buf, "#%02X%02X%02X",
-          GetRValue (clr),
-          GetGValue (clr),
-          GetBValue (clr));
-  return build_string (buf);
+  return (idx < 0 ? Qnil : mswindows_color_to_string (GetSysColor (idx)));
 }
 
 static Lisp_Object
@@ -159,7 +149,7 @@ mswindows_init_device (struct device *d, Lisp_Object props)
   wc.lpszMenuName = NULL;
 
   wc.lpszClassName = XEMACS_CLASS;
-  wc.hIconSm = LoadImage (GetModuleHandle (NULL), XEMACS_CLASS,
+  wc.hIconSm = (HICON) LoadImage (GetModuleHandle (NULL), XEMACS_CLASS,
                          IMAGE_ICON, 16, 16, 0);
   RegisterClassEx (&wc);
 
@@ -201,7 +191,10 @@ static void
 mswindows_delete_device (struct device *d)
 {
 #ifdef HAVE_DRAGNDROP
-  DdeNameService (mswindows_dde_mlid, 0L, 0L, DNS_REGISTER);
+  DdeNameService (mswindows_dde_mlid, 0L, 0L, DNS_UNREGISTER);
+  DdeFreeStringHandle (mswindows_dde_mlid, mswindows_dde_item_open);
+  DdeFreeStringHandle (mswindows_dde_mlid, mswindows_dde_topic_system);
+  DdeFreeStringHandle (mswindows_dde_mlid, mswindows_dde_service);
   DdeUninitialize (mswindows_dde_mlid);
 #endif
 
@@ -243,22 +236,22 @@ mswindows_device_system_metrics (struct device *d,
       break;
 
       /*** Colors ***/
-#define FROB(met, index1, index2)                      \
+#define FROB(met, fore, back)                          \
     case DM_##met:                                     \
-      return build_syscolor_cons (index1, index2);
+      return build_syscolor_cons (fore, back);
       
-      FROB (color_default, COLOR_WINDOW, COLOR_WINDOWTEXT);
-      FROB (color_select, COLOR_HIGHLIGHT, COLOR_HIGHLIGHTTEXT);
-      FROB (color_balloon, COLOR_INFOBK, COLOR_INFOTEXT);
-      FROB (color_3d_face, COLOR_3DFACE, COLOR_BTNTEXT);
-      FROB (color_3d_light, COLOR_3DLIGHT, COLOR_3DHILIGHT);
-      FROB (color_3d_dark, COLOR_3DSHADOW, COLOR_3DDKSHADOW);
-      FROB (color_menu, COLOR_MENU, COLOR_MENUTEXT);
-      FROB (color_menu_highlight, COLOR_HIGHLIGHT, COLOR_HIGHLIGHTTEXT);
-      FROB (color_menu_button, COLOR_MENU, COLOR_MENUTEXT);
-      FROB (color_menu_disabled, COLOR_MENU, COLOR_GRAYTEXT);
-      FROB (color_toolbar, COLOR_BTNFACE, COLOR_BTNTEXT);
-      FROB (color_scrollbar, COLOR_SCROLLBAR, COLOR_CAPTIONTEXT);
+      FROB (color_default, COLOR_WINDOWTEXT, COLOR_WINDOW);
+      FROB (color_select, COLOR_HIGHLIGHTTEXT, COLOR_HIGHLIGHT);
+      FROB (color_balloon, COLOR_INFOTEXT, COLOR_INFOBK);
+      FROB (color_3d_face, COLOR_BTNTEXT, COLOR_BTNFACE);
+      FROB (color_3d_light, COLOR_3DHILIGHT, COLOR_3DLIGHT);
+      FROB (color_3d_dark, COLOR_3DDKSHADOW, COLOR_3DSHADOW);
+      FROB (color_menu, COLOR_MENUTEXT, COLOR_MENU);
+      FROB (color_menu_highlight, COLOR_HIGHLIGHTTEXT, COLOR_HIGHLIGHT);
+      FROB (color_menu_button, COLOR_MENUTEXT, COLOR_MENU);
+      FROB (color_menu_disabled, COLOR_GRAYTEXT, COLOR_MENU);
+      FROB (color_toolbar, COLOR_BTNTEXT, COLOR_BTNFACE);
+      FROB (color_scrollbar, COLOR_CAPTIONTEXT, COLOR_SCROLLBAR);
       FROB (color_desktop, -1, COLOR_DESKTOP);
       FROB (color_workspace, -1, COLOR_APPWORKSPACE);
 #undef FROB
@@ -358,7 +351,8 @@ msprinter_init_device (struct device *d, Lisp_Object props)
   if (DEVICE_MSPRINTER_DEVMODE_SIZE(d) <= 0)
     signal_open_printer_error (d);
 
-  DEVICE_MSPRINTER_DEVMODE(d) = xmalloc (DEVICE_MSPRINTER_DEVMODE_SIZE(d));
+  DEVICE_MSPRINTER_DEVMODE(d) =
+    (DEVMODE*) xmalloc (DEVICE_MSPRINTER_DEVMODE_SIZE(d));
   DocumentProperties (NULL, DEVICE_MSPRINTER_HPRINTER(d),
                      printer_name, DEVICE_MSPRINTER_DEVMODE(d),
                      NULL, DM_OUT_BUFFER);
@@ -459,7 +453,7 @@ msprinter_get_devmode_copy (struct device *d)
 
   if (DEVICE_MSPRINTER_DEVMODE_MIRROR(d) == NULL)
     DEVICE_MSPRINTER_DEVMODE_MIRROR(d) = 
-      xmalloc (DEVICE_MSPRINTER_DEVMODE_SIZE(d));
+      (DEVMODE*) xmalloc (DEVICE_MSPRINTER_DEVMODE_SIZE(d));
 
   memcpy (DEVICE_MSPRINTER_DEVMODE_MIRROR(d),
          DEVICE_MSPRINTER_DEVMODE(d),
index 458d617..25aa688 100644 (file)
@@ -1,4 +1,4 @@
- /* Generic device functions.
+/* Generic device functions.
    Copyright (C) 1994, 1995 Board of Trustees, University of Illinois.
    Copyright (C) 1994, 1995 Free Software Foundation, Inc.
    Copyright (C) 1995, 1996 Ben Wing
@@ -986,7 +986,7 @@ size-icon-small       Small icon dimensions.
 size-device           Device screen or paper size in pixels.
 size-workspace        Workspace size in pixels. This can be less than or
                       equal to the above. For diplays, this is the area
-                      available to applications less window manager 
+                      available to applications less window manager
                       decorations. For printers, this is the size of
                       printable area.
 offset-workspace      Offset of workspace area from the top left corner
@@ -1244,6 +1244,8 @@ call_critical_lisp_code (struct device *d, Lisp_Object function,
 void
 syms_of_device (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (device);
+
   DEFSUBR (Fvalid_device_class_p);
   DEFSUBR (Fdevice_class_list);
 
index 306315e..61ceb1f 100644 (file)
@@ -779,10 +779,10 @@ value of `user-full-name' is returned.
   /* #### - Stig sez: this should return nil instead of "unknown" when pw==0 */
   /* Ben sez: bad idea because it's likely to break something */
 #ifndef AMPERSAND_FULL_NAME
-  p = ((pw) ? USER_FULL_NAME : "unknown"); /* don't gettext */
+  p = pw ? USER_FULL_NAME : "unknown"; /* don't gettext */
   q = strchr (p, ',');
 #else
-  p = ((pw) ? USER_FULL_NAME : "unknown"); /* don't gettext */
+  p = pw ? USER_FULL_NAME : "unknown"; /* don't gettext */
   q = strchr (p, ',');
 #endif
   tem = ((!NILP (user) && !pw)
@@ -855,12 +855,12 @@ get_home_directory (void)
               */
              if (initial_directory[0] != '\0')
                {
-                 cached_home_directory = initial_directory;
+                 cached_home_directory = (Extbyte*) initial_directory;
                }
              else
                {
                  /* This will probably give the wrong value */
-                 cached_home_directory = getcwd (NULL, 0);
+                 cached_home_directory = (Extbyte*) getcwd (NULL, 0);
                }
 # else
              /*
index 1f8e2c7..99c5d53 100644 (file)
@@ -54,6 +54,9 @@ static Lisp_Object Qbase, Qonelevel, Qsubtree;
 static Lisp_Object Qkrbv41, Qkrbv42;
 /* Deref policy */
 static Lisp_Object Qnever, Qalways, Qfind;
+/* Modification types (Qdelete is defined in general.c) */
+static Lisp_Object Qadd, Qreplace;
+
 \f
 /************************************************************************/
 /*                         Utility Functions                            */
@@ -316,6 +319,9 @@ the LDAP library XEmacs was compiled with: `simple', `krbv41' and `krbv42'.
   if ((err = ldap_set_option (ld, LDAP_OPT_REFERRALS,
                               LDAP_OPT_ON)) != LDAP_SUCCESS)
     signal_ldap_error (ld, NULL, err);
+  if ((err = ldap_set_option (ld, LDAP_OPT_RESTART,
+                              LDAP_OPT_ON)) != LDAP_SUCCESS)
+    signal_ldap_error (ld, NULL, err);
 #else  /* not HAVE_LDAP_SET_OPTION */
   ld->ld_deref = ldap_deref;
   ld->ld_timelimit = ldap_timelimit;
@@ -325,12 +331,11 @@ the LDAP library XEmacs was compiled with: `simple', `krbv41' and `krbv42'.
 #else /* not LDAP_REFERRALS */
   ld->ld_options = 0;
 #endif /* not LDAP_REFERRALS */
+  /* XEmacs uses interrupts (SIGIO,SIGALRM), LDAP calls need to ignore them */
+  ld->ld_options |= LDAP_OPT_RESTART;
 #endif /* not HAVE_LDAP_SET_OPTION */
 
-  /* ldap_bind_s calls select and may be wedged by SIGIO.  */
-  slow_down_interrupts ();
   err = ldap_bind_s (ld, ldap_binddn, ldap_passwd, ldap_auth);
-  speed_up_interrupts ();
   if (err != LDAP_SUCCESS)
     signal_simple_error ("Failed binding to the server",
                          build_string (ldap_err2string (err)));
@@ -368,7 +373,6 @@ struct ldap_unwind_struct
   struct berval **vals;
 };
 
-
 static Lisp_Object
 ldap_search_unwind (Lisp_Object unwind_obj)
 {
@@ -381,7 +385,12 @@ ldap_search_unwind (Lisp_Object unwind_obj)
   return Qnil;
 }
 
-DEFUN ("ldap-search-internal", Fldap_search_internal, 2, 7, 0, /*
+/* The following function is called `ldap-search-basic' instead of      */
+/* plain `ldap-search' to maintain compatibility with the XEmacs 21.1   */
+/* API where `ldap-search' was the name of the high-level search        */
+/* function                                                             */
+
+DEFUN ("ldap-search-basic", Fldap_search_basic, 2, 8, 0, /*
 Perform a search on an open LDAP connection.
 LDAP is an LDAP connection object created with `ldap-open'.
 FILTER is a filter string for the search as described in RFC 1558.
@@ -392,13 +401,14 @@ ATTRS is a list of strings indicating which attributes to retrieve
  for each matching entry. If nil return all available attributes.
 If ATTRSONLY is non-nil then only the attributes are retrieved, not
 the associated values.
-If WITHDN is non-nil each entry in the result will be prepennded with
+If WITHDN is non-nil each entry in the result will be prepended with
 its distinguished name DN.
+If VERBOSE is non-nil progress messages will be echoed.
 The function returns a list of matching entries.  Each entry is itself
 an alist of attribute/value pairs optionally preceded by the DN of the
 entry according to the value of WITHDN.
 */
-       (ldap, filter, base, scope, attrs, attrsonly, withdn))
+       (ldap, filter, base, scope, attrs, attrsonly, withdn, verbose))
 {
   /* This function can GC */
 
@@ -496,10 +506,8 @@ entry according to the value of WITHDN.
   /* Build the results list */
   matches = 0;
 
-  /* ldap_result calls select() and can get wedged by EINTR signals */
-  slow_down_interrupts ();
   rc = ldap_result (ld, LDAP_RES_ANY, 0, NULL, &unwind.res);
-  speed_up_interrupts ();
+
   while (rc == LDAP_RES_SEARCH_ENTRY)
     {
       QUIT;
@@ -509,7 +517,8 @@ entry according to the value of WITHDN.
          destroys the current echo area contents, even when invoked
          from Lisp.  It should use echo_area_message() instead, and
          restore the old echo area contents later.  */
-      message ("Parsing ldap results... %d", matches);
+      if (! NILP (verbose))
+        message ("Parsing ldap results... %d", matches);
       entry = Qnil;
       /* Get the DN if required */
       if (! NILP (withdn))
@@ -545,43 +554,242 @@ entry according to the value of WITHDN.
       ldap_msgfree (unwind.res);
       unwind.res = NULL;
 
-      slow_down_interrupts ();
       rc = ldap_result (ld, LDAP_RES_ANY, 0, NULL, &(unwind.res));
-      speed_up_interrupts ();
     }
 
-  if (rc == -1)
-    signal_ldap_error (ld, unwind.res, 0);
-
-  if (rc == 0)
-    signal_ldap_error (ld, NULL, LDAP_TIMELIMIT_EXCEEDED);
-
 #if defined HAVE_LDAP_PARSE_RESULT
   rc2 = ldap_parse_result (ld, unwind.res,
                            &rc,
                            NULL, NULL, NULL, NULL, 0);
   if (rc2 != LDAP_SUCCESS)
     rc = rc2;
-#elif defined HAVE_LDAP_RESULT2ERROR
+#else
+  if (rc == 0)
+    signal_ldap_error (ld, NULL, LDAP_TIMELIMIT_EXCEEDED);
+
+  if (rc == -1)
+    signal_ldap_error (ld, unwind.res, (unwind.res==NULL) ? ld->ld_errno : 0);
+
+#if defined HAVE_LDAP_RESULT2ERROR
   rc = ldap_result2error (ld, unwind.res, 0);
 #endif
-  if ((rc != LDAP_SUCCESS) && (rc != LDAP_SIZELIMIT_EXCEEDED))
+#endif
+
+  if (rc != LDAP_SUCCESS)
     signal_ldap_error (ld, NULL, rc);
 
   ldap_msgfree (unwind.res);
   unwind.res = (LDAPMessage *)NULL;
+
   /* #### See above for calling message().  */
-  message ("Parsing ldap results... done");
+  if (! NILP (verbose))
+    message ("Parsing ldap results... done");
 
   unbind_to (speccount, Qnil);
   UNGCPRO;
   return Fnreverse (result);
 }
 
+DEFUN ("ldap-add", Fldap_add, 3, 3, 0, /*
+Add an entry to an LDAP directory.
+LDAP is an LDAP connection object created with `ldap-open'.
+DN is the distinguished name of the entry to add.
+ENTRY is an entry specification, i.e., a list of cons cells
+containing attribute/value string pairs.
+*/
+       (ldap, dn, entry))
+{
+  LDAP *ld;
+  LDAPMod *ldap_mods, **ldap_mods_ptrs;
+  struct berval *bervals;
+  int rc;
+  int i, j;
+
+  Lisp_Object current, values;
+  struct gcpro gcpro1, gcpro2;
+  GCPRO2 (current, values);
+
+  /* Do all the parameter checking  */
+  CHECK_LIVE_LDAP (ldap);
+  ld = XLDAP (ldap)->ld;
+
+  /* Check the DN */
+  CHECK_STRING (dn);
+
+  /* Check the entry */
+  CHECK_CONS (entry);
+  if (NILP (entry))
+    signal_simple_error ("Cannot add void entry", entry);
+
+  /* Build the ldap_mods array */
+  ldap_mods = alloca_array (LDAPMod, XINT (Flength (entry)));
+  ldap_mods_ptrs = alloca_array (LDAPMod *, 1 + XINT (Flength (entry)));
+  i = 0;
+  EXTERNAL_LIST_LOOP (entry, entry)
+    {
+      current = XCAR (entry);
+      CHECK_CONS (current);
+      CHECK_STRING (XCAR (current));
+      ldap_mods_ptrs[i] = &(ldap_mods[i]);
+      TO_EXTERNAL_FORMAT (LISP_STRING, XCAR (current),
+                         C_STRING_ALLOCA, ldap_mods[i].mod_type,
+                         Qnative);
+      ldap_mods[i].mod_op = LDAP_MOD_ADD | LDAP_MOD_BVALUES;
+      values = XCDR (current);
+      if (CONSP (values))
+        {
+          bervals =
+            alloca_array (struct berval, XINT (Flength (values)));
+          ldap_mods[i].mod_vals.modv_bvals =
+            alloca_array (struct berval *, 1 + XINT (Flength (values)));
+          j = 0;
+          EXTERNAL_LIST_LOOP (values, values)
+            {
+              current = XCAR (values);
+              CHECK_STRING (current);
+              ldap_mods[i].mod_vals.modv_bvals[j] = &(bervals[j]);
+             TO_EXTERNAL_FORMAT (LISP_STRING, current,
+                                 ALLOCA, (bervals[j].bv_val,
+                                          bervals[j].bv_len),
+                                 Qnative);
+              j++;
+            }
+          ldap_mods[i].mod_vals.modv_bvals[j] = NULL;
+        }
+      else
+        {
+          CHECK_STRING (values);
+          bervals = alloca_array (struct berval, 1);
+          ldap_mods[i].mod_vals.modv_bvals = alloca_array (struct berval *, 2);
+          ldap_mods[i].mod_vals.modv_bvals[0] = &(bervals[0]);
+         TO_EXTERNAL_FORMAT (LISP_STRING, values,
+                             ALLOCA, (bervals[0].bv_val,
+                                      bervals[0].bv_len),
+                             Qnative);
+          ldap_mods[i].mod_vals.modv_bvals[1] = NULL;
+        }
+      i++;
+    }
+  ldap_mods_ptrs[i] = NULL;
+  rc = ldap_add_s (ld, (char *) XSTRING_DATA (dn), ldap_mods_ptrs);
+  if (rc != LDAP_SUCCESS)
+    signal_ldap_error (ld, NULL, rc);
+
+  UNGCPRO;
+}
+
+DEFUN ("ldap-modify", Fldap_modify, 3, 3, 0, /*
+Add an entry to an LDAP directory.
+LDAP is an LDAP connection object created with `ldap-open'.
+DN is the distinguished name of the entry to modify.
+MODS is a list of modifications to apply.
+A modification is a list of the form (MOD-OP ATTR VALUE1 VALUE2 ...)
+MOD-OP and ATTR are mandatory, VALUEs are optional depending on MOD-OP.
+MOD-OP is the type of modification, one of the symbols `add', `delete'
+or `replace'. ATTR is the LDAP attribute type to modify
+*/
+       (ldap, dn, mods))
+{
+  LDAP *ld;
+  LDAPMod *ldap_mods, **ldap_mods_ptrs;
+  struct berval *bervals;
+  int i, j, rc;
+
+  Lisp_Object current, mod_op, values;
+  struct gcpro gcpro1, gcpro2;
+
+  GCPRO2 (current, values);
+
+  /* Do all the parameter checking  */
+  CHECK_LIVE_LDAP (ldap);
+  ld = XLDAP (ldap)->ld;
+
+  /* Check the DN */
+  CHECK_STRING (dn);
+
+  /* Check the entry */
+  CHECK_CONS (mods);
+  if (NILP (mods))
+    return Qnil;
+
+  /* Build the ldap_mods array */
+  ldap_mods = alloca_array (LDAPMod, XINT (Flength (mods)));
+  ldap_mods_ptrs = alloca_array (LDAPMod *, 1 + XINT (Flength (mods)));
+  i = 0;
+  EXTERNAL_LIST_LOOP (mods, mods)
+    {
+      current = XCAR (mods);
+      CHECK_CONS (current);
+      CHECK_SYMBOL (XCAR (current));
+      mod_op = XCAR (current);
+      ldap_mods_ptrs[i] = &(ldap_mods[i]);
+      ldap_mods[i].mod_op = LDAP_MOD_BVALUES;
+      if (EQ (mod_op, Qadd))
+        ldap_mods[i].mod_op |= LDAP_MOD_ADD;
+      else if (EQ (mod_op, Qdelete))
+        ldap_mods[i].mod_op |= LDAP_MOD_DELETE;
+      else if (EQ (mod_op, Qreplace))
+        ldap_mods[i].mod_op |= LDAP_MOD_REPLACE;
+      else
+        signal_simple_error ("Invalid LDAP modification type", mod_op);
+      current = XCDR (current);
+      CHECK_STRING (XCAR (current));
+      TO_EXTERNAL_FORMAT (LISP_STRING, XCAR (current),
+                         C_STRING_ALLOCA, ldap_mods[i].mod_type,
+                         Qnative);
+      values = XCDR (current);
+      bervals = alloca_array (struct berval, XINT (Flength (values)));
+      ldap_mods[i].mod_vals.modv_bvals =
+        alloca_array (struct berval *, 1 + XINT (Flength (values)));
+      j = 0;
+      EXTERNAL_LIST_LOOP (values, values)
+        {
+          current = XCAR (values);
+          CHECK_STRING (current);
+          ldap_mods[i].mod_vals.modv_bvals[j] = &(bervals[j]);
+         TO_EXTERNAL_FORMAT (LISP_STRING, current,
+                             ALLOCA, (bervals[j].bv_val,
+                                      bervals[j].bv_len),
+                             Qnative);
+          j++;
+        }
+      ldap_mods[i].mod_vals.modv_bvals[j] = NULL;
+      i++;
+    }
+  ldap_mods_ptrs[i] = NULL;
+  rc = ldap_modify_s (ld, (char *) XSTRING_DATA (dn), ldap_mods_ptrs);
+  if (rc != LDAP_SUCCESS)
+    signal_ldap_error (ld, NULL, rc);
+
+  UNGCPRO;
+}
+
+
+DEFUN ("ldap-delete", Fldap_delete, 2, 2, 0, /*
+Delete an entry to an LDAP directory.
+LDAP is an LDAP connection object created with `ldap-open'.
+DN is the distinguished name of the entry to delete.
+*/
+       (ldap, dn))
+{
+  LDAP *ld;
+  int rc;
+
+  /* Check parameters */
+  CHECK_LIVE_LDAP (ldap);
+  ld = XLDAP (ldap)->ld;
+  CHECK_STRING (dn);
+
+  rc = ldap_delete_s (ld, (char *) XSTRING_DATA (dn));
+  if (rc != LDAP_SUCCESS)
+    signal_ldap_error (ld, NULL, rc);
+}
 
 void
 syms_of_eldap (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (ldap);
+
   defsymbol (&Qldapp, "ldapp");
   defsymbol (&Qport, "port");
   defsymbol (&Qauth, "auth");
@@ -598,13 +806,18 @@ syms_of_eldap (void)
   defsymbol (&Qnever, "never");
   defsymbol (&Qalways, "always");
   defsymbol (&Qfind, "find");
+  defsymbol (&Qadd, "add");
+  defsymbol (&Qreplace, "replace");
 
   DEFSUBR (Fldapp);
   DEFSUBR (Fldap_host);
   DEFSUBR (Fldap_status);
   DEFSUBR (Fldap_open);
   DEFSUBR (Fldap_close);
-  DEFSUBR (Fldap_search_internal);
+  DEFSUBR (Fldap_search_basic);
+  DEFSUBR (Fldap_add);
+  DEFSUBR (Fldap_modify);
+  DEFSUBR (Fldap_delete);
 }
 
 void
index 5d869c3..0ca47b1 100644 (file)
@@ -62,12 +62,21 @@ Lisp_Object Fldap_status (Lisp_Object ldap);
 Lisp_Object Fldap_open (Lisp_Object host,
                         Lisp_Object ldap_plist);
 Lisp_Object Fldap_close (Lisp_Object ldap);
-Lisp_Object Fldap_search_internal (Lisp_Object ldap,
-                                   Lisp_Object filter,
-                                   Lisp_Object base,
-                                   Lisp_Object scope,
-                                   Lisp_Object attrs,
-                                   Lisp_Object attrsonly,
-                                   Lisp_Object withdn);
+Lisp_Object Fldap_search_basic (Lisp_Object ldap,
+                                Lisp_Object filter,
+                                Lisp_Object base,
+                                Lisp_Object scope,
+                                Lisp_Object attrs,
+                                Lisp_Object attrsonly,
+                                Lisp_Object withdn,
+                                Lisp_Object verbose);
+Lisp_Object Fldap_add (Lisp_Object ldap,
+                       Lisp_Object dn,
+                       Lisp_Object entry);
+Lisp_Object Fldap_modify (Lisp_Object ldap,
+                          Lisp_Object dn,
+                          Lisp_Object entry);
+Lisp_Object Fldap_delete (Lisp_Object ldap,
+                          Lisp_Object dn);
 
 #endif /* INCLUDED_eldap_h_ */
index 251e549..52ba848 100644 (file)
@@ -1425,6 +1425,8 @@ The value is returned as (HIGH . LOW).
 void
 syms_of_elhash (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (hash_table);
+
   DEFSUBR (Fhash_table_p);
   DEFSUBR (Fmake_hash_table);
   DEFSUBR (Fcopy_hash_table);
index 02ca97d..b581b51 100644 (file)
@@ -587,22 +587,6 @@ main_1 (int argc, char **argv, char **envp, int restart)
 
   sort_args (argc, argv);
 
-  /* Map in shared memory, if we are using that.  */
-#ifdef HAVE_SHM
-  if (argmatch (argv, argc, "-nl", "--no-shared-memory", 6, NULL, &skip_args))
-    {
-      map_in_data (0);
-      /* The shared memory was just restored, which clobbered this.  */
-      skip_args = 1;
-    }
-  else
-    {
-      map_in_data (1);
-      /* The shared memory was just restored, which clobbered this.  */
-      skip_args = 0;
-    }
-#endif /* HAVE_SHM */
-
 #if (defined (MSDOS) && defined (EMX)) || defined (WIN32) || defined (_SCO_DS)
   environ = envp;
 #endif
@@ -873,7 +857,7 @@ main_1 (int argc, char **argv, char **envp, int restart)
 
       /* Initialize Qnil, Qt, Qunbound, and the
         obarray.  After this, symbols can be
-        interned.  This depends on init_alloc_once(). */
+        interned.  This depends on init_alloc_once_early(). */
       init_symbols_once_early ();
 
       /* Declare the basic symbols pertaining to errors,
@@ -888,6 +872,7 @@ main_1 (int argc, char **argv, char **envp, int restart)
         The *only* thing that the syms_of_*() functions are allowed to do
         is call one of the following three functions:
 
+        INIT_LRECORD_IMPLEMENTATION()
         defsymbol()
         defsubr() (i.e. DEFSUBR)
         deferror()
@@ -1903,13 +1888,13 @@ main_1 (int argc, char **argv, char **envp, int restart)
 
 struct standard_args
 {
-  const char * const name;
-  const char * const longname;
+  const char *name;
+  const char *longname;
   int priority;
   int nargs;
 };
 
-static struct standard_args standard_args[] =
+static const struct standard_args standard_args[] =
 {
   /* Handled by main_1 above: */
   { "-nl", "--no-shared-memory", 100, 0 },
@@ -2534,45 +2519,6 @@ shut_down_emacs (int sig, Lisp_Object stuff)
 extern char my_edata[];
 #endif
 
-#ifdef HAVE_SHM
-
-DEFUN ("dump-emacs-data", Fdump_emacs_data, 1, 1, 0, /*
-Dump current state of XEmacs into data file FILENAME.
-This function exists on systems that use HAVE_SHM.
-*/
-       (intoname))
-{
-  /* This function can GC */
-  int opurify;
-  struct gcpro gcpro1;
-  GCPRO1 (intoname);
-
-  CHECK_STRING (intoname);
-  intoname = Fexpand_file_name (intoname, Qnil);
-
-  opurify = purify_flag;
-  purify_flag = 0;
-
-  fflush (stderr);
-  fflush (stdout);
-
-  disksave_object_finalization ();
-  release_breathing_space ();
-
-  /* Tell malloc where start of impure now is */
-  /* Also arrange for warnings when nearly out of space.  */
-#ifndef SYSTEM_MALLOC
-  memory_warnings (my_edata, malloc_warning);
-#endif
-  UNGCPRO;
-  map_out_data (XSTRING_DATA (intoname));
-
-  purify_flag = opurify;
-
-  return Qnil;
-}
-
-#else /* not HAVE_SHM */
 extern void disable_free_hook (void);
 
 DEFUN ("dump-emacs", Fdump_emacs, 2, 2, 0, /*
@@ -2688,8 +2634,6 @@ and announce itself normally when it is run.
   return Qnil;
 }
 
-#endif /* not HAVE_SHM */
-
 #endif /* not CANNOT_DUMP */
 \f
 #ifndef SEPCHAR
@@ -2863,11 +2807,7 @@ void
 syms_of_emacs (void)
 {
 #ifndef CANNOT_DUMP
-#ifdef HAVE_SHM
-  DEFSUBR (Fdump_emacs_data);
-#else
   DEFSUBR (Fdump_emacs);
-#endif
 #endif /* !CANNOT_DUMP */
 
   DEFSUBR (Frun_emacs_from_temacs);
@@ -3108,7 +3048,7 @@ following: dot, lockf, flock, locking, mmdf.
     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.
index 50a7d33..426cda1 100644 (file)
@@ -300,7 +300,7 @@ static const struct lrecord_description subr_description[] = {
 };
 
 DEFINE_BASIC_LRECORD_IMPLEMENTATION ("subr", subr,
-                                    this_one_is_unmarkable, print_subr, 0, 0, 0,
+                                    0, print_subr, 0, 0, 0,
                                     subr_description,
                                     Lisp_Subr);
 \f
@@ -4960,6 +4960,8 @@ warn_when_safe (Lisp_Object class, Lisp_Object level, const char *fmt, ...)
 void
 syms_of_eval (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (subr);
+
   defsymbol (&Qinhibit_quit, "inhibit-quit");
   defsymbol (&Qautoload, "autoload");
   defsymbol (&Qdebug_on_error, "debug-on-error");
index 6d37617..e18c1e6 100644 (file)
@@ -118,9 +118,6 @@ int windows_fd;
 static Lisp_Object mswindows_u_dispatch_event_queue, mswindows_u_dispatch_event_queue_tail;
 static Lisp_Object mswindows_s_dispatch_event_queue, mswindows_s_dispatch_event_queue_tail;
 
-/* For speed: whether there is a WM_PAINT magic message in the system queue */
-static int mswindows_paint_pending = 0;
-
 /* The number of things we can wait on */
 #define MAX_WAITABLE (MAXIMUM_WAIT_OBJECTS - 1)
 
@@ -636,8 +633,8 @@ struct winsock_stream
   SOCKET s;                    /* Socket handle (which is a Win32 handle)   */
   OVERLAPPED ov;               /* Overlapped I/O structure                  */
   void* buffer;                        /* Buffer. Allocated for input stream only   */
-  unsigned int bufsize;                /* Number of bytes last read                 */
-  unsigned int bufpos;         /* Position in buffer for next fetch         */
+  unsigned long bufsize;       /* Number of bytes last read                 */
+  unsigned long bufpos;                /* Position in buffer for next fetch         */
   unsigned int error_p :1;     /* I/O Error seen                            */
   unsigned int eof_p :1;       /* EOF Error seen                            */
   unsigned int pending_p :1;   /* There is a pending I/O operation          */
@@ -1257,12 +1254,8 @@ mswindows_drain_windows_queue ()
             shouldn't have received a paint message for it here. */
          assert (msg.wParam == 0);
 
-         if (!mswindows_paint_pending)
-           {
-             /* Queue a magic event for handling when safe */
-             mswindows_enqueue_magic_event (msg.hwnd, WM_PAINT);
-             mswindows_paint_pending = 1;
-           }
+         /* Queue a magic event for handling when safe */
+         mswindows_enqueue_magic_event (msg.hwnd, WM_PAINT);
 
          /* Don't dispatch. WM_PAINT is always the last message in the
             queue so it's OK to just return. */
@@ -1523,7 +1516,7 @@ mswindows_dde_callback (UINT uType, UINT uFmt, HCONV hconv,
          { mswindows_dde_service, mswindows_dde_topic_system }, { 0, 0 } };
 
        if (!(hszItem  || DdeCmpStringHandles (hszItem, mswindows_dde_service)) &&
-           !(hszTopic || DdeCmpStringHandles (hszTopic, mswindows_dde_topic_system)));
+           !(hszTopic || DdeCmpStringHandles (hszTopic, mswindows_dde_topic_system)))
          return (DdeCreateDataHandle (mswindows_dde_mlid, (LPBYTE)pairs,
                                       sizeof (pairs), 0L, 0, uFmt, 0));
       }
@@ -1533,7 +1526,7 @@ mswindows_dde_callback (UINT uType, UINT uFmt, HCONV hconv,
       if (!DdeCmpStringHandles (hszTopic, mswindows_dde_topic_system))
        {
          DWORD len = DdeGetData (hdata, NULL, 0, 0);
-         char *cmd = alloca (len+1);
+         LPBYTE cmd = (LPBYTE) alloca (len+1);
          char *end;
          char *filename;
          struct gcpro gcpro1, gcpro2;
@@ -2367,7 +2360,7 @@ mswindows_wnd_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
 
       GCPRO3 (emacs_event, l_dndlist, l_item);
 
-      if (!DragQueryPoint ((HANDLE) wParam, &point))
+      if (!DragQueryPoint ((HDROP) wParam, &point))
        point.x = point.y = -1;         /* outside client area */
 
       event->event_type = misc_user_event;
@@ -2379,10 +2372,10 @@ mswindows_wnd_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
       event->event.misc.y = point.y;
       event->event.misc.function = Qdragdrop_drop_dispatch;
 
-      filecount = DragQueryFile ((HANDLE) wParam, 0xffffffff, NULL, 0);
+      filecount = DragQueryFile ((HDROP) wParam, 0xffffffff, NULL, 0);
       for (i=0; i<filecount; i++)
        {
-         len = DragQueryFile ((HANDLE) wParam, i, NULL, 0);
+         len = DragQueryFile ((HDROP) wParam, i, NULL, 0);
          /* The URLs that we make here aren't correct according to section
           * 3.10 of rfc1738 because they're missing the //<host>/ part and
           * because they may contain reserved characters. But that's OK. */
@@ -2396,14 +2389,14 @@ mswindows_wnd_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
 #else
          filename = (char *)xmalloc (len+6);
          strcpy (filename, "file:");
-         DragQueryFile ((HANDLE) wParam, i, filename+5, len+1);
+         DragQueryFile ((HDROP) wParam, i, filename+5, len+1);
          dostounix_filename (filename+5);
 #endif
          l_item = make_string (filename, strlen (filename));
          l_dndlist = Fcons (l_item, l_dndlist);
          xfree (filename);
        }
-      DragFinish ((HANDLE) wParam);
+      DragFinish ((HDROP) wParam);
 
       event->event.misc.object = Fcons (Qdragdrop_URL, l_dndlist);
       mswindows_enqueue_dispatch_event (emacs_event);
@@ -2725,7 +2718,6 @@ emacs_mswindows_handle_magic_event (Lisp_Event *emacs_event)
 
     case WM_PAINT:
       mswindows_handle_paint (XFRAME (EVENT_CHANNEL (emacs_event)));
-      mswindows_paint_pending = 0;
       break;
 
     case WM_SETFOCUS:
index 5dccba3..8871609 100644 (file)
@@ -4910,6 +4910,9 @@ If FILE is nil, close any open dribble file.
 void
 syms_of_event_stream (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (command_builder);
+  INIT_LRECORD_IMPLEMENTATION (timeout);
+
   defsymbol (&Qdisabled, "disabled");
   defsymbol (&Qcommand_event_p, "command-event-p");
 
index 8d8026d..60002d8 100644 (file)
@@ -2188,6 +2188,8 @@ This is in the form of a property list (alternating keyword/value pairs).
 void
 syms_of_events (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (event);
+
   DEFSUBR (Fcharacter_to_event);
   DEFSUBR (Fevent_to_character);
 
index 686ce82..14bebe2 100644 (file)
@@ -1537,8 +1537,7 @@ extent_endpoint_bytind (EXTENT extent, int endp)
   assert (EXTENT_LIVE_P (extent));
   assert (!extent_detached_p (extent));
   {
-    Memind i = (endp) ? (extent_end (extent)) :
-      (extent_start (extent));
+    Memind i = endp ? extent_end (extent) : extent_start (extent);
     Lisp_Object obj = extent_object (extent);
     return buffer_or_string_memind_to_bytind (obj, i);
   }
@@ -1550,8 +1549,7 @@ extent_endpoint_bufpos (EXTENT extent, int endp)
   assert (EXTENT_LIVE_P (extent));
   assert (!extent_detached_p (extent));
   {
-    Memind i = (endp) ? (extent_end (extent)) :
-      (extent_start (extent));
+    Memind i = endp ? extent_end (extent) : extent_start (extent);
     Lisp_Object obj = extent_object (extent);
     return buffer_or_string_memind_to_bufpos (obj, i);
   }
@@ -6661,6 +6659,10 @@ compute_buffer_extent_usage (struct buffer *b, struct overhead_stats *ovstats)
 void
 syms_of_extents (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (extent);
+  INIT_LRECORD_IMPLEMENTATION (extent_info);
+  INIT_LRECORD_IMPLEMENTATION (extent_auxiliary);
+
   defsymbol (&Qextentp, "extentp");
   defsymbol (&Qextent_live_p, "extent-live-p");
 
index 215f67d..d952457 100644 (file)
@@ -1752,6 +1752,8 @@ LOCALE, TAG-SET, EXACT-P, and HOW-TO-ADD are as in `copy-specifier'.
 void
 syms_of_faces (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (face);
+
   /* Qdefault, Qwidget, Qleft_margin, Qright_margin defined in general.c */
   defsymbol (&Qmodeline, "modeline");
   defsymbol (&Qgui_element, "gui-element");
index fca56b0..9db68c7 100644 (file)
@@ -5557,6 +5557,8 @@ encode_coding_no_conversion (Lstream *encoding, const unsigned char *src,
 void
 syms_of_file_coding (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (coding_system);
+
   deferror (&Qcoding_system_error, "coding-system-error",
            "Coding-system error", Qio_error);
 
index 9d1beca..c300003 100644 (file)
@@ -446,8 +446,8 @@ Given a Unix syntax file name, returns a string ending in slash.
   if (p == beg + 2 && beg[1] == ':')
     {
       /* MAXPATHLEN+1 is guaranteed to be enough space for getdefdir.  */
-      Bufbyte *res = alloca (MAXPATHLEN + 1);
-      if (getdefdir (toupper (*beg) - 'A' + 1, res))
+      Bufbyte *res = (Bufbyte*) alloca (MAXPATHLEN + 1);
+      if (getdefdir (toupper (*beg) - 'A' + 1, (char *)res))
        {
          char *c=((char *) res) + strlen ((char *) res);
          if (!IS_DIRECTORY_SEP (*c))
@@ -845,12 +845,12 @@ See also the function `substitute-in-file-name'.
 #ifdef WINDOWSNT
   /* We will force directory separators to be either all \ or /, so make
      a local copy to modify, even if there ends up being no change. */
-  nm = strcpy (alloca (strlen (nm) + 1), nm);
+  nm = strcpy ((char *)alloca (strlen ((char *)nm) + 1), (char *)nm);
 
   /* Find and remove drive specifier if present; this makes nm absolute
      even if the rest of the name appears to be relative. */
   {
-    Bufbyte *colon = strrchr (nm, ':');
+    Bufbyte *colon = (Bufbyte *) strrchr ((char *)nm, ':');
 
     if (colon)
       /* Only recognize colon as part of drive specifier if there is a
@@ -1256,10 +1256,6 @@ See also the function `substitute-in-file-name'.
   return make_string (target, o - target);
 }
 
-#if 0 /* FSFmacs */
-/* another older version of expand-file-name; */
-#endif
-
 DEFUN ("file-truename", Ffile_truename, 1, 2, 0, /*
 Return the canonical name of the given FILE.
 Second arg DEFAULT is directory to start with if FILE is relative
@@ -1270,24 +1266,27 @@ No component of the resulting pathname will be a symbolic link, as
 */
        (filename, default_))
 {
-  /* This function can GC.  GC checked 1997.04.06. */
+  /* This function can GC. */
   Lisp_Object expanded_name;
-  Lisp_Object handler;
   struct gcpro gcpro1;
 
   CHECK_STRING (filename);
 
   expanded_name = Fexpand_file_name (filename, default_);
 
+  GCPRO1 (expanded_name);
+
   if (!STRINGP (expanded_name))
     return Qnil;
 
-  GCPRO1 (expanded_name);
-  handler = Ffind_file_name_handler (expanded_name, Qfile_truename);
-  UNGCPRO;
+  {
+    Lisp_Object handler =
+      Ffind_file_name_handler (expanded_name, Qfile_truename);
 
-  if (!NILP (handler))
-    return call2_check_string (handler, Qfile_truename, expanded_name);
+    if (!NILP (handler))
+      RETURN_UNGCPRO
+       (call2_check_string (handler, Qfile_truename, expanded_name));
+  }
 
   {
     char resolved_path[MAXPATHLEN];
@@ -1301,7 +1300,7 @@ No component of the resulting pathname will be a symbolic link, as
     p = path;
     if (elen > MAXPATHLEN)
       goto toolong;
-    
+
     /* Try doing it all at once. */
     /* !! Does realpath() Mule-encapsulate?
        Answer: Nope! So we do it above */
@@ -1312,14 +1311,25 @@ No component of the resulting pathname will be a symbolic link, as
           It claims to return a useful value in the "error" case, but since
           there is no indication provided of how far along the pathname
           the function went before erring, there is no way to use the
-          partial result returned.  What a piece of junk. */
+          partial result returned.  What a piece of junk.
+
+          The above comment refers to historical versions of
+          realpath().  The Unix98 specs state:
+
+          "On successful completion, realpath() returns a
+          pointer to the resolved name. Otherwise, realpath()
+          returns a null pointer and sets errno to indicate the
+          error, and the contents of the buffer pointed to by
+          resolved_name are undefined."
+
+          Since we depend on undocumented semantics of various system realpath()s,
+          we just use our own version in realpath.c. */
        for (;;)
          {
            p = (Extbyte *) memchr (p + 1, '/', elen - (p + 1 - path));
            if (p)
              *p = 0;
 
-           /* memset (resolved_path, 0, sizeof (resolved_path)); */
            if (xrealpath ((char *) path, resolved_path))
              {
                if (p)
@@ -1337,7 +1347,8 @@ No component of the resulting pathname will be a symbolic link, as
                /* "On failure, it returns NULL, sets errno to indicate
                   the error, and places in resolved_path the absolute pathname
                   of the path component which could not be resolved." */
-               if (p)
+
+               if (p)
                  {
                    int plen = elen - (p - path);
 
@@ -1358,17 +1369,20 @@ No component of the resulting pathname will be a symbolic link, as
       }
 
     {
+      Lisp_Object resolved_name;
       int rlen = strlen (resolved_path);
       if (elen > 0 && XSTRING_BYTE (expanded_name, elen - 1) == '/'
           && !(rlen > 0 && resolved_path[rlen - 1] == '/'))
        {
          if (rlen + 1 > countof (resolved_path))
            goto toolong;
-         resolved_path[rlen] = '/';
-         resolved_path[rlen + 1] = 0;
-         rlen = rlen + 1;
+         resolved_path[rlen++] = '/';
+         resolved_path[rlen] = '\0';
        }
-      return make_ext_string ((Bufbyte *) resolved_path, rlen, Qbinary);
+      TO_INTERNAL_FORMAT (DATA, (resolved_path, rlen),
+                         LISP_STRING, resolved_name,
+                         Qfile_name);
+      RETURN_UNGCPRO (resolved_name);
     }
 
   toolong:
@@ -1377,7 +1391,7 @@ No component of the resulting pathname will be a symbolic link, as
   lose:
     report_file_error ("Finding truename", list1 (expanded_name));
   }
-  return Qnil; /* suppress compiler warning */
+  RETURN_UNGCPRO (Qnil);
 }
 
 \f
@@ -1874,8 +1888,8 @@ Delete a directory.  One argument, a file name or directory name string.
 }
 
 DEFUN ("delete-file", Fdelete_file, 1, 1, "fDelete file: ", /*
-Delete specified file.  One argument, a file name string.
-If file has multiple names, it continues to exist with the other names.
+Delete the file named FILENAME (a string).
+If FILENAME has multiple names, it continues to exist with the other names.
 */
        (filename))
 {
@@ -3221,8 +3235,8 @@ to the value of CODESYS.  If this is nil, no code conversion occurs.
   if (desc < 0)
     {
       desc = open ((char *) XSTRING_DATA (fn),
-                   (O_WRONLY | O_TRUNC | O_CREAT | OPEN_BINARY),
-                  ((auto_saving) ? auto_save_mode_bits : CREAT_MODE));
+                   O_WRONLY | O_TRUNC | O_CREAT | OPEN_BINARY,
+                  auto_saving ? auto_save_mode_bits : CREAT_MODE);
     }
 
   if (desc < 0)
index a6711fc..337c581 100644 (file)
@@ -988,6 +988,7 @@ init_floatfns_very_early (void)
 void
 syms_of_floatfns (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (float);
 
   /* Trig functions.  */
 
index d5f5ae3..b81dafe 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -3719,6 +3719,8 @@ Lisp_Object Qyes_or_no_p;
 void
 syms_of_fns (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (bit_vector);
+
   defsymbol (&Qstring_lessp, "string-lessp");
   defsymbol (&Qidentity, "identity");
   defsymbol (&Qyes_or_no_p, "yes-or-no-p");
index 3c10854..d742a5b 100644 (file)
@@ -3145,6 +3145,8 @@ init_frame (void)
 void
 syms_of_frame (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (frame);
+
   defsymbol (&Qdelete_frame_hook, "delete-frame-hook");
   defsymbol (&Qselect_frame_hook, "select-frame-hook");
   defsymbol (&Qdeselect_frame_hook, "deselect-frame-hook");
index 8111a47..25c037f 100644 (file)
@@ -298,7 +298,7 @@ init_image_instance_from_dibitmap (Lisp_Image_Instance *ii,
   struct device *d = XDEVICE (device);
   struct frame *f;
   void* bmp_buf=0;
-  int type = 0;
+  enum image_instance_type type;
   HBITMAP bitmap;
   HDC hdc;
 
@@ -458,13 +458,12 @@ mswindows_initialize_image_instance_mask (Lisp_Image_Instance* image,
   HBITMAP mask;
   HGDIOBJ old = NULL;
   HDC hcdc = FRAME_MSWINDOWS_CDC (f);
-  unsigned char* dibits;
-  BITMAPINFO* bmp_info =
-    xmalloc_and_zero (sizeof(BITMAPINFO) + sizeof(RGBQUAD));
+  unsigned char *dibits, *and_bits;
+  BITMAPINFO *bmp_info =
+    (BITMAPINFO*) xmalloc_and_zero (sizeof(BITMAPINFO) + sizeof(RGBQUAD));
   int i, j;
   int height = IMAGE_INSTANCE_PIXMAP_HEIGHT (image);
 
-  void* and_bits;
   int maskbpline = BPLINE ((IMAGE_INSTANCE_PIXMAP_WIDTH (image)+7)/8);
   int bpline = BPLINE (IMAGE_INSTANCE_PIXMAP_WIDTH (image) * 3);
 
@@ -492,7 +491,7 @@ mswindows_initialize_image_instance_mask (Lisp_Image_Instance* image,
   if (!(mask = CreateDIBSection (hcdc,
                                 bmp_info,
                                 DIB_RGB_COLORS,
-                                &and_bits,
+                                (void**)&and_bits,
                                 0,0)))
     {
       xfree (bmp_info);
@@ -513,7 +512,7 @@ mswindows_initialize_image_instance_mask (Lisp_Image_Instance* image,
   bmp_info->bmiHeader.biClrImportant = 0;
   bmp_info->bmiHeader.biSizeImage = height * bpline;
 
-  dibits = xmalloc_and_zero (bpline * height);
+  dibits = (unsigned char*) xmalloc_and_zero (bpline * height);
   if (GetDIBits (hcdc,
                 IMAGE_INSTANCE_MSWINDOWS_BITMAP (image),
                 0,
@@ -528,20 +527,20 @@ mswindows_initialize_image_instance_mask (Lisp_Image_Instance* image,
 
   /* now set the colored bits in the mask and transparent ones to
      black in the original */
-  for(i=0; i<IMAGE_INSTANCE_PIXMAP_WIDTH (image); i++)
+  for (i=0; i<IMAGE_INSTANCE_PIXMAP_WIDTH (image); i++)
     {
-      for(j=0; j<height; j++)
+      for (j=0; j<height; j++)
        {
          unsigned char* idx = &dibits[j * bpline + i * 3];
 
-         if( RGB (idx[2], idx[1], idx[0]) == transparent_color )
+         if (RGB (idx[2], idx[1], idx[0]) == transparent_color)
            {
              idx[0] = idx[1] = idx[2] = 0;
-             set_mono_pixel( and_bits, maskbpline, height, i, j, TRUE );
+             set_mono_pixel (and_bits, maskbpline, height, i, j, TRUE);
            }
          else
            {
-             set_mono_pixel( and_bits, maskbpline, height, i, j, FALSE );
+             set_mono_pixel (and_bits, maskbpline, height, i, j, FALSE);
             }
        }
     }
@@ -1222,7 +1221,7 @@ mswindows_resource_instantiate (Lisp_Object image_instance, Lisp_Object instanti
   LPCTSTR resid=0;
   HINSTANCE hinst = NULL;
   ICONINFO iconinfo;
-  int iitype=0;
+  enum image_instance_type iitype;
   char* fname=0;
   Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
 
@@ -1304,17 +1303,17 @@ mswindows_resource_instantiate (Lisp_Object image_instance, Lisp_Object instanti
      bitmap and mask */
   if (type != IMAGE_BITMAP)
     {
-      GetIconInfo (himage, &iconinfo);
+      GetIconInfo ((HICON)himage, &iconinfo);
       IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii) = iconinfo.hbmColor;
       IMAGE_INSTANCE_MSWINDOWS_MASK (ii) = iconinfo.hbmMask;
       XSETINT (IMAGE_INSTANCE_PIXMAP_HOTSPOT_X (ii), iconinfo.xHotspot);
       XSETINT (IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (ii), iconinfo.yHotspot);
-      IMAGE_INSTANCE_MSWINDOWS_ICON (ii) = himage;
+      IMAGE_INSTANCE_MSWINDOWS_ICON (ii) = (HICON) himage;
     }
   else
     {
       IMAGE_INSTANCE_MSWINDOWS_ICON (ii) = NULL;
-      IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii) = himage;
+      IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii) = (HBITMAP) himage;
       IMAGE_INSTANCE_MSWINDOWS_MASK (ii) = NULL;
       XSETINT (IMAGE_INSTANCE_PIXMAP_HOTSPOT_X (ii), 0);
       XSETINT (IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (ii), 0);
@@ -1476,11 +1475,9 @@ static int NextInt ( FILE *fstream )
  * its arguments won't have been touched.  This routine should look as much
  * like the Xlib routine XReadBitmapfile as possible.
  */
-int read_bitmap_data (fstream, width, height, datap, x_hot, y_hot)
-    FILE *fstream;                     /* handle on file  */
-    unsigned int *width, *height;      /* RETURNED */
-    unsigned char **datap;             /* RETURNED */
-    int *x_hot, *y_hot;                        /* RETURNED */
+int read_bitmap_data (FILE* fstream, unsigned int *width,
+                     unsigned int *height, unsigned char **datap,
+                     int *x_hot, int *y_hot)
 {
     unsigned char *data = NULL;                /* working variable */
     char line[MAX_SIZE];               /* input line from file */
@@ -1640,8 +1637,8 @@ xbm_create_bitmap_from_data (HDC hdc, char *data,
   void *bmp_buf = 0;
   unsigned char *new_data, *new_offset;
   int i, j;
-  BITMAPINFO* bmp_info =
-    xmalloc_and_zero (sizeof(BITMAPINFO) + sizeof(RGBQUAD));
+  BITMAPINFO *bmp_info =
+    (BITMAPINFO*) xmalloc_and_zero (sizeof(BITMAPINFO) + sizeof(RGBQUAD));
   HBITMAP bitmap;
 
   if (!bmp_info)
@@ -2509,7 +2506,9 @@ mswindows_button_instantiate (Lisp_Object image_instance, Lisp_Object instantiat
 static void
 mswindows_button_update (Lisp_Object image_instance)
 {
+  /* This function can GC if IN_REDISPLAY is false. */
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+
   /* buttons checked or otherwise */
   if (gui_item_selected_p (IMAGE_INSTANCE_WIDGET_ITEM (ii)))
     SendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii),
@@ -2723,7 +2722,7 @@ mswindows_tab_control_update (Lisp_Object image_instance)
 {
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
 
-  if (IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii));
+  if (IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii))
     {
       HWND wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
       int i = 0;
@@ -2771,7 +2770,7 @@ mswindows_combo_box_instantiate (Lisp_Object image_instance, Lisp_Object instant
                             int dest_mask, Lisp_Object domain)
 {
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
-  HANDLE wnd;
+  HWND wnd;
   Lisp_Object rest;
   Lisp_Object data = Fplist_get (find_keyword_in_vector (instantiator, Q_properties),
                                 Q_items, Qnil);
@@ -2825,12 +2824,12 @@ static Lisp_Object
 mswindows_widget_property (Lisp_Object image_instance, Lisp_Object prop)
 {
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
-  HANDLE wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
+  HWND wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
   /* get the text from a control */
   if (EQ (prop, Q_text))
     {
       Extcount len = SendMessage (wnd, WM_GETTEXTLENGTH, 0, 0);
-      Extbyte* buf =alloca (len+1);
+      Extbyte *buf = (Extbyte*) alloca (len+1);
 
       SendMessage (wnd, WM_GETTEXT, (WPARAM)len+1, (LPARAM) buf);
       return build_ext_string (buf, Qnative);
@@ -2843,7 +2842,7 @@ static Lisp_Object
 mswindows_button_property (Lisp_Object image_instance, Lisp_Object prop)
 {
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
-  HANDLE wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
+  HWND wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
   /* check the state of a button */
   if (EQ (prop, Q_selected))
     {
@@ -2860,13 +2859,13 @@ static Lisp_Object
 mswindows_combo_box_property (Lisp_Object image_instance, Lisp_Object prop)
 {
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
-  HANDLE wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
+  HWND wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
   /* get the text from a control */
   if (EQ (prop, Q_text))
     {
       long item = SendMessage (wnd, CB_GETCURSEL, 0, 0);
       Extcount len = SendMessage (wnd, CB_GETLBTEXTLEN, (WPARAM)item, 0);
-      Extbyte* buf = alloca (len+1);
+      Extbyte* buf = (Extbyte*) alloca (len+1);
       SendMessage (wnd, CB_GETLBTEXT, (WPARAM)item, (LPARAM)buf);
       return build_ext_string (buf, Qnative);
     }
index f9a10f0..dbfd85e 100644 (file)
@@ -48,7 +48,7 @@ struct mswindows_image_instance_data
 #define IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES(i) \
      (MSWINDOWS_IMAGE_INSTANCE_DATA (i)->bitmaps)
 #define IMAGE_INSTANCE_MSWINDOWS_MASK(i) \
-     (HBITMAP)(IMAGE_INSTANCE_PIXMAP_MASK (i))
+     (*(HBITMAP*)&(IMAGE_INSTANCE_PIXMAP_MASK (i)))            /* Make it lvalue */
 #define IMAGE_INSTANCE_MSWINDOWS_ICON(i) \
      (MSWINDOWS_IMAGE_INSTANCE_DATA (i)->icon)
 
index 41d1498..ab50d29 100644 (file)
@@ -335,7 +335,7 @@ update_widget (Lisp_Object widget)
   Lisp_Image_Instance* ii = XIMAGE_INSTANCE (widget);
   struct image_instantiator_methods* meths;
 
-  if (!IMAGE_INSTANCE_TYPE (ii) == IMAGE_WIDGET)
+  if (IMAGE_INSTANCE_TYPE (ii) != IMAGE_WIDGET)
     return;
 
   /* Device generic methods. We must update the widget's size as it
@@ -715,7 +715,7 @@ tab_control_query_geometry (Lisp_Object image_instance,
                            enum image_instance_geometry disp, Lisp_Object domain)
 {
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
-  Lisp_Object items = IMAGE_INSTANCE_WIDGET_ITEMS (ii);
+  Lisp_Object items = XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii));
   Lisp_Object rest;
   unsigned int tw = 0, th = 0;
 
@@ -726,7 +726,7 @@ tab_control_query_geometry (Lisp_Object image_instance,
       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 += 5 * WIDGET_BORDER_WIDTH; /* some bias */
       tw += w;
       th = max (th, h + 2 * WIDGET_BORDER_HEIGHT);
     }
index d0f76da..e56a5c4 100644 (file)
@@ -2180,41 +2180,33 @@ x_update_subwindow (Lisp_Image_Instance *p)
 static void
 x_update_widget (Lisp_Image_Instance *p)
 {
+  /* This function can GC if IN_REDISPLAY is false. */
 #ifdef HAVE_WIDGETS
   widget_value* wv = 0;
-  Boolean deep_p = False;
-  /* Possibly update the size. */
-  if (IMAGE_INSTANCE_SIZE_CHANGED (p))
-    {
-      Arg al[2];
-
-      assert (IMAGE_INSTANCE_X_WIDGET_ID (p) &&
-             IMAGE_INSTANCE_X_CLIPWIDGET (p)) ;
-
-      if ( !XtIsManaged(IMAGE_INSTANCE_X_WIDGET_ID (p))
-          ||
-          IMAGE_INSTANCE_X_WIDGET_ID (p)->core.being_destroyed )
-       {
-         Lisp_Object sw;
-         XSETIMAGE_INSTANCE (sw, p);
-         signal_simple_error ("XEmacs bug: subwindow is deleted", sw);
-       }
 
-      XtSetArg (al [0], XtNwidth, (Dimension)IMAGE_INSTANCE_WIDTH (p));
-      XtSetArg (al [1], XtNheight, (Dimension)IMAGE_INSTANCE_HEIGHT (p));
-      XtSetValues (IMAGE_INSTANCE_X_WIDGET_ID (p), al, 2);
-    }
-
-  /* First get the items if they have changed since this is a structural change. */
+  /* First get the items if they have changed since this is a
+     structural change. As such it will nuke all added values so we
+     need to update most other things after the items have changed.*/
   if (IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (p))
     {
       wv = gui_items_to_widget_values
        (IMAGE_INSTANCE_WIDGET_ITEMS (p));
-      deep_p = True;
+      wv->change = STRUCTURAL_CHANGE;
+      /* now modify the widget */
+      lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (p),
+                            wv, True);
+      free_widget_value_tree (wv);
     }
 
+  /* Now do non structural updates. */
+  wv = lw_get_all_values (IMAGE_INSTANCE_X_WIDGET_LWID (p));
+
   /* Possibly update the colors and font */
-  if (IMAGE_INSTANCE_WIDGET_FACE_CHANGED (p))
+  if (IMAGE_INSTANCE_WIDGET_FACE_CHANGED (p) 
+      ||
+      XFRAME (IMAGE_INSTANCE_SUBWINDOW_FRAME (p))->faces_changed
+      ||
+      IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (p))
     {
       update_widget_face (wv, p, IMAGE_INSTANCE_SUBWINDOW_FRAME (p));
     }
@@ -2230,10 +2222,31 @@ x_update_widget (Lisp_Image_Instance *p)
       wv->value = str;
     }
 
+  /* Possibly update the size. */
+  if (IMAGE_INSTANCE_SIZE_CHANGED (p)
+      ||
+      IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (p))
+    {
+      assert (IMAGE_INSTANCE_X_WIDGET_ID (p) &&
+             IMAGE_INSTANCE_X_CLIPWIDGET (p)) ;
+
+      if (IMAGE_INSTANCE_X_WIDGET_ID (p)->core.being_destroyed
+         || !XtIsManaged(IMAGE_INSTANCE_X_WIDGET_ID (p)))
+       {
+         Lisp_Object sw;
+         XSETIMAGE_INSTANCE (sw, p);
+         signal_simple_error ("XEmacs bug: subwindow is deleted", sw);
+       }
+
+      lw_add_widget_value_arg (wv, XtNwidth,
+                              (Dimension)IMAGE_INSTANCE_WIDTH (p));
+      lw_add_widget_value_arg (wv, XtNheight,
+                              (Dimension)IMAGE_INSTANCE_HEIGHT (p));
+    }
+
   /* now modify the widget */
   lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (p),
-                        wv, deep_p);
-  free_widget_value_tree (wv);
+                        wv, False);
 #endif
 }
 
@@ -2432,9 +2445,9 @@ x_widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
 
   lw_add_widget_value_arg (clip_wv, XtNresize, False);
   lw_add_widget_value_arg (clip_wv, XtNwidth,
-                          (Dimension)IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii));
+                          (Dimension)IMAGE_INSTANCE_WIDTH (ii));
   lw_add_widget_value_arg (clip_wv, XtNheight,
-                          (Dimension)IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii));
+                          (Dimension)IMAGE_INSTANCE_HEIGHT (ii));
   clip_wv->enabled = True;
 
   clip_wv->name = xstrdup ("clip-window");
@@ -2470,9 +2483,9 @@ x_widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
   /* we cannot allow widgets to resize themselves */
   lw_add_widget_value_arg (wv, XtNresize, False);
   lw_add_widget_value_arg (wv, XtNwidth,
-                          (Dimension)IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii));
+                          (Dimension)IMAGE_INSTANCE_WIDTH (ii));
   lw_add_widget_value_arg (wv, XtNheight,
-                          (Dimension)IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii));
+                          (Dimension)IMAGE_INSTANCE_HEIGHT (ii));
   /* update the font. */
   update_widget_face (wv, ii, domain);
 
@@ -2671,14 +2684,17 @@ x_tab_control_update (Lisp_Object image_instance)
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
 
   /* Possibly update the face. */
-  if (IMAGE_INSTANCE_WIDGET_FACE_CHANGED (ii))
+  if (IMAGE_INSTANCE_WIDGET_FACE_CHANGED (ii) 
+      ||
+      XFRAME (IMAGE_INSTANCE_SUBWINDOW_FRAME (ii))->faces_changed
+      ||
+      IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii))
     {
       widget_value* wv = lw_get_all_values (IMAGE_INSTANCE_X_WIDGET_LWID (ii));
       update_tab_widget_face (wv, ii,
                              IMAGE_INSTANCE_SUBWINDOW_FRAME (ii));
 
       lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (ii), wv, True);
-      free_widget_value_tree (wv);
     }
 }
 
index fb6754f..ad542b1 100644 (file)
@@ -580,6 +580,7 @@ instantiate_image_instantiator (Lisp_Object device, Lisp_Object domain,
                                int dest_mask, Lisp_Object glyph)
 {
   Lisp_Object ii = allocate_image_instance (device, glyph);
+  Lisp_Image_Instance* p = XIMAGE_INSTANCE (ii);
   struct image_instantiator_methods *meths;
   struct gcpro gcpro1;
   int  methp = 0;
@@ -608,6 +609,18 @@ instantiate_image_instantiator (Lisp_Object device, Lisp_Object domain,
                                            pointer_bg, dest_mask, domain));
   UNGCPRO;
 
+  /* Some code may have already laid out the widget, if not then do it
+     here. */
+  if (IMAGE_INSTANCE_LAYOUT_CHANGED (p))
+    image_instance_layout (ii, IMAGE_UNSPECIFIED_GEOMETRY,
+                          IMAGE_UNSPECIFIED_GEOMETRY, domain);
+
+  /* We *must* have a clean image at this point. */
+  IMAGE_INSTANCE_TEXT_CHANGED (p) = 0;
+  IMAGE_INSTANCE_SIZE_CHANGED (p) = 0;
+  IMAGE_INSTANCE_LAYOUT_CHANGED (p) = 0;
+  IMAGE_INSTANCE_DIRTYP (p) = 0;
+
   return ii;
 }
 
@@ -977,7 +990,6 @@ allocate_image_instance (Lisp_Object device, Lisp_Object glyph)
   lp->parent = glyph;
   /* So that layouts get done. */
   lp->layout_changed = 1;
-  lp->dirty = 1;
 
   XSETIMAGE_INSTANCE (val, lp);
   MARK_GLYPHS_CHANGED;
@@ -1149,7 +1161,7 @@ Lisp_Object image_instance_parent_glyph (Lisp_Image_Instance* ii)
 {
   if (IMAGE_INSTANCEP (IMAGE_INSTANCE_PARENT (ii)))
     {
-      return image_instance_parent_glyph 
+      return image_instance_parent_glyph
        (XIMAGE_INSTANCE (IMAGE_INSTANCE_PARENT (ii)));
     }
   return IMAGE_INSTANCE_PARENT (ii);
@@ -2672,7 +2684,14 @@ image_mark (Lisp_Object obj)
 static Lisp_Object
 image_instantiate_cache_result (Lisp_Object locative)
 {
-  /* locative = (instance instantiator . subtable) */
+  /* locative = (instance instantiator . subtable)
+
+     So we are using the instantiator as the key and the instance as
+     the value. Since the hashtable is key-weak this means that the
+     image instance will stay around as long as the instantiator stays
+     around. The instantiator is stored in the `image' slot of the
+     glyph, so as long as the glyph is marked the instantiator will be
+     as well and hence the cached image instance also.*/
   Fputhash (XCAR (XCDR (locative)), XCAR (locative), XCDR (XCDR (locative)));
   free_cons (XCONS (XCDR (locative)));
   free_cons (XCONS (locative));
@@ -3821,8 +3840,8 @@ glyph_layout (Lisp_Object glyph_or_image, Lisp_Object window,
  *****************************************************************************/
 
 /* #### All of this is 95% copied from face cachels.  Consider
-  consolidating.  
-  
+  consolidating.
+
   Why do we need glyph_cachels? Simply because a glyph_cachel captures
   per-window information about a particular glyph. A glyph itself is
   not created in any particular context, so if we were to rely on a
@@ -4247,18 +4266,32 @@ int find_matching_subwindow (struct frame* f, int x, int y, int width, int heigh
  *                              subwindow functions                          *
  *****************************************************************************/
 
-/* update the displayed characteristics of a subwindow */
+/* Update the displayed characteristics of a subwindow. This function
+   should generally only get called if the subwindow is actually
+   dirty. The only other time it gets called is if subwindow state
+   changed, when we can't actually tell whether its going to be dirty
+   or not. 
+   #### I suspect what we should really do is re-evaluate all the
+   gui slots that could affect this and then mark the instance as
+   dirty. Right now, updating everything is safe but expensive. */
 void
 update_subwindow (Lisp_Object subwindow)
 {
   Lisp_Image_Instance* ii = XIMAGE_INSTANCE (subwindow);
+  int count = specpdl_depth ();
+
+  /* The update method is allowed to call eval.  Since it is quite
+     common for this function to get called from somewhere in
+     redisplay we need to make sure that quits are ignored.  Otherwise
+     Fsignal will abort. */
+  specbind (Qinhibit_quit, Qt);
 
   if (IMAGE_INSTANCE_TYPE (ii) == IMAGE_WIDGET
       ||
       IMAGE_INSTANCE_TYPE (ii) == IMAGE_LAYOUT)
     {
       if (IMAGE_INSTANCE_TYPE (ii) == IMAGE_WIDGET)
-         update_widget (subwindow);
+       update_widget (subwindow);
       /* Reset the changed flags. */
       IMAGE_INSTANCE_WIDGET_FACE_CHANGED (ii) = 0;
       IMAGE_INSTANCE_WIDGET_PERCENT_CHANGED (ii) = 0;
@@ -4273,6 +4306,8 @@ update_subwindow (Lisp_Object subwindow)
     }
 
   IMAGE_INSTANCE_SIZE_CHANGED (ii) = 0;
+
+  unbind_to (count, Qnil);
 }
 
 /* Update all the subwindows on a frame. */
@@ -4289,7 +4324,13 @@ update_frame_subwindows (struct frame *f)
        struct subwindow_cachel *cachel =
          Dynarr_atp (f->subwindow_cachels, elt);
 
-       if (cachel->being_displayed)
+       if (cachel->being_displayed
+           &&
+           /* We only want to update if something has really
+               changed. */
+           (f->subwindows_state_changed
+            ||
+            XIMAGE_INSTANCE_DIRTYP (cachel->subwindow)))
          {
            update_subwindow (cachel->subwindow);
          }
@@ -4358,17 +4399,6 @@ void map_subwindow (Lisp_Object subwindow, int x, int y,
   cachel->height = dga->height;
   cachel->being_displayed = 1;
 
-#if 0
-  /* 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;
-    }
-#endif
-
   MAYBE_DEVMETH (XDEVICE (ii->device), map_subwindow, (ii, x, y, dga));
 }
 
@@ -4610,7 +4640,7 @@ Don't use this.
                 also might not. */
              MARK_DEVICE_FRAMES_GLYPHS_CHANGED
                (XDEVICE (IMAGE_INSTANCE_DEVICE (ii)));
-             /* Cascade dirtiness so that we can have an animated glyph in a layout 
+             /* Cascade dirtiness so that we can have an animated glyph in a layout
                 for instance. */
              set_image_instance_dirty_p (value, 1);
            }
@@ -4657,6 +4687,9 @@ void disable_glyph_animated_timeout (int i)
 void
 syms_of_glyphs (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (glyph);
+  INIT_LRECORD_IMPLEMENTATION (image_instance);
+
   /* image instantiators */
 
   DEFSUBR (Fimage_instantiator_format_list);
index 029d616..07b4a79 100644 (file)
@@ -92,9 +92,6 @@ otherwise it is an integer representing a ShowWindow flag:
 
   CHECK_STRING (document);
 
-  /* Just get the filename if we were given it. */
-  document = Ffile_name_nondirectory (document);
-
   if (NILP (current_dir))
     current_dir = current_buffer->directory;
 
@@ -118,7 +115,11 @@ otherwise it is an integer representing a ShowWindow flag:
       TO_EXTERNAL_FORMAT (LISP_STRING, document,
                          C_STRING_ALLOCA, f,
                          Qfile_name);
+#ifdef __CYGWIN32__
+      CYGWIN_WIN32_PATH (f, doc);
+#else
       doc = f;
+#endif
     }
 
   UNGCPRO;
index 58fb4f3..467c3ab 100644 (file)
@@ -619,6 +619,8 @@ sanity_check_lwlib (void)
 void
 syms_of_gui_x (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (popup_data);
+
   defsymbol (&Qmenu_no_selection_hook, "menu-no-selection-hook");
 }
 
index d00df80..00012a6 100644 (file)
--- a/src/gui.c
+++ b/src/gui.c
@@ -625,6 +625,8 @@ DEFINE_LRECORD_IMPLEMENTATION ("gui-item", gui_item,
 void
 syms_of_gui (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (gui_item);
+
   defkeyword (&Q_active,   ":active");
   defkeyword (&Q_suffix,   ":suffix");
   defkeyword (&Q_keys,     ":keys");
index 224d2fa..d0055c7 100644 (file)
@@ -337,6 +337,22 @@ clear_gutter (struct frame *f, enum gutter_pos pos)
   redisplay_clear_region (window, findex, x, y, width, height);
 }
 
+/* #### I don't currently believe that redisplay needs to mark the
+   glyphs in its structures since these will always be referenced from
+   somewhere else. However, I'm not sure enough to stake my life on it
+   at this point, so we do the safe thing. */
+
+/* See the comment in image_instantiate_cache_result as to why marking
+   the glyph will also mark the image_instance. */
+void
+mark_gutters (struct frame* f)
+{
+  if (f->current_display_lines)
+    mark_redisplay_structs (f->current_display_lines);
+  if (f->desired_display_lines)
+    mark_redisplay_structs (f->desired_display_lines);
+}
+
 void
 update_frame_gutters (struct frame *f)
 {
index d0ad07e..967c647 100644 (file)
@@ -54,6 +54,7 @@ extern Lisp_Object Qgutter;
 extern Lisp_Object Vgutter_size[4];
 extern Lisp_Object Vgutter_border_width[4];
 void update_frame_gutters (struct frame *f);
+void mark_gutters (struct frame* f);
 void init_frame_gutters (struct frame *f);
 void init_device_gutters (struct device *d);
 void init_global_gutters (struct device *d);
index 22dee0f..0ca849c 100644 (file)
@@ -309,60 +309,59 @@ bytecount_to_charcount (const Bufbyte *ptr, Bytecount len)
   Charcount count = 0;
   const Bufbyte *end = ptr + len;
 
-#if (LONGBITS == 32 || LONGBITS == 64)
-
-# if (LONGBITS == 32)
-#  define LONG_BYTES 4
-#  define ALIGN_MASK 0xFFFFFFFCU
-#  define HIGH_BIT_MASK 0x80808080U
-# else
-#  define LONG_BYTES 8
-#  define ALIGN_MASK 0xFFFFFFFFFFFFFFF8UL
-   /* I had a dream, I was being overrun with early Intel processors ... */
-#  define HIGH_BIT_MASK 0x8080808080808080UL
-# endif
-
-  /* When we have a large number of bytes to scan, we can be trickier
-     and significantly faster by scanning them in chunks of the CPU word
-     size (assuming that they're all ASCII -- we cut out as soon as
-     we find something non-ASCII). */
-  if (len >= 12)
-    {
-      /* Determine the section in the middle of the string that's
-        amenable to this treatment.  Everything has to be aligned
-        on CPU word boundaries. */
-      const Bufbyte *aligned_ptr =
-       (const Bufbyte *) (((unsigned long) (ptr + LONG_BYTES - 1)) &
-                          ALIGN_MASK);
-      const Bufbyte *aligned_end =
-       (const Bufbyte *) (((unsigned long) end) & ALIGN_MASK);
-
-      /* Handle unaligned stuff at the beginning. */
-      while (ptr < aligned_ptr)
+#if SIZEOF_LONG == 8
+# define STRIDE_TYPE long
+# define HIGH_BIT_MASK 0x8080808080808080UL
+#elif SIZEOF_LONG_LONG == 8 && !(defined (i386) || defined (__i386__))
+# define STRIDE_TYPE long long
+# define HIGH_BIT_MASK 0x8080808080808080ULL
+#elif SIZEOF_LONG == 4
+# define STRIDE_TYPE long
+# define HIGH_BIT_MASK 0x80808080UL
+#else
+# error Add support for 128-bit systems here
+#endif
+
+#define ALIGN_BITS ((EMACS_UINT) (ALIGNOF (STRIDE_TYPE) - 1))
+#define ALIGN_MASK (~ ALIGN_BITS)
+#define ALIGNED(ptr) ((((EMACS_UINT) ptr) & ALIGN_BITS) == 0)
+#define STRIDE sizeof (STRIDE_TYPE)
+
+  while (ptr < end)
+    {
+      if (BYTE_ASCII_P (*ptr))
        {
-         if (!BYTE_ASCII_P (*ptr))
-           goto bail;
-         count++, ptr++;
+         /* optimize for long stretches of ASCII */
+         if (! ALIGNED (ptr))
+           ptr++, count++;
+         else
+           {
+             const unsigned STRIDE_TYPE *ascii_end =
+               (const unsigned STRIDE_TYPE *) ptr;
+             /* This loop screams, because we can typically
+                detect ASCII characters 8 at a time. */
+             while ((const Bufbyte *) ascii_end + STRIDE <= end
+                    && !(*ascii_end & HIGH_BIT_MASK))
+               ascii_end++;
+             if ((Bufbyte *) ascii_end == ptr)
+               ptr++, count++;
+             else
+               {
+                 count += (Bufbyte *) ascii_end - ptr;
+                 ptr = (Bufbyte *) ascii_end;
+               }
+           }
        }
-      /* Now do it. */
-      while (ptr < aligned_end)
+      else
        {
-
-         if ((* (unsigned long *) ptr) & HIGH_BIT_MASK)
-           goto bail;
-         ptr += LONG_BYTES;
-         count += LONG_BYTES;
+         /* optimize for successive characters from the same charset */
+         Bufbyte leading_byte = *ptr;
+         size_t bytes = REP_BYTES_BY_FIRST_BYTE (leading_byte);
+         while ((ptr < end) && (*ptr == leading_byte))
+           ptr += bytes, count++;
        }
     }
 
-#endif /* LONGBITS == 32 || LONGBITS == 64 */
-
- bail:
-  while (ptr < end)
-    {
-      count++;
-      INC_CHARPTR (ptr);
-    }
 #ifdef ERROR_CHECK_BUFPOS
   /* Bomb out if the specified substring ends in the middle
      of a character.  Note that we might have already gotten
index 49a9fec..046c5e8 100644 (file)
@@ -1069,7 +1069,7 @@ get_keyelt (Lisp_Object object, int accept_default)
          if (!INTP (XCDR (idx)))
            return Qnil;
          indirection.keysym = XCAR (idx);
-         indirection.modifiers = XINT (XCDR (idx));
+         indirection.modifiers = (unsigned char) XINT (XCDR (idx));
        }
       else if (SYMBOLP (idx))
        {
@@ -4204,6 +4204,8 @@ describe_map (Lisp_Object keymap, Lisp_Object elt_prefix,
 void
 syms_of_keymap (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (keymap);
+
   defsymbol (&Qminor_mode_map_alist, "minor-mode-map-alist");
 
   defsymbol (&Qkeymapp, "keymapp");
index 83e08b5..f632885 100644 (file)
@@ -714,19 +714,19 @@ do {                                                      \
 
 #define EXTERNAL_LIST_LOOP_1(list)                                     \
 Lisp_Object ELL1_elt, ELL1_hare, ELL1_tortoise;                                \
-EMACS_INT ELL1_len;                                                            \
+EMACS_INT ELL1_len;                                                    \
 EXTERNAL_LIST_LOOP_6 (ELL1_elt, list, ELL1_len, ELL1_hare,             \
                      ELL1_tortoise, CIRCULAR_LIST_SUSPICION_LENGTH)
 
 #define EXTERNAL_LIST_LOOP_2(elt, list)                                        \
 Lisp_Object hare_##elt, tortoise_##elt;                                        \
-EMACS_INT len_##elt;                                                           \
+EMACS_INT len_##elt;                                                   \
 EXTERNAL_LIST_LOOP_6 (elt, list, len_##elt, hare_##elt,                        \
                      tortoise_##elt, CIRCULAR_LIST_SUSPICION_LENGTH)
 
 #define EXTERNAL_LIST_LOOP_3(elt, list, tail)                          \
 Lisp_Object tortoise_##elt;                                            \
-EMACS_INT len_##elt;                                                           \
+EMACS_INT len_##elt;                                                   \
 EXTERNAL_LIST_LOOP_6 (elt, list, len_##elt, tail,                      \
                      tortoise_##elt, CIRCULAR_LIST_SUSPICION_LENGTH)
 
@@ -790,13 +790,13 @@ EXTERNAL_LIST_LOOP_6 (elt, list, len, hare, tortoise, suspicion_length)   \
 /* Optimized and safe macros for looping over external property lists. */
 #define EXTERNAL_PROPERTY_LIST_LOOP_3(key, value, list)                        \
 Lisp_Object key, value, hare_##key, tortoise_##key;                    \
-EMACS_INT len_##key;                                                           \
+EMACS_INT len_##key;                                                   \
 EXTERNAL_PROPERTY_LIST_LOOP_7 (key, value, list, len_##key, hare_##key,        \
                     tortoise_##key, CIRCULAR_LIST_SUSPICION_LENGTH)
 
 #define EXTERNAL_PROPERTY_LIST_LOOP_4(key, value, list, tail)          \
 Lisp_Object key, value, tail, tortoise_##key;                          \
-EMACS_INT len_##key;                                                           \
+EMACS_INT len_##key;                                                   \
 EXTERNAL_PROPERTY_LIST_LOOP_7 (key, value, list, len_##key, tail,      \
                     tortoise_##key, CIRCULAR_LIST_SUSPICION_LENGTH)
 
@@ -1104,7 +1104,8 @@ typedef Lisp_Object (*lisp_fn_t) (void);
 struct Lisp_Subr
 {
   struct lrecord_header lheader;
-  short min_args, max_args;
+  short min_args;
+  short max_args;
   const char *prompt;
   const char *doc;
   const char *name;
@@ -1479,12 +1480,23 @@ Lisp_Object,Lisp_Object,Lisp_Object
 /* Can't be const, because then subr->doc is read-only and
    Snarf_documentation chokes */
 
-#define subr_lheader_initializer { 0, 0, 0, 0 }
-
 #define DEFUN(lname, Fname, min_args, max_args, prompt, arglist)       \
   Lisp_Object Fname (EXFUN_##max_args);                                        \
-  static struct Lisp_Subr S##Fname = { subr_lheader_initializer,       \
-       min_args, max_args, prompt, 0, lname, (lisp_fn_t) Fname };      \
+  static struct Lisp_Subr S##Fname =                                   \
+  {                                                                    \
+    { /* struct lrecord_header */                                      \
+      lrecord_type_subr, /* lrecord_type_index */                      \
+      1, /* mark bit */                                                        \
+      1, /* c_readonly bit */                                          \
+      1  /* lisp_readonly bit */                                       \
+    },                                                                 \
+    min_args,                                                          \
+    max_args,                                                          \
+    prompt,                                                            \
+    0, /* doc string */                                                \
+    lname,                                                             \
+    (lisp_fn_t) Fname                                                  \
+  };                                                                   \
   Lisp_Object Fname (DEFUN_##max_args arglist)
 
 /* Heavy ANSI C preprocessor hackery to get DEFUN to declare a
index c36153e..a1f9ec9 100644 (file)
@@ -983,7 +983,7 @@ locate_file_map_suffixes (Lisp_Object filename, Lisp_Object suffixes,
       while (1)
        {
          char *esuffix = (char *) strchr (nsuffix, ':');
-         int lsuffix = ((esuffix) ? (esuffix - nsuffix) : strlen (nsuffix));
+         int lsuffix = esuffix ? esuffix - nsuffix : strlen (nsuffix);
 
          /* Concatenate path element/specified name with the suffix.  */
          strncpy (fn + fn_len, nsuffix, lsuffix);
index 94ebea2..d222ca3 100644 (file)
@@ -61,10 +61,18 @@ struct lrecord_header
 {
   /* index into lrecord_implementations_table[] */
   unsigned int type :8;
-  /* 1 if the object is marked during GC. */
+
+  /* If `mark' is 0 after the GC mark phase, the object will be freed
+     during the GC sweep phase.  There are 2 ways that `mark' can be 1:
+     - by being referenced from other objects during the GC mark phase
+     - because it is permanently on, for c_readonly objects */
   unsigned int mark :1;
-  /* 1 if the object resides in read-only space */
+
+  /* 1 if the object resides in logically read-only space, and does not
+     reference other non-c_readonly objects.
+     Invariant: if (c_readonly == 1), then (mark == 1 && lisp_readonly == 1) */
   unsigned int c_readonly :1;
+
   /* 1 if the object is readonly from lisp */
   unsigned int lisp_readonly :1;
 };
@@ -74,7 +82,7 @@ int lrecord_type_index (const struct lrecord_implementation *implementation);
 
 #define set_lheader_implementation(header,imp) do {    \
   struct lrecord_header* SLI_header = (header);                \
-  SLI_header->type = lrecord_type_index (imp);         \
+  SLI_header->type = (imp)->lrecord_type_index;                \
   SLI_header->mark = 0;                                        \
   SLI_header->c_readonly = 0;                          \
   SLI_header->lisp_readonly = 0;                       \
@@ -118,8 +126,66 @@ struct free_lcrecord_header
   Lisp_Object chain;
 };
 
-/* see alloc.c for an explanation */
-Lisp_Object this_one_is_unmarkable (Lisp_Object obj);
+enum lrecord_type
+{
+  /* Symbol value magic types come first to make SYMBOL_VALUE_MAGIC_P fast.
+     #### This should be replaced by a symbol_value_magic_p flag
+     in the Lisp_Symbol lrecord_header. */
+  lrecord_type_symbol_value_forward,
+  lrecord_type_symbol_value_varalias,
+  lrecord_type_symbol_value_lisp_magic,
+  lrecord_type_symbol_value_buffer_local,
+  lrecord_type_max_symbol_value_magic = lrecord_type_symbol_value_buffer_local,
+  
+  lrecord_type_symbol,
+  lrecord_type_subr,
+  lrecord_type_cons,
+  lrecord_type_vector,
+  lrecord_type_string,
+  lrecord_type_lcrecord_list,
+  lrecord_type_compiled_function,
+  lrecord_type_weak_list,
+  lrecord_type_bit_vector,
+  lrecord_type_float,
+  lrecord_type_hash_table,
+  lrecord_type_lstream,
+  lrecord_type_process,
+  lrecord_type_charset,
+  lrecord_type_coding_system,
+  lrecord_type_char_table,
+  lrecord_type_char_table_entry,
+  lrecord_type_range_table,
+  lrecord_type_opaque,
+  lrecord_type_opaque_ptr,
+  lrecord_type_buffer,
+  lrecord_type_extent,
+  lrecord_type_extent_info,
+  lrecord_type_extent_auxiliary,
+  lrecord_type_marker,
+  lrecord_type_event,
+  lrecord_type_keymap,
+  lrecord_type_command_builder,
+  lrecord_type_timeout,
+  lrecord_type_specifier,
+  lrecord_type_console,
+  lrecord_type_device,
+  lrecord_type_frame,
+  lrecord_type_window,
+  lrecord_type_window_configuration,
+  lrecord_type_gui_item,
+  lrecord_type_popup_data,
+  lrecord_type_toolbar_button,
+  lrecord_type_color_instance,
+  lrecord_type_font_instance,
+  lrecord_type_image_instance,
+  lrecord_type_glyph,
+  lrecord_type_face,
+  lrecord_type_database,
+  lrecord_type_tooltalk_message,
+  lrecord_type_tooltalk_pattern,
+  lrecord_type_ldap,
+  lrecord_type_count
+};
 
 struct lrecord_implementation
 {
@@ -179,9 +245,8 @@ struct lrecord_implementation
   size_t static_size;
   size_t (*size_in_bytes_method) (const void *header);
 
-  /* A unique subtag-code (dynamically) assigned to this datatype. */
-  /* (This is a pointer so the rest of this structure can be read-only.) */
-  int *lrecord_type_index;
+  /* The (constant) index into lrecord_implementations_table */
+  enum lrecord_type lrecord_type_index;
 
   /* A "basic" lrecord is any lrecord that's not an lcrecord, i.e.
      one that does not have an lcrecord_header at the front and which
@@ -194,25 +259,27 @@ struct lrecord_implementation
 extern const struct lrecord_implementation *lrecord_implementations_table[];
 
 #define XRECORD_LHEADER_IMPLEMENTATION(obj) \
-   (lrecord_implementations_table[XRECORD_LHEADER (obj)->type])
-#define LHEADER_IMPLEMENTATION(lh) (lrecord_implementations_table[(lh)->type])
+   LHEADER_IMPLEMENTATION (XRECORD_LHEADER (obj))
+#define LHEADER_IMPLEMENTATION(lh) lrecord_implementations_table[(lh)->type]
 
 extern int gc_in_progress;
 
-#define MARKED_RECORD_P(obj) (gc_in_progress && XRECORD_LHEADER (obj)->mark)
+#define MARKED_RECORD_P(obj) (XRECORD_LHEADER (obj)->mark)
 #define MARKED_RECORD_HEADER_P(lheader) ((lheader)->mark)
 #define MARK_RECORD_HEADER(lheader)   ((void) ((lheader)->mark = 1))
 #define UNMARK_RECORD_HEADER(lheader) ((void) ((lheader)->mark = 0))
 
-#define UNMARKABLE_RECORD_HEADER_P(lheader) \
-  (LHEADER_IMPLEMENTATION (lheader)->marker == this_one_is_unmarkable)
-
 #define C_READONLY_RECORD_HEADER_P(lheader)  ((lheader)->c_readonly)
 #define LISP_READONLY_RECORD_HEADER_P(lheader)  ((lheader)->lisp_readonly)
-#define SET_C_READONLY_RECORD_HEADER(lheader) \
-  ((void) ((lheader)->c_readonly = (lheader)->lisp_readonly = 1))
+#define SET_C_READONLY_RECORD_HEADER(lheader) do {     \
+  struct lrecord_header *SCRRH_lheader = (lheader);    \
+  SCRRH_lheader->c_readonly = 1;                       \
+  SCRRH_lheader->lisp_readonly = 1;                    \
+  SCRRH_lheader->mark = 1;                             \
+} while (0)
 #define SET_LISP_READONLY_RECORD_HEADER(lheader) \
   ((void) ((lheader)->lisp_readonly = 1))
+#define RECORD_MARKER(lheader) lrecord_markers[(lheader)->type]
 
 /* External description stuff
 
@@ -347,17 +414,6 @@ struct struct_description {
   { XD_INT,        offsetof (base_type, cur) }, \
   { XD_INT_RESET,  offsetof (base_type, max), XD_INDIRECT(1, 0) }
 
-/* Declaring the following structures as const puts them in the
-   text (read-only) segment, which makes debugging inconvenient
-   because this segment is not mapped when processing a core-
-   dump file */
-
-#ifdef DEBUG_XEMACS
-#define CONST_IF_NOT_DEBUG
-#else
-#define CONST_IF_NOT_DEBUG const
-#endif
-
 /* DEFINE_LRECORD_IMPLEMENTATION is for objects with constant size.
    DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION is for objects whose size varies.
  */
@@ -391,18 +447,24 @@ MAKE_LRECORD_IMPLEMENTATION(name,c_name,marker,printer,nuker,equal,hash,desc,get
 
 #define MAKE_LRECORD_IMPLEMENTATION(name,c_name,marker,printer,nuker,equal,hash,desc,getprop,putprop,remprop,plist,size,sizer,basic_p,structtype) \
 DECLARE_ERROR_CHECK_TYPECHECK(c_name, structtype)                      \
-static int lrecord_##c_name##_lrecord_type_index;                      \
-CONST_IF_NOT_DEBUG struct lrecord_implementation lrecord_##c_name =    \
+const struct lrecord_implementation lrecord_##c_name =                 \
   { name, marker, printer, nuker, equal, hash, desc,                   \
     getprop, putprop, remprop, plist, size, sizer,                     \
-    &(lrecord_##c_name##_lrecord_type_index), basic_p }                        \
+    lrecord_type_##c_name, basic_p }
+
+extern Lisp_Object (*lrecord_markers[]) (Lisp_Object);
+
+#define INIT_LRECORD_IMPLEMENTATION(type) do {                         \
+  lrecord_implementations_table[lrecord_type_##type] = &lrecord_##type;        \
+  lrecord_markers[lrecord_type_##type] =                               \
+    lrecord_implementations_table[lrecord_type_##type]->marker;                \
+} while (0)
 
 #define LRECORDP(a) (XTYPE (a) == Lisp_Type_Record)
 #define XRECORD_LHEADER(a) ((struct lrecord_header *) XPNTR (a))
 
 #define RECORD_TYPEP(x, ty) \
-  (LRECORDP (x) && \
-   lrecord_implementations_table[XRECORD_LHEADER (x)->type] == (ty))
+  (LRECORDP (x) && XRECORD_LHEADER (x)->type == (ty))
 
 /* NOTE: the DECLARE_LRECORD() must come before the associated
    DEFINE_LRECORD_*() or you will get compile errors.
@@ -416,13 +478,12 @@ CONST_IF_NOT_DEBUG struct lrecord_implementation lrecord_##c_name =       \
 #ifdef ERROR_CHECK_TYPECHECK
 
 # define DECLARE_LRECORD(c_name, structtype)                   \
-extern CONST_IF_NOT_DEBUG struct lrecord_implementation                \
-  lrecord_##c_name;                                            \
+extern const struct lrecord_implementation lrecord_##c_name;   \
 INLINE structtype *error_check_##c_name (Lisp_Object obj);     \
 INLINE structtype *                                            \
 error_check_##c_name (Lisp_Object obj)                         \
 {                                                              \
-  assert (RECORD_TYPEP (obj, &lrecord_##c_name));              \
+  assert (RECORD_TYPEP (obj, lrecord_type_##c_name));          \
   return (structtype *) XPNTR (obj);                           \
 }                                                              \
 extern Lisp_Object Q##c_name##p
@@ -443,15 +504,14 @@ extern Lisp_Object Q##c_name##p
 # define XSETRECORD(var, p, c_name) do                         \
 {                                                              \
   XSETOBJ (var, Lisp_Type_Record, p);                          \
-  assert (RECORD_TYPEP (var, &lrecord_##c_name));              \
+  assert (RECORD_TYPEP (var, lrecord_type_##c_name));          \
 } while (0)
 
 #else /* not ERROR_CHECK_TYPECHECK */
 
 # define DECLARE_LRECORD(c_name, structtype)                   \
 extern Lisp_Object Q##c_name##p;                               \
-extern CONST_IF_NOT_DEBUG struct lrecord_implementation                \
-  lrecord_##c_name
+extern const struct lrecord_implementation lrecord_##c_name
 # define DECLARE_NONRECORD(c_name, type_enum, structtype)      \
 extern Lisp_Object Q##c_name##p
 # define XRECORD(x, c_name, structtype) ((structtype *) XPNTR (x))
@@ -461,7 +521,7 @@ extern Lisp_Object Q##c_name##p
 
 #endif /* not ERROR_CHECK_TYPECHECK */
 
-#define RECORDP(x, c_name) RECORD_TYPEP (x, &lrecord_##c_name)
+#define RECORDP(x, c_name) RECORD_TYPEP (x, lrecord_type_##c_name)
 
 /* Note: we now have two different kinds of type-checking macros.
    The "old" kind has now been renamed CONCHECK_foo.  The reason for
@@ -487,7 +547,7 @@ extern Lisp_Object Q##c_name##p
    way out and disabled returning from a signal entirely. */
 
 #define CONCHECK_RECORD(x, c_name) do {                        \
- if (!RECORD_TYPEP (x, &lrecord_##c_name))             \
+ if (!RECORD_TYPEP (x, lrecord_type_##c_name))         \
    x = wrong_type_argument (Q##c_name##p, x);          \
 }  while (0)
 #define CONCHECK_NONRECORD(x, lisp_enum, predicate) do {\
@@ -495,7 +555,7 @@ extern Lisp_Object Q##c_name##p
    x = wrong_type_argument (predicate, x);             \
  } while (0)
 #define CHECK_RECORD(x, c_name) do {                   \
- if (!RECORD_TYPEP (x, &lrecord_##c_name))             \
+ if (!RECORD_TYPEP (x, lrecord_type_##c_name))         \
    dead_wrong_type_argument (Q##c_name##p, x);         \
  } while (0)
 #define CHECK_NONRECORD(x, lisp_enum, predicate) do {  \
index ed9849c..801a0c1 100644 (file)
@@ -1705,5 +1705,7 @@ reinit_vars_of_lstream (void)
 void
 vars_of_lstream (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (lstream);
+
   reinit_vars_of_lstream ();
 }
index cd77e07..911016d 100644 (file)
@@ -25,10 +25,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-2-2"  */
 
-/* XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000 are the ones defined so far.  */
index efd8664..52dd45d 100644 (file)
@@ -20,19 +20,6 @@ Boston, MA 02111-1307, USA.  */
 
 /* Synched up with: FSF 19.31. */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
-/* Define how to take a char and sign-extend into an int.
-   On machines where char is signed, this is a no-op.  */
-
-/* ARM note - The RISCiX Norcroft C Compiler has ALL
-   non-32-bit types as unsigned */
-
-#define SIGN_EXTEND_CHAR(c) (((int)(c) << 24) >> 24)
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -40,14 +27,6 @@ Boston, MA 02111-1307, USA.  */
 
 /* ARM note - this is done by the Norcroft compiler - symbol is `__arm' */
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 #ifdef LDAV_SYMBOL
 #undef LDAV_SYMBOL
 #endif
index f366ea5..f19db5d 100644 (file)
@@ -24,11 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="bsd4-3"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
@@ -39,15 +34,6 @@ Boston, MA 02111-1307, USA.  */
 #define sun                    /* Use X support for Sun keyboard stuff. */
 #define C_OPTIMIZE_SWITCH "-Og"        /* No concurrent code allowed here. */
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-/* On Alliants, bitfields are unsigned. */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Concentrix uses a different kernel symbol for load average. */
 
 #undef  LDAV_SYMBOL            /* Undo definition in s-bsd4-2.h */
index f0d2a2f..06921ef 100644 (file)
@@ -27,11 +27,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="bsd4-2"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
@@ -39,15 +34,6 @@ Boston, MA 02111-1307, USA.  */
 
 #define ALLIANT
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-/* On Alliants, bitfields are unsigned. */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* No load average information available for Alliants. */
 
 #undef LOAD_AVE_TYPE
index 40759cf..b4cb895 100644 (file)
@@ -24,8 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-2"  */
 
-#define EXPLICIT_SIGN_EXTEND
-
 #define LIB_STANDARD "-lc"
 
 #ifdef __GNUC__
index 8abe5b9..4810c1e 100644 (file)
@@ -32,11 +32,6 @@ This file works with the Amdahl uts native C compiler. The 5.2u370
 compiler is so brain damaged that it is not even worth trying to use it.
 */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#define WORD_MACHINE /* not actually used anywhere yet! */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
@@ -46,14 +41,6 @@ compiler is so brain damaged that it is not even worth trying to use it.
 /* However for clarity define amdahl_uts */
 #define amdahl_uts
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 /* #define LOAD_AVE_TYPE long*/
index 2bf2940..fe9b01b 100644 (file)
@@ -20,11 +20,6 @@ Boston, MA 02111-1307, USA.  */
 
 /* Synched up with: FSF 19.31. */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -93,10 +88,6 @@ Boston, MA 02111-1307, USA.  */
 #endif /* USG */
 
 
-#ifdef USG5_4
-#define DATA_SEG_BITS 0x08000000
-#endif
-
 #ifdef MSDOS
 #define NO_REMAP
 #endif
@@ -116,17 +107,6 @@ Boston, MA 02111-1307, USA.  */
 #define SEGMENT_MASK ((SEGMENT_SIZE)-1)
 #endif
 
-#if 0
-#ifdef __GNUC__
-/* GCC's alloca() is semi-broken.  See lisp.h.
-
-   This brokenness has been confirmed under both Linux and NetBSD.
-   It may also exist on non-Intel architectures. */
-#define BROKEN_ALLOCA_IN_FUNCTION_CALLS
-#endif
-#endif
-
-
 /* XEmacs change: John Hughes <john@AtlanTech.COM> says using vfork
    under i386-unknown-sysv4.2 makes C-g sometimes cause a SIGSEGV
    in TTY mode; the problem goes away if you use fork */
index 67c3056..896a6cc 100644 (file)
@@ -26,23 +26,10 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-2-2"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically */
 #define ATT3B
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 /* #define LOAD_AVE_TYPE long */
 
index 3bb033b..b3cc63a 100644 (file)
@@ -20,18 +20,6 @@ Boston, MA 02111-1307, USA.  */
 
 /* Synched up with: FSF 19.31. */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#define WORD_MACHINE
-
-/* Define DATA_SEG_BITS if pointers need to be corrected with
-   a segment field.  */
-
-#ifdef FIX_ADDRESS
-#define DATA_SEG_BITS 0xef000000
-#endif
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -41,14 +29,6 @@ Boston, MA 02111-1307, USA.  */
 /*#define m88k*/
 /*#endif*/
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 /* #define LOAD_AVE_TYPE long */
index 2b6ea5e..e4dfb82 100644 (file)
@@ -24,10 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="bsd4-2"  */
 
-/* XINT must explicitly sign extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* celerity preprocessor defines "accel", however the following is clearer */
 #define celerity
 
index 975945f..f18bc99 100644 (file)
@@ -20,11 +20,6 @@ Boston, MA 02111-1307, USA.  */
 
 /* Synched up with: FSF 19.31. */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically */
 
@@ -34,14 +29,6 @@ Boston, MA 02111-1307, USA.  */
 
 #define DOT_GLOBAL_START
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-/* #define EXPLICIT_SIGN_EXTEND */
-
 /* USG systems I know of running on Vaxes do not actually
    support the load average, so disable it for them.  */
 
index 5a9e42c..2427a4f 100644 (file)
@@ -20,24 +20,11 @@ Boston, MA 02111-1307, USA.  */
 
 /* Synched up with: FSF 19.31. */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically.  */
 
 #define m68000
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.
    These are commented out since it is not supported by this machine.  */
 
index dda929b..a618993 100644 (file)
@@ -24,11 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="bsd4-3"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-  
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically.  */
 #ifndef convex  /* The compiler doesn't always do this.  */
@@ -91,9 +86,6 @@ Boston, MA 02111-1307, USA.  */
 
 /* #define NO_REMAP */
 \f
-/* Addresses on the Convex have the high bit set.  */
-#define DATA_SEG_BITS (1 << (INTBITS-1))
-
 /* Right shift is logical shift.
    And the usual way of handling such machines, which involves
    copying the number into sign_extend_temp, does not work
index 5d3623e..887770b 100644 (file)
@@ -24,24 +24,11 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-3"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
    orion, tahoe, APOLLO and many others */
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
@@ -75,11 +62,6 @@ Boston, MA 02111-1307, USA.  */
 #define C_ALLOCA
 #undef HAVE_ALLOCA
 
-/* The data segment in this machine always starts at address 0x10000000.
-   An address of data cannot be stored correctly in a Lisp object;
-   we always lose the high bits.  We must tell XPNTR to add them back.  */
-
-#define DATA_SEG_BITS 0x20000000
 #define DATA_START    0x20000000
 
 /* Define NO_REMAP if memory segmentation makes it not work well
index eb58f9c..27078f5 100644 (file)
@@ -26,11 +26,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-3"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -39,14 +34,6 @@ Boston, MA 02111-1307, USA.  */
 #define m68000
 #define MOTOROLA_DELTA
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 /* #define LOAD_AVE_TYPE long */
index bd559b5..7177af1 100644 (file)
@@ -24,11 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-3"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -42,14 +37,6 @@ Boston, MA 02111-1307, USA.  */
    does not define it automatically.  */
 
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-/* #define EXPLICIT_SIGN_EXTEND */
-
 /* Data type of load average, as read out of kmem.  */
 /* No load average on Motorola machines. */
 /* #define LOAD_AVE_TYPE double */
index 899819b..c19f6ee 100644 (file)
@@ -33,11 +33,6 @@ Boston, MA 02111-1307, USA.  */
 /* #define ncl_el      /* DPX/2 210,220 etc */
 /* #define ncl_mr 1    /* DPX/2 320,340 (and 360,380 ?) */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE /**/
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -45,14 +40,6 @@ Boston, MA 02111-1307, USA.  */
 
 /* /bin/cc on ncl_el and ncl_mr define m68k and mc68000 */
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
index 88a26f8..60b0add 100644 (file)
@@ -36,10 +36,6 @@ Dual running Uniplus (-machine=dual -opsystem=unipl5-2)
 NOTE-END */
 
 
-/* XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000 are the ones defined so far.  */
index 9b18a41..e62c338 100644 (file)
@@ -28,11 +28,6 @@ Boston, MA 02111-1307, USA.  */
 /* This file was modified by Matt Crawford <matt@tank.uchicago.edu>
    to work under Elxsi's 12.0 release of BSD unix. */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/*#define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
@@ -42,15 +37,6 @@ Boston, MA 02111-1307, USA.  */
 #define elxsi
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
-
 /* Name of kernel load average variable */
 
 #undef LDAV_SYMBOL
index 35c6d97..a649ec4 100644 (file)
@@ -20,16 +20,6 @@ Boston, MA 02111-1307, USA.  */
 
 /* Synched up with: Mule 2.0.  Not in FSF. */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
-/* Define how to take a char and sign-extend into an int.
-   On machines where char is signed, this is a no-op.  */
-
-#define SIGN_EXTEND_CHAR(c) ((signed char)(c))
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -38,14 +28,6 @@ Boston, MA 02111-1307, USA.  */
 #      define mips
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
index 763f16e..155aa61 100644 (file)
 #define C_DEBUG_SWITCH "-g"
 #define LIBS_DEBUG "-lg"
 
-
-/* The data segment in this machine always starts at address 0x1000000 = 16M.
-   An address of data cannot be stored correctly in a Lisp object;
-   we always lose the high bits.  We must tell XPNTR to add them back.  */
-
-#define DATA_SEG_BITS 0x1000000
 #define DATA_START    0x1000000
 
 /* The text segment always starts at 0.
index eaa3c7b..a8174f2 100644 (file)
@@ -46,11 +46,6 @@ Gould Power Node (-machine=gould -opsystem=bsd4-2 or bsd4-3)
   A site running a pre-release of 2.1 should #define RELEASE2_1 in config.h.
 NOTE-END */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically */
 
@@ -62,14 +57,6 @@ NOTE-END */
   - it is no longer needed and interferes with a variable in xmenu.c */
 #undef sel
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE double
index 59ccea9..30a68e0 100644 (file)
@@ -36,9 +36,5 @@ Boston, MA 02111-1307, USA.  */
 
 #define HAVE_ALLOCA
 
-/* XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 #define LOAD_AVE_TYPE long
 #define LOAD_AVE_CVT(x) ((int) (((double) (x)) / 2048.0 * 100.0))
index b41a5a1..607b52a 100644 (file)
@@ -24,11 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="hpux"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -37,13 +32,6 @@ Boston, MA 02111-1307, USA.  */
 #      define hp9000s800
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
 \f
 #ifdef __hpux
 /* Now define a symbol for the cpu type, if your compiler
@@ -94,8 +82,6 @@ Boston, MA 02111-1307, USA.  */
 \f
 /* the data segment on this machine always starts at address 0x40000000. */
 
-#define DATA_SEG_BITS 0x40000000
-
 #ifdef DATA_START
 #undef DATA_START
 #endif
index d086b42..14383ef 100644 (file)
@@ -39,11 +39,6 @@ NOTE-END */
 
 /* #define HPUX_5 */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically.  */
 
@@ -51,14 +46,6 @@ NOTE-END */
 #define hp9000s300
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Define CANNOT_DUMP on machines where unexec does not work.
    Then the function dump-emacs will not be defined
    and temacs will do (load "loadup") automatically unless told otherwise.  */
index 338902d..79d3f53 100644 (file)
@@ -24,11 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="<name of system .h file here, without the s- or .h>"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -36,14 +31,6 @@ Boston, MA 02111-1307, USA.  */
 
 #define INTEL860
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
index 4a7afac..73d14e3 100644 (file)
@@ -30,11 +30,6 @@ NOTE-START
   work with certain new X window managers, and may be suboptimal.
 NOTE-END */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -85,11 +80,6 @@ so disable it for them.  */
 #define DATA_START 0x00800000
 #define DATA_END 0
 
-/* The data segment in this machine always starts at address 0x00800000.
-   An address of data cannot be stored correctly in a Lisp object;
-   we always lose the high bits.  We must tell XPNTR to add them back.  */
-
-#define DATA_SEG_BITS 0x00800000
 #endif
 
 #if 0 /* I refuse to promulgate a recommendation that would make
index f287ae9..7b2a2e1 100644 (file)
@@ -51,27 +51,6 @@ Boston, MA 02111-1307, USA.  */
 #define DATA_END 0
 #endif
 
-/* The data segment in this machine always starts at address 0x20000000.
-   An address of data cannot be stored correctly in a Lisp object;
-   we always lose the high bits.  We must tell XPNTR to add them back. */
-
-#ifndef USG5_4
-#define DATA_SEG_BITS 0x20000000
-#else
-#define DATA_SEG_BITS 0
-#endif
-
-#ifdef CANNOT_DUMP
-/* Define shared memory segment symbols */
-
-#define PURE_SEG_BITS 0x30000000
-
-/* Use shared memory.  */
-/* This is turned off because it does not always work. See etc/AIX.DUMP.  */
-/* #define HAVE_SHM */
-#define SHMKEY 5305035         /* used for shared memory code segments */
-#endif /* CANNOT_DUMP */
-
 #define N_BADMAG(x) BADMAG(x)
 #define N_TXTOFF(x) A_TEXTPOS(x)
 #define N_SYMOFF(x) A_SYMPOS(x)
index 3ab6bb8..21e3058 100644 (file)
@@ -50,12 +50,6 @@ Boston, MA 02111-1307, USA.  */
 #define DATA_START 0x20000000
 #define DATA_END 0
 
-/* The data segment in this machine always starts at address 0x20000000.
-   An address of data cannot be stored correctly in a Lisp object;
-   we always lose the high bits.  We must tell XPNTR to add them back.  */
-
-#define DATA_SEG_BITS 0x20000000
-
 #define N_BADMAG(x) BADMAG(x)
 #define N_TXTOFF(x) A_TEXTPOS(x)
 #define N_SYMOFF(x) A_SYMPOS(x)
index d8ee343..61f5246 100644 (file)
@@ -24,11 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="bsd4-2"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#define WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically.  */
 
@@ -40,14 +35,6 @@ Boston, MA 02111-1307, USA.  */
 #define romp /* unfortunately old include files are hanging around.  */
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE double   /* For AIS (sysV) */
@@ -80,11 +67,6 @@ Boston, MA 02111-1307, USA.  */
 
 #define HAVE_ALLOCA
 \f
-/* The data segment in this machine starts at a fixed address.
-   An address of data cannot be stored correctly in a Lisp object;
-   we always lose the high bits.  We must tell XPNTR to add them back.  */
-
-#define DATA_SEG_BITS 0x10000000
 #define DATA_START    0x10000000
 
 /* The text segment always starts at a fixed address.
index c81c6b0..481fade 100644 (file)
@@ -50,11 +50,6 @@ Prime EXL (-machine=intel386 -opsystem=usg5-3)
   Minor changes merged in 19.1.
 NOTE-END */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -152,18 +147,11 @@ NOTE-END */
 
 #ifdef USG
 
-#if 0 /* ALLOCA is now autodetected */
-#define HAVE_ALLOCA
-#endif
 #define NO_REMAP 
 #define TEXT_START 0
 #endif /* USG */
 #endif /* not XENIX */
 
-#ifdef USG5_4
-#define DATA_SEG_BITS 0x08000000
-#endif
-
 #ifdef MSDOS
 #define NO_REMAP
 #endif
index 62b56b0..5e207d2 100644 (file)
@@ -20,11 +20,6 @@ Boston, MA 02111-1307, USA.  */
 
 /* Synched up with: FSF 19.31. */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -38,14 +33,6 @@ Boston, MA 02111-1307, USA.  */
 #define IRIS_4D
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* jg@genmagic.genmagic.com (John Giannandrea) says this is unnecessary.  */
 #if 0
 /* Data type of load average, as read out of kmem.  */
@@ -105,15 +92,7 @@ Boston, MA 02111-1307, USA.  */
 #endif
 
 #define TEXT_START 0x400000
-
-/*
- * DATA_SEG_BITS forces extra bits to be or'd in with any pointers which
- * were stored in a Lisp_Object (as Emacs uses fewer than 32 bits for
- * the value field of a LISP_OBJECT).
- */
-
 #define DATA_START 0x10000000
-#define DATA_SEG_BITS  0x10000000
 
 #undef LIBS_MACHINE
 /* -lsun in case using Yellow Pages for passwords.  */
index 05a03c0..37106d7 100644 (file)
@@ -24,11 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="irix3-3"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -42,14 +37,6 @@ Boston, MA 02111-1307, USA.  */
 #define IRIS_4D
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long     /* This doesn't quite work on the 4D */
@@ -105,14 +92,7 @@ Boston, MA 02111-1307, USA.  */
 
 #define TEXT_START 0x400000
 
-/*
- * DATA_SEG_BITS forces extra bits to be or'd in with any pointers which
- * were stored in a Lisp_Object (as Emacs uses fewer than 32 bits for
- * the value field of a LISP_OBJECT).
- */
-
 #define DATA_START 0x10000000
-#define DATA_SEG_BITS  0x10000000
 
 #undef LIBS_MACHINE
 /* -lsun in case using Yellow Pages for passwords.  */
index caae6dc..45a0138 100644 (file)
@@ -20,11 +20,6 @@ Boston, MA 02111-1307, USA.  */
 
 /* Synched up with: FSF 19.31. */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -38,14 +33,6 @@ Boston, MA 02111-1307, USA.  */
 #define IRIS_4D
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* jg@genmagic.genmagic.com (John Giannandrea) says this is unnecessary.  */
 #if 0
 /* Data type of load average, as read out of kmem.  */
@@ -105,15 +92,7 @@ Boston, MA 02111-1307, USA.  */
 #endif
 
 #define TEXT_START 0x400000
-
-/*
- * DATA_SEG_BITS forces extra bits to be or'd in with any pointers which
- * were stored in a Lisp_Object (as Emacs uses fewer than 32 bits for
- * the value field of a LISP_OBJECT).
- */
-
 #define DATA_START 0x10000000
-#define DATA_SEG_BITS  0x10000000
 
 #undef LIBS_MACHINE
 /* -lsun in case using Yellow Pages for passwords.  */
index 496a7ec..fcb7600 100644 (file)
@@ -58,11 +58,6 @@ NOTE-END */
   (copy-file), it would say that it is non-critical...
 #endif /* 0 */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -72,14 +67,6 @@ NOTE-END */
 #define m68000
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
index 5240b8a..c32dc88 100644 (file)
@@ -34,10 +34,6 @@ NOTE-END */
 
 #define m68000
 
-/* XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #ifdef BSD4_3
index c2a96e6..90ed16e 100644 (file)
@@ -31,15 +31,6 @@ and this notice must be preserved on all copies.  */
 
 /* Synched up with: Mule 2.0.  Not in FSF. */
 
-/* Define how to take a char and sign-extend into an int.
-   On machines where char is signed, this is a no-op.  */
-
-#define SIGN_EXTEND_CHAR(c) (c)
-
-/* XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
index f8cfb5b..e4cdd5e 100644 (file)
@@ -20,14 +20,6 @@ Boston, MA 02111-1307, USA.  */
 
 /* Synched up with: FSF 19.31. */
 
-/* The following symbol gives information on
- the size of various data types.  */
-
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically.  */
 
@@ -35,14 +27,6 @@ Boston, MA 02111-1307, USA.  */
 #define m68k
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the 24-bit bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Define CANNOT_DUMP on machines where unexec does not work.
    Then the function dump-emacs will not be defined
    and temacs will do (load "loadup") automatically unless told otherwise.  */
@@ -59,9 +43,6 @@ Boston, MA 02111-1307, USA.  */
 /* #define VIRT_ADDR_VARIES */
 
 #ifdef linux
-#ifdef __ELF__
-#define DATA_SEG_BITS 0x80000000
-#endif
 
 #define NO_REMAP
 #define TEXT_START 0
index 3480a13..3db18b8 100644 (file)
@@ -24,11 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="rtu"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
@@ -36,14 +31,6 @@ Boston, MA 02111-1307, USA.  */
 /* Masscomp predefines mc68000. */
 #define m68000 mc68000
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#undef EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE double
index 81cfab9..4961423 100644 (file)
@@ -24,10 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="bsd4-2"  */
 
-/* XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Say this machine is a 68000 */
 
 #define m68000
index f7ef70a..6163ad6 100644 (file)
@@ -34,11 +34,6 @@ own configuration files, please let the Free Software Foundation in on
 your work; we'd like to distribute this information.
 NOTE-END  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-/* ns16000 addresses are byte addresses */
-#undef WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
@@ -47,14 +42,6 @@ NOTE-END  */
 #define ns16000
 #define mg1
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 /* mg1 its an unsigned long */
 #define LOAD_AVE_TYPE unsigned long
index 15fefcc..a86c443 100644 (file)
@@ -36,16 +36,6 @@ This is the m- file for SNI RM*00 machines. Use s- sinix5-4.h file!
 With this the file mips-siemens.h is obsolete.
 NOTE-END  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
-/* Define how to take a char and sign-extend into an int.
-   On machines where char is signed, this is a no-op.  */
-
-#define SIGN_EXTEND_CHAR(c) ((signed char)(c))
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -54,14 +44,6 @@ NOTE-END  */
 #      define mips
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the 24-bit bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
@@ -114,10 +96,6 @@ NOTE-END  */
 /* MARCO ???
 */
 #define TEXT_START 0x400000
-/*
-#define DATA_START 0x10000000
-#define DATA_SEG_BITS  0x10000000
-*/
 
 #undef ORDINARY_LINK
 
index 32c798f..e17397c 100644 (file)
@@ -36,16 +36,6 @@ This is the m- file for SNI RM*00 machines. Use s- sinix5-4.h file!
 With this the file mips-siemens.h is obsolete.
 NOTE-END  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
-/* Define how to take a char and sign-extend into an int.
-   On machines where char is signed, this is a no-op.  */
-
-#define SIGN_EXTEND_CHAR(c) ((signed char)(c))
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -54,14 +44,6 @@ NOTE-END  */
 #      define mips
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the 24-bit bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
@@ -114,10 +96,7 @@ NOTE-END  */
 /* MARCO ???
 */
 #define TEXT_START 0x400000
-/*
-#define DATA_START 0x10000000
-#define DATA_SEG_BITS  0x10000000
-*/
+
 #ifdef UNEXEC
 #undef UNEXEC
 #endif
index a0751cb..dc12e02 100644 (file)
@@ -29,16 +29,6 @@ Use m-mips4.h for RISCOS version 4; use s-bsd4-3.h with the BSD world.
 Note that the proper m- file for the Decstation is m-pmax.h.
 NOTE-END  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
-/* Define how to take a char and sign-extend into an int.
-   On machines where char is signed, this is a no-op.  */
-
-#define SIGN_EXTEND_CHAR(c) ((signed char)(c))
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -47,14 +37,6 @@ NOTE-END  */
 #      define mips
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
@@ -116,7 +98,6 @@ NOTE-END  */
 #ifdef linux
 #define TEXT_START      0x00400000
 #define DATA_START      0x10000000
-#define DATA_SEG_BITS   0x10000000
 #else /* !linux */
 #define TEXT_START 0x400000
 #define DATA_START 0x800000
index f2d51b4..b94c659 100644 (file)
@@ -26,15 +26,6 @@ Boston, MA 02111-1307, USA.  */
 #define NeXT
 #endif
 
-/* Define how to take a char and sign-extend into an int.
-   On machines where char is signed, this is a no-op.  */
-
-#define SIGN_EXTEND_CHAR(c) (c)
-
-/* XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Say that the text segment of a.out includes the header;
    the header actually occupies the first few bytes of the text segment
    and is counted in hdr.a_text.  */
index 5549c8f..89ed532 100644 (file)
@@ -30,11 +30,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="<name of system .h file here, without the s- or .h>"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -44,14 +39,6 @@ Boston, MA 02111-1307, USA.  */
 #define gcx
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-/* #define EXPLICIT_SIGN_EXTEND */
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
index 789fe6c..8d9be7f 100644 (file)
@@ -29,11 +29,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="<name of system .h file here, without the s- or .h>"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -43,18 +38,6 @@ Boston, MA 02111-1307, USA.  */
 #define m88000
 #endif
 
-#define VALBITS 26
-
-#define GCTYPEBITS 5
-
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-/* #define EXPLICIT_SIGN_EXTEND */
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
index 5d5967f..c047f12 100644 (file)
@@ -24,24 +24,11 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-2"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
    orion, tahoe, APOLLO and many others */
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 /* #define LOAD_AVE_TYPE long */
index 15a5ef0..874bbb3 100644 (file)
@@ -24,10 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-2"  */
 
-/* XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000 are the ones defined so far.  */
index 368d209..323cf44 100644 (file)
@@ -31,15 +31,6 @@ Boston, MA 02111-1307, USA.  */
 #define orion
 #endif
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#define WORD_MACHINE
-
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE double
index 29ee9fe..f558ef4 100644 (file)
@@ -25,9 +25,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="bsd4-2"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
 /* Data type of load average, as read out of kmem.  */
 /* This used to be `double'.  */
 
index 110030d..9161bd8 100644 (file)
@@ -25,10 +25,6 @@ Boston, MA 02111-1307, USA.  */
 #define m68000
 #define mc68000 1
 
-/* XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Define NO_REMAP if memory segmentation makes it not work well
    to change the boundary between the text section and data section
    when Emacs is dumped.  If you define this, the preloaded Lisp
@@ -51,17 +47,6 @@ Boston, MA 02111-1307, USA.  */
 
 #define LD_SWITCH_MACHINE "-e __start"
 
-#if    pfa50 || pfa70
-
-/* On A-50/60/70/80, data space has high order byte use. */
-#define VALBITS 26
-#define VALMASK (((1<<VALBITS) - 1) | 0x60000000)
-/* XEmacs: markbit is between type bits and value bits */
-/* #define XTYPE(a) ((enum Lisp_Type) (((a) >> VALBITS) & GCTYPEMASK)) */
-#define XTYPE(a) ((enum Lisp_Type) (((a) >> ((VALBITS) + 1)) & GCTYPEMASK))
-
-#endif /* pfa50, pfa70 */
-
 /* SX/A has alloca in the PW library.  */
 
 #define LIB_STANDARD "-lPW -lc"
index 0a80c0f..ec8d956 100644 (file)
@@ -24,11 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-2"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
@@ -36,14 +31,6 @@ Boston, MA 02111-1307, USA.  */
 /* Plexus predefines m68 instead of m68000. */
 #define m68000 m68
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#undef EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #undef LOAD_AVE_TYPE
index d27722c..3ce797b 100644 (file)
@@ -30,7 +30,6 @@ NOTE-END  */
 #undef LD_SWITCH_MACHINE
 #undef DATA_START
 #define DATA_START 0x10000000
-#define DATA_SEG_BITS 0x10000000
 
 #if 0
 /* I don't see any such conflict in Ultrix 4.2, 4.2a, or 4.3.  And
index f8e2282..7284f6d 100644 (file)
@@ -43,10 +43,6 @@ Boston, MA 02111-1307, USA.  */
 # endif
 #endif
 
-/* XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 #ifndef __linux__
 /* Data type of load average, as read out of kmem.  */
 
@@ -66,32 +62,12 @@ Boston, MA 02111-1307, USA.  */
 
 #define NO_REMAP
 
-#if 0
-#define TEXT_START 0x00001000
-#define TEXT_END 0
-#define DATA_START 0x01000000
-#define DATA_END 0
-
-/* The data segment in this machine always starts at address 0x10000000.
-   An address of data cannot be stored correctly in a Lisp object;
-   we always lose the high bits.  We must tell XPNTR to add them back. */
-
-#define DATA_SEG_BITS 0x10000000
-#endif
-
 /* Use type int rather than a union, to represent Lisp_Object */
 
 /* #define NO_UNION_TYPE */
 
 #ifdef CANNOT_DUMP
-/* Define shared memory segment symbols */
-
-#define PURE_SEG_BITS 0x30000000
 
-/* Use shared memory.  */
-/* This is turned off because it does not always work. See etc/AIX.DUMP.  */
-/* #define HAVE_SHM */
-#define SHMKEY 5305035         /* used for shared memory code segments */
 #endif /* CANNOT_DUMP */
 
 #define N_BADMAG(x) BADMAG(x)
index 1a88390..7bf7766 100644 (file)
@@ -24,10 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="bsd4-2"  */
 
-/* XINT must explicitly sign extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* pyramid preprocessor defines "pyr", however the following is clearer */
 #define pyramid
 
index 047ba3b..b64851d 100644 (file)
@@ -26,11 +26,6 @@ Boston, MA 02111-1307, USA.  */
 
 #include "intel386.h"
 
-/* Define how to take a char and sign-extend into an int.
-   On machines where char is signed, this is a no-op.  */
-/* CHECK THIS */
-#define SIGN_EXTEND_CHAR(c) (c)
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -45,14 +40,6 @@ Boston, MA 02111-1307, USA.  */
 #define CRT0_DUMMIES dummy1, dummy2, dummy3,
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the 24-bit bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE unsigned long
index 4ee869d..e4b7028 100644 (file)
@@ -31,11 +31,6 @@ NOTE-END */
 /* NOTE: this file works for DYNIX release 2.0 
          (not tested on 1.3) on NS32000's */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
@@ -54,14 +49,6 @@ NOTE-END */
 
 #define DOT_GLOBAL_START
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE unsigned long
index fda7878..a6900e5 100644 (file)
@@ -28,11 +28,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="irix3-3"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -54,14 +49,6 @@ Boston, MA 02111-1307, USA.  */
 #undef HAVE_NATIVE_SOUND
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long     /* This doesn't quite work on the 4D */
@@ -116,15 +103,7 @@ Boston, MA 02111-1307, USA.  */
 #define UNEXEC "unexelfsgi.o"
 
 #define TEXT_START 0x400000
-
-/*
- * DATA_SEG_BITS forces that bit to be or'd in with any pointers which
- * are trying to access pure strings (as gnu-emacs only allows 24 bits
- * for the value field of a LISP_OBJECT).
- */
-
 #define DATA_START 0x10000000
-#define DATA_SEG_BITS  0x10000000
 
 #undef LIBS_MACHINE
 /* -lsun in case using Yellow Pages for passwords.  */
index 457e9cd..c1445d0 100644 (file)
@@ -42,10 +42,6 @@ NOTE-END  */
 # endif
 #endif
 
-/* XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Mask for address bits within a memory segment */
 
 #define SEGMENT_MASK (SEGSIZ - 1)
index 4436e1b..4823ac3 100644 (file)
@@ -32,10 +32,6 @@ Boston, MA 02111-1307, USA.  */
 
 #define sps7  
 
-/* XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 /* Suspect there is something weird about this machine, so turn it off.  */
 
index 453e948..def9730 100644 (file)
@@ -24,11 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-2"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000, pyramid, orion, tahoe, APOLLO and STRIDE
@@ -39,14 +34,6 @@ Boston, MA 02111-1307, USA.  */
 #define STRIDE
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE double
index e98ed8a..e5d7483 100644 (file)
@@ -47,10 +47,6 @@ NOTE-END  */
 /* Sun can't write competent compilers */
 #define COMPILER_REGISTER_BUG
 
-/* XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
index 3f0c7a8..921f362 100644 (file)
@@ -51,10 +51,6 @@ NOTE-END  */
 /* Sun can't write competent compilers */
 #define COMPILER_REGISTER_BUG
 
-/* XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
index 363db63..dfc7206 100644 (file)
@@ -24,22 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-3"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
-/* Now define a symbol for the cpu type, if your compiler
-   does not define it automatically */
-
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-/* #define EXPLICIT_SIGN_EXTEND */
-
 /* Data type of load average, as read out of kmem.  */
 /* #define LOAD_AVE_TYPE long */
 
index 1dde63a..5fc2e48 100644 (file)
@@ -29,10 +29,6 @@ Use -opsystem=bsd4-2 or -opsystem=bsd4-3, depending on the version of
 Berkeley you are running.
 NOTE-END  */
 
-/* XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Say this machine is a tahoe */
 
 #ifndef tahoe
index 1b9d5f0..12c7b82 100644 (file)
@@ -24,11 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-2-2"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#define WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
@@ -37,14 +32,6 @@ Boston, MA 02111-1307, USA.  */
 /* #define m68k is defined by the Compiler */
 /* #define m68000 */
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 /* #define LOAD_AVE_TYPE double */
index 4e8a64e..85fc64f 100644 (file)
@@ -24,11 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="bsd4-3"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically.  */
 
index 494280b..11b8146 100644 (file)
@@ -22,10 +22,6 @@ Boston, MA 02111-1307, USA.  */
 
 /* Synched up with: FSF 19.31. */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -34,17 +30,6 @@ Boston, MA 02111-1307, USA.  */
 #define m88000
 #endif
 
-/* Define how to take a char and sign-extend into an int.
-   On machines where char is signed, this is a no-op.  */
-#define SIGN_EXTEND_CHAR(c) (c)
-
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-/* #define EXPLICIT_SIGN_EXTEND */
-
 /* Data type of load average, as read out of kmem.  */
 /* #define LOAD_AVE_TYPE double */     /* No load average on XD88. */
 /* Convert that into an integer that is 100 for a load average of 1.0  */
index a6c211f..dc5c9ea 100644 (file)
@@ -24,24 +24,11 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="<name of system .h file here, without the .h>"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#define WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
    orion, tahoe, APOLLO and many others */
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
index 2e9c891..37413e5 100644 (file)
@@ -24,25 +24,12 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-2-2"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
    are the ones defined so far.  */
 #define m68000
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 /* #define LOAD_AVE_TYPE long */
index 6cf236f..502e814 100644 (file)
@@ -24,25 +24,12 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-3"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
    are the ones defined so far.  */
 #define m68000
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 /* #define LOAD_AVE_TYPE long */
index e123232..5e4d2af 100644 (file)
@@ -24,11 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-3"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000, pyramid, orion, tahoe and APOLLO
@@ -37,14 +32,6 @@ Boston, MA 02111-1307, USA.  */
 
 #define m68000 mc68000
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#undef EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE double
index b05aa36..87d5803 100644 (file)
@@ -24,11 +24,6 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-2"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#undef WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    vax, m68000, ns16000 are the ones defined so far.  */
@@ -40,10 +35,6 @@ Boston, MA 02111-1307, USA.  */
 /* This flag is used only in alloca.s.  */
 #define WICAT
 
-/* XINT must explicitly sign-extend */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #undef LOAD_AVE_TYPE
index cdf6b40..a20bce5 100644 (file)
@@ -30,11 +30,6 @@ Boston, MA 02111-1307, USA.  */
 
 #define NO_ARG_ARRAY
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#define WORD_MACHINE
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -45,14 +40,6 @@ Boston, MA 02111-1307, USA.  */
 
 #define NO_UNION_TYPE
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the 24-bit bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
index cec6abe..6dfb22d 100644 (file)
@@ -26,24 +26,11 @@ Boston, MA 02111-1307, USA.  */
    operating system this machine is likely to run.
    USUAL-OPSYS="usg5-2"  */
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-/* #define WORD_MACHINE */
-
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
    orion, tahoe, APOLLO and many others */
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 /* #define LOAD_AVE_TYPE long */
index 9f41290..599110a 100644 (file)
@@ -201,10 +201,8 @@ extern void *sbrk ();
 extern char *start_of_data (void);
 
 #ifdef BSD
-#ifndef DATA_SEG_BITS
 #define start_of_data() &etext
 #endif
-#endif
 
 #ifndef emacs
 #define start_of_data() &etext
index 408acc3..0811ac0 100644 (file)
@@ -509,6 +509,8 @@ compute_buffer_marker_usage (struct buffer *b, struct overhead_stats *ovstats)
 void
 syms_of_marker (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (marker);
+
   DEFSUBR (Fmarker_position);
   DEFSUBR (Fmarker_buffer);
   DEFSUBR (Fset_marker);
index fac6732..427a61c 100644 (file)
@@ -104,11 +104,9 @@ extern POINTER start_of_data (void);
 #define EXCEEDS_LISP_PTR(ptr) 0
 
 #ifdef BSD
-#ifndef DATA_SEG_BITS
 extern int etext;
 #define start_of_data() &etext
 #endif
-#endif
 
 #else  /* not emacs */
 extern char etext;
index d25ccc6..a388c30 100644 (file)
@@ -136,24 +136,24 @@ displayable_menu_item (Lisp_Object gui_item, int bar_p)
 
   /* Escape '&' as '&&' */
   ptr = buf;
-  while ((ptr=memchr (ptr, '&', ll-(ptr-buf))) != NULL)
+  while ((ptr = (char*) memchr (ptr, '&', ll - (ptr - buf))) != NULL)
     {
-      if (ll+2 >= MAX_MENUITEM_LENGTH)
+      if (ll + 2 >= MAX_MENUITEM_LENGTH)
        signal_simple_error ("Menu item produces too long displayable string",
                             XGUI_ITEM (gui_item)->name);
-      memmove (ptr+1, ptr, (ll-(ptr-buf))+1);
+      memmove (ptr + 1, ptr, (ll - (ptr - buf)) + 1);
       ll++;
-      ptr+=2;
+      ptr += 2;
     }
 
   /* Replace XEmacs accelerator '%_' with Windows accelerator '&' */
   ptr = buf;
-  while ((ptr=memchr (ptr, '%', ll-(ptr-buf))) != NULL)
+  while ((ptr = (char*) memchr (ptr, '%', ll - (ptr - buf))) != NULL)
     {
-      if (*(ptr+1) == '_')
+      if (*(ptr + 1) == '_')
        {
          *ptr = '&';
-         memmove (ptr+1, ptr+2, ll-(ptr-buf+2));
+         memmove (ptr + 1, ptr + 2, ll - (ptr - buf + 2));
          ll--;
        }
       ptr++;
index bf0f718..7aabbc0 100644 (file)
@@ -1259,6 +1259,8 @@ Return a string of the characters comprising a composite character.
 void
 syms_of_mule_charset (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (charset);
+
   DEFSUBR (Fcharsetp);
   DEFSUBR (Ffind_charset);
   DEFSUBR (Fget_charset);
index e745609..4b21a11 100644 (file)
--- a/src/nt.c
+++ b/src/nt.c
@@ -290,7 +290,7 @@ init_user_info ()
     putenv ((GetVersion () & 0x80000000) ? "SHELL=command" : "SHELL=cmd");
 
   /* Set dir and shell from environment variables. */
-  strcpy (the_passwd.pw_dir, get_home_directory());
+  strcpy (the_passwd.pw_dir, (char *)get_home_directory());
   strcpy (the_passwd.pw_shell, getenv ("SHELL"));
 }
 
@@ -299,9 +299,7 @@ init_user_info ()
    case path name components to lower case.  */
 
 static void
-normalize_filename (fp, path_sep)
-     REGISTER char *fp;
-     char path_sep;
+normalize_filename (char *fp, char path_sep)
 {
   char sep;
   char *elem;
@@ -357,16 +355,14 @@ normalize_filename (fp, path_sep)
 
 /* Destructively turn backslashes into slashes.  */
 void
-dostounix_filename (p)
-     REGISTER char *p;
+dostounix_filename (char *p)
 {
   normalize_filename (p, '/');
 }
 
 /* Destructively turn slashes into backslashes.  */
 void
-unixtodos_filename (p)
-     REGISTER char *p;
+unixtodos_filename (char *p)
 {
   normalize_filename (p, '\\');
 }
@@ -375,10 +371,7 @@ unixtodos_filename (p)
    (From msdos.c...probably should figure out a way to share it,
    although this code isn't going to ever change.)  */
 int
-crlf_to_lf (n, buf, lf_count)
-     REGISTER int n;
-     REGISTER unsigned char *buf;
-     REGISTER unsigned *lf_count;
+crlf_to_lf (int n, unsigned char *buf, unsigned *lf_count)
 {
   unsigned char *np = buf;
   unsigned char *startp = buf;
@@ -555,9 +548,7 @@ request_sigio (void)
 #define REG_ROOT "SOFTWARE\\GNU\\XEmacs"
 
 LPBYTE 
-nt_get_resource (key, lpdwtype)
-    char *key;
-    LPDWORD lpdwtype;
+nt_get_resource (char *key, LPDWORD lpdwtype)
 {
   LPBYTE lpvalue;
   HKEY hrootkey = NULL;
@@ -1479,7 +1470,7 @@ stat (const char * path, struct stat * buf)
   len = strlen (name);
   rootdir = (path >= name + len - 1
             && (IS_DIRECTORY_SEP (*path) || *path == 0));
-  name = strcpy (alloca (len + 2), name);
+  name = strcpy ((char *)alloca (len + 2), name);
 
   if (rootdir)
     {
@@ -2034,11 +2025,11 @@ open_input_file (file_data *p_file, const char *filename)
   if (file_base == 0) 
     return FALSE;
 
-  p_file->name = (char*)filename;
+  p_file->name = (char *)filename;
   p_file->size = size;
   p_file->file = file;
   p_file->file_mapping = file_mapping;
-  p_file->file_base = file_base;
+  p_file->file_base = (char *)file_base;
 
   return TRUE;
 }
index 8e54bc8..704bd32 100644 (file)
@@ -80,7 +80,7 @@ get_data_end (void)
   return data_region_end;
 }
 
-static char *
+static unsigned char *
 allocate_heap (void)
 {
   /* The base address for our GNU malloc heap is chosen in conjunction
@@ -122,7 +122,7 @@ allocate_heap (void)
   unsigned long base = 0x01B00000;   /*  27MB */
   /* Temporary hack for the non-starting problem - use 28 (256Mb) rather than VALBITS (1Gb) */
   unsigned long end  = 1 << 28;      /* 256MB */
-  void *ptr = NULL;
+  void *ptr;
 
 #define NTHEAP_PROBE_BASE 1
 #if NTHEAP_PROBE_BASE /* This is never normally defined */
@@ -144,7 +144,7 @@ allocate_heap (void)
                      PAGE_NOACCESS);
 #endif
 
-  return ptr;
+  return (unsigned char*) ptr;
 }
 
 
@@ -227,7 +227,7 @@ sbrk (unsigned long increment)
 void
 recreate_heap (char *executable_path)
 {
-  unsigned char *tmp;
+  void *tmp;
 
   /* First reserve the upper part of our heap.  (We reserve first
      because there have been problems in the past where doing the
index cb169d2..091cf0c 100644 (file)
@@ -51,7 +51,7 @@ extern int                  nt_minor_version;
 
 /* To prevent zero-initialized variables from being placed into the bss
    section, use non-zero values to represent an uninitialized state.  */
-#define UNINIT_PTR ((void *) 0xF0A0F0A0)
+#define UNINIT_PTR ((unsigned char*) 0xF0A0F0A0)
 #define UNINIT_LONG (0xF0A0F0A0L)
 
 /* Emulation of Unix sbrk().  */
@@ -80,11 +80,11 @@ extern unsigned char *round_to_next (unsigned char *address,
 /* Useful routines for manipulating memory-mapped files. */
 
 typedef struct file_data {
-    const char    *name;
-    unsigned long  size;
-    HANDLE         file;
-    HANDLE         file_mapping;
-    unsigned char *file_base;
+  const char    *name;
+  unsigned long  size;
+  HANDLE         file;
+  HANDLE         file_mapping;
+  char *file_base;
 } file_data;
 
 #define OFFSET_TO_RVA(var,section) \
index 8ff0be7..d535fd9 100644 (file)
@@ -51,7 +51,7 @@ void play_sound_file (char *sound_file, int volume)
        return;
 
       size = lseek (ofd, 0, SEEK_END);
-      data = xmalloc (size);
+      data = (unsigned char *)xmalloc (size);
       lseek (ofd, 0, SEEK_SET);
       
       if (!data)
@@ -90,7 +90,7 @@ static void play_sound_data_1 (unsigned char *data, int length, int volume,
 
   if (convert_to_malloc)
     {
-      sound_data = xmalloc (length);
+      sound_data = (unsigned char *)xmalloc (length);
       memcpy (sound_data, data, length);
     }
   else
index f15fe99..0b95e43 100644 (file)
@@ -533,7 +533,7 @@ win32_executable_type (const char * filename, int * is_dos_app, int * is_cygnus_
          if (exe_header->e_magic != DOSMAGIC)
            goto unwind;
 
-         if ((char *) exe_header->e_lfanew > (char *) executable.size)
+         if ((char*) exe_header->e_lfanew > (char*) executable.size)
            {
              /* Some dos headers (pkunzip) have bogus e_lfanew fields.  */
              *is_dos_app = TRUE;
@@ -550,9 +550,9 @@ win32_executable_type (const char * filename, int * is_dos_app, int * is_cygnus_
          if (dos_header->e_magic != IMAGE_DOS_SIGNATURE)
            goto unwind;
          
-         nt_header = (PIMAGE_NT_HEADERS) ((char *) dos_header + dos_header->e_lfanew);
+         nt_header = (PIMAGE_NT_HEADERS) ((char*) dos_header + dos_header->e_lfanew);
          
-         if ((char *) nt_header > (char *) dos_header + executable.size) 
+         if ((char*) nt_header > (char*) dos_header + executable.size) 
            {
              /* Some dos headers (pkunzip) have bogus e_lfanew fields.  */
              *is_dos_app = TRUE;
@@ -571,11 +571,12 @@ win32_executable_type (const char * filename, int * is_dos_app, int * is_cygnus_
              IMAGE_SECTION_HEADER * section;
 
              section = rva_to_section (import_dir.VirtualAddress, nt_header);
-             imports = RVA_TO_PTR (import_dir.VirtualAddress, section, executable);
+             imports = (IMAGE_IMPORT_DESCRIPTOR *) RVA_TO_PTR (import_dir.VirtualAddress,
+                                                               section, executable);
              
              for ( ; imports->Name; imports++)
                {
-                 char * dllname = RVA_TO_PTR (imports->Name, section, executable);
+                 char *dllname = (char*) RVA_TO_PTR (imports->Name, section, executable);
 
                  if (strcmp (dllname, "cygwin.dll") == 0)
                    {
@@ -630,7 +631,7 @@ merge_and_sort_env (char **envp1, char **envp2, char **new_envp)
     *nptr++ = *optr++;
   num += optr - envp2;
 
-  qsort (new_envp, num, sizeof (char *), compare_env);
+  qsort (new_envp, num, sizeof (char*), compare_env);
 
   *nptr = NULL;
 }
@@ -681,7 +682,7 @@ sys_spawnve (int mode, const char *cmdname,
     }
   else
     {
-      (char*)cmdname = alloca (strlen (argv[0]) + 1);
+      cmdname = (char*)alloca (strlen (argv[0]) + 1);
       strcpy ((char*)cmdname, argv[0]);
     }
   UNGCPRO;
@@ -703,7 +704,7 @@ sys_spawnve (int mode, const char *cmdname,
      while leaving the real app name as argv[0].  */
   if (is_dos_app)
     {
-      cmdname = alloca (MAXPATHLEN);
+      cmdname = (char*) alloca (MAXPATHLEN);
       if (egetenv ("CMDPROXY"))
        strcpy ((char*)cmdname, egetenv ("CMDPROXY"));
       else
@@ -802,7 +803,7 @@ sys_spawnve (int mode, const char *cmdname,
        }
       arglen += strlen (*targ++) + 1;
     }
-  cmdline = alloca (arglen);
+  cmdline = (char*) alloca (arglen);
   targ = (char**)argv;
   parg = cmdline;
   while (*targ)
@@ -884,7 +885,7 @@ sys_spawnve (int mode, const char *cmdname,
   
   /* and envp...  */
   arglen = 1;
-  targ = (char**)envp;
+  targ = (char**) envp;
   numenv = 1; /* for end null */
   while (*targ)
     {
@@ -898,11 +899,11 @@ sys_spawnve (int mode, const char *cmdname,
   numenv++;
 
   /* merge env passed in and extra env into one, and sort it.  */
-  targ = (char **) alloca (numenv * sizeof (char *));
-  merge_and_sort_env ((char**)envp, extra_env, targ);
+  targ = (char **) alloca (numenv * sizeof (char*));
+  merge_and_sort_env ((char**) envp, extra_env, targ);
 
   /* concatenate env entries.  */
-  env = alloca (arglen);
+  env = (char*) alloca (arglen);
   parg = env;
   while (*targ)
     {
index 726af9d..421bb51 100644 (file)
@@ -59,676 +59,685 @@ Boston, MA 02111-1307, USA.  */
 typedef struct colormap_t 
 {
   const char *name;
-  const COLORREF colorref;
+  COLORREF colorref;
 } colormap_t;
 
 /* Colors from X11R6 "XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp" */
+/* MSWindows tends to round up the numbers in it's palette, ie where X uses
+ * 127, MSWindows uses 128. Colors commented as "Adjusted" are tweaked to
+ * match the Windows standard palette to increase the likelyhood of
+ * mswindows_color_to_string() finding a named match.
+ */
 static const colormap_t mswindows_X_color_map[] = 
 {
-  {"snow"                      , PALETTERGB (255, 250, 250) },
-  {"GhostWhite"                        , PALETTERGB (248, 248, 255) },
-  {"WhiteSmoke"                        , PALETTERGB (245, 245, 245) },
-  {"gainsboro"                 , PALETTERGB (220, 220, 220) },
-  {"FloralWhite"               , PALETTERGB (255, 250, 240) },
-  {"OldLace"                   , PALETTERGB (253, 245, 230) },
-  {"linen"                     , PALETTERGB (250, 240, 230) },
-  {"AntiqueWhite"              , PALETTERGB (250, 235, 215) },
-  {"PapayaWhip"                        , PALETTERGB (255, 239, 213) },
-  {"BlanchedAlmond"            , PALETTERGB (255, 235, 205) },
-  {"bisque"                    , PALETTERGB (255, 228, 196) },
-  {"PeachPuff"                 , PALETTERGB (255, 218, 185) },
-  {"NavajoWhite"               , PALETTERGB (255, 222, 173) },
-  {"moccasin"                  , PALETTERGB (255, 228, 181) },
-  {"cornsilk"                  , PALETTERGB (255, 248, 220) },
-  {"ivory"                     , PALETTERGB (255, 255, 240) },
-  {"LemonChiffon"              , PALETTERGB (255, 250, 205) },
-  {"seashell"                  , PALETTERGB (255, 245, 238) },
-  {"honeydew"                  , PALETTERGB (240, 255, 240) },
-  {"MintCream"                 , PALETTERGB (245, 255, 250) },
-  {"azure"                     , PALETTERGB (240, 255, 255) },
-  {"AliceBlue"                 , PALETTERGB (240, 248, 255) },
-  {"lavender"                  , PALETTERGB (230, 230, 250) },
-  {"LavenderBlush"             , PALETTERGB (255, 240, 245) },
-  {"MistyRose"                 , PALETTERGB (255, 228, 225) },
-  {"white"                     , PALETTERGB (255, 255, 255) },
-  {"black"                     , PALETTERGB (0, 0, 0) },
-  {"DarkSlateGray"             , PALETTERGB (47, 79, 79) },
-  {"DarkSlateGrey"             , PALETTERGB (47, 79, 79) },
-  {"DimGray"                   , PALETTERGB (105, 105, 105) },
-  {"DimGrey"                   , PALETTERGB (105, 105, 105) },
-  {"SlateGray"                 , PALETTERGB (112, 128, 144) },
-  {"SlateGrey"                 , PALETTERGB (112, 128, 144) },
-  {"LightSlateGray"            , PALETTERGB (119, 136, 153) },
-  {"LightSlateGrey"            , PALETTERGB (119, 136, 153) },
-  {"gray"                      , PALETTERGB (190, 190, 190) },
-  {"grey"                      , PALETTERGB (190, 190, 190) },
-  {"LightGrey"                 , PALETTERGB (211, 211, 211) },
-  {"LightGray"                 , PALETTERGB (211, 211, 211) },
-  {"MidnightBlue"              , PALETTERGB (25, 25, 112) },
-  {"navy"                      , PALETTERGB (0, 0, 128) },
-  {"NavyBlue"                  , PALETTERGB (0, 0, 128) },
-  {"CornflowerBlue"            , PALETTERGB (100, 149, 237) },
-  {"DarkSlateBlue"             , PALETTERGB (72, 61, 139) },
-  {"SlateBlue"                 , PALETTERGB (106, 90, 205) },
-  {"MediumSlateBlue"           , PALETTERGB (123, 104, 238) },
-  {"LightSlateBlue"            , PALETTERGB (132, 112, 255) },
-  {"MediumBlue"                        , PALETTERGB (0, 0, 205) },
-  {"RoyalBlue"                 , PALETTERGB (65, 105, 225) },
-  {"blue"                      , PALETTERGB (0, 0, 255) },
-  {"DodgerBlue"                        , PALETTERGB (30, 144, 255) },
-  {"DeepSkyBlue"               , PALETTERGB (0, 191, 255) },
-  {"SkyBlue"                   , PALETTERGB (135, 206, 235) },
-  {"LightSkyBlue"              , PALETTERGB (135, 206, 250) },
-  {"SteelBlue"                 , PALETTERGB (70, 130, 180) },
-  {"LightSteelBlue"            , PALETTERGB (176, 196, 222) },
-  {"LightBlue"                 , PALETTERGB (173, 216, 230) },
-  {"PowderBlue"                        , PALETTERGB (176, 224, 230) },
-  {"PaleTurquoise"             , PALETTERGB (175, 238, 238) },
-  {"DarkTurquoise"             , PALETTERGB (0, 206, 209) },
-  {"MediumTurquoise"           , PALETTERGB (72, 209, 204) },
-  {"turquoise"                 , PALETTERGB (64, 224, 208) },
-  {"cyan"                      , PALETTERGB (0, 255, 255) },
-  {"LightCyan"                 , PALETTERGB (224, 255, 255) },
-  {"CadetBlue"                 , PALETTERGB (95, 158, 160) },
-  {"MediumAquamarine"          , PALETTERGB (102, 205, 170) },
-  {"aquamarine"                        , PALETTERGB (127, 255, 212) },
-  {"DarkGreen"                 , PALETTERGB (0, 100, 0) },
-  {"DarkOliveGreen"            , PALETTERGB (85, 107, 47) },
-  {"DarkSeaGreen"              , PALETTERGB (143, 188, 143) },
-  {"SeaGreen"                  , PALETTERGB (46, 139, 87) },
-  {"MediumSeaGreen"            , PALETTERGB (60, 179, 113) },
-  {"LightSeaGreen"             , PALETTERGB (32, 178, 170) },
-  {"PaleGreen"                 , PALETTERGB (152, 251, 152) },
-  {"SpringGreen"               , PALETTERGB (0, 255, 127) },
-  {"LawnGreen"                 , PALETTERGB (124, 252, 0) },
-  {"green"                     , PALETTERGB (0, 255, 0) },
-  {"chartreuse"                        , PALETTERGB (127, 255, 0) },
-  {"MediumSpringGreen"         , PALETTERGB (0, 250, 154) },
-  {"GreenYellow"               , PALETTERGB (173, 255, 47) },
-  {"LimeGreen"                 , PALETTERGB (50, 205, 50) },
-  {"YellowGreen"               , PALETTERGB (154, 205, 50) },
-  {"ForestGreen"               , PALETTERGB (34, 139, 34) },
-  {"OliveDrab"                 , PALETTERGB (107, 142, 35) },
-  {"DarkKhaki"                 , PALETTERGB (189, 183, 107) },
-  {"khaki"                     , PALETTERGB (240, 230, 140) },
-  {"PaleGoldenrod"             , PALETTERGB (238, 232, 170) },
-  {"LightGoldenrodYellow"      , PALETTERGB (250, 250, 210) },
-  {"LightYellow"               , PALETTERGB (255, 255, 224) },
-  {"yellow"                    , PALETTERGB (255, 255, 0) },
-  {"gold"                      , PALETTERGB (255, 215, 0) },
-  {"LightGoldenrod"            , PALETTERGB (238, 221, 130) },
-  {"goldenrod"                 , PALETTERGB (218, 165, 32) },
-  {"DarkGoldenrod"             , PALETTERGB (184, 134, 11) },
-  {"RosyBrown"                 , PALETTERGB (188, 143, 143) },
-  {"IndianRed"                 , PALETTERGB (205, 92, 92) },
-  {"SaddleBrown"               , PALETTERGB (139, 69, 19) },
-  {"sienna"                    , PALETTERGB (160, 82, 45) },
-  {"peru"                      , PALETTERGB (205, 133, 63) },
-  {"burlywood"                 , PALETTERGB (222, 184, 135) },
-  {"beige"                     , PALETTERGB (245, 245, 220) },
-  {"wheat"                     , PALETTERGB (245, 222, 179) },
-  {"SandyBrown"                        , PALETTERGB (244, 164, 96) },
-  {"tan"                       , PALETTERGB (210, 180, 140) },
-  {"chocolate"                 , PALETTERGB (210, 105, 30) },
-  {"firebrick"                 , PALETTERGB (178, 34, 34) },
-  {"brown"                     , PALETTERGB (165, 42, 42) },
-  {"DarkSalmon"                        , PALETTERGB (233, 150, 122) },
-  {"salmon"                    , PALETTERGB (250, 128, 114) },
-  {"LightSalmon"               , PALETTERGB (255, 160, 122) },
-  {"orange"                    , PALETTERGB (255, 165, 0) },
-  {"DarkOrange"                        , PALETTERGB (255, 140, 0) },
-  {"coral"                     , PALETTERGB (255, 127, 80) },
-  {"LightCoral"                        , PALETTERGB (240, 128, 128) },
-  {"tomato"                    , PALETTERGB (255, 99, 71) },
-  {"OrangeRed"                 , PALETTERGB (255, 69, 0) },
-  {"red"                       , PALETTERGB (255, 0, 0) },
-  {"HotPink"                   , PALETTERGB (255, 105, 180) },
-  {"DeepPink"                  , PALETTERGB (255, 20, 147) },
-  {"pink"                      , PALETTERGB (255, 192, 203) },
-  {"LightPink"                 , PALETTERGB (255, 182, 193) },
-  {"PaleVioletRed"             , PALETTERGB (219, 112, 147) },
-  {"maroon"                    , PALETTERGB (176, 48, 96) },
-  {"MediumVioletRed"           , PALETTERGB (199, 21, 133) },
-  {"VioletRed"                 , PALETTERGB (208, 32, 144) },
-  {"magenta"                   , PALETTERGB (255, 0, 255) },
-  {"violet"                    , PALETTERGB (238, 130, 238) },
-  {"plum"                      , PALETTERGB (221, 160, 221) },
-  {"orchid"                    , PALETTERGB (218, 112, 214) },
-  {"MediumOrchid"              , PALETTERGB (186, 85, 211) },
-  {"DarkOrchid"                        , PALETTERGB (153, 50, 204) },
-  {"DarkViolet"                        , PALETTERGB (148, 0, 211) },
-  {"BlueViolet"                        , PALETTERGB (138, 43, 226) },
-  {"purple"                    , PALETTERGB (160, 32, 240) },
-  {"MediumPurple"              , PALETTERGB (147, 112, 219) },
-  {"thistle"                   , PALETTERGB (216, 191, 216) },
-  {"snow1"                     , PALETTERGB (255, 250, 250) },
-  {"snow2"                     , PALETTERGB (238, 233, 233) },
-  {"snow3"                     , PALETTERGB (205, 201, 201) },
-  {"snow4"                     , PALETTERGB (139, 137, 137) },
-  {"seashell1"                 , PALETTERGB (255, 245, 238) },
-  {"seashell2"                 , PALETTERGB (238, 229, 222) },
-  {"seashell3"                 , PALETTERGB (205, 197, 191) },
-  {"seashell4"                 , PALETTERGB (139, 134, 130) },
-  {"AntiqueWhite1"             , PALETTERGB (255, 239, 219) },
-  {"AntiqueWhite2"             , PALETTERGB (238, 223, 204) },
-  {"AntiqueWhite3"             , PALETTERGB (205, 192, 176) },
-  {"AntiqueWhite4"             , PALETTERGB (139, 131, 120) },
-  {"bisque1"                   , PALETTERGB (255, 228, 196) },
-  {"bisque2"                   , PALETTERGB (238, 213, 183) },
-  {"bisque3"                   , PALETTERGB (205, 183, 158) },
-  {"bisque4"                   , PALETTERGB (139, 125, 107) },
-  {"PeachPuff1"                        , PALETTERGB (255, 218, 185) },
-  {"PeachPuff2"                        , PALETTERGB (238, 203, 173) },
-  {"PeachPuff3"                        , PALETTERGB (205, 175, 149) },
-  {"PeachPuff4"                        , PALETTERGB (139, 119, 101) },
-  {"NavajoWhite1"              , PALETTERGB (255, 222, 173) },
-  {"NavajoWhite2"              , PALETTERGB (238, 207, 161) },
-  {"NavajoWhite3"              , PALETTERGB (205, 179, 139) },
-  {"NavajoWhite4"              , PALETTERGB (139, 121, 94) },
-  {"LemonChiffon1"             , PALETTERGB (255, 250, 205) },
-  {"LemonChiffon2"             , PALETTERGB (238, 233, 191) },
-  {"LemonChiffon3"             , PALETTERGB (205, 201, 165) },
-  {"LemonChiffon4"             , PALETTERGB (139, 137, 112) },
-  {"cornsilk1"                 , PALETTERGB (255, 248, 220) },
-  {"cornsilk2"                 , PALETTERGB (238, 232, 205) },
-  {"cornsilk3"                 , PALETTERGB (205, 200, 177) },
-  {"cornsilk4"                 , PALETTERGB (139, 136, 120) },
-  {"ivory1"                    , PALETTERGB (255, 255, 240) },
-  {"ivory2"                    , PALETTERGB (238, 238, 224) },
-  {"ivory3"                    , PALETTERGB (205, 205, 193) },
-  {"ivory4"                    , PALETTERGB (139, 139, 131) },
-  {"honeydew1"                 , PALETTERGB (240, 255, 240) },
-  {"honeydew2"                 , PALETTERGB (224, 238, 224) },
-  {"honeydew3"                 , PALETTERGB (193, 205, 193) },
-  {"honeydew4"                 , PALETTERGB (131, 139, 131) },
-  {"LavenderBlush1"            , PALETTERGB (255, 240, 245) },
-  {"LavenderBlush2"            , PALETTERGB (238, 224, 229) },
-  {"LavenderBlush3"            , PALETTERGB (205, 193, 197) },
-  {"LavenderBlush4"            , PALETTERGB (139, 131, 134) },
-  {"MistyRose1"                        , PALETTERGB (255, 228, 225) },
-  {"MistyRose2"                        , PALETTERGB (238, 213, 210) },
-  {"MistyRose3"                        , PALETTERGB (205, 183, 181) },
-  {"MistyRose4"                        , PALETTERGB (139, 125, 123) },
-  {"azure1"                    , PALETTERGB (240, 255, 255) },
-  {"azure2"                    , PALETTERGB (224, 238, 238) },
-  {"azure3"                    , PALETTERGB (193, 205, 205) },
-  {"azure4"                    , PALETTERGB (131, 139, 139) },
-  {"SlateBlue1"                        , PALETTERGB (131, 111, 255) },
-  {"SlateBlue2"                        , PALETTERGB (122, 103, 238) },
-  {"SlateBlue3"                        , PALETTERGB (105, 89, 205) },
-  {"SlateBlue4"                        , PALETTERGB (71, 60, 139) },
-  {"RoyalBlue1"                        , PALETTERGB (72, 118, 255) },
-  {"RoyalBlue2"                        , PALETTERGB (67, 110, 238) },
-  {"RoyalBlue3"                        , PALETTERGB (58, 95, 205) },
-  {"RoyalBlue4"                        , PALETTERGB (39, 64, 139) },
-  {"blue1"                     , PALETTERGB (0, 0, 255) },
-  {"blue2"                     , PALETTERGB (0, 0, 238) },
-  {"blue3"                     , PALETTERGB (0, 0, 205) },
-  {"blue4"                     , PALETTERGB (0, 0, 139) },
-  {"DodgerBlue1"               , PALETTERGB (30, 144, 255) },
-  {"DodgerBlue2"               , PALETTERGB (28, 134, 238) },
-  {"DodgerBlue3"               , PALETTERGB (24, 116, 205) },
-  {"DodgerBlue4"               , PALETTERGB (16, 78, 139) },
-  {"SteelBlue1"                        , PALETTERGB (99, 184, 255) },
-  {"SteelBlue2"                        , PALETTERGB (92, 172, 238) },
-  {"SteelBlue3"                        , PALETTERGB (79, 148, 205) },
-  {"SteelBlue4"                        , PALETTERGB (54, 100, 139) },
-  {"DeepSkyBlue1"              , PALETTERGB (0, 191, 255) },
-  {"DeepSkyBlue2"              , PALETTERGB (0, 178, 238) },
-  {"DeepSkyBlue3"              , PALETTERGB (0, 154, 205) },
-  {"DeepSkyBlue4"              , PALETTERGB (0, 104, 139) },
-  {"SkyBlue1"                  , PALETTERGB (135, 206, 255) },
-  {"SkyBlue2"                  , PALETTERGB (126, 192, 238) },
-  {"SkyBlue3"                  , PALETTERGB (108, 166, 205) },
-  {"SkyBlue4"                  , PALETTERGB (74, 112, 139) },
-  {"LightSkyBlue1"             , PALETTERGB (176, 226, 255) },
-  {"LightSkyBlue2"             , PALETTERGB (164, 211, 238) },
-  {"LightSkyBlue3"             , PALETTERGB (141, 182, 205) },
-  {"LightSkyBlue4"             , PALETTERGB (96, 123, 139) },
-  {"SlateGray1"                        , PALETTERGB (198, 226, 255) },
-  {"SlateGray2"                        , PALETTERGB (185, 211, 238) },
-  {"SlateGray3"                        , PALETTERGB (159, 182, 205) },
-  {"SlateGray4"                        , PALETTERGB (108, 123, 139) },
-  {"LightSteelBlue1"           , PALETTERGB (202, 225, 255) },
-  {"LightSteelBlue2"           , PALETTERGB (188, 210, 238) },
-  {"LightSteelBlue3"           , PALETTERGB (162, 181, 205) },
-  {"LightSteelBlue4"           , PALETTERGB (110, 123, 139) },
-  {"LightBlue1"                        , PALETTERGB (191, 239, 255) },
-  {"LightBlue2"                        , PALETTERGB (178, 223, 238) },
-  {"LightBlue3"                        , PALETTERGB (154, 192, 205) },
-  {"LightBlue4"                        , PALETTERGB (104, 131, 139) },
-  {"LightCyan1"                        , PALETTERGB (224, 255, 255) },
-  {"LightCyan2"                        , PALETTERGB (209, 238, 238) },
-  {"LightCyan3"                        , PALETTERGB (180, 205, 205) },
-  {"LightCyan4"                        , PALETTERGB (122, 139, 139) },
-  {"PaleTurquoise1"            , PALETTERGB (187, 255, 255) },
-  {"PaleTurquoise2"            , PALETTERGB (174, 238, 238) },
-  {"PaleTurquoise3"            , PALETTERGB (150, 205, 205) },
-  {"PaleTurquoise4"            , PALETTERGB (102, 139, 139) },
-  {"CadetBlue1"                        , PALETTERGB (152, 245, 255) },
-  {"CadetBlue2"                        , PALETTERGB (142, 229, 238) },
-  {"CadetBlue3"                        , PALETTERGB (122, 197, 205) },
-  {"CadetBlue4"                        , PALETTERGB (83, 134, 139) },
-  {"turquoise1"                        , PALETTERGB (0, 245, 255) },
-  {"turquoise2"                        , PALETTERGB (0, 229, 238) },
-  {"turquoise3"                        , PALETTERGB (0, 197, 205) },
-  {"turquoise4"                        , PALETTERGB (0, 134, 139) },
-  {"cyan1"                     , PALETTERGB (0, 255, 255) },
-  {"cyan2"                     , PALETTERGB (0, 238, 238) },
-  {"cyan3"                     , PALETTERGB (0, 205, 205) },
-  {"cyan4"                     , PALETTERGB (0, 139, 139) },
-  {"DarkSlateGray1"            , PALETTERGB (151, 255, 255) },
-  {"DarkSlateGray2"            , PALETTERGB (141, 238, 238) },
-  {"DarkSlateGray3"            , PALETTERGB (121, 205, 205) },
-  {"DarkSlateGray4"            , PALETTERGB (82, 139, 139) },
-  {"aquamarine1"               , PALETTERGB (127, 255, 212) },
-  {"aquamarine2"               , PALETTERGB (118, 238, 198) },
-  {"aquamarine3"               , PALETTERGB (102, 205, 170) },
-  {"aquamarine4"               , PALETTERGB (69, 139, 116) },
-  {"DarkSeaGreen1"             , PALETTERGB (193, 255, 193) },
-  {"DarkSeaGreen2"             , PALETTERGB (180, 238, 180) },
-  {"DarkSeaGreen3"             , PALETTERGB (155, 205, 155) },
-  {"DarkSeaGreen4"             , PALETTERGB (105, 139, 105) },
-  {"SeaGreen1"                 , PALETTERGB (84, 255, 159) },
-  {"SeaGreen2"                 , PALETTERGB (78, 238, 148) },
-  {"SeaGreen3"                 , PALETTERGB (67, 205, 128) },
-  {"SeaGreen4"                 , PALETTERGB (46, 139, 87) },
-  {"PaleGreen1"                        , PALETTERGB (154, 255, 154) },
-  {"PaleGreen2"                        , PALETTERGB (144, 238, 144) },
-  {"PaleGreen3"                        , PALETTERGB (124, 205, 124) },
-  {"PaleGreen4"                        , PALETTERGB (84, 139, 84) },
-  {"SpringGreen1"              , PALETTERGB (0, 255, 127) },
-  {"SpringGreen2"              , PALETTERGB (0, 238, 118) },
-  {"SpringGreen3"              , PALETTERGB (0, 205, 102) },
-  {"SpringGreen4"              , PALETTERGB (0, 139, 69) },
-  {"green1"                    , PALETTERGB (0, 255, 0) },
-  {"green2"                    , PALETTERGB (0, 238, 0) },
-  {"green3"                    , PALETTERGB (0, 205, 0) },
-  {"green4"                    , PALETTERGB (0, 139, 0) },
-  {"chartreuse1"               , PALETTERGB (127, 255, 0) },
-  {"chartreuse2"               , PALETTERGB (118, 238, 0) },
-  {"chartreuse3"               , PALETTERGB (102, 205, 0) },
-  {"chartreuse4"               , PALETTERGB (69, 139, 0) },
-  {"OliveDrab1"                        , PALETTERGB (192, 255, 62) },
-  {"OliveDrab2"                        , PALETTERGB (179, 238, 58) },
-  {"OliveDrab3"                        , PALETTERGB (154, 205, 50) },
-  {"OliveDrab4"                        , PALETTERGB (105, 139, 34) },
-  {"DarkOliveGreen1"           , PALETTERGB (202, 255, 112) },
-  {"DarkOliveGreen2"           , PALETTERGB (188, 238, 104) },
-  {"DarkOliveGreen3"           , PALETTERGB (162, 205, 90) },
-  {"DarkOliveGreen4"           , PALETTERGB (110, 139, 61) },
-  {"khaki1"                    , PALETTERGB (255, 246, 143) },
-  {"khaki2"                    , PALETTERGB (238, 230, 133) },
-  {"khaki3"                    , PALETTERGB (205, 198, 115) },
-  {"khaki4"                    , PALETTERGB (139, 134, 78) },
-  {"LightGoldenrod1"           , PALETTERGB (255, 236, 139) },
-  {"LightGoldenrod2"           , PALETTERGB (238, 220, 130) },
-  {"LightGoldenrod3"           , PALETTERGB (205, 190, 112) },
-  {"LightGoldenrod4"           , PALETTERGB (139, 129, 76) },
-  {"LightYellow1"              , PALETTERGB (255, 255, 224) },
-  {"LightYellow2"              , PALETTERGB (238, 238, 209) },
-  {"LightYellow3"              , PALETTERGB (205, 205, 180) },
-  {"LightYellow4"              , PALETTERGB (139, 139, 122) },
-  {"yellow1"                   , PALETTERGB (255, 255, 0) },
-  {"yellow2"                   , PALETTERGB (238, 238, 0) },
-  {"yellow3"                   , PALETTERGB (205, 205, 0) },
-  {"yellow4"                   , PALETTERGB (139, 139, 0) },
-  {"gold1"                     , PALETTERGB (255, 215, 0) },
-  {"gold2"                     , PALETTERGB (238, 201, 0) },
-  {"gold3"                     , PALETTERGB (205, 173, 0) },
-  {"gold4"                     , PALETTERGB (139, 117, 0) },
-  {"goldenrod1"                        , PALETTERGB (255, 193, 37) },
-  {"goldenrod2"                        , PALETTERGB (238, 180, 34) },
-  {"goldenrod3"                        , PALETTERGB (205, 155, 29) },
-  {"goldenrod4"                        , PALETTERGB (139, 105, 20) },
-  {"DarkGoldenrod1"            , PALETTERGB (255, 185, 15) },
-  {"DarkGoldenrod2"            , PALETTERGB (238, 173, 14) },
-  {"DarkGoldenrod3"            , PALETTERGB (205, 149, 12) },
-  {"DarkGoldenrod4"            , PALETTERGB (139, 101, 8) },
-  {"RosyBrown1"                        , PALETTERGB (255, 193, 193) },
-  {"RosyBrown2"                        , PALETTERGB (238, 180, 180) },
-  {"RosyBrown3"                        , PALETTERGB (205, 155, 155) },
-  {"RosyBrown4"                        , PALETTERGB (139, 105, 105) },
-  {"IndianRed1"                        , PALETTERGB (255, 106, 106) },
-  {"IndianRed2"                        , PALETTERGB (238, 99, 99) },
-  {"IndianRed3"                        , PALETTERGB (205, 85, 85) },
-  {"IndianRed4"                        , PALETTERGB (139, 58, 58) },
-  {"sienna1"                   , PALETTERGB (255, 130, 71) },
-  {"sienna2"                   , PALETTERGB (238, 121, 66) },
-  {"sienna3"                   , PALETTERGB (205, 104, 57) },
-  {"sienna4"                   , PALETTERGB (139, 71, 38) },
-  {"burlywood1"                        , PALETTERGB (255, 211, 155) },
-  {"burlywood2"                        , PALETTERGB (238, 197, 145) },
-  {"burlywood3"                        , PALETTERGB (205, 170, 125) },
-  {"burlywood4"                        , PALETTERGB (139, 115, 85) },
-  {"wheat1"                    , PALETTERGB (255, 231, 186) },
-  {"wheat2"                    , PALETTERGB (238, 216, 174) },
-  {"wheat3"                    , PALETTERGB (205, 186, 150) },
-  {"wheat4"                    , PALETTERGB (139, 126, 102) },
-  {"tan1"                      , PALETTERGB (255, 165, 79) },
-  {"tan2"                      , PALETTERGB (238, 154, 73) },
-  {"tan3"                      , PALETTERGB (205, 133, 63) },
-  {"tan4"                      , PALETTERGB (139, 90, 43) },
-  {"chocolate1"                        , PALETTERGB (255, 127, 36) },
-  {"chocolate2"                        , PALETTERGB (238, 118, 33) },
-  {"chocolate3"                        , PALETTERGB (205, 102, 29) },
-  {"chocolate4"                        , PALETTERGB (139, 69, 19) },
-  {"firebrick1"                        , PALETTERGB (255, 48, 48) },
-  {"firebrick2"                        , PALETTERGB (238, 44, 44) },
-  {"firebrick3"                        , PALETTERGB (205, 38, 38) },
-  {"firebrick4"                        , PALETTERGB (139, 26, 26) },
-  {"brown1"                    , PALETTERGB (255, 64, 64) },
-  {"brown2"                    , PALETTERGB (238, 59, 59) },
-  {"brown3"                    , PALETTERGB (205, 51, 51) },
-  {"brown4"                    , PALETTERGB (139, 35, 35) },
-  {"salmon1"                   , PALETTERGB (255, 140, 105) },
-  {"salmon2"                   , PALETTERGB (238, 130, 98) },
-  {"salmon3"                   , PALETTERGB (205, 112, 84) },
-  {"salmon4"                   , PALETTERGB (139, 76, 57) },
-  {"LightSalmon1"              , PALETTERGB (255, 160, 122) },
-  {"LightSalmon2"              , PALETTERGB (238, 149, 114) },
-  {"LightSalmon3"              , PALETTERGB (205, 129, 98) },
-  {"LightSalmon4"              , PALETTERGB (139, 87, 66) },
-  {"orange1"                   , PALETTERGB (255, 165, 0) },
-  {"orange2"                   , PALETTERGB (238, 154, 0) },
-  {"orange3"                   , PALETTERGB (205, 133, 0) },
-  {"orange4"                   , PALETTERGB (139, 90, 0) },
-  {"DarkOrange1"               , PALETTERGB (255, 127, 0) },
-  {"DarkOrange2"               , PALETTERGB (238, 118, 0) },
-  {"DarkOrange3"               , PALETTERGB (205, 102, 0) },
-  {"DarkOrange4"               , PALETTERGB (139, 69, 0) },
-  {"coral1"                    , PALETTERGB (255, 114, 86) },
-  {"coral2"                    , PALETTERGB (238, 106, 80) },
-  {"coral3"                    , PALETTERGB (205, 91, 69) },
-  {"coral4"                    , PALETTERGB (139, 62, 47) },
-  {"tomato1"                   , PALETTERGB (255, 99, 71) },
-  {"tomato2"                   , PALETTERGB (238, 92, 66) },
-  {"tomato3"                   , PALETTERGB (205, 79, 57) },
-  {"tomato4"                   , PALETTERGB (139, 54, 38) },
-  {"OrangeRed1"                        , PALETTERGB (255, 69, 0) },
-  {"OrangeRed2"                        , PALETTERGB (238, 64, 0) },
-  {"OrangeRed3"                        , PALETTERGB (205, 55, 0) },
-  {"OrangeRed4"                        , PALETTERGB (139, 37, 0) },
-  {"red1"                      , PALETTERGB (255, 0, 0) },
-  {"red2"                      , PALETTERGB (238, 0, 0) },
-  {"red3"                      , PALETTERGB (205, 0, 0) },
-  {"red4"                      , PALETTERGB (139, 0, 0) },
-  {"DeepPink1"                 , PALETTERGB (255, 20, 147) },
-  {"DeepPink2"                 , PALETTERGB (238, 18, 137) },
-  {"DeepPink3"                 , PALETTERGB (205, 16, 118) },
-  {"DeepPink4"                 , PALETTERGB (139, 10, 80) },
-  {"HotPink1"                  , PALETTERGB (255, 110, 180) },
-  {"HotPink2"                  , PALETTERGB (238, 106, 167) },
-  {"HotPink3"                  , PALETTERGB (205, 96, 144) },
-  {"HotPink4"                  , PALETTERGB (139, 58, 98) },
-  {"pink1"                     , PALETTERGB (255, 181, 197) },
-  {"pink2"                     , PALETTERGB (238, 169, 184) },
-  {"pink3"                     , PALETTERGB (205, 145, 158) },
-  {"pink4"                     , PALETTERGB (139, 99, 108) },
-  {"LightPink1"                        , PALETTERGB (255, 174, 185) },
-  {"LightPink2"                        , PALETTERGB (238, 162, 173) },
-  {"LightPink3"                        , PALETTERGB (205, 140, 149) },
-  {"LightPink4"                        , PALETTERGB (139, 95, 101) },
-  {"PaleVioletRed1"            , PALETTERGB (255, 130, 171) },
-  {"PaleVioletRed2"            , PALETTERGB (238, 121, 159) },
-  {"PaleVioletRed3"            , PALETTERGB (205, 104, 137) },
-  {"PaleVioletRed4"            , PALETTERGB (139, 71, 93) },
-  {"maroon1"                   , PALETTERGB (255, 52, 179) },
-  {"maroon2"                   , PALETTERGB (238, 48, 167) },
-  {"maroon3"                   , PALETTERGB (205, 41, 144) },
-  {"maroon4"                   , PALETTERGB (139, 28, 98) },
-  {"VioletRed1"                        , PALETTERGB (255, 62, 150) },
-  {"VioletRed2"                        , PALETTERGB (238, 58, 140) },
-  {"VioletRed3"                        , PALETTERGB (205, 50, 120) },
-  {"VioletRed4"                        , PALETTERGB (139, 34, 82) },
-  {"magenta1"                  , PALETTERGB (255, 0, 255) },
-  {"magenta2"                  , PALETTERGB (238, 0, 238) },
-  {"magenta3"                  , PALETTERGB (205, 0, 205) },
-  {"magenta4"                  , PALETTERGB (139, 0, 139) },
-  {"orchid1"                   , PALETTERGB (255, 131, 250) },
-  {"orchid2"                   , PALETTERGB (238, 122, 233) },
-  {"orchid3"                   , PALETTERGB (205, 105, 201) },
-  {"orchid4"                   , PALETTERGB (139, 71, 137) },
-  {"plum1"                     , PALETTERGB (255, 187, 255) },
-  {"plum2"                     , PALETTERGB (238, 174, 238) },
-  {"plum3"                     , PALETTERGB (205, 150, 205) },
-  {"plum4"                     , PALETTERGB (139, 102, 139) },
-  {"MediumOrchid1"             , PALETTERGB (224, 102, 255) },
-  {"MediumOrchid2"             , PALETTERGB (209, 95, 238) },
-  {"MediumOrchid3"             , PALETTERGB (180, 82, 205) },
-  {"MediumOrchid4"             , PALETTERGB (122, 55, 139) },
-  {"DarkOrchid1"               , PALETTERGB (191, 62, 255) },
-  {"DarkOrchid2"               , PALETTERGB (178, 58, 238) },
-  {"DarkOrchid3"               , PALETTERGB (154, 50, 205) },
-  {"DarkOrchid4"               , PALETTERGB (104, 34, 139) },
-  {"purple1"                   , PALETTERGB (155, 48, 255) },
-  {"purple2"                   , PALETTERGB (145, 44, 238) },
-  {"purple3"                   , PALETTERGB (125, 38, 205) },
-  {"purple4"                   , PALETTERGB (85, 26, 139) },
-  {"MediumPurple1"             , PALETTERGB (171, 130, 255) },
-  {"MediumPurple2"             , PALETTERGB (159, 121, 238) },
-  {"MediumPurple3"             , PALETTERGB (137, 104, 205) },
-  {"MediumPurple4"             , PALETTERGB (93, 71, 139) },
-  {"thistle1"                  , PALETTERGB (255, 225, 255) },
-  {"thistle2"                  , PALETTERGB (238, 210, 238) },
-  {"thistle3"                  , PALETTERGB (205, 181, 205) },
-  {"thistle4"                  , PALETTERGB (139, 123, 139) },
-  {"gray0"                     , PALETTERGB (0, 0, 0) },
-  {"grey0"                     , PALETTERGB (0, 0, 0) },
-  {"gray1"                     , PALETTERGB (3, 3, 3) },
-  {"grey1"                     , PALETTERGB (3, 3, 3) },
-  {"gray2"                     , PALETTERGB (5, 5, 5) },
-  {"grey2"                     , PALETTERGB (5, 5, 5) },
-  {"gray3"                     , PALETTERGB (8, 8, 8) },
-  {"grey3"                     , PALETTERGB (8, 8, 8) },
-  {"gray4"                     , PALETTERGB (10, 10, 10) },
-  {"grey4"                     , PALETTERGB (10, 10, 10) },
-  {"gray5"                     , PALETTERGB (13, 13, 13) },
-  {"grey5"                     , PALETTERGB (13, 13, 13) },
-  {"gray6"                     , PALETTERGB (15, 15, 15) },
-  {"grey6"                     , PALETTERGB (15, 15, 15) },
-  {"gray7"                     , PALETTERGB (18, 18, 18) },
-  {"grey7"                     , PALETTERGB (18, 18, 18) },
-  {"gray8"                     , PALETTERGB (20, 20, 20) },
-  {"grey8"                     , PALETTERGB (20, 20, 20) },
-  {"gray9"                     , PALETTERGB (23, 23, 23) },
-  {"grey9"                     , PALETTERGB (23, 23, 23) },
-  {"gray10"                    , PALETTERGB (26, 26, 26) },
-  {"grey10"                    , PALETTERGB (26, 26, 26) },
-  {"gray11"                    , PALETTERGB (28, 28, 28) },
-  {"grey11"                    , PALETTERGB (28, 28, 28) },
-  {"gray12"                    , PALETTERGB (31, 31, 31) },
-  {"grey12"                    , PALETTERGB (31, 31, 31) },
-  {"gray13"                    , PALETTERGB (33, 33, 33) },
-  {"grey13"                    , PALETTERGB (33, 33, 33) },
-  {"gray14"                    , PALETTERGB (36, 36, 36) },
-  {"grey14"                    , PALETTERGB (36, 36, 36) },
-  {"gray15"                    , PALETTERGB (38, 38, 38) },
-  {"grey15"                    , PALETTERGB (38, 38, 38) },
-  {"gray16"                    , PALETTERGB (41, 41, 41) },
-  {"grey16"                    , PALETTERGB (41, 41, 41) },
-  {"gray17"                    , PALETTERGB (43, 43, 43) },
-  {"grey17"                    , PALETTERGB (43, 43, 43) },
-  {"gray18"                    , PALETTERGB (46, 46, 46) },
-  {"grey18"                    , PALETTERGB (46, 46, 46) },
-  {"gray19"                    , PALETTERGB (48, 48, 48) },
-  {"grey19"                    , PALETTERGB (48, 48, 48) },
-  {"gray20"                    , PALETTERGB (51, 51, 51) },
-  {"grey20"                    , PALETTERGB (51, 51, 51) },
-  {"gray21"                    , PALETTERGB (54, 54, 54) },
-  {"grey21"                    , PALETTERGB (54, 54, 54) },
-  {"gray22"                    , PALETTERGB (56, 56, 56) },
-  {"grey22"                    , PALETTERGB (56, 56, 56) },
-  {"gray23"                    , PALETTERGB (59, 59, 59) },
-  {"grey23"                    , PALETTERGB (59, 59, 59) },
-  {"gray24"                    , PALETTERGB (61, 61, 61) },
-  {"grey24"                    , PALETTERGB (61, 61, 61) },
-  {"gray25"                    , PALETTERGB (64, 64, 64) },
-  {"grey25"                    , PALETTERGB (64, 64, 64) },
-  {"gray26"                    , PALETTERGB (66, 66, 66) },
-  {"grey26"                    , PALETTERGB (66, 66, 66) },
-  {"gray27"                    , PALETTERGB (69, 69, 69) },
-  {"grey27"                    , PALETTERGB (69, 69, 69) },
-  {"gray28"                    , PALETTERGB (71, 71, 71) },
-  {"grey28"                    , PALETTERGB (71, 71, 71) },
-  {"gray29"                    , PALETTERGB (74, 74, 74) },
-  {"grey29"                    , PALETTERGB (74, 74, 74) },
-  {"gray30"                    , PALETTERGB (77, 77, 77) },
-  {"grey30"                    , PALETTERGB (77, 77, 77) },
-  {"gray31"                    , PALETTERGB (79, 79, 79) },
-  {"grey31"                    , PALETTERGB (79, 79, 79) },
-  {"gray32"                    , PALETTERGB (82, 82, 82) },
-  {"grey32"                    , PALETTERGB (82, 82, 82) },
-  {"gray33"                    , PALETTERGB (84, 84, 84) },
-  {"grey33"                    , PALETTERGB (84, 84, 84) },
-  {"gray34"                    , PALETTERGB (87, 87, 87) },
-  {"grey34"                    , PALETTERGB (87, 87, 87) },
-  {"gray35"                    , PALETTERGB (89, 89, 89) },
-  {"grey35"                    , PALETTERGB (89, 89, 89) },
-  {"gray36"                    , PALETTERGB (92, 92, 92) },
-  {"grey36"                    , PALETTERGB (92, 92, 92) },
-  {"gray37"                    , PALETTERGB (94, 94, 94) },
-  {"grey37"                    , PALETTERGB (94, 94, 94) },
-  {"gray38"                    , PALETTERGB (97, 97, 97) },
-  {"grey38"                    , PALETTERGB (97, 97, 97) },
-  {"gray39"                    , PALETTERGB (99, 99, 99) },
-  {"grey39"                    , PALETTERGB (99, 99, 99) },
-  {"gray40"                    , PALETTERGB (102, 102, 102) },
-  {"grey40"                    , PALETTERGB (102, 102, 102) },
-  {"gray41"                    , PALETTERGB (105, 105, 105) },
-  {"grey41"                    , PALETTERGB (105, 105, 105) },
-  {"gray42"                    , PALETTERGB (107, 107, 107) },
-  {"grey42"                    , PALETTERGB (107, 107, 107) },
-  {"gray43"                    , PALETTERGB (110, 110, 110) },
-  {"grey43"                    , PALETTERGB (110, 110, 110) },
-  {"gray44"                    , PALETTERGB (112, 112, 112) },
-  {"grey44"                    , PALETTERGB (112, 112, 112) },
-  {"gray45"                    , PALETTERGB (115, 115, 115) },
-  {"grey45"                    , PALETTERGB (115, 115, 115) },
-  {"gray46"                    , PALETTERGB (117, 117, 117) },
-  {"grey46"                    , PALETTERGB (117, 117, 117) },
-  {"gray47"                    , PALETTERGB (120, 120, 120) },
-  {"grey47"                    , PALETTERGB (120, 120, 120) },
-  {"gray48"                    , PALETTERGB (122, 122, 122) },
-  {"grey48"                    , PALETTERGB (122, 122, 122) },
-  {"gray49"                    , PALETTERGB (125, 125, 125) },
-  {"grey49"                    , PALETTERGB (125, 125, 125) },
-  {"gray50"                    , PALETTERGB (127, 127, 127) },
-  {"grey50"                    , PALETTERGB (127, 127, 127) },
-  {"gray51"                    , PALETTERGB (130, 130, 130) },
-  {"grey51"                    , PALETTERGB (130, 130, 130) },
-  {"gray52"                    , PALETTERGB (133, 133, 133) },
-  {"grey52"                    , PALETTERGB (133, 133, 133) },
-  {"gray53"                    , PALETTERGB (135, 135, 135) },
-  {"grey53"                    , PALETTERGB (135, 135, 135) },
-  {"gray54"                    , PALETTERGB (138, 138, 138) },
-  {"grey54"                    , PALETTERGB (138, 138, 138) },
-  {"gray55"                    , PALETTERGB (140, 140, 140) },
-  {"grey55"                    , PALETTERGB (140, 140, 140) },
-  {"gray56"                    , PALETTERGB (143, 143, 143) },
-  {"grey56"                    , PALETTERGB (143, 143, 143) },
-  {"gray57"                    , PALETTERGB (145, 145, 145) },
-  {"grey57"                    , PALETTERGB (145, 145, 145) },
-  {"gray58"                    , PALETTERGB (148, 148, 148) },
-  {"grey58"                    , PALETTERGB (148, 148, 148) },
-  {"gray59"                    , PALETTERGB (150, 150, 150) },
-  {"grey59"                    , PALETTERGB (150, 150, 150) },
-  {"gray60"                    , PALETTERGB (153, 153, 153) },
-  {"grey60"                    , PALETTERGB (153, 153, 153) },
-  {"gray61"                    , PALETTERGB (156, 156, 156) },
-  {"grey61"                    , PALETTERGB (156, 156, 156) },
-  {"gray62"                    , PALETTERGB (158, 158, 158) },
-  {"grey62"                    , PALETTERGB (158, 158, 158) },
-  {"gray63"                    , PALETTERGB (161, 161, 161) },
-  {"grey63"                    , PALETTERGB (161, 161, 161) },
-  {"gray64"                    , PALETTERGB (163, 163, 163) },
-  {"grey64"                    , PALETTERGB (163, 163, 163) },
-  {"gray65"                    , PALETTERGB (166, 166, 166) },
-  {"grey65"                    , PALETTERGB (166, 166, 166) },
-  {"gray66"                    , PALETTERGB (168, 168, 168) },
-  {"grey66"                    , PALETTERGB (168, 168, 168) },
-  {"gray67"                    , PALETTERGB (171, 171, 171) },
-  {"grey67"                    , PALETTERGB (171, 171, 171) },
-  {"gray68"                    , PALETTERGB (173, 173, 173) },
-  {"grey68"                    , PALETTERGB (173, 173, 173) },
-  {"gray69"                    , PALETTERGB (176, 176, 176) },
-  {"grey69"                    , PALETTERGB (176, 176, 176) },
-  {"gray70"                    , PALETTERGB (179, 179, 179) },
-  {"grey70"                    , PALETTERGB (179, 179, 179) },
-  {"gray71"                    , PALETTERGB (181, 181, 181) },
-  {"grey71"                    , PALETTERGB (181, 181, 181) },
-  {"gray72"                    , PALETTERGB (184, 184, 184) },
-  {"grey72"                    , PALETTERGB (184, 184, 184) },
-  {"gray73"                    , PALETTERGB (186, 186, 186) },
-  {"grey73"                    , PALETTERGB (186, 186, 186) },
-  {"gray74"                    , PALETTERGB (189, 189, 189) },
-  {"grey74"                    , PALETTERGB (189, 189, 189) },
-  {"gray75"                    , PALETTERGB (191, 191, 191) },
-  {"grey75"                    , PALETTERGB (191, 191, 191) },
-  {"gray76"                    , PALETTERGB (194, 194, 194) },
-  {"grey76"                    , PALETTERGB (194, 194, 194) },
-  {"gray77"                    , PALETTERGB (196, 196, 196) },
-  {"grey77"                    , PALETTERGB (196, 196, 196) },
-  {"gray78"                    , PALETTERGB (199, 199, 199) },
-  {"grey78"                    , PALETTERGB (199, 199, 199) },
-  {"gray79"                    , PALETTERGB (201, 201, 201) },
-  {"grey79"                    , PALETTERGB (201, 201, 201) },
-  {"gray80"                    , PALETTERGB (204, 204, 204) },
-  {"grey80"                    , PALETTERGB (204, 204, 204) },
-  {"gray81"                    , PALETTERGB (207, 207, 207) },
-  {"grey81"                    , PALETTERGB (207, 207, 207) },
-  {"gray82"                    , PALETTERGB (209, 209, 209) },
-  {"grey82"                    , PALETTERGB (209, 209, 209) },
-  {"gray83"                    , PALETTERGB (212, 212, 212) },
-  {"grey83"                    , PALETTERGB (212, 212, 212) },
-  {"gray84"                    , PALETTERGB (214, 214, 214) },
-  {"grey84"                    , PALETTERGB (214, 214, 214) },
-  {"gray85"                    , PALETTERGB (217, 217, 217) },
-  {"grey85"                    , PALETTERGB (217, 217, 217) },
-  {"gray86"                    , PALETTERGB (219, 219, 219) },
-  {"grey86"                    , PALETTERGB (219, 219, 219) },
-  {"gray87"                    , PALETTERGB (222, 222, 222) },
-  {"grey87"                    , PALETTERGB (222, 222, 222) },
-  {"gray88"                    , PALETTERGB (224, 224, 224) },
-  {"grey88"                    , PALETTERGB (224, 224, 224) },
-  {"gray89"                    , PALETTERGB (227, 227, 227) },
-  {"grey89"                    , PALETTERGB (227, 227, 227) },
-  {"gray90"                    , PALETTERGB (229, 229, 229) },
-  {"grey90"                    , PALETTERGB (229, 229, 229) },
-  {"gray91"                    , PALETTERGB (232, 232, 232) },
-  {"grey91"                    , PALETTERGB (232, 232, 232) },
-  {"gray92"                    , PALETTERGB (235, 235, 235) },
-  {"grey92"                    , PALETTERGB (235, 235, 235) },
-  {"gray93"                    , PALETTERGB (237, 237, 237) },
-  {"grey93"                    , PALETTERGB (237, 237, 237) },
-  {"gray94"                    , PALETTERGB (240, 240, 240) },
-  {"grey94"                    , PALETTERGB (240, 240, 240) },
-  {"gray95"                    , PALETTERGB (242, 242, 242) },
-  {"grey95"                    , PALETTERGB (242, 242, 242) },
-  {"gray96"                    , PALETTERGB (245, 245, 245) },
-  {"grey96"                    , PALETTERGB (245, 245, 245) },
-  {"gray97"                    , PALETTERGB (247, 247, 247) },
-  {"grey97"                    , PALETTERGB (247, 247, 247) },
-  {"gray98"                    , PALETTERGB (250, 250, 250) },
-  {"grey98"                    , PALETTERGB (250, 250, 250) },
-  {"gray99"                    , PALETTERGB (252, 252, 252) },
-  {"grey99"                    , PALETTERGB (252, 252, 252) },
-  {"gray100"                   , PALETTERGB (255, 255, 255) },
-  {"grey100"                   , PALETTERGB (255, 255, 255) },
-  {"DarkGrey"                  , PALETTERGB (169, 169, 169) },
-  {"DarkGray"                  , PALETTERGB (169, 169, 169) },
-  {"DarkBlue"                  , PALETTERGB (0, 0, 139) },
-  {"DarkCyan"                  , PALETTERGB (0, 139, 139) },
-  {"DarkMagenta"               , PALETTERGB (139, 0, 139) },
-  {"DarkRed"                   , PALETTERGB (139, 0, 0) },
-  {"LightGreen"                        , PALETTERGB (144, 238, 144) }
+  {"white"             , PALETTERGB (255, 255, 255) },
+  {"black"             , PALETTERGB (0, 0, 0) },
+  {"snow"              , PALETTERGB (255, 250, 250) },
+  {"GhostWhite"                , PALETTERGB (248, 248, 255) },
+  {"WhiteSmoke"                , PALETTERGB (245, 245, 245) },
+  {"gainsboro"         , PALETTERGB (220, 220, 220) },
+  {"FloralWhite"       , PALETTERGB (255, 250, 240) },
+  {"OldLace"           , PALETTERGB (253, 245, 230) },
+  {"linen"             , PALETTERGB (250, 240, 230) },
+  {"AntiqueWhite"      , PALETTERGB (250, 235, 215) },
+  {"PapayaWhip"                , PALETTERGB (255, 239, 213) },
+  {"BlanchedAlmond"    , PALETTERGB (255, 235, 205) },
+  {"bisque"            , PALETTERGB (255, 228, 196) },
+  {"PeachPuff"         , PALETTERGB (255, 218, 185) },
+  {"NavajoWhite"       , PALETTERGB (255, 222, 173) },
+  {"moccasin"          , PALETTERGB (255, 228, 181) },
+  {"cornsilk"          , PALETTERGB (255, 248, 220) },
+  {"ivory"             , PALETTERGB (255, 255, 240) },
+  {"LemonChiffon"      , PALETTERGB (255, 250, 205) },
+  {"seashell"          , PALETTERGB (255, 245, 238) },
+  {"honeydew"          , PALETTERGB (240, 255, 240) },
+  {"MintCream"         , PALETTERGB (245, 255, 250) },
+  {"azure"             , PALETTERGB (240, 255, 255) },
+  {"AliceBlue"         , PALETTERGB (240, 248, 255) },
+  {"lavender"          , PALETTERGB (230, 230, 250) },
+  {"LavenderBlush"     , PALETTERGB (255, 240, 245) },
+  {"MistyRose"         , PALETTERGB (255, 228, 225) },
+  {"DarkSlateGray"     , PALETTERGB (47, 79, 79) },
+  {"DarkSlateGrey"     , PALETTERGB (47, 79, 79) },
+  {"DimGray"           , PALETTERGB (105, 105, 105) },
+  {"DimGrey"           , PALETTERGB (105, 105, 105) },
+  {"SlateGray"         , PALETTERGB (112, 128, 144) },
+  {"SlateGrey"         , PALETTERGB (112, 128, 144) },
+  {"LightSlateGray"    , PALETTERGB (119, 136, 153) },
+  {"LightSlateGrey"    , PALETTERGB (119, 136, 153) },
+  {"gray"              , PALETTERGB (190, 190, 190) },
+  {"grey"              , PALETTERGB (190, 190, 190) },
+  {"LightGrey"         , PALETTERGB (211, 211, 211) },
+  {"LightGray"         , PALETTERGB (211, 211, 211) },
+  {"MidnightBlue"      , PALETTERGB (25, 25, 112) },
+  {"navy"              , PALETTERGB (0, 0, 128) },
+  {"NavyBlue"          , PALETTERGB (0, 0, 128) },
+  {"CornflowerBlue"    , PALETTERGB (100, 149, 237) },
+  {"DarkSlateBlue"     , PALETTERGB (72, 61, 139) },
+  {"SlateBlue"         , PALETTERGB (106, 90, 205) },
+  {"MediumSlateBlue"   , PALETTERGB (123, 104, 238) },
+  {"LightSlateBlue"    , PALETTERGB (132, 112, 255) },
+  {"MediumBlue"                , PALETTERGB (0, 0, 205) },
+  {"RoyalBlue"         , PALETTERGB (65, 105, 225) },
+  {"blue"              , PALETTERGB (0, 0, 255) },
+  {"DodgerBlue"                , PALETTERGB (30, 144, 255) },
+  {"DeepSkyBlue"       , PALETTERGB (0, 191, 255) },
+  {"SkyBlue"           , PALETTERGB (135, 206, 235) },
+  {"LightSkyBlue"      , PALETTERGB (135, 206, 250) },
+  {"SteelBlue"         , PALETTERGB (70, 130, 180) },
+  {"LightSteelBlue"    , PALETTERGB (176, 196, 222) },
+  {"LightBlue"         , PALETTERGB (173, 216, 230) },
+  {"PowderBlue"                , PALETTERGB (176, 224, 230) },
+  {"PaleTurquoise"     , PALETTERGB (175, 238, 238) },
+  {"DarkTurquoise"     , PALETTERGB (0, 206, 209) },
+  {"MediumTurquoise"   , PALETTERGB (72, 209, 204) },
+  {"turquoise"         , PALETTERGB (64, 224, 208) },
+  {"cyan"              , PALETTERGB (0, 255, 255) },
+  {"LightCyan"         , PALETTERGB (224, 255, 255) },
+  {"CadetBlue"         , PALETTERGB (95, 158, 160) },
+  {"MediumAquamarine"  , PALETTERGB (102, 205, 170) },
+  {"aquamarine"                , PALETTERGB (127, 255, 212) },
+  {"DarkGreen"         , PALETTERGB (0, 128, 0) },     /* Adjusted */
+  {"DarkOliveGreen"    , PALETTERGB (85, 107, 47) },
+  {"DarkSeaGreen"      , PALETTERGB (143, 188, 143) },
+  {"SeaGreen"          , PALETTERGB (46, 139, 87) },
+  {"MediumSeaGreen"    , PALETTERGB (60, 179, 113) },
+  {"LightSeaGreen"     , PALETTERGB (32, 178, 170) },
+  {"PaleGreen"         , PALETTERGB (152, 251, 152) },
+  {"SpringGreen"       , PALETTERGB (0, 255, 127) },
+  {"LawnGreen"         , PALETTERGB (124, 252, 0) },
+  {"green"             , PALETTERGB (0, 255, 0) },
+  {"chartreuse"                , PALETTERGB (127, 255, 0) },
+  {"MediumSpringGreen" , PALETTERGB (0, 250, 154) },
+  {"GreenYellow"       , PALETTERGB (173, 255, 47) },
+  {"LimeGreen"         , PALETTERGB (50, 205, 50) },
+  {"YellowGreen"       , PALETTERGB (154, 205, 50) },
+  {"ForestGreen"       , PALETTERGB (34, 139, 34) },
+  {"OliveDrab"         , PALETTERGB (107, 142, 35) },
+  {"DarkKhaki"         , PALETTERGB (189, 183, 107) },
+  {"khaki"             , PALETTERGB (240, 230, 140) },
+  {"PaleGoldenrod"     , PALETTERGB (238, 232, 170) },
+  {"LightGoldenrodYellow", PALETTERGB (250, 250, 210) },
+  {"LightYellow"       , PALETTERGB (255, 255, 224) },
+  {"LightYellow"       , PALETTERGB (255, 255, 225) }, /* Adjusted */
+  {"yellow"            , PALETTERGB (255, 255, 0) },
+  {"gold"              , PALETTERGB (255, 215, 0) },
+  {"LightGoldenrod"    , PALETTERGB (238, 221, 130) },
+  {"goldenrod"         , PALETTERGB (218, 165, 32) },
+  {"DarkGoldenrod"     , PALETTERGB (184, 134, 11) },
+  {"RosyBrown"         , PALETTERGB (188, 143, 143) },
+  {"IndianRed"         , PALETTERGB (205, 92, 92) },
+  {"SaddleBrown"       , PALETTERGB (139, 69, 19) },
+  {"sienna"            , PALETTERGB (160, 82, 45) },
+  {"peru"              , PALETTERGB (205, 133, 63) },
+  {"burlywood"         , PALETTERGB (222, 184, 135) },
+  {"beige"             , PALETTERGB (245, 245, 220) },
+  {"wheat"             , PALETTERGB (245, 222, 179) },
+  {"SandyBrown"                , PALETTERGB (244, 164, 96) },
+  {"tan"               , PALETTERGB (210, 180, 140) },
+  {"chocolate"         , PALETTERGB (210, 105, 30) },
+  {"firebrick"         , PALETTERGB (178, 34, 34) },
+  {"brown"             , PALETTERGB (165, 42, 42) },
+  {"DarkSalmon"                , PALETTERGB (233, 150, 122) },
+  {"salmon"            , PALETTERGB (250, 128, 114) },
+  {"LightSalmon"       , PALETTERGB (255, 160, 122) },
+  {"orange"            , PALETTERGB (255, 165, 0) },
+  {"DarkOrange"                , PALETTERGB (255, 140, 0) },
+  {"coral"             , PALETTERGB (255, 127, 80) },
+  {"LightCoral"                , PALETTERGB (240, 128, 128) },
+  {"tomato"            , PALETTERGB (255, 99, 71) },
+  {"OrangeRed"         , PALETTERGB (255, 69, 0) },
+  {"red"               , PALETTERGB (255, 0, 0) },
+  {"HotPink"           , PALETTERGB (255, 105, 180) },
+  {"DeepPink"          , PALETTERGB (255, 20, 147) },
+  {"pink"              , PALETTERGB (255, 192, 203) },
+  {"LightPink"         , PALETTERGB (255, 182, 193) },
+  {"PaleVioletRed"     , PALETTERGB (219, 112, 147) },
+  {"maroon"            , PALETTERGB (176, 48, 96) },
+  {"MediumVioletRed"   , PALETTERGB (199, 21, 133) },
+  {"VioletRed"         , PALETTERGB (208, 32, 144) },
+  {"magenta"           , PALETTERGB (255, 0, 255) },
+  {"violet"            , PALETTERGB (238, 130, 238) },
+  {"plum"              , PALETTERGB (221, 160, 221) },
+  {"orchid"            , PALETTERGB (218, 112, 214) },
+  {"MediumOrchid"      , PALETTERGB (186, 85, 211) },
+  {"DarkOrchid"                , PALETTERGB (153, 50, 204) },
+  {"DarkViolet"                , PALETTERGB (148, 0, 211) },
+  {"BlueViolet"                , PALETTERGB (138, 43, 226) },
+  {"purple"            , PALETTERGB (160, 32, 240) },
+  {"MediumPurple"      , PALETTERGB (147, 112, 219) },
+  {"thistle"           , PALETTERGB (216, 191, 216) },
+  {"snow1"             , PALETTERGB (255, 250, 250) },
+  {"snow2"             , PALETTERGB (238, 233, 233) },
+  {"snow3"             , PALETTERGB (205, 201, 201) },
+  {"snow4"             , PALETTERGB (139, 137, 137) },
+  {"seashell1"         , PALETTERGB (255, 245, 238) },
+  {"seashell2"         , PALETTERGB (238, 229, 222) },
+  {"seashell3"         , PALETTERGB (205, 197, 191) },
+  {"seashell4"         , PALETTERGB (139, 134, 130) },
+  {"AntiqueWhite1"     , PALETTERGB (255, 239, 219) },
+  {"AntiqueWhite2"     , PALETTERGB (238, 223, 204) },
+  {"AntiqueWhite3"     , PALETTERGB (205, 192, 176) },
+  {"AntiqueWhite4"     , PALETTERGB (139, 131, 120) },
+  {"bisque1"           , PALETTERGB (255, 228, 196) },
+  {"bisque2"           , PALETTERGB (238, 213, 183) },
+  {"bisque3"           , PALETTERGB (205, 183, 158) },
+  {"bisque4"           , PALETTERGB (139, 125, 107) },
+  {"PeachPuff1"                , PALETTERGB (255, 218, 185) },
+  {"PeachPuff2"                , PALETTERGB (238, 203, 173) },
+  {"PeachPuff3"                , PALETTERGB (205, 175, 149) },
+  {"PeachPuff4"                , PALETTERGB (139, 119, 101) },
+  {"NavajoWhite1"      , PALETTERGB (255, 222, 173) },
+  {"NavajoWhite2"      , PALETTERGB (238, 207, 161) },
+  {"NavajoWhite3"      , PALETTERGB (205, 179, 139) },
+  {"NavajoWhite4"      , PALETTERGB (139, 121, 94) },
+  {"LemonChiffon1"     , PALETTERGB (255, 250, 205) },
+  {"LemonChiffon2"     , PALETTERGB (238, 233, 191) },
+  {"LemonChiffon3"     , PALETTERGB (205, 201, 165) },
+  {"LemonChiffon4"     , PALETTERGB (139, 137, 112) },
+  {"cornsilk1"         , PALETTERGB (255, 248, 220) },
+  {"cornsilk2"         , PALETTERGB (238, 232, 205) },
+  {"cornsilk3"         , PALETTERGB (205, 200, 177) },
+  {"cornsilk4"         , PALETTERGB (139, 136, 120) },
+  {"ivory1"            , PALETTERGB (255, 255, 240) },
+  {"ivory2"            , PALETTERGB (240, 240, 208) }, /* Adjusted */
+  {"ivory3"            , PALETTERGB (205, 205, 193) },
+  {"ivory4"            , PALETTERGB (139, 139, 131) },
+  {"honeydew1"         , PALETTERGB (240, 255, 240) },
+  {"honeydew2"         , PALETTERGB (224, 238, 224) },
+  {"honeydew3"         , PALETTERGB (193, 205, 193) },
+  {"honeydew4"         , PALETTERGB (131, 139, 131) },
+  {"LavenderBlush1"    , PALETTERGB (255, 240, 245) },
+  {"LavenderBlush2"    , PALETTERGB (238, 224, 229) },
+  {"LavenderBlush3"    , PALETTERGB (205, 193, 197) },
+  {"LavenderBlush4"    , PALETTERGB (139, 131, 134) },
+  {"MistyRose1"                , PALETTERGB (255, 228, 225) },
+  {"MistyRose2"                , PALETTERGB (238, 213, 210) },
+  {"MistyRose3"                , PALETTERGB (205, 183, 181) },
+  {"MistyRose4"                , PALETTERGB (139, 125, 123) },
+  {"azure1"            , PALETTERGB (240, 255, 255) },
+  {"azure2"            , PALETTERGB (224, 238, 238) },
+  {"azure3"            , PALETTERGB (193, 205, 205) },
+  {"azure4"            , PALETTERGB (131, 139, 139) },
+  {"SlateBlue1"                , PALETTERGB (131, 111, 255) },
+  {"SlateBlue2"                , PALETTERGB (122, 103, 238) },
+  {"SlateBlue3"                , PALETTERGB (105, 89, 205) },
+  {"SlateBlue4"                , PALETTERGB (71, 60, 139) },
+  {"RoyalBlue1"                , PALETTERGB (72, 118, 255) },
+  {"RoyalBlue2"                , PALETTERGB (67, 110, 238) },
+  {"RoyalBlue3"                , PALETTERGB (58, 95, 205) },
+  {"RoyalBlue4"                , PALETTERGB (39, 64, 139) },
+  {"blue1"             , PALETTERGB (0, 0, 255) },
+  {"blue2"             , PALETTERGB (0, 0, 238) },
+  {"blue3"             , PALETTERGB (0, 0, 205) },
+  {"blue4"             , PALETTERGB (0, 0, 139) },
+  {"DodgerBlue1"       , PALETTERGB (30, 144, 255) },
+  {"DodgerBlue2"       , PALETTERGB (28, 134, 238) },
+  {"DodgerBlue3"       , PALETTERGB (24, 116, 205) },
+  {"DodgerBlue4"       , PALETTERGB (16, 78, 139) },
+  {"SteelBlue1"                , PALETTERGB (99, 184, 255) },
+  {"SteelBlue2"                , PALETTERGB (92, 172, 238) },
+  {"SteelBlue3"                , PALETTERGB (79, 148, 205) },
+  {"SteelBlue4"                , PALETTERGB (54, 100, 139) },
+  {"DeepSkyBlue1"      , PALETTERGB (0, 191, 255) },
+  {"DeepSkyBlue2"      , PALETTERGB (0, 178, 238) },
+  {"DeepSkyBlue3"      , PALETTERGB (0, 154, 205) },
+  {"DeepSkyBlue4"      , PALETTERGB (0, 104, 139) },
+  {"SkyBlue1"          , PALETTERGB (135, 206, 255) },
+  {"SkyBlue2"          , PALETTERGB (126, 192, 238) },
+  {"SkyBlue3"          , PALETTERGB (108, 166, 205) },
+  {"SkyBlue4"          , PALETTERGB (74, 112, 139) },
+  {"LightSkyBlue1"     , PALETTERGB (176, 226, 255) },
+  {"LightSkyBlue2"     , PALETTERGB (164, 211, 238) },
+  {"LightSkyBlue3"     , PALETTERGB (141, 182, 205) },
+  {"LightSkyBlue4"     , PALETTERGB (96, 123, 139) },
+  {"SlateGray1"                , PALETTERGB (198, 226, 255) },
+  {"SlateGray2"                , PALETTERGB (185, 211, 238) },
+  {"SlateGray3"                , PALETTERGB (159, 182, 205) },
+  {"SlateGray4"                , PALETTERGB (108, 123, 139) },
+  {"LightSteelBlue1"   , PALETTERGB (202, 225, 255) },
+  {"LightSteelBlue2"   , PALETTERGB (188, 210, 238) },
+  {"LightSteelBlue3"   , PALETTERGB (162, 181, 205) },
+  {"LightSteelBlue4"   , PALETTERGB (110, 123, 139) },
+  {"LightBlue1"                , PALETTERGB (191, 239, 255) },
+  {"LightBlue2"                , PALETTERGB (178, 223, 238) },
+  {"LightBlue3"                , PALETTERGB (154, 192, 205) },
+  {"LightBlue4"                , PALETTERGB (104, 131, 139) },
+  {"LightCyan1"                , PALETTERGB (224, 255, 255) },
+  {"LightCyan2"                , PALETTERGB (209, 238, 238) },
+  {"LightCyan3"                , PALETTERGB (180, 205, 205) },
+  {"LightCyan4"                , PALETTERGB (122, 139, 139) },
+  {"PaleTurquoise1"    , PALETTERGB (187, 255, 255) },
+  {"PaleTurquoise2"    , PALETTERGB (174, 238, 238) },
+  {"PaleTurquoise3"    , PALETTERGB (150, 205, 205) },
+  {"PaleTurquoise4"    , PALETTERGB (102, 139, 139) },
+  {"CadetBlue1"                , PALETTERGB (152, 245, 255) },
+  {"CadetBlue2"                , PALETTERGB (144, 220, 240) }, /* Adjusted */
+  {"CadetBlue3"                , PALETTERGB (122, 197, 205) },
+  {"CadetBlue4"                , PALETTERGB (83, 134, 139) },
+  {"turquoise1"                , PALETTERGB (0, 245, 255) },
+  {"turquoise2"                , PALETTERGB (0, 229, 238) },
+  {"turquoise3"                , PALETTERGB (0, 197, 205) },
+  {"turquoise4"                , PALETTERGB (0, 134, 139) },
+  {"cyan1"             , PALETTERGB (0, 255, 255) },
+  {"cyan2"             , PALETTERGB (0, 238, 238) },
+  {"cyan3"             , PALETTERGB (0, 205, 205) },
+  {"cyan4"             , PALETTERGB (0, 139, 139) },
+  {"DarkSlateGray1"    , PALETTERGB (151, 255, 255) },
+  {"DarkSlateGray2"    , PALETTERGB (141, 238, 238) },
+  {"DarkSlateGray3"    , PALETTERGB (121, 205, 205) },
+  {"DarkSlateGray4"    , PALETTERGB (82, 139, 139) },
+  {"aquamarine1"       , PALETTERGB (127, 255, 212) },
+  {"aquamarine2"       , PALETTERGB (118, 238, 198) },
+  {"aquamarine3"       , PALETTERGB (102, 205, 170) },
+  {"aquamarine4"       , PALETTERGB (69, 139, 116) },
+  {"DarkSeaGreen1"     , PALETTERGB (193, 255, 193) },
+  {"DarkSeaGreen2"     , PALETTERGB (180, 238, 180) },
+  {"DarkSeaGreen3"     , PALETTERGB (155, 205, 155) },
+  {"DarkSeaGreen4"     , PALETTERGB (105, 139, 105) },
+  {"SeaGreen1"         , PALETTERGB (84, 255, 159) },
+  {"SeaGreen2"         , PALETTERGB (78, 238, 148) },
+  {"SeaGreen3"         , PALETTERGB (67, 205, 128) },
+  {"SeaGreen4"         , PALETTERGB (46, 139, 87) },
+  {"PaleGreen1"                , PALETTERGB (154, 255, 154) },
+  {"PaleGreen2"                , PALETTERGB (144, 238, 144) },
+  {"PaleGreen3"                , PALETTERGB (124, 205, 124) },
+  {"PaleGreen4"                , PALETTERGB (84, 139, 84) },
+  {"SpringGreen1"      , PALETTERGB (0, 255, 127) },
+  {"SpringGreen2"      , PALETTERGB (0, 238, 118) },
+  {"SpringGreen3"      , PALETTERGB (0, 205, 102) },
+  {"SpringGreen4"      , PALETTERGB (0, 139, 69) },
+  {"green1"            , PALETTERGB (0, 255, 0) },
+  {"green2"            , PALETTERGB (0, 238, 0) },
+  {"green3"            , PALETTERGB (0, 205, 0) },
+  {"green4"            , PALETTERGB (0, 139, 0) },
+  {"chartreuse1"       , PALETTERGB (127, 255, 0) },
+  {"chartreuse2"       , PALETTERGB (118, 238, 0) },
+  {"chartreuse3"       , PALETTERGB (102, 205, 0) },
+  {"chartreuse4"       , PALETTERGB (69, 139, 0) },
+  {"OliveDrab1"                , PALETTERGB (192, 255, 62) },
+  {"OliveDrab2"                , PALETTERGB (179, 238, 58) },
+  {"OliveDrab3"                , PALETTERGB (154, 205, 50) },
+  {"OliveDrab4"                , PALETTERGB (105, 139, 34) },
+  {"DarkOliveGreen1"   , PALETTERGB (202, 255, 112) },
+  {"DarkOliveGreen2"   , PALETTERGB (188, 238, 104) },
+  {"DarkOliveGreen3"   , PALETTERGB (162, 205, 90) },
+  {"DarkOliveGreen4"   , PALETTERGB (110, 139, 61) },
+  {"khaki1"            , PALETTERGB (255, 246, 143) },
+  {"khaki2"            , PALETTERGB (238, 230, 133) },
+  {"khaki3"            , PALETTERGB (205, 198, 115) },
+  {"khaki4"            , PALETTERGB (139, 134, 78) },
+  {"LightGoldenrod1"   , PALETTERGB (255, 236, 139) },
+  {"LightGoldenrod2"   , PALETTERGB (238, 220, 130) },
+  {"LightGoldenrod3"   , PALETTERGB (205, 190, 112) },
+  {"LightGoldenrod4"   , PALETTERGB (139, 129, 76) },
+  {"LightYellow1"      , PALETTERGB (255, 255, 224) },
+  {"LightYellow2"      , PALETTERGB (238, 238, 209) },
+  {"LightYellow3"      , PALETTERGB (205, 205, 180) },
+  {"LightYellow4"      , PALETTERGB (139, 139, 122) },
+  {"yellow1"           , PALETTERGB (255, 255, 0) },
+  {"yellow2"           , PALETTERGB (238, 238, 0) },
+  {"yellow3"           , PALETTERGB (205, 205, 0) },
+  {"yellow4"           , PALETTERGB (139, 139, 0) },
+  {"gold1"             , PALETTERGB (255, 215, 0) },
+  {"gold2"             , PALETTERGB (238, 201, 0) },
+  {"gold3"             , PALETTERGB (205, 173, 0) },
+  {"gold4"             , PALETTERGB (139, 117, 0) },
+  {"goldenrod1"                , PALETTERGB (255, 193, 37) },
+  {"goldenrod2"                , PALETTERGB (238, 180, 34) },
+  {"goldenrod3"                , PALETTERGB (205, 155, 29) },
+  {"goldenrod4"                , PALETTERGB (139, 105, 20) },
+  {"DarkGoldenrod1"    , PALETTERGB (255, 185, 15) },
+  {"DarkGoldenrod2"    , PALETTERGB (238, 173, 14) },
+  {"DarkGoldenrod3"    , PALETTERGB (205, 149, 12) },
+  {"DarkGoldenrod4"    , PALETTERGB (139, 101, 8) },
+  {"RosyBrown1"                , PALETTERGB (255, 193, 193) },
+  {"RosyBrown2"                , PALETTERGB (238, 180, 180) },
+  {"RosyBrown3"                , PALETTERGB (205, 155, 155) },
+  {"RosyBrown4"                , PALETTERGB (139, 105, 105) },
+  {"IndianRed1"                , PALETTERGB (255, 106, 106) },
+  {"IndianRed2"                , PALETTERGB (238, 99, 99) },
+  {"IndianRed3"                , PALETTERGB (205, 85, 85) },
+  {"IndianRed4"                , PALETTERGB (139, 58, 58) },
+  {"sienna1"           , PALETTERGB (255, 130, 71) },
+  {"sienna2"           , PALETTERGB (238, 121, 66) },
+  {"sienna3"           , PALETTERGB (205, 104, 57) },
+  {"sienna4"           , PALETTERGB (139, 71, 38) },
+  {"burlywood1"                , PALETTERGB (255, 211, 155) },
+  {"burlywood2"                , PALETTERGB (238, 197, 145) },
+  {"burlywood3"                , PALETTERGB (205, 170, 125) },
+  {"burlywood4"                , PALETTERGB (139, 115, 85) },
+  {"wheat1"            , PALETTERGB (255, 231, 186) },
+  {"wheat2"            , PALETTERGB (238, 216, 174) },
+  {"wheat3"            , PALETTERGB (205, 186, 150) },
+  {"wheat4"            , PALETTERGB (139, 126, 102) },
+  {"tan1"              , PALETTERGB (255, 165, 79) },
+  {"tan2"              , PALETTERGB (238, 154, 73) },
+  {"tan3"              , PALETTERGB (205, 133, 63) },
+  {"tan4"              , PALETTERGB (139, 90, 43) },
+  {"chocolate1"                , PALETTERGB (255, 127, 36) },
+  {"chocolate2"                , PALETTERGB (238, 118, 33) },
+  {"chocolate3"                , PALETTERGB (205, 102, 29) },
+  {"chocolate4"                , PALETTERGB (139, 69, 19) },
+  {"firebrick1"                , PALETTERGB (255, 48, 48) },
+  {"firebrick2"                , PALETTERGB (238, 44, 44) },
+  {"firebrick3"                , PALETTERGB (205, 38, 38) },
+  {"firebrick4"                , PALETTERGB (139, 26, 26) },
+  {"brown1"            , PALETTERGB (255, 64, 64) },
+  {"brown2"            , PALETTERGB (238, 59, 59) },
+  {"brown3"            , PALETTERGB (205, 51, 51) },
+  {"brown4"            , PALETTERGB (139, 35, 35) },
+  {"salmon1"           , PALETTERGB (255, 140, 105) },
+  {"salmon2"           , PALETTERGB (238, 130, 98) },
+  {"salmon3"           , PALETTERGB (205, 112, 84) },
+  {"salmon4"           , PALETTERGB (139, 76, 57) },
+  {"LightSalmon1"      , PALETTERGB (255, 160, 122) },
+  {"LightSalmon2"      , PALETTERGB (238, 149, 114) },
+  {"LightSalmon3"      , PALETTERGB (205, 129, 98) },
+  {"LightSalmon4"      , PALETTERGB (139, 87, 66) },
+  {"orange1"           , PALETTERGB (255, 165, 0) },
+  {"orange2"           , PALETTERGB (238, 154, 0) },
+  {"orange3"           , PALETTERGB (205, 133, 0) },
+  {"orange4"           , PALETTERGB (139, 90, 0) },
+  {"DarkOrange1"       , PALETTERGB (255, 127, 0) },
+  {"DarkOrange2"       , PALETTERGB (238, 118, 0) },
+  {"DarkOrange3"       , PALETTERGB (205, 102, 0) },
+  {"DarkOrange4"       , PALETTERGB (139, 69, 0) },
+  {"coral1"            , PALETTERGB (255, 114, 86) },
+  {"coral2"            , PALETTERGB (238, 106, 80) },
+  {"coral3"            , PALETTERGB (205, 91, 69) },
+  {"coral4"            , PALETTERGB (139, 62, 47) },
+  {"tomato1"           , PALETTERGB (255, 99, 71) },
+  {"tomato2"           , PALETTERGB (238, 92, 66) },
+  {"tomato3"           , PALETTERGB (205, 79, 57) },
+  {"tomato4"           , PALETTERGB (139, 54, 38) },
+  {"OrangeRed1"                , PALETTERGB (255, 69, 0) },
+  {"OrangeRed2"                , PALETTERGB (238, 64, 0) },
+  {"OrangeRed3"                , PALETTERGB (205, 55, 0) },
+  {"OrangeRed4"                , PALETTERGB (139, 37, 0) },
+  {"red1"              , PALETTERGB (255, 0, 0) },
+  {"red2"              , PALETTERGB (238, 0, 0) },
+  {"red3"              , PALETTERGB (205, 0, 0) },
+  {"red4"              , PALETTERGB (139, 0, 0) },
+  {"DeepPink1"         , PALETTERGB (255, 20, 147) },
+  {"DeepPink2"         , PALETTERGB (238, 18, 137) },
+  {"DeepPink3"         , PALETTERGB (205, 16, 118) },
+  {"DeepPink4"         , PALETTERGB (139, 10, 80) },
+  {"HotPink1"          , PALETTERGB (255, 110, 180) },
+  {"HotPink2"          , PALETTERGB (238, 106, 167) },
+  {"HotPink3"          , PALETTERGB (205, 96, 144) },
+  {"HotPink4"          , PALETTERGB (139, 58, 98) },
+  {"pink1"             , PALETTERGB (255, 181, 197) },
+  {"pink2"             , PALETTERGB (238, 169, 184) },
+  {"pink3"             , PALETTERGB (205, 145, 158) },
+  {"pink4"             , PALETTERGB (139, 99, 108) },
+  {"LightPink1"                , PALETTERGB (255, 174, 185) },
+  {"LightPink2"                , PALETTERGB (238, 162, 173) },
+  {"LightPink3"                , PALETTERGB (205, 140, 149) },
+  {"LightPink4"                , PALETTERGB (139, 95, 101) },
+  {"PaleVioletRed1"    , PALETTERGB (255, 130, 171) },
+  {"PaleVioletRed2"    , PALETTERGB (238, 121, 159) },
+  {"PaleVioletRed3"    , PALETTERGB (205, 104, 137) },
+  {"PaleVioletRed4"    , PALETTERGB (139, 71, 93) },
+  {"maroon1"           , PALETTERGB (255, 52, 179) },
+  {"maroon2"           , PALETTERGB (238, 48, 167) },
+  {"maroon3"           , PALETTERGB (205, 41, 144) },
+  {"maroon4"           , PALETTERGB (139, 28, 98) },
+  {"VioletRed1"                , PALETTERGB (255, 62, 150) },
+  {"VioletRed2"                , PALETTERGB (238, 58, 140) },
+  {"VioletRed3"                , PALETTERGB (205, 50, 120) },
+  {"VioletRed4"                , PALETTERGB (139, 34, 82) },
+  {"magenta1"          , PALETTERGB (255, 0, 255) },
+  {"magenta2"          , PALETTERGB (238, 0, 238) },
+  {"magenta3"          , PALETTERGB (205, 0, 205) },
+  {"magenta4"          , PALETTERGB (139, 0, 139) },
+  {"orchid1"           , PALETTERGB (255, 131, 250) },
+  {"orchid2"           , PALETTERGB (238, 122, 233) },
+  {"orchid3"           , PALETTERGB (205, 105, 201) },
+  {"orchid4"           , PALETTERGB (139, 71, 137) },
+  {"plum1"             , PALETTERGB (255, 187, 255) },
+  {"plum2"             , PALETTERGB (238, 174, 238) },
+  {"plum3"             , PALETTERGB (205, 150, 205) },
+  {"plum4"             , PALETTERGB (139, 102, 139) },
+  {"MediumOrchid1"     , PALETTERGB (224, 102, 255) },
+  {"MediumOrchid2"     , PALETTERGB (209, 95, 238) },
+  {"MediumOrchid3"     , PALETTERGB (180, 82, 205) },
+  {"MediumOrchid4"     , PALETTERGB (122, 55, 139) },
+  {"DarkOrchid1"       , PALETTERGB (191, 62, 255) },
+  {"DarkOrchid2"       , PALETTERGB (178, 58, 238) },
+  {"DarkOrchid3"       , PALETTERGB (154, 50, 205) },
+  {"DarkOrchid4"       , PALETTERGB (104, 34, 139) },
+  {"purple1"           , PALETTERGB (155, 48, 255) },
+  {"purple2"           , PALETTERGB (145, 44, 238) },
+  {"purple3"           , PALETTERGB (125, 38, 205) },
+  {"purple4"           , PALETTERGB (85, 26, 139) },
+  {"MediumPurple1"     , PALETTERGB (171, 130, 255) },
+  {"MediumPurple2"     , PALETTERGB (159, 121, 238) },
+  {"MediumPurple3"     , PALETTERGB (137, 104, 205) },
+  {"MediumPurple4"     , PALETTERGB (93, 71, 139) },
+  {"thistle1"          , PALETTERGB (255, 225, 255) },
+  {"thistle2"          , PALETTERGB (238, 210, 238) },
+  {"thistle3"          , PALETTERGB (205, 181, 205) },
+  {"thistle4"          , PALETTERGB (139, 123, 139) },
+  {"gray0"             , PALETTERGB (0, 0, 0) },
+  {"grey0"             , PALETTERGB (0, 0, 0) },
+  {"gray1"             , PALETTERGB (3, 3, 3) },
+  {"grey1"             , PALETTERGB (3, 3, 3) },
+  {"gray2"             , PALETTERGB (5, 5, 5) },
+  {"grey2"             , PALETTERGB (5, 5, 5) },
+  {"gray3"             , PALETTERGB (8, 8, 8) },
+  {"grey3"             , PALETTERGB (8, 8, 8) },
+  {"gray4"             , PALETTERGB (10, 10, 10) },
+  {"grey4"             , PALETTERGB (10, 10, 10) },
+  {"gray5"             , PALETTERGB (13, 13, 13) },
+  {"grey5"             , PALETTERGB (13, 13, 13) },
+  {"gray6"             , PALETTERGB (15, 15, 15) },
+  {"grey6"             , PALETTERGB (15, 15, 15) },
+  {"gray7"             , PALETTERGB (18, 18, 18) },
+  {"grey7"             , PALETTERGB (18, 18, 18) },
+  {"gray8"             , PALETTERGB (20, 20, 20) },
+  {"grey8"             , PALETTERGB (20, 20, 20) },
+  {"gray9"             , PALETTERGB (23, 23, 23) },
+  {"grey9"             , PALETTERGB (23, 23, 23) },
+  {"gray10"            , PALETTERGB (26, 26, 26) },
+  {"grey10"            , PALETTERGB (26, 26, 26) },
+  {"gray11"            , PALETTERGB (28, 28, 28) },
+  {"grey11"            , PALETTERGB (28, 28, 28) },
+  {"gray12"            , PALETTERGB (31, 31, 31) },
+  {"grey12"            , PALETTERGB (31, 31, 31) },
+  {"gray13"            , PALETTERGB (33, 33, 33) },
+  {"grey13"            , PALETTERGB (33, 33, 33) },
+  {"gray14"            , PALETTERGB (36, 36, 36) },
+  {"grey14"            , PALETTERGB (36, 36, 36) },
+  {"gray15"            , PALETTERGB (38, 38, 38) },
+  {"grey15"            , PALETTERGB (38, 38, 38) },
+  {"gray16"            , PALETTERGB (41, 41, 41) },
+  {"grey16"            , PALETTERGB (41, 41, 41) },
+  {"gray17"            , PALETTERGB (43, 43, 43) },
+  {"grey17"            , PALETTERGB (43, 43, 43) },
+  {"gray18"            , PALETTERGB (46, 46, 46) },
+  {"grey18"            , PALETTERGB (46, 46, 46) },
+  {"gray19"            , PALETTERGB (48, 48, 48) },
+  {"grey19"            , PALETTERGB (48, 48, 48) },
+  {"gray20"            , PALETTERGB (51, 51, 51) },
+  {"grey20"            , PALETTERGB (51, 51, 51) },
+  {"gray21"            , PALETTERGB (54, 54, 54) },
+  {"grey21"            , PALETTERGB (54, 54, 54) },
+  {"gray22"            , PALETTERGB (56, 56, 56) },
+  {"grey22"            , PALETTERGB (56, 56, 56) },
+  {"gray23"            , PALETTERGB (59, 59, 59) },
+  {"grey23"            , PALETTERGB (59, 59, 59) },
+  {"gray24"            , PALETTERGB (61, 61, 61) },
+  {"grey24"            , PALETTERGB (61, 61, 61) },
+  {"gray25"            , PALETTERGB (64, 64, 64) },
+  {"grey25"            , PALETTERGB (64, 64, 64) },
+  {"gray26"            , PALETTERGB (66, 66, 66) },
+  {"grey26"            , PALETTERGB (66, 66, 66) },
+  {"gray27"            , PALETTERGB (69, 69, 69) },
+  {"grey27"            , PALETTERGB (69, 69, 69) },
+  {"gray28"            , PALETTERGB (71, 71, 71) },
+  {"grey28"            , PALETTERGB (71, 71, 71) },
+  {"gray29"            , PALETTERGB (74, 74, 74) },
+  {"grey29"            , PALETTERGB (74, 74, 74) },
+  {"gray30"            , PALETTERGB (77, 77, 77) },
+  {"grey30"            , PALETTERGB (77, 77, 77) },
+  {"gray31"            , PALETTERGB (79, 79, 79) },
+  {"grey31"            , PALETTERGB (79, 79, 79) },
+  {"gray32"            , PALETTERGB (82, 82, 82) },
+  {"grey32"            , PALETTERGB (82, 82, 82) },
+  {"gray33"            , PALETTERGB (84, 84, 84) },
+  {"grey33"            , PALETTERGB (84, 84, 84) },
+  {"gray34"            , PALETTERGB (87, 87, 87) },
+  {"grey34"            , PALETTERGB (87, 87, 87) },
+  {"gray35"            , PALETTERGB (89, 89, 89) },
+  {"grey35"            , PALETTERGB (89, 89, 89) },
+  {"gray36"            , PALETTERGB (92, 92, 92) },
+  {"grey36"            , PALETTERGB (92, 92, 92) },
+  {"gray37"            , PALETTERGB (94, 94, 94) },
+  {"grey37"            , PALETTERGB (94, 94, 94) },
+  {"gray38"            , PALETTERGB (97, 97, 97) },
+  {"grey38"            , PALETTERGB (97, 97, 97) },
+  {"gray39"            , PALETTERGB (99, 99, 99) },
+  {"grey39"            , PALETTERGB (99, 99, 99) },
+  {"gray40"            , PALETTERGB (102, 102, 102) },
+  {"grey40"            , PALETTERGB (102, 102, 102) },
+  {"gray41"            , PALETTERGB (105, 105, 105) },
+  {"grey41"            , PALETTERGB (105, 105, 105) },
+  {"gray42"            , PALETTERGB (107, 107, 107) },
+  {"grey42"            , PALETTERGB (107, 107, 107) },
+  {"gray43"            , PALETTERGB (110, 110, 110) },
+  {"grey43"            , PALETTERGB (110, 110, 110) },
+  {"gray44"            , PALETTERGB (112, 112, 112) },
+  {"grey44"            , PALETTERGB (112, 112, 112) },
+  {"gray45"            , PALETTERGB (115, 115, 115) },
+  {"grey45"            , PALETTERGB (115, 115, 115) },
+  {"gray46"            , PALETTERGB (117, 117, 117) },
+  {"grey46"            , PALETTERGB (117, 117, 117) },
+  {"gray47"            , PALETTERGB (120, 120, 120) },
+  {"grey47"            , PALETTERGB (120, 120, 120) },
+  {"gray48"            , PALETTERGB (122, 122, 122) },
+  {"grey48"            , PALETTERGB (122, 122, 122) },
+  {"gray49"            , PALETTERGB (125, 125, 125) },
+  {"grey49"            , PALETTERGB (125, 125, 125) },
+  {"gray50"            , PALETTERGB (128, 128, 128) }, /* Adjusted */
+  {"grey50"            , PALETTERGB (128, 128, 128) }, /* Adjusted */
+  {"gray51"            , PALETTERGB (130, 130, 130) },
+  {"grey51"            , PALETTERGB (130, 130, 130) },
+  {"gray52"            , PALETTERGB (133, 133, 133) },
+  {"grey52"            , PALETTERGB (133, 133, 133) },
+  {"gray53"            , PALETTERGB (135, 135, 135) },
+  {"grey53"            , PALETTERGB (135, 135, 135) },
+  {"gray54"            , PALETTERGB (138, 138, 138) },
+  {"grey54"            , PALETTERGB (138, 138, 138) },
+  {"gray55"            , PALETTERGB (140, 140, 140) },
+  {"grey55"            , PALETTERGB (140, 140, 140) },
+  {"gray56"            , PALETTERGB (143, 143, 143) },
+  {"grey56"            , PALETTERGB (143, 143, 143) },
+  {"gray57"            , PALETTERGB (145, 145, 145) },
+  {"grey57"            , PALETTERGB (145, 145, 145) },
+  {"gray58"            , PALETTERGB (148, 148, 148) },
+  {"grey58"            , PALETTERGB (148, 148, 148) },
+  {"gray59"            , PALETTERGB (150, 150, 150) },
+  {"grey59"            , PALETTERGB (150, 150, 150) },
+  {"gray60"            , PALETTERGB (153, 153, 153) },
+  {"grey60"            , PALETTERGB (153, 153, 153) },
+  {"gray61"            , PALETTERGB (156, 156, 156) },
+  {"grey61"            , PALETTERGB (156, 156, 156) },
+  {"gray62"            , PALETTERGB (158, 158, 158) },
+  {"grey62"            , PALETTERGB (158, 158, 158) },
+  {"gray63"            , PALETTERGB (161, 161, 161) },
+  {"grey63"            , PALETTERGB (161, 161, 161) },
+  {"gray64"            , PALETTERGB (163, 163, 163) },
+  {"grey64"            , PALETTERGB (163, 163, 163) },
+  {"gray65"            , PALETTERGB (166, 166, 166) },
+  {"grey65"            , PALETTERGB (166, 166, 166) },
+  {"gray66"            , PALETTERGB (168, 168, 168) },
+  {"grey66"            , PALETTERGB (168, 168, 168) },
+  {"gray67"            , PALETTERGB (171, 171, 171) },
+  {"grey67"            , PALETTERGB (171, 171, 171) },
+  {"gray68"            , PALETTERGB (173, 173, 173) },
+  {"grey68"            , PALETTERGB (173, 173, 173) },
+  {"gray69"            , PALETTERGB (176, 176, 176) },
+  {"grey69"            , PALETTERGB (176, 176, 176) },
+  {"gray70"            , PALETTERGB (179, 179, 179) },
+  {"grey70"            , PALETTERGB (179, 179, 179) },
+  {"gray71"            , PALETTERGB (181, 181, 181) },
+  {"grey71"            , PALETTERGB (181, 181, 181) },
+  {"gray72"            , PALETTERGB (184, 184, 184) },
+  {"grey72"            , PALETTERGB (184, 184, 184) },
+  {"gray73"            , PALETTERGB (186, 186, 186) },
+  {"grey73"            , PALETTERGB (186, 186, 186) },
+  {"gray74"            , PALETTERGB (189, 189, 189) },
+  {"grey74"            , PALETTERGB (189, 189, 189) },
+  {"gray75"            , PALETTERGB (192, 192, 192) }, /* Adjusted */
+  {"grey75"            , PALETTERGB (192, 192, 192) }, /* Adjusted */
+  {"gray76"            , PALETTERGB (194, 194, 194) },
+  {"grey76"            , PALETTERGB (194, 194, 194) },
+  {"gray77"            , PALETTERGB (196, 196, 196) },
+  {"grey77"            , PALETTERGB (196, 196, 196) },
+  {"gray78"            , PALETTERGB (199, 199, 199) },
+  {"grey78"            , PALETTERGB (199, 199, 199) },
+  {"gray79"            , PALETTERGB (201, 201, 201) },
+  {"grey79"            , PALETTERGB (201, 201, 201) },
+  {"gray80"            , PALETTERGB (204, 204, 204) },
+  {"grey80"            , PALETTERGB (204, 204, 204) },
+  {"gray81"            , PALETTERGB (207, 207, 207) },
+  {"grey81"            , PALETTERGB (207, 207, 207) },
+  {"gray82"            , PALETTERGB (209, 209, 209) },
+  {"grey82"            , PALETTERGB (209, 209, 209) },
+  {"gray83"            , PALETTERGB (212, 212, 212) },
+  {"grey83"            , PALETTERGB (212, 212, 212) },
+  {"gray84"            , PALETTERGB (214, 214, 214) },
+  {"grey84"            , PALETTERGB (214, 214, 214) },
+  {"gray85"            , PALETTERGB (217, 217, 217) },
+  {"grey85"            , PALETTERGB (217, 217, 217) },
+  {"gray86"            , PALETTERGB (219, 219, 219) },
+  {"grey86"            , PALETTERGB (219, 219, 219) },
+  {"gray87"            , PALETTERGB (222, 222, 222) },
+  {"grey87"            , PALETTERGB (222, 222, 222) },
+  {"gray88"            , PALETTERGB (224, 224, 224) },
+  {"grey88"            , PALETTERGB (224, 224, 224) },
+  {"gray89"            , PALETTERGB (227, 227, 227) },
+  {"grey89"            , PALETTERGB (227, 227, 227) },
+  {"gray90"            , PALETTERGB (229, 229, 229) },
+  {"grey90"            , PALETTERGB (229, 229, 229) },
+  {"gray91"            , PALETTERGB (232, 232, 232) },
+  {"grey91"            , PALETTERGB (232, 232, 232) },
+  {"gray92"            , PALETTERGB (235, 235, 235) },
+  {"grey92"            , PALETTERGB (235, 235, 235) },
+  {"gray93"            , PALETTERGB (237, 237, 237) },
+  {"grey93"            , PALETTERGB (237, 237, 237) },
+  {"gray94"            , PALETTERGB (240, 240, 240) },
+  {"grey94"            , PALETTERGB (240, 240, 240) },
+  {"gray95"            , PALETTERGB (242, 242, 242) },
+  {"grey95"            , PALETTERGB (242, 242, 242) },
+  {"gray96"            , PALETTERGB (245, 245, 245) },
+  {"grey96"            , PALETTERGB (245, 245, 245) },
+  {"gray97"            , PALETTERGB (247, 247, 247) },
+  {"grey97"            , PALETTERGB (247, 247, 247) },
+  {"gray98"            , PALETTERGB (250, 250, 250) },
+  {"grey98"            , PALETTERGB (250, 250, 250) },
+  {"gray99"            , PALETTERGB (252, 252, 252) },
+  {"grey99"            , PALETTERGB (252, 252, 252) },
+  {"gray100"           , PALETTERGB (255, 255, 255) },
+  {"grey100"           , PALETTERGB (255, 255, 255) },
+  {"DarkGrey"          , PALETTERGB (169, 169, 169) },
+  {"DarkGray"          , PALETTERGB (169, 169, 169) },
+  {"DarkBlue"          , PALETTERGB (0, 0, 128) },     /* Adjusted == Navy */
+  {"DarkCyan"          , PALETTERGB (0, 128, 128) },   /* Adjusted */
+  {"DarkMagenta"       , PALETTERGB (128, 0, 128) },   /* Adjusted */
+  {"DarkRed"           , PALETTERGB (128, 0, 0) },     /* Adjusted */
+  {"LightGreen"                , PALETTERGB (144, 238, 144) },
+  /* Added to match values in the default Windows palette: */
+  {"DarkYellow"                , PALETTERGB (128, 128, 0) },
+  {"PaleYellow"                , PALETTERGB (255, 255, 128) }
 };
 
 
 typedef struct fontmap_t 
 {
   const char *name;
-  const int value;
+  int value;
 } fontmap_t;
 
 /* Default weight first, preferred names listed before synonyms */
@@ -857,22 +866,39 @@ mswindows_string_to_color(const char *name)
     }
   else if (*name)      /* Can't be an empty string */
     {
-      char *nospaces = alloca (strlen (name)+1);
-      char *c=nospaces;
+      char *nospaces = (char*) alloca (strlen (name)+1);
+      char *c = nospaces;
       while (*name)
        if (*name != ' ')
-         *(c++) = *(name++);
+         *c++ = *name++;
        else
          name++;
       *c = '\0';
 
-      for (i=0; i< countof (mswindows_X_color_map); i++)
+      for (i = 0; i < countof (mswindows_X_color_map); i++)
        if (!stricmp (nospaces, mswindows_X_color_map[i].name))
          return (mswindows_X_color_map[i].colorref);
     }
   return (COLORREF) -1;
 }
 
+Lisp_Object
+mswindows_color_to_string (COLORREF color)
+{
+  int i;
+  char buf[8];
+  COLORREF pcolor = PALETTERGB (GetRValue (color), GetGValue (color),
+                               GetBValue (color));
+
+  for (i=0; i < countof (mswindows_X_color_map); i++)
+    if (pcolor == (mswindows_X_color_map[i].colorref))
+      return  build_string (mswindows_X_color_map[i].name);
+
+  sprintf (buf, "#%02X%02X%02X",
+          GetRValue (color), GetGValue (color), GetBValue (color));
+  return build_string (buf);
+}
+
 /*
  * Returns non-zero if the two supplied font patterns match.
  * If they match and fontname is not NULL, copies the logical OR of the
@@ -1428,7 +1454,7 @@ initialize_font_instance (Lisp_Font_Instance *f, Lisp_Object name,
   if (hfont2 != MSWINDOWS_BAD_HFONT)
     hfont = hfont2;
 
-  hfont2 = SelectObject(hdc, hfont);
+  hfont2 = (HFONT) SelectObject (hdc, hfont);
   if (!hfont2)
     {
       mswindows_finalize_font_instance (f);
@@ -1539,7 +1565,7 @@ mswindows_font_instance_truename (Lisp_Font_Instance *f, Error_behavior errb)
   int nsep=0;
   char *name = (char *) XSTRING_DATA (f->name);
   char* ptr = name;
-  char* extname = alloca (strlen (name) + 19);
+  char* extname = (char*) alloca (strlen (name) + 19);
   strcpy (extname, name);
 
   while ((ptr = strchr (ptr, ':')) != 0)
index 71b423b..f01de94 100644 (file)
@@ -69,8 +69,10 @@ struct mswindows_font_instance_data
 /* If font creation during redisplay fails, then the following
    value is used to prevent future attempts to create this font.
    Redisplay uses the "main" font when encounters this value */
-#define MSWINDOWS_BAD_HFONT INVALID_HANDLE_VALUE
+#define MSWINDOWS_BAD_HFONT ((HFONT)INVALID_HANDLE_VALUE)
 
 HFONT mswindows_get_hfont (Lisp_Font_Instance* f, int under, int strike);
 
+Lisp_Object mswindows_color_to_string (COLORREF color);
+
 #endif /* INCLUDED_objects_msw_h_ */
index 3cedafd..e91dbed 100644 (file)
@@ -1009,6 +1009,9 @@ Valid instantiators for face-boolean specifiers are
 void
 syms_of_objects (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (color_instance);
+  INIT_LRECORD_IMPLEMENTATION (font_instance);
+
   DEFSUBR (Fcolor_specifier_p);
   DEFSUBR (Ffont_specifier_p);
   DEFSUBR (Fface_boolean_specifier_p);
index 51ea934..1b080e5 100644 (file)
@@ -173,5 +173,8 @@ reinit_opaque_once_early (void)
 void
 init_opaque_once_early (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (opaque);
+  INIT_LRECORD_IMPLEMENTATION (opaque_ptr);
+
   reinit_opaque_once_early ();
 }
index ad56f70..f7ab6a5 100644 (file)
@@ -581,7 +581,7 @@ nt_create_process (Lisp_Process *p,
     new_space++;
     
     /* Allocate space and copy variables into it */
-    penv = proc_env = alloca(new_space);
+    penv = proc_env = (char*) alloca(new_space);
     for (i = 0; i < new_length; i++)
       {
        strcpy(penv, env[i]);
index 643e123..f5e5dae 100644 (file)
@@ -1990,6 +1990,8 @@ t or pty (pty) or stream (socket connection).
 void
 syms_of_process (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (process);
+
   defsymbol (&Qprocessp, "processp");
   defsymbol (&Qprocess_live_p, "process-live-p");
   defsymbol (&Qrun, "run");
index e091b2f..ea8f8f8 100644 (file)
@@ -1726,7 +1726,7 @@ Addr_Block_initialize (void)
   addr_chain = (ADDRESS_CHAIN) UNDERLYING_MALLOC( sizeof( ADDRESS_BLOCK ));
   addr_chain->next = 0;                /* Last block in chain */
   addr_chain->sz = 0x0c000000; /* Size */
-  addr_chain->addr = (POINTER) (0x04000000 | DATA_SEG_BITS);
+  addr_chain->addr = (POINTER) (0x04000000);
   addr_chain->flag = empty;
 }
 
index 12b3bf3..fc29885 100644 (file)
@@ -704,6 +704,8 @@ unified_range_table_get_range (void *unrangetab, int offset,
 void
 syms_of_rangetab (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (range_table);
+
   defsymbol (&Qrange_tablep, "range-table-p");
   defsymbol (&Qrange_table, "range-table");
 
index b39257d..08d32d7 100644 (file)
@@ -28,13 +28,14 @@ Boston, MA 02111-1307, USA.  */
 #include <stdio.h>
 #include <string.h>
 #include <errno.h>
+#include <limits.h>
+
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
-#ifdef _POSIX_VERSION
-#include <limits.h>                    /* for PATH_MAX */
-#else
-#include <sys/param.h>                 /* for MAXPATHLEN */
+
+#if defined (HAVE_SYS_PARAM_H)
+#include <sys/param.h>
 #endif
 
 #ifdef WINDOWSNT
@@ -74,7 +75,7 @@ xrealpath (const char *path, char resolved_path [])
 #endif
 
   /* Make a copy of the source path since we may need to modify it. */
-  strcpy(copy_path, path);
+  strcpy (copy_path, path);
   path = copy_path;
   max_path = copy_path + PATH_MAX - 2;
 #ifdef WINDOWSNT
@@ -153,21 +154,20 @@ xrealpath (const char *path, char resolved_path [])
              continue;
            }
 
-         if (path[1] == '.')
+         /* Handle ".." */
+         if (path[1] == '.' &&
+             (path[2] == '\0' || path[2] == '/'))
            {
-             if (path[2] == '\0' || path[2] == '/')
-               {
-                 path += 2;
-
-                 /* Ignore ".." at root. */
-                 if (new_path == resolved_path + 1)
-                   continue;
-
-                 /* Handle ".." by backing up. */
-                 while ((--new_path)[-1] != '/')
-                   ;
-                 continue;
-               }
+             path += 2;
+
+             /* Ignore ".." at root. */
+             if (new_path == resolved_path + 1)
+               continue;
+
+             /* Handle ".." by backing up. */
+             while ((--new_path)[-1] != '/')
+               ;
+             continue;
            }
        }
 
@@ -185,7 +185,7 @@ xrealpath (const char *path, char resolved_path [])
 #ifdef S_IFLNK
       /* See if latest pathname component is a symlink. */
       *new_path = '\0';
-      n = readlink(resolved_path, link_path, PATH_MAX - 1);
+      n = readlink (resolved_path, link_path, PATH_MAX - 1);
 
       if (n < 0)
        {
index 42858ff..c3ef67c 100644 (file)
@@ -6027,7 +6027,7 @@ redisplay_window (Lisp_Object window, int skip_selected)
          && !f->faces_changed
          && !f->glyphs_changed
          && !f->subwindows_changed
-         && !f->subwindows_state_changed
+         /*      && !f->subwindows_state_changed*/
          && !f->point_changed
          && !f->windows_structure_changed)
        {
@@ -6049,7 +6049,7 @@ redisplay_window (Lisp_Object window, int skip_selected)
              && !f->faces_changed
              && !f->glyphs_changed
              && !f->subwindows_changed
-             && !f->subwindows_state_changed
+             /*              && !f->subwindows_state_changed*/
              && !f->windows_structure_changed)
            {
              if (point_visible (w, pointm, CURRENT_DISP)
@@ -6108,7 +6108,7 @@ redisplay_window (Lisp_Object window, int skip_selected)
           && !f->faces_changed
           && !f->glyphs_changed
           && !f->subwindows_changed
-          && !f->subwindows_state_changed
+          /*      && !f->subwindows_state_changed*/
           && !f->windows_structure_changed
           && !f->frame_changed
           && !truncation_changed
@@ -6363,8 +6363,15 @@ redisplay_frame (struct frame *f, int preemption_check)
     }
   else
     mark_subwindow_cachels_as_not_updated (f);
+
   /* We can now update the gutters, safe in the knowledge that our
      efforts won't get undone. */
+
+  /* #### This can call lisp, it may be that if the subwindow cachels
+     have been reset there are no remaining references to the
+     displayed glyphs and so they get garbage collected. We should
+     consider putting this call inside the critical redisplay
+     section. */
   update_frame_gutters (f);
 
   hold_frame_size_changes ();
@@ -7047,7 +7054,9 @@ mark_glyph_block_dynarr (glyph_block_dynarr *gba)
     }
 }
 
-static void
+/* See the comment in image_instantiate_cache_result as to why marking
+   the glyph will also mark the image_instance. */
+void
 mark_redisplay_structs (display_line_dynarr *dla)
 {
   display_line *dl = Dynarr_atp (dla, 0);
@@ -7107,6 +7116,7 @@ mark_redisplay (void)
       struct frame *f = XFRAME (XCAR (frmcons));
       update_frame_window_mirror (f);
       mark_window_mirror (f->root_mirror);
+      mark_gutters (f);
     }
 }
 \f
index e70254e..9c91f6e 100644 (file)
@@ -696,6 +696,7 @@ int window_half_pixpos (struct window *w);
 void redisplay_echo_area (void);
 void free_display_structs (struct window_mirror *mir);
 void free_display_lines (display_line_dynarr *dla);
+void mark_redisplay_structs (display_line_dynarr *dla);
 void generate_displayable_area (struct window *w, Lisp_Object disp_string,
                                int xpos, int ypos, int width, int height,
                                display_line_dynarr* dl,
index 19562b8..d108923 100644 (file)
@@ -187,19 +187,6 @@ extern long random();
 
 #define NO_ARG_ARRAY
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#define WORD_MACHINE
-
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the 24-bit bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
@@ -218,10 +205,6 @@ extern long random();
 /* Text does precede data space, but this is never a safe assumption.  */
 #define VIRT_ADDR_VARIES
 
-/* set this if you have a new version of cygwin
-#define DATA_SEG_BITS 0x10000000
-*/
-
 /* If you are compiling with a non-C calling convention but need to
    declare vararg routines differently, put it here */
 #define _VARARGS_ __cdecl
index 0e196fe..f65ba74 100644 (file)
@@ -85,18 +85,6 @@ Boston, MA 02111-1307, USA.  */
 
 #define NO_ARG_ARRAY
 
-/* Define WORD_MACHINE if addresses and such have
- * to be corrected before they can be used as byte counts.  */
-
-#define WORD_MACHINE
-
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the 24-bit bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   If you use NO_UNION_TYPE, this flag does not matter.  */
-
-#define EXPLICIT_SIGN_EXTEND
 /* System calls that are encapsulated */
 #define ENCAPSULATE_RENAME
 #define ENCAPSULATE_OPEN
@@ -121,10 +109,6 @@ Boston, MA 02111-1307, USA.  */
 /* Text does precede data space, but this is never a safe assumption.  */
 #define VIRT_ADDR_VARIES
 
-/* set this if you have a new version of cygwin
-#define DATA_SEG_BITS 0x10000000
-*/
-
 /* If you are compiling with a non-C calling convention but need to
    declare vararg routines differently, put it here */
 #define _VARARGS_ __cdecl
index 45395e2..33d49a4 100644 (file)
@@ -304,3 +304,11 @@ gid_t getegid (void);
   #define _WIN32_WINNT 0x0400
  #endif
 #endif
+
+/* MSVC 6.0 has a mechanism to declare functions which never return */
+#if (_MSC_VER >= 1200)
+#define DOESNT_RETURN __declspec(noreturn) void
+#define DECLARE_DOESNT_RETURN(decl) __declspec(noreturn) extern void decl
+#define DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS(decl,str,idx) \
+          __declspec(noreturn) extern void decl PRINTF_ARGS(str,idx)
+#endif /* MSVC 6.0 */
index a760eb0..f72a46c 100644 (file)
@@ -71,7 +71,7 @@ Copy STRING to the mswindows clipboard.
   do
     {
       /* copy next line or remaining bytes including '\0' */
-      next = memccpy (dst, src, '\n', rawsize);
+      next = (char*) memccpy (dst, src, '\n', rawsize);
       if (next)
        {
          /* copied one line ending with '\n' */
@@ -141,7 +141,7 @@ Return the contents of the mswindows clipboard.
       do
        {
          /* copy next line or remaining bytes excluding '\0' */
-         next = memccpy (dst, src, '\r', rawsize);
+         next = (char*) memccpy (dst, src, '\r', rawsize);
          if (next)
            {
              /* copied one line ending with '\r' */
index cdb1cc3..fad2e0f 100644 (file)
@@ -3114,6 +3114,8 @@ Return non-nil if OBJECT is a display-table specifier.
 void
 syms_of_specifier (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (specifier);
+
   defsymbol (&Qspecifierp, "specifierp");
 
   defsymbol (&Qconsole_type, "console-type");
index ffb5367..2667fce 100644 (file)
@@ -1008,7 +1008,7 @@ static const struct lrecord_description symbol_value_varalias_description[] = {
 
 DEFINE_LRECORD_IMPLEMENTATION ("symbol-value-forward",
                               symbol_value_forward,
-                              this_one_is_unmarkable,
+                              0,
                               print_symbol_value_magic, 0, 0, 0,
                               symbol_value_forward_description,
                               struct symbol_value_forward);
@@ -3133,14 +3133,14 @@ Lisp_Object Qnull_pointer;
 #endif
 
 /* some losing systems can't have static vars at function scope... */
-static struct symbol_value_magic guts_of_unbound_marker =
+static const struct symbol_value_magic guts_of_unbound_marker =
 { /* struct symbol_value_magic */
   { /* struct lcrecord_header */
     { /* struct lrecord_header */
-      1, /* type - index into lrecord_implementations_table */
-      0, /* mark */
-      0, /* c_readonly */
-      0, /* lisp_readonly */
+      lrecord_type_symbol_value_forward, /* lrecord_type_index */
+      1, /* mark bit */
+      1, /* c_readonly bit */
+      1, /* lisp_readonly bit */
     },
     0, /* next */
     0, /* uid  */
@@ -3153,6 +3153,12 @@ static struct symbol_value_magic guts_of_unbound_marker =
 void
 init_symbols_once_early (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (symbol);
+  INIT_LRECORD_IMPLEMENTATION (symbol_value_forward);
+  INIT_LRECORD_IMPLEMENTATION (symbol_value_buffer_local);
+  INIT_LRECORD_IMPLEMENTATION (symbol_value_lisp_magic);
+  INIT_LRECORD_IMPLEMENTATION (symbol_value_varalias);
+
   reinit_symbols_once_early ();
 
   /* Bootstrapping problem: Qnil isn't set when make_string_nocopy is
@@ -3174,21 +3180,10 @@ init_symbols_once_early (void)
   {
     /* Required to get around a GCC syntax error on certain
        architectures */
-    struct symbol_value_magic *tem = &guts_of_unbound_marker;
+    const struct symbol_value_magic *tem = &guts_of_unbound_marker;
 
     XSETSYMBOL_VALUE_MAGIC (Qunbound, tem);
   }
-  if ((const void *) XPNTR (Qunbound) !=
-      (const void *)&guts_of_unbound_marker)
-    {
-      /* This might happen on DATA_SEG_BITS machines. */
-      /* abort (); */
-      /* Can't represent a pointer to constant C data using a Lisp_Object.
-        So heap-allocate it. */
-      struct symbol_value_magic *urk = xnew (struct symbol_value_magic);
-      memcpy (urk, &guts_of_unbound_marker, sizeof (*urk));
-      XSETSYMBOL_VALUE_MAGIC (Qunbound, urk);
-    }
 
   XSYMBOL (Qnil)->function = Qunbound;
 
@@ -3428,19 +3423,7 @@ syms_of_symbols (void)
 void
 defvar_magic (const char *symbol_name, const struct symbol_value_forward *magic)
 {
-  Lisp_Object sym, kludge;
-
-  /* Check that `magic' points somewhere we can represent as a Lisp pointer */
-  XSETOBJ (kludge, Lisp_Type_Record, magic);
-  if ((void *)magic != (void*) XPNTR (kludge))
-    {
-      /* This might happen on DATA_SEG_BITS machines. */
-      /* abort (); */
-      /* Copy it to somewhere which is representable. */
-      struct symbol_value_forward *p = xnew (struct symbol_value_forward);
-      memcpy (p, magic, sizeof *magic);
-      magic = p;
-    }
+  Lisp_Object sym;
 
 #if defined(HAVE_SHLIB)
   /*
index 41e2324..ac3bec1 100644 (file)
@@ -75,10 +75,9 @@ struct symbol_value_magic
   void *value;
   enum symbol_value_type type;
 };
-#define SYMBOL_VALUE_MAGIC_P(x)                                \
-  (LRECORDP (x)                                                \
-   && (XRECORD_LHEADER_IMPLEMENTATION (x)->printer     \
-       == print_symbol_value_magic))
+#define SYMBOL_VALUE_MAGIC_P(x)                                                \
+(LRECORDP (x) &&                                                       \
+ XRECORD_LHEADER (x)->type <= lrecord_type_max_symbol_value_magic)
 #define XSYMBOL_VALUE_MAGIC_TYPE(v) \
        (((struct symbol_value_magic *) XPNTR (v))->type)
 #define XSETSYMBOL_VALUE_MAGIC(s, p) XSETOBJ (s, Lisp_Type_Record, p)
@@ -296,15 +295,15 @@ void deferror (Lisp_Object *symbol, const char *name,
 void defvar_magic (const char *symbol_name, const struct symbol_value_forward *magic);
 
 #define DEFVAR_SYMVAL_FWD(lname, c_location, forward_type, magicfun) do {      \
-  static CONST_IF_NOT_DEBUG struct symbol_value_forward I_hate_C =             \
+  static const struct symbol_value_forward I_hate_C =                          \
   { /* struct symbol_value_forward */                                          \
     { /* struct symbol_value_magic */                                          \
       { /* struct lcrecord_header */                                           \
        { /* struct lrecord_header */                                           \
-         1, /* type - index into lrecord_implementations_table */              \
-         0, /* mark bit */                                                     \
-         0, /* c_readonly bit */                                               \
-         0  /* lisp_readonly bit */                                            \
+         lrecord_type_symbol_value_forward, /* lrecord_type_index */           \
+         1, /* mark bit */                                                     \
+         1, /* c_readonly bit */                                               \
+         1  /* lisp_readonly bit */                                            \
        },                                                                      \
        0, /* next */                                                           \
        0, /* uid  */                                                           \
index b875b48..fbf71ac 100644 (file)
@@ -699,7 +699,7 @@ sys_subshell (void)
 
 #ifdef WINDOWSNT
       /* Waits for process completion */
-      pid = _spawnlp (_P_WAIT, sh, sh, NULL);
+      pid = (HANDLE) _spawnlp (_P_WAIT, sh, sh, NULL);
       if (pid == NULL)
         write (1, "Can't execute subshell", 22);
 
@@ -2653,6 +2653,8 @@ sys_open (const char *path, int oflag, ...)
   mode = va_arg (ap, int);
   va_end (ap);
 
+  PATHNAME_CONVERT_OUT (path);
+
 #ifdef WINDOWSNT
   /* Make all handles non-inheritable */
   oflag |= _O_NOINHERIT;
index a09610e..c5a0778 100644 (file)
@@ -573,9 +573,10 @@ static void
 mswindows_free_frame_toolbars (struct frame *f)
 {
   HWND twnd=NULL;
-#define DELETE_TOOLBAR(pos) \
-  mswindows_clear_toolbar(f, 0, pos); \
-  if ((twnd=GetDlgItem(FRAME_MSWINDOWS_HANDLE(f), TOOLBAR_ID_BIAS + pos))) \
+#define DELETE_TOOLBAR(pos)                            \
+  mswindows_clear_toolbar(f, pos, 0);                  \
+  if ((twnd=GetDlgItem(FRAME_MSWINDOWS_HANDLE(f),      \
+                      TOOLBAR_ID_BIAS + pos)))         \
       DestroyWindow(twnd)
 
   DELETE_TOOLBAR(TOP_TOOLBAR);
index cff25ac..c7221c7 100644 (file)
@@ -722,10 +722,10 @@ set_frame_toolbar (struct frame *f, enum toolbar_pos pos)
 static void
 compute_frame_toolbars_data (struct frame *f)
 {
-  set_frame_toolbar (f, TOP_TOOLBAR);                   
-  set_frame_toolbar (f, BOTTOM_TOOLBAR);                        
-  set_frame_toolbar (f, LEFT_TOOLBAR);                  
-  set_frame_toolbar (f, RIGHT_TOOLBAR);                         
+  set_frame_toolbar (f, TOP_TOOLBAR);
+  set_frame_toolbar (f, BOTTOM_TOOLBAR);
+  set_frame_toolbar (f, LEFT_TOOLBAR);
+  set_frame_toolbar (f, RIGHT_TOOLBAR);
 }
 
 void
@@ -737,7 +737,7 @@ update_frame_toolbars (struct frame *f)
       && (f->toolbar_changed || f->frame_changed || f->clear))
     {
       int pos;
-      
+
       /* We're not officially "in redisplay", so we still have a
         chance to re-layout toolbars and windows. This is done here,
         because toolbar is the only thing which currently might
@@ -1272,6 +1272,8 @@ toolbar_buttons_captioned_p_changed (Lisp_Object specifier, struct window *w,
 void
 syms_of_toolbar (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (toolbar_button);
+
   defsymbol (&Qtoolbar_buttonp, "toolbar-button-p");
   defsymbol (&Q2D, "2D");
   defsymbol (&Q3D, "3D");
@@ -1633,7 +1635,7 @@ See `default-toolbar-height' for more information.
   fb = Fcons (Fcons (list1 (Qx), make_int (DEFAULT_TOOLBAR_HEIGHT)), fb);
 #endif
 #ifdef HAVE_MS_WINDOWS
-  fb = Fcons (Fcons (list1 (Qmswindows), 
+  fb = Fcons (Fcons (list1 (Qmswindows),
                     make_int (MSWINDOWS_DEFAULT_TOOLBAR_HEIGHT)), fb);
 #endif
   if (!NILP (fb))
@@ -1647,7 +1649,7 @@ See `default-toolbar-height' for more information.
   fb = Fcons (Fcons (list1 (Qx), make_int (DEFAULT_TOOLBAR_WIDTH)), fb);
 #endif
 #ifdef HAVE_MS_WINDOWS
-  fb = Fcons (Fcons (list1 (Qmswindows), 
+  fb = Fcons (Fcons (list1 (Qmswindows),
                     make_int (MSWINDOWS_DEFAULT_TOOLBAR_WIDTH)), fb);
 #endif
   if (!NILP (fb))
index c3359e0..4a87c3e 100644 (file)
@@ -1301,6 +1301,9 @@ Returns t if successful, nil otherwise.
 void
 syms_of_tooltalk (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (tooltalk_message);
+  INIT_LRECORD_IMPLEMENTATION (tooltalk_pattern);
+
   defsymbol (&Qtooltalk_messagep, "tooltalk-message-p");
   DEFSUBR (Ftooltalk_message_p);
   defsymbol (&Qtooltalk_patternp, "tooltalk-pattern-p");
index feefef8..53abecf 100644 (file)
@@ -63,9 +63,10 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 
 /* From IMAGEHLP.H which is not installed by default by MSVC < 5 */
 /* The IMAGEHLP.DLL library is not distributed by default with Windows95 */
-PIMAGE_NT_HEADERS
-(__stdcall * pfnCheckSumMappedFile) (LPVOID BaseAddress, DWORD FileLength,
-                                    LPDWORD HeaderSum, LPDWORD CheckSum);
+typedef PIMAGE_NT_HEADERS
+(__stdcall * pfnCheckSumMappedFile_t) (LPVOID BaseAddress, DWORD FileLength,
+                                      LPDWORD HeaderSum, LPDWORD CheckSum);
+
 
 #if 0
 extern BOOL ctrl_c_handler (unsigned long type);
@@ -190,7 +191,7 @@ unexec (char *new_name, char *old_name, void *start_data, void *start_bss,
   char out_filename[MAX_PATH], in_filename[MAX_PATH];
   unsigned long size;
   char *ptr;
-  HANDLE hImagehelp;
+  HINSTANCE hImagehelp;
   
   /* Make sure that the input and output filenames have the
      ".exe" extension...patch them up if they don't.  */
@@ -245,21 +246,29 @@ unexec (char *new_name, char *old_name, void *start_data, void *start_bss,
   {
     PIMAGE_DOS_HEADER dos_header;
     PIMAGE_NT_HEADERS nt_header;
+
     DWORD  headersum;
     DWORD  checksum;
+    pfnCheckSumMappedFile_t pfnCheckSumMappedFile;
 
     dos_header = (PIMAGE_DOS_HEADER) out_file.file_base;
     nt_header = (PIMAGE_NT_HEADERS) ((char *) dos_header + dos_header->e_lfanew);
 
     nt_header->OptionalHeader.CheckSum = 0;
-//    nt_header->FileHeader.TimeDateStamp = time (NULL);
-//    dos_header->e_cp = size / 512;
-//    nt_header->OptionalHeader.SizeOfImage = size;
+#if 0
+    nt_header->FileHeader.TimeDateStamp = time (NULL);
+    dos_header->e_cp = size / 512;
+    nt_header->OptionalHeader.SizeOfImage = size;
+#endif
 
-    pfnCheckSumMappedFile = (void *) GetProcAddress (hImagehelp, "CheckSumMappedFile");
+    pfnCheckSumMappedFile =
+      (pfnCheckSumMappedFile_t) GetProcAddress (hImagehelp,
+                                               "CheckSumMappedFile");
     if (pfnCheckSumMappedFile)
       {
-//     nt_header->FileHeader.TimeDateStamp = time (NULL);
+#if 0
+       nt_header->FileHeader.TimeDateStamp = time (NULL);
+#endif
        pfnCheckSumMappedFile (out_file.file_base,
                               out_file.size,
                               &headersum,
@@ -295,14 +304,14 @@ open_output_file (file_data *p_file, const char *filename, unsigned long size)
     return FALSE;
   
   file_base = MapViewOfFile (file_mapping, FILE_MAP_WRITE, 0, 0, size);
-  if (file_base == 0) 
+  if (file_base == NULL) 
     return FALSE;
   
   p_file->name = filename;
   p_file->size = size;
   p_file->file = file;
   p_file->file_mapping = file_mapping;
-  p_file->file_base = file_base;
+  p_file->file_base = (char*) file_base;
 
   return TRUE;
 }
@@ -486,7 +495,7 @@ copy_executable_and_dump_data_section (file_data *p_infile,
   DUMP_MSG (("Dumping data section...\n"));
   DUMP_MSG (("\t0x%08x Address in process.\n", data_va));
   DUMP_MSG (("\t0x%08x Offset in output file.\n", 
-            data_file - p_outfile->file_base));
+            (char*)data_file - p_outfile->file_base));
   DUMP_MSG (("\t0x%08x Size in bytes.\n", size));
   memcpy (data_file, data_va, size);
 
index 404534e..b6c7dda 100644 (file)
@@ -124,7 +124,7 @@ memory_warnings (void *start, void (*warnfun) (const char *))
   extern void (* __after_morecore_hook) (void);        /* From gmalloc.c */
 
   if (start)
-    data_space_start = start;
+    data_space_start = (char*) start;
   else
     data_space_start = start_of_data ();
 
index 7a6eb7a..7f84aa0 100644 (file)
@@ -5773,6 +5773,9 @@ debug_print_windows (struct frame *f)
 void
 syms_of_window (void)
 {
+  INIT_LRECORD_IMPLEMENTATION (window);
+  INIT_LRECORD_IMPLEMENTATION (window_configuration);
+
   defsymbol (&Qwindowp, "windowp");
   defsymbol (&Qwindow_live_p, "window-live-p");
   defsymbol (&Qwindow_configurationp, "window-configuration-p");
index e3f98c9..9344725 100644 (file)
@@ -1,3 +1,11 @@
+2000-02-21  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.30 is released.
+
+2000-02-17  Martin Buchholz  <martin@xemacs.org>
+
+       * automated/mule-tests.el: Added some fileio tests.
+
 2000-02-16  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.29 is released.
index 0e44714..b73163c 100644 (file)
@@ -83,7 +83,9 @@ the Assert macro checks for correctness."
 ;;-----------------------------------------------------------------
 
 (when (featurep 'mule)
+  ;;---------------------------------------------------------------
   ;; Test fillarray
+  ;;---------------------------------------------------------------
   (macrolet
       ((fillarray-test
        (charset1 charset2)
@@ -104,7 +106,9 @@ the Assert macro checks for correctness."
     (aset string 0 (make-char 'latin-iso8859-2 42))
     (Assert (eq (aref string 1) (make-char 'latin-iso8859-2 69))))
 
+  ;;---------------------------------------------------------------
   ;; Test coding system functions
+  ;;---------------------------------------------------------------
 
   ;; Create alias for coding system without subsidiaries
   (Assert (coding-system-p (find-coding-system 'binary)))
@@ -225,7 +229,9 @@ the Assert macro checks for correctness."
   (Assert (not (coding-system-alias-p 'nested-mule-tests-alias)))
   (Assert (not (coding-system-alias-p 'nested-mule-tests-alias-dos)))
 
+  ;;---------------------------------------------------------------
   ;; 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)
@@ -282,4 +288,28 @@ the Assert macro checks for correctness."
     (loop for k in '(0 1 58 59) do
       (Assert (equal (substring string (* 94 k) (* 94 (1+ k))) ascii-string))))
 
+  ;;---------------------------------------------------------------
+  ;; Test file-system character conversion (and, en passant, file ops)
+  ;;---------------------------------------------------------------
+  (let* ((scaron (make-char 'latin-iso8859-2 57))
+        (latin2-string (make-string 4 scaron))
+        (prefix (concat (file-name-as-directory (temp-directory)) latin2-string))
+        (name1 (make-temp-name prefix))
+        (name2 (make-temp-name prefix))
+        (file-name-coding-system 'iso-8859-2))
+    ;; This is how you suppress output from `message', called by `write-region'
+    (flet ((append-message (&rest args) ()))
+      (Assert (not (file-exists-p name1)))
+      (write-region (point-min) (point-max) name1)
+      (Assert (file-exists-p name1))
+      (when (fboundp 'make-symbolic-link)
+       (make-symbolic-link name1 name2)
+       (Assert (file-exists-p name2))
+       (Assert (equal (file-truename name2) name1))
+       (Assert (equal (file-truename name1) name1)))
+
+      (ignore-file-errors (delete-file name1) (delete-file name2))))
+
+  ;; Add many more file operation tests here...
+
   )
index 9bdf523..e3759ea 100644 (file)
@@ -2,8 +2,8 @@
 emacs_is_beta=t
 emacs_major_version=21
 emacs_minor_version=2
-emacs_beta_version=29
-xemacs_codename="Hestia"
+emacs_beta_version=30
+xemacs_codename="Hygeia"
 infodock_major_version=4
 infodock_minor_version=0
 infodock_build_version=8