From 3890a2e3064a7f562107c58e59d928284ec04741 Mon Sep 17 00:00:00 2001 From: tomo Date: Tue, 9 May 2000 02:19:49 +0000 Subject: [PATCH] XEmacs 21.2.30 "Hygeia". --- CHANGES-beta | 15 + ChangeLog | 38 ++ INSTALL | 6 +- PROBLEMS | 22 +- configure | 1477 ++++++++++++++++++++--------------------- configure.in | 109 ++- etc/TUTORIAL.ja | 1307 ++++++++++++++++++++++-------------- info/cl.info | 62 +- info/internals.info | 284 ++++---- info/internals.info-1 | 17 +- info/internals.info-2 | 248 +++---- info/lispref.info | 752 ++++++++++----------- info/xemacs.info | 512 +++++++------- lib-src/ChangeLog | 4 + lib-src/movemail.c | 4 + lisp/ChangeLog | 85 +++ lisp/about.el | 2 +- lisp/buffer.el | 3 +- lisp/byte-optimize.el | 129 ++-- lisp/etags.el | 4 +- lisp/files.el | 2 +- lisp/font-lock.el | 31 +- lisp/gutter-items.el | 2 +- lisp/info.el | 2 +- lisp/ldap.el | 151 ++++- lisp/modeline.el | 18 +- lisp/msw-faces.el | 21 +- lisp/mule/mule-cmds.el | 2 - lisp/package-get.el | 2 +- lwlib/ChangeLog | 30 + lwlib/lwlib-Xaw.c | 6 +- lwlib/lwlib-Xm.c | 5 +- lwlib/lwlib.c | 30 +- lwlib/xlwgauge.c | 10 +- lwlib/xlwmenu.c | 8 - lwlib/xlwmenu.h | 1 + man/ChangeLog | 20 + man/cl.texi | 8 +- man/internals/internals.texi | 691 ++++++++----------- man/lispref/backups.texi | 2 +- man/xemacs/files.texi | 4 +- nt/ChangeLog | 15 + nt/README | 177 +++-- nt/config.h | 1 - src/.dbxrc | 239 ++++--- src/.gdbinit | 256 +++---- src/ChangeLog | 335 ++++++++-- src/Makefile.in.in | 7 - src/alloc.c | 305 ++++----- src/buffer.c | 22 +- src/bytecode.c | 2 + src/chartab.c | 4 + src/config.h.in | 28 +- src/console-tty.c | 4 +- src/console.c | 16 +- src/data.c | 2 + src/database.c | 2 + src/device-msw.c | 54 +- src/device.c | 6 +- src/editfns.c | 8 +- src/eldap.c | 259 +++++++- src/eldap.h | 23 +- src/elhash.c | 2 + src/emacs.c | 72 +- src/eval.c | 4 +- src/event-msw.c | 30 +- src/event-stream.c | 3 + src/events.c | 2 + src/extents.c | 10 +- src/faces.c | 2 + src/file-coding.c | 2 + src/fileio.c | 70 +- src/floatfns.c | 1 + src/fns.c | 2 + src/frame.c | 2 + src/glyphs-msw.c | 59 +- src/glyphs-msw.h | 2 +- src/glyphs-widget.c | 6 +- src/glyphs-x.c | 82 ++- src/glyphs.c | 73 +- src/gui-msw.c | 7 +- src/gui-x.c | 2 + src/gui.c | 2 + src/gutter.c | 16 + src/gutter.h | 1 + src/insdel.c | 95 ++- src/keymap.c | 4 +- src/lisp.h | 32 +- src/lread.c | 2 +- src/lrecord.h | 142 ++-- src/lstream.c | 2 + src/m/7300.h | 4 - src/m/acorn.h | 21 - src/m/alliant-2800.h | 14 - src/m/alliant.h | 14 - src/m/altos.h | 2 - src/m/amdahl.h | 13 - src/m/arm.h | 20 - src/m/att3b.h | 13 - src/m/aviion.h | 20 - src/m/celerity.h | 4 - src/m/clipper.h | 13 - src/m/cnvrgnt.h | 13 - src/m/convex.h | 8 - src/m/cydra5.h | 18 - src/m/delta.h | 13 - src/m/delta88k.h | 13 - src/m/dpx2.h | 13 - src/m/dual.h | 4 - src/m/elxsi.h | 14 - src/m/ews4800r.h | 18 - src/m/gould-np1.h | 6 - src/m/gould.h | 13 - src/m/hp300bsd.h | 4 - src/m/hp800.h | 14 - src/m/hp9000s300.h | 13 - src/m/i860.h | 13 - src/m/ibmps2-aix.h | 10 - src/m/ibmrs6000.h | 21 - src/m/ibmrt-aix.h | 6 - src/m/ibmrt.h | 18 - src/m/intel386.h | 12 - src/m/iris4d.h | 21 - src/m/iris5d.h | 20 - src/m/iris6d.h | 21 - src/m/irist.h | 13 - src/m/isi-ov.h | 4 - src/m/luna88k.h | 9 - src/m/m68k.h | 19 - src/m/masscomp.h | 13 - src/m/mega68.h | 4 - src/m/mg1.h | 13 - src/m/mips-nec.h | 22 - src/m/mips-siemens.h | 23 +- src/m/mips.h | 19 - src/m/next.h | 9 - src/m/nh3000.h | 13 - src/m/nh4000.h | 17 - src/m/ns32000.h | 13 - src/m/nu.h | 4 - src/m/orion.h | 9 - src/m/orion105.h | 3 - src/m/pfa50.h | 15 - src/m/plexus.h | 13 - src/m/pmax.h | 1 - src/m/powerpc.h | 24 - src/m/pyramid.h | 4 - src/m/sequent-ptx.h | 13 - src/m/sequent.h | 13 - src/m/sgi-challenge.h | 21 - src/m/sparc.h | 4 - src/m/sps7.h | 4 - src/m/stride.h | 13 - src/m/sun1.h | 4 - src/m/sun2.h | 4 - src/m/tad68k.h | 16 - src/m/tahoe.h | 4 - src/m/targon31.h | 13 - src/m/tek4300.h | 5 - src/m/tekxd88.h | 15 - src/m/template.h | 13 - src/m/tower32.h | 13 - src/m/tower32v3.h | 13 - src/m/ustation.h | 13 - src/m/wicat.h | 9 - src/m/windowsnt.h | 13 - src/m/xps100.h | 13 - src/malloc.c | 2 - src/marker.c | 2 + src/mem-limits.h | 2 - src/menubar-msw.c | 14 +- src/mule-charset.c | 2 + src/nt.c | 27 +- src/ntheap.c | 8 +- src/ntheap.h | 12 +- src/ntplay.c | 4 +- src/ntproc.c | 27 +- src/objects-msw.c | 1356 ++++++++++++++++++------------------- src/objects-msw.h | 4 +- src/objects.c | 3 + src/opaque.c | 3 + src/process-nt.c | 2 +- src/process.c | 2 + src/ralloc.c | 2 +- src/rangetab.c | 2 + src/realpath.c | 40 +- src/redisplay.c | 18 +- src/redisplay.h | 1 + src/s/cygwin32.h | 17 - src/s/mingw32.h | 16 - src/s/windowsnt.h | 8 + src/select-msw.c | 4 +- src/specifier.c | 2 + src/symbols.c | 45 +- src/symeval.h | 17 +- src/sysdep.c | 4 +- src/toolbar-msw.c | 7 +- src/toolbar.c | 16 +- src/tooltalk.c | 3 + src/unexnt.c | 33 +- src/vm-limit.c | 2 +- src/window.c | 3 + tests/ChangeLog | 8 + tests/automated/mule-tests.el | 30 + version.sh | 4 +- 205 files changed, 5809 insertions(+), 5487 deletions(-) diff --git a/CHANGES-beta b/CHANGES-beta index 14854dc..0552780 100644 --- a/CHANGES-beta +++ b/CHANGES-beta @@ -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 diff --git a/ChangeLog b/ChangeLog index b79bbea..4a774de 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,41 @@ +2000-02-21 Martin Buchholz + + * XEmacs 21.2.30 is released. + +2000-02-20 Martin Buchholz + + * configure.in: Enforce use of autoconf version >= 2.13. + + * configure.in: Fix OS release test on Solaris. + +2000-02-19 Marcus Thiessel + + * PROBLEMS: Update email address. Describe more HP Motif errors. + +2000-02-19 Jan Vroonhof + + * 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 + + * (configure.in): Autodetect broken gcc versions. Patch from WM + Perry with tiny tweaks by Yoshiki Hayashi and yours truly. + +2000-02-17 Martin Buchholz + + * 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 + + * configure.in: Test for arm simply using arm* instead of arm-* + +2000-01-05 Yoshiki Hayashi + + * etc/TUTORIAL.ja: Synch with English version. + 2000-02-16 Martin Buchholz * XEmacs 21.2.29 is released. diff --git a/INSTALL b/INSTALL index ce6d91f..d00a221 100644 --- 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. diff --git a/PROBLEMS b/PROBLEMS index db106ae..b5414a5 100644 --- a/PROBLEMS +++ b/PROBLEMS @@ -394,21 +394,22 @@ Richard Cognot writes: *** On HP-UX, problems with make -Marcus Thiessel +Marcus Thiessel 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 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 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 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 + + 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 says: diff --git a/configure b/configure index e526103..4c42ecd 100755 --- 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 <&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 <&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 <&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 < 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 < 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 < 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 <&6 -echo "configure:2331: checking for GNU libc" >&5 +echo "configure:2330: checking for GNU libc" >&5 cat > conftest.$ac_ext < 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 <&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 <&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 <&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 <&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 <&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 <&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 -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 <&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 -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 <&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 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 < #include @@ -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 < #include @@ -3484,7 +3459,7 @@ cat > conftest.$ac_ext < 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 @@ -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 @@ -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 < #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 < #include @@ -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 < #include @@ -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 < @@ -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 < #include @@ -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 < #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 < #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 @@ -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 < #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 < #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 < #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 < @@ -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 < #include @@ -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 < #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 < #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 <&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 < #include @@ -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 < #include @@ -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 <&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 < 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 < 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 < 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 < 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 < 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 <&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 <&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 < 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 <&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 <&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 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 <&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 <&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 <&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 <&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 <&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 <&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 <&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 <&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 <&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 <&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 <&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 <&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 <&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 <&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 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 <&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 <&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 <&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 <&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 < 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 <&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 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 <&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 <&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 <&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 < 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 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 <&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 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 <&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 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 <&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 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 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 <&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 <&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 <&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 <&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 <&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 < @@ -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 <&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 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 <&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 <&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 <&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 <&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 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 <&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 <&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 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 <&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 < 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 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 <&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 <&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 <&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 <&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 <&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 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 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 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 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 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 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 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 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 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 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 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 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 <&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 < #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 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 <&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 <&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 <&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 <&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 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 <&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 <&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 <&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 <&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 <&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 <&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 <&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 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 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 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 <&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 <&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 <&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 <&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 <&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 <&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 <&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 < 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 < 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 < #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 <&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 @@ -10070,19 +10047,19 @@ fi 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 <&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 @@ -10132,17 +10109,17 @@ fi # 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 < 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 <&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 <&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 <&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 <&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 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 < @@ -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 @@ -10530,10 +10507,10 @@ fi 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 < 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 @@ -10571,10 +10548,10 @@ fi 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 <&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 @@ -10625,10 +10602,10 @@ fi 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 <&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 @@ -10710,10 +10687,10 @@ fi 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 < #include @@ -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 < 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 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 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* @@ -10902,10 +10879,10 @@ fi 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 <&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 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 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 < @@ -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 < @@ -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 @@ -11075,10 +11052,10 @@ fi 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 <&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 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 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* @@ -11187,15 +11164,15 @@ fi 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 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 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* @@ -11263,15 +11240,15 @@ fi 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 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* @@ -11301,22 +11278,22 @@ fi 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 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* @@ -11364,12 +11341,12 @@ fi 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 <&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 @@ -11411,12 +11388,12 @@ fi 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 <&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 @@ -11465,15 +11442,15 @@ fi 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 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* @@ -11527,15 +11504,15 @@ fi 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 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 <&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 @@ -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. @@ -11668,10 +11645,10 @@ fi 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 <&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 <&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 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* @@ -11840,15 +11817,15 @@ fi 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 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* @@ -11878,15 +11855,15 @@ fi 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 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* @@ -11921,12 +11898,12 @@ fi 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 <&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 @@ -11968,12 +11945,12 @@ fi 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 <&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 <&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 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* @@ -12097,12 +12074,12 @@ fi } 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 <&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 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* @@ -12206,12 +12183,12 @@ fi 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 <&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 @@ -12250,10 +12227,10 @@ fi 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 <&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 <&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 < @@ -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 < #if DB_VERSION_MAJOR > 1 @@ -12414,10 +12391,10 @@ fi 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 <&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 <&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 @@ -12539,12 +12516,12 @@ fi 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 <&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 @@ -12610,19 +12587,19 @@ fi 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 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 <&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 <&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 <&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 <&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 <&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 <&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 <&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 &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 <&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 <&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 diff --git a/configure.in b/configure.in index d3cb65d..df3b77b 100644 --- a/configure.in +++ b/configure.in @@ -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 ---------------------- diff --git a/etc/TUTORIAL.ja b/etc/TUTORIAL.ja index e7cfc57..c4da971 100644 --- a/etc/TUTORIAL.ja +++ b/etc/TUTORIAL.ja @@ -1,741 +1,1052 @@ - ============================== - $BF|K\8l(B GNUEMACS(Mule) $BF~LgJT(B - ============================== +Copyright (c) 1985, 1996 Free Software Foundation, Inc. +$B;HMQ>r7o$O%U%!%$%k:G8e$r;2>H$N$3$H(B + $B$"$J$?$,8=:_8+$F$$$k$N$O(B XEmacs $BF~Lg%,%$%I$G$9!#(B -$BCm0U!'(B $B$3$NF~LgJT$O!"!V=,$&$h$j47$l$m!W$r%b%C%H!<$K:n@.$5$l$F$$$^(B - $B$9!#(B">>" $B$+$i;O$^$k9T$O!"$=$N;~2?$r$9$Y$-$+$r;X<($7$F$$$^$9!#(B +XEmacs $B$N%3%^%s%I$rF~NO$9$k$K$O!"0lHL$K%3%s%H%m!<%k%-!$N$b$N$G$"$C$?$j$7$^$9(B +$B!JNc$($P!"(BSun $B$N%-!<%\!<%I$G$O!"%9%Z!<%9%P!<$N:8$N%@%$%"%b%s%I%-!<$,(B +META $B$G$9!K!#(BMETA $B%-!<$,L5$$>l9g$O!"(BESC $B$rBe$o$j$K;H$&$3$H$,$G$-$^$9!#(B +$B$=$3$G!"(BMETA $B$H$+(B CONTROL $B$H$+$r=q$/Be$o$j$K!" $B%3%s%H%m!<%k%-!<$r2!$7$?$^$^!"(B<$BJ8;z(B>$B%-!<$r2!$7$^$9!#Nc$($P!"(B + C-f $B$O%3%s%H%m!<%k%-!<$r2!$7$J$,$i(B f $B$N%-!<$r2!$9$3$H$G$9!#(B - Mule $B$N%3%^%s%I$rF~NO$9$k$H$-$K$O!"0lHLE*$K%3%s%H%m!<%k!&%-! $B%a%?%-!<$r2!$7$?$^$^!"(B<$BJ8;z(B>$B%-!<$r2!$7$^$9!#$b$7%a%?%-!<$,$J(B + $B$$>l9g$O!"%(%9%1!<%W%-!<$r2!$7$F$+$iN%$7!"$=$l$+$i(B<$BJ8;z(B>$B%-!<(B + $B$r2!$7$^$9!#0J9_%(%9%1!<%W%-!<$N$3$H$r(B $B$H=q$-$^$9!#(B -C-<$BJ8;z(B> $B%3%s%H%m!<%k!&%-!<$r2!$7$?$^$^!"(B<$BJ8;z(B>$B%-!<$r2!$7$^$9!#Nc$($P!"(B - C-f $B$O!"%3%s%H%m!<%k!&%-!<$r2!$7$J$,$i(B f $B$N%-!<$r2!$9$3$H$r(B - $B0UL#$7$^$9!#(B -<> - >> $B$=$l$G$O!"(BC-v$B!J(BView Next Screen; $B $B%(%9%1!<%W!&%-!<$r2!$7$F$+$iN%$7!"$=$l$+$i(B<$BJ8;z(B>$B%-!<$r2!$7$^(B - $B$9!#(B +">>" $B$G;O$^$k9T$O!"$=$N;~2?$r$9$Y$-$+$r;X<($7$F$$$^$9!#Nc$($P!"(B +<> +>> $B$G$O(B C-v $B!J$B$O!"BgJ8;z$G$b>.J8;z$G$b%3%^%s%I$H$7$F$OF1$80UL#$K$J$j(B - $B$^$9!#%a%?%-!<$,;H$($k$J$i$P(B ESC <$BJ8;z(B> $B$NBe$o$j$K(B M-<$BJ8;z(B> - ($B%a%?%-!<$r2!$7$?$^$^(B<$BJ8;z(B>$B%-!<$r2!$9(B) $B$,;H$($^$9!#(B +$BA0$N2hLL$Hl9g!"%5%9%Z%s%I$9$k!J0l;~E*$K;_$a$k(B)$B$3$H$,(B - $B=PMh$^$9!#(BEmacs$B$r%5%9%Z%s%I$9$k$K$O!"(BC-z$B$r%?%$%W$7$^$9!#(B +$B$^$:$O!"%U%!%$%k$NCf$r0\F0$7$F9T$/J}K!$rCN$kI,MW$,$"$j$^$9!#(BC-v $B$K$h$C(B +$B$F@h$K?J$`$3$H$O$b$&H=$j$^$7$?!#85$KLa$k$K$O!"(BM-v $B!J%a%?%-!<$r2!$7$J$,(B +$B$i(B v$B!"$b$7$/$O(B $B$r2!$7$FN%$7$F(B v$B!K$G$9!#(B +>> M-v $B$H(B C-v $B$r;H$C$F!"A08e$K0\F0$9$k$3$H$r2?2s$+;n$7$F2<$5$$!#(B - $B$5$F!"$3$l$+$i$O!"0l2hLLJ,FI$_=*$($?$i!"(BC-v $B$rF~NO$7$F9T$C$F2<$5$$!#(B - $BA0$N2hLL$H> ESC v $B$H(B C-v $B$r;H$C$F!"A08e$K0\F0$9$k$3$H$r2?2s$+;n$7$F$_$J$5$$!#(B - -$BMWLs(B -==== $B%U%!%$%k$r2hLLKh$K8+$F9T$/$K$O!"$9!#$3$N$H$-!"85%+!<%=%k$N$"$C$?9T$,(B - $B2hLL$NCf1{$K$/$k$h$&$K$9$k(B + C-v $B$9!#$3$N$H$-!"%+!<%=%k$N$"$k9T$,2hLL$NCf1{$K(B + $B$/$k$h$&$K$9$k!#!J(BC-1 $B$8$c$J$/$C$F(B C-L $B$G$9$h!*!K(B - >> $B:#%+!<%=%k$,$I$3$K$"$k$+!"$=$N6a$/$K$I$s$J%F%-%9%H$,=q$+$l$F$$$k(B - $B$+$r3P$($J$5$$!#(BC-l $B$r%?%$%W$7!"%+!<%=%k$,$I$3$K0\F0$7$?$+!"$=$N(B - $B6a$/$N%F%-%9%H$O$I$&$J$C$?$+$rD4$Y$F$_$J$5$$!#(B +>> $B%+!<%=%k$r8+$D$1!"$=$N6a$/$K$I$s$JJ8>O$,=q$+$l$F$$$k$+$r3P$(!"(B + $B$=$l$+$i(B C-l $B$r%?%$%W$7$F2<$5$$!#(B + $B%+!<%=%k$,$I$3$K0\F0$7$?$+!"$=$N6a$/$N%F%-%9%H$O$I$&$J$C$?$+$rD4$Y(B + $B$F$_$^$7$g$&!#(B -$B4pK\E*$J%+!<%=%k$N@)8f(B -====================== - $B2hLLKh$N0\F0$O$G$-$k$h$&$K$J$j$^$7$?!#:#EY$O!"2hLL$NCf$G!"FCDj$N>l=j$K(B -$B0\F0$9$k$?$a$NJ}K!$r21$($^$7$g$&!#$3$l$K$O$$$/$D$+$N$d$jJ}$,$"$j$^$9!#0l$D(B -$B$NJ}K!$O!"A0(B(previous)$B$l!"(BC-p, C-n, C-f,C-b $B$K3d$jEv$F$i$l$F(B -$B$*$j!"8=:_$N>l=j$+$i?7$7$$>l=j$K%+!<%=%k$r0\F0$5$;$^$9!#?^$G=q$1$P!"(B +$B!v4pK\E*$J%+!<%=%k$N@)8f(B +======================== +$B2hLLKh$N0\F0$O$G$-$k$h$&$K$J$j$^$7$?!#:#EY$O!"2hLL$NCf$G!"FCDj$N>l=j$K(B +$B0\F0$9$k$?$a$NJ}K!$r21$($^$7$g$&!#(B + +$B$3$l$K$O$$$/$D$+$N$d$jJ}$,$"$j$^$9!#0lHV4pK\E*$JJ}K!$O(B C-p, C-b, C-f, +C-n $B$r;H$&$3$H$G$9!#$3$l$i$O$=$l$>$l%+!<%=%k$rA0$N9T!"A0$NJ8;z!"> C-n $B$H(B C-p $B$G%+!<%=%k$r>e?^$N??Cf$N9T$KF0$+$7$F2<$5$$!#$=$l$+$i(B C-l + $B$r%?%$%W$7$F?^$NA4BN$,2hLLCf1{$K$/$k$h$&$K$7$F$_$^$7$g$&!#(B - $B$3$l$i$O!"$=$l$>$l!"(BPrevious, Next, Backward, Forward $B$NF,J8;z$K$J$C$F(B -$B$$$k$N$G!"21$($d$9$$$G$7$g$&!#$3$l$i$O!"4pK\E*$J%+!<%=%k0\F0%3%^%s%I$G$"$j!"(B -$B$$$D$G$b;H$&$b$N$G$9!#(B - >> C-n $B$r2?2s$+%?%$%W$7!"!J:#!"$"$J$?$,FI$s$G$$$k!K$3$N9T$^$G%+!<%=(B - $B%k$r0\F0$5$;$J$5$$!#(B +$B$3$l$i$O$N%3%^%s%I$O$=$l$>$l!"(BPrevious, Next, Backward, Forward $B$NF,J8(B +$B;z$K$J$C$F$$$k$N$G!"21$($d$9$$$G$7$g$&!#$3$l$i$O!"4pK\E*$J%+!<%=%k0\F0(B +$B%3%^%s%I$G$"$j!"$$$D$G$b;H$&$b$N$G$9!#:#$3$3$G3P$($F2<$5$$!#(B - >> C-f $B$r;H$C$F9T$NCf$[$I$K0\F0$7!"(BC-p $B$G2?9T$+>e$K0\F0$7$F$_$J$5(B - $B$$!#%+!<%=%k$N0LCV$NJQ2=$KCm0U$7$J$5$$!#(B +>> C-n $B$r2?2s$+%?%$%W$7!"!J:#!"$"$J$?$,FI$s$G$$$k!K$3$N9T$^$G%+!<%=%k(B + $B$r0\F0$5$;$^$7$g$&!#(B - >> $B9T$N@hF,$G(B C-b $B$r%?%$%W$7$F$_$J$5$$!#%+!<%=%k$O$I$3$K0\F0$7$^$9$+(B - $B!)$5$i$K$b$&>/$7(B C-b $B$r%?%$%W$7!":#EY$O(B C-f $B$G9TKv$NJ}$KLa$j$J$5(B - $B$$!#%+!<%=%k$,9TKv$r1[$($k$H$I$&$J$j$^$9$+!)(B +>> C-f $B$r;H$C$F9T$NCf$[$I$K0\F0$7!"(BC-p $B$G2?9T$+>e$K0\F0$5$;$^$7$g$&!#(B + $B%+!<%=%k$N0LCV$NJQ2=$KCm0U$7$F2<$5$$!#(B +$B3F9T$N:G8e$K$O!JL\$K$O8+$($J$$!K(B Newline $BJ8;z$,$"$j$^$9!#$3$l$Oo$K2hLLFb$K$"$k$h$&$K$5$l$^$9!#(B +>> $B9T$N@hF,$G(B C-b $B$r%?%$%W$7$F$_$^$7$g$&!#%+!<%=%k$OA0$N9T$NKvHx$K0\F0(B + $B$9$k$O$:$G$9!#$3$l$O(B C-b $B$,A0$N(B Newline $BJ8;z$r1[$($FLa$C$?$+$i$G$9!#(B - >> C-n $B$r;H$C$F!"%+!<%=%k$r2hLL$N2> $B$5$i$K$b$&>/$7(B C-b $B$r%?%$%W$7$F%+!<%=%k0\F0$N46$8$rGD$s$G2<$5$$!#(B + $B:#EY$O(B C-f $B$G9TKv$^$G?J$s$G2<$5$$!#(B + $B$5$i$K$b$&0lEY(B C-f $B$r%?%$%W$7$FO$,2hLL$NCf$K0\F0$7$FMh$F$^$9!#$3$l$r!V%9%/%m!<%k!W$H8F$S$^$9!#2hLL(B +$B$,%9%/%m!<%k$9$k$3$H$K$h$C$F!"%+!<%=%k$r0\F0$5$;$F$b!"%+!<%=%k$O>o$K2h(B +$BLLFb$K$"$k$h$&$K$5$l$^$9!#(B - >> ESC f $B$d(B ESC b $B$r2?2s$+%?%$%W$7$F$_$J$5$$!#(BC-f $B$d(B C-b $B$HJ;MQ$7$F(B - $B$_$J$5$$!#(B +>> C-n $B$r;H$C$F!"%+!<%=%k$r2hLL$N2l9g!"(BESC <$BJ8;z(B>$B$OJ8=q4X78$N=hM}$K;H$o$l!"0lJ}(BC-<$BJ8;z(B>$B$O$=$l$h$j$b$b$C$H4p(B -$BK\E*$JBP>]!JJ8;z$H$+9T$H$+!K$KBP$9$kA`:n$K;H$o$l$^$9!#(B +$B0lJ8;zC10L$N0\F0$G$O$^$I$m$C$3$7$$$J$i!"C18lC10L$G0\F0$9$k$3$H$b$G$-$^(B +$B$9!#(BM-f ( f) $B$G0lC18l@h$X!"(BM-b ( b) $B$G0lC18lA0$X0\F0$7$^$9!#(B - C-a $B$H(B C-e $B$bCN$C$F$$$FJXMx$J%3%^%s%I$G$9!#(BC-a $B$O%+!<%=%k$r9T$N@hF,$K(B -$B0\F0$5$;!"(BC-e $B$O9T$NKvHx$K0\F0$5$;$^$9!#(B +$BCm0U!'(B $BF|K\8l$K$D$$$F$O!"C18l$N@Z$lL\$rG'<1$9$k$3$H$O$G$-$^$;$s$,!"5?(B + $B;wE*$JJ8@a$rC18l$N@Z$lL\$H$7$F$$$^$9!#(B +>> M-f $B$d(B M-b $B$r2?2s$+;n$7$F$_$^$7$g$&!#(B - >> C-a $B$r#22s!"$=$l$+$i(B C-e $B$r#22sF~NO$7$F$_$J$5$$!#$3$l$i$N%3%^%s%I(B - $B$r#22s0J>e7+JV$7$F$b!"%+!<%=%k$O$=$l0J>e0\F0$7$J$$$3$H$KCm0U!#(B +$BC18l$NCfDx$K$$$k;~$O!"(BM-f $B$O$=$NC18l$N=*$o$j$^$G?J$_$^$9!#$b$76uGrJ8;z(B +$B$K$$$k;~$K$O(B M-f $B$O $B$G$9!#(B +>> M-f $B$H(B M-b $B$r(B C-f $B$H(B C-b $B$r8r$($J$,$i?t2s;n$7!"C18l$NCf$KF~$k;~$H!"(B + $BC18l$HC18l$N4V$K$$$k;~$NF0$-$rD4$Y$F2<$5$$!#(B - $B%F%-%9%HCf$G%+!<%=%k$NB8:_$9$k0LCV$r!V%]%$%s%H!W$H8F$S$^$9!#8@$$$+$($l(B -$B$P!"%+!<%=%k$O!"%F%-%9%H$N$I$3$K%]%$%s%H$,$"$k$+$r2hLL>e$G<($7$F$$$k$N$G$9!#(B +C-f $B$H(B C-b $B$KBP$9$k!"(BM-f $B$H(B M-b $B$NN`;w@-$KCmL\$7$^$7$g$&!#B?$/$N>l9g!"(B +$B%a%?%-!<$OJ8=q$r9=@.$9$k%f%K%C%H!JC18l!"J8!"CJMn!K$KBP$9$kA`:n$K;H$$!"(B +$B%3%s%H%m!<%k%-!<$O$=$l$h$j$b$b$C$H4pK\E*$JBP>]!JJ8;z$H$+9TEy!K$KBP$9$k(B +$BA`:n$K;H$$$^$9!#(B - $B0J2<$KC1=c$J0\F0A`:n$K$D$$$FMWLs$7$^$9!#$3$N$J$+$K$O!"C18l$d9TC10L$G$N(B -$B0\F0%3%^%s%I$b4^$^$l$F$$$^$9!#(B +$B$3$NN`;w@-$O9T$HJ8$N4X78$K$b$"$j$^$9!#(BC-a $B$H(B C-e $B$O$=$l$>$l9TF,$H9TKv(B +$B$K0\F0$7!"(BM-a $B$H(B M-e $B$O$=$l$>$lJ8F,$HJ8Kv$K0\F0$7$^$9!#(B - C-f $B0lJ8;z@h$K?J$`(B - C-b $B0lJ8;z8e$KLa$k(B +>> C-a $B$r#22s!"$=$l$+$i(B C-e $B$r#22s;n$7$^$7$g$&!#(B + M-a $B$r#22s!"$=$l$+$i(B M-e $B$r#22s;n$7$^$7$g$&!#(B - ESC f $B0lC18l@h$K?J$`(B - ESC b $B0lC18l8e$KLa$k(B +C-a $B$d(B C-e $B$O7+JV$7$F$b$=$l0J>e0\F0$7$^$;$s$,!"(BM-a $B$r7+$jJV$9$H$I$s$I(B +$B$sA0$NJ8F,$KLa$C$F$$$-$^$9!#$3$NItJ,$G$ON`;w@-$,GK$l$F$$$^$9$,!"$^$"$3(B +$B$l$,<+A3$JF0:n$G$O$J$$$G$7$g$&$+!#(B - C-n $BOCf$G%+!<%=%k$,$"$k0LCV$r!V%]%$%s%H!W$H8F$S$^$9!#8@$$$+$($l$P!"%+!<(B +$B%=%k$O!"J8>O$N$I$3$K%]%$%s%H$,$"$k$+$r2hLL>e$G<($7$F$$$k$N$G$9!#(B - ESC ] $BCJMn$N=*$o$j$K0\F0(B - ESC [ $BCJMn$N@hF,$K0\F0(B +$B0J2<$KC1=c$J%+!<%=%k0\F0A`:n$K$D$$$FMWLs$7$^$9!#$3$N$J$+$K$O!"C18l$d9T(B +$BC10L$G$N0\F0%3%^%s%I$b4^$^$l$F$$$^$9!#(B - C-a $B9T$N:G=i$K0\F0(B - C-e $B9T$N:G8e$K0\F0(B + C-f $B0lJ8;z $B%U%!%$%k$N:G8e$K0\F0(B + M-f $B0lC18l> $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(B - $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(B - $B$9$k$N$G!"(B C-v $B$d(B ESC v $B$r;H$C$F$3$3$KLa$C$FMh$k$h$&$K$7$J$5$$!#(B + C-n $B$N%3%^%s%I$HF1MM$K!"$3$l$i$N%3%^%s%I$K$O!"7+$jJV$7$N2s?t$r;X(B -$BDj$9$k0z?t(B $B$rM?$($k$3$H$,$G$-$^$9!#$=$N$?$a$K$O!"%3%^%s%I$rF~NO$9$kA0$K!"(B -C-u$B$KB3$$$F7+$jJV$92s?t$rF~NO$7$^$9!#(B + C-a $B9TF,$K0\F0(B + C-e $B9TKv$K0\F0(B - $BNc$($P!"(BC-u 8 C-f $B$H$9$k$H!"#8J8;zJ,@h$K0\F0$7$^$9!#(B +>> $B$3$l$iA4It$r2?EY$+;n$7$FN}=,$7$^$7$g$&!#(B + $B$I$l$bIQHK$K;H$&%3%^%s%I$G$9!#(B - >> C-n $B$"$k$$$O(B C-p $B$KE,Ev$J0z?t$r;XDj$7$F!"0l2s$N0\F0$G$J$k$Y$/$3(B - $B$N9T$N6a$/$KMh$k$h$&$K$7$F$_$J$5$$!#(B +$B$"$HFs$D!"=EMW$J%+!<%=%k0\F0%3%^%s%I$,$"$j$^$9!#%U%!%$%k$N@hF,$K0\F0$9(B +$B$k(B M-< $B$H!"%U%!%$%k$NKvHx$K0\F0$9$k(B M-> $B$G$9!#(B - C-v $B$d(B ESC v $B$K$D$$$F$O>/$70c$$$^$9!#$3$N>l9g!";XDj$5$l$??t$N9T$@$12h(B -$BLL$r0\F0$9$k$3$H$K$J$j$^$9!#(B +$BBgDq$NCe$K$"$j!"$=$l$r%?%$%W$9(B +$B$k$K$O%7%U%H%-!<$r;H$&I,MW$,$"$j$^$9!#$7$?$,$C$F(B M-< $B$r%?%$%W$9$k$K$O!"(B +$B%a%?%-!<$H%7%U%H%-!<$H%3%s%^%-!<$rF1;~$K2!$5$M$P$J$j$^$;$s!#(B - >> C-u 3 C-v $B$HF~NO$7$F$_$J$5$$!#(B +>> M-< $B$r;n$7$F!"$3$NF~Lg%,%$%I$N@hF,$K0\F0$7$^$7$g$&!#(B + $B$=$l$+$i!"(BC-v $B$r2?EY$+;H$C$F$3$3$^$G5"$C$F$-$F$/$@$5$$!#(B - $B85$KLa$k$K$O!"(BC-u 3 ESC v $B$r;H$($P$h$$$N$G$9!#(B +>> M-> $B$r;n$7$F!"$3$NF~Lg%,%$%I$NKvHx$K0\F0$7$^$7$g$&!#(B + $B$=$l$+$i!"(BM-v $B$r2?EY$+;H$C$F$3$3$^$G5"$C$F$-$F$/$@$5$$!#(B -$BCf;_%3%^%s%I(B -============ +$B$b$7CeC#$7(B +$B$F$/$l$P!"$3$l$i$N%3%s%H%m!<%kJ8;z$rBG$DJ}$,!"Lp0u%-!<$rBG$D$h$j$:$C$H(B +$BB.$$$3$H$,J,$k$G$7$g$&!Jo$N0LCV$+$iBg$-$/F0$+$5$J$$$G$h$$$N$G!K!#(B +$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$@(B +$B%+!<%=%k0\F0%3%^%s%I$b4JC1$K3P$($k$3$H$,$G$-$^$9!#(B - C-g $B$H$$$&%3%^%s%I$G!"F~NO$rI,MW$H$9$k$h$&$J%3%^%s%I$rCf;_$9$k$3$H$,(B -$B$G$-$^$9!#Nc$($P!"0z?t$rF~NO$7$F$$$kESCf$d!"#2$D0J>e$N%-!l9g$3(B +$B$N?tCM$G7+$jJV$72s?t$r;X<($9$k$3$H$K$J$j$^$9!#?tCM0z?t$rM?$($k$K$O!"%3(B +$B%^%s%I$rF~NO$9$kA0$K(B C-u $B$KB3$$$F?t;z2?7e$+%?%$%W$7$^$9!#$b$7%a%?%-!<(B +$B$,;H$($k$J$i!"%a%?%-!<$r2!$7$J$,$i?t;z$r%?%$%W$9$k$3$H$b$G$-$^$9!#$G$b(B +$B$d$O$j(B C-u $B$r3P$($k$3$H$r4+$a$^$9!#$=$l$O$I$s$JC> C-u 100 $B$r%?%$%W$7$F0z?t$r#1#0#0$K@_Dj$7!"(BC-g $B$r%?%$%W$7$J$5$$!#(B - $B$=$N$"$H$G(B C-f $B$r%?%$%W$7$F$_$J$5$$!#2?J8;z0\F0$7$^$7$?$+!)$b$7(B - $B4V0c$C$F(B ESC $B$rF~NO$7$F$7$^$C$?;~$b!"(BC-g $B$rF~NO$9$l$PC$;$^(B - $B$9!#(B +$BNc$($P(B C-u 8 C-f $B$H%?%$%W$9$k$H#8J8;zJ,@h$K0\F0$7$^$9!#(B -$B%(%i!<(B -====== +>> $BE,Ev$J?tCM0z?t$r(B C-n $B$"$k$$$O(B C-p $B$KM?$(!"0l2s$N%3%^%s%I$G$J$k$Y$/(B + $B$3$N9T$N6a$/$KMh$k$h$&$K$7$F$_$^$7$g$&!#(B - $B;~$K$O!"(BEmacs$B$G5v$5$l$F$$$J$$A`:n$r$7$F$7$^$&$3$H$,$"$j$^$9!#Nc$($P!"(B -$B%3%^%s%I$NDj5A$5$l$F$$$J$$%3%s%H%m!<%k!&%-!<$rF~NO$7$F$7$^$C$?;~$K$O!"(BEmacs -$B$O%Y%k$rLD$i$7!"$5$i$K!"2hLL$N0lHV2<$K!"2?$,0-$+$C$?$+$rI=<($7$^$9!#(B +$BBgDq$N%3%^%s%I$O?tCM0z?t$r7+$jJV$72s?t$H2rl9g!";XDj$5$l$??t$N9T$@$12hLL$r%9%/(B +$B%m!<%k$5$;$k$3$H$K$J$j$^$9!#Nc$($P(B C-u 4 C-v $B$O2hLL$r#49TJ,>e$K%9%/%m!<(B +$B%k$5$;$^$9!#(B - Emacs$B$N%P!<%8%g%s$K$h$C$F$O!"$3$NF~LgJT$K=q$+$l$F$$$k$3$H$rl9g$,$"$jF@$^$9!#$=$NMM$J>l9g$K$O!"%(%i!<%a%C%;!<%8$,I=<($5$l$^$9$+$i!"(B -$B2?$+%+!<%=%k0\F0%-!<$r2!$7$F!"$=$N> C-u 8 C-v $B$r;n$7$F$_$^$7$g$&!#(B -$B%&%#%s%I%&(B -========== +$B2hLL$,>e$K#89T%9%/%m!<%k$7$?$O$:$G$9!#$^$?2hLL$r2<$K%9%/%m!<%k$5$;$k$K$O(B +M-v $B$K0z?t$rM?$($l$P$h$$$N$G$9!#(B - Emacs$B$O4v$D$b$N%&%#%s%I%&$r;}$D$3$H$H!"$=$N$=$l$>$l$KBP$7$F%F%-%9%H$r(B -$BI=<($9$k$3$H$,$G$-$^$9!#%X%k%W$d!"4v$D$+$N%3%^%s%I$+$i$N=PNO$rI=<($9$k$?$a(B -$B$K8=$l$?M>J,$J%&%#%s%I%&$r>C$9$?$a$K!"> $B%9%/%m!<%k%P!<$NCf$G%^%&%9$N??Cf$N%\%?%s$r2!$7$F$_$^$7$g$&!#%\%?%s(B + $B$r2!$7$?0LCV$G7h$^$kJ8>O$N0LCV$^$G2hLL$,%9%/%m!<%k$7$^$9!#(B - C-x 1 $B$O!"B>$N%&%#%s%I%&$r>C$7$F!"%+!<%=%k$N$"$k%&%#%s%I%&$r!"2hLLA4BN(B -$B$K9-$2$^$9!#(B +>> $B%9%/%m!<%k%P!<$N0lHV>e$+$i#39TL\$[$I$N$H$3$m$K%^%&%9$r0\F0$7$F!":8(B + $B$N%\%?%s$r2?EY$+2!$7$F$_$^$7$g$&!#(B - >> $B%+!<%=%k$r$3$N9T$K;}$C$F$-$F!"(BC-u 0 C-l $B$H%?%$%W$7$^$9!#(B +* X $BC> C-h k C-f $B$H%?%$%W$7$J$5$$!#?7$7$$%&%#%s%I%&$,(B C-f $B%3%^%s%I$N%I%-(B - $B%e%a%s%H$rI=<($9$k$?$a$K8=$l$k$HF1;~$K!"$3$N%&%#%s%I%&$,$I$N$h$&(B - $B$K=L$`$+$r4Q;!$7$J$5$$!#(B +X $BC$l9T$N:G=i$H:G8e$K0\F0$7!"(BC_home $B$H(B +C-end $B$O%U%!%$%k$N:G=i$H:G8e$K0\F0$7$^$9!#%-!<%\!<%I$K(B PgUp $B$H(B PgDn $B%-!<(B +$B$,$"$l$P!"(BM-v $B$H(B C-v $B$N$h$&$K!"0lEY$K0l2hLLKh!">e2<$K0\F0$9$k$?$a$K;H(B +$B$&$3$H$,$G$-$^$9!#(B - >> C-x 1$B$H%?%$%W$7$F!"%I%-%e%a%s%H$N8=$o$l$F$$$?%&%#%s%I%&$r>C$7$J$5(B - $B$$!#(B +$B$3$l$iA4$F$N%3%^%s%I$O>e$G@bL@$5$l$F$$$k$h$&$K?tCM0z?t$ro$K4JC1$G$9!#(B -$BA^F~$H:o=|(B -========== - $B%F%-%9%H$r%?%$%W$7$?$1$l$P!"C1$K$=$l$r%?%$%W$9$k$@$1$G9=$$$^$;$s!#L\$K(B -$B8+$($kJ8;z!J(B'A','7','*','$B$"(B'$B$J$I!K$O(BEmacs$B$K$h$C$F%F%-%9%H$G$"$k$H$_$J$5$l!"(B -$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(B - $B$r%?%$%W$7$^$9!#(B +$B!v(B XEmacs $B$,%O%s%0$7$?;~!JF0$+$J$/$J$C$?;~!K(B +========================================== + +$B$b$7(B XEmacs $B$,%3%^%s%I$KH?1~$7$J$/$J$C$?$i!"(BC-g $B$r%?%$%W$9$k$3$H$G(B +XEmacs $B$r0BA4$K;_$a$k$3$H$,$G$-$^$9!#(BC-g $B$G$H$F$b;~4V$N$+$+$k%3%^%s%I(B +$B$r;_$a$k$3$H$,$G$-$^$9!#(B - $BD>A0$KF~NO$7$?J8;z$r:o=|$9$k$K$O!"(B $B$rF~NO$7$^$9!#(B $B$O!"(B -$B%-!<%\!<%I$G!V(BDelete$B!W$H=q$$$F$"$k%-!<$r2!$7$FF~NO$7$^$9!#!V(BDelete$B!W$N$+$o(B -$B$j$K!V(BRubout$B!W$H=q$$$F$"$k$+$bCN$l$^$;$s!#$h$j0lHLE*$K$O!"(B $B$O!"8=:_(B -$B%+!<%=%k$N$"$k0LCV$ND>A0$NJ8;z$r:o=|$7$^$9!#(B +C-g $B$O$^$?!"?tCM0z?t$re$N%-!> $BJ8;z$r$$$/$D$+%?%$%W$7!"$=$l$+$i$=$l$i$r(B $B$r;H$C$F:o=|$7(B - $B$J$5$$!#(B +>> C-u 100 $B$H%?%$%W$7$F0z?t#1#0#0$r@_Dj$7$F$+$i(B C-g $B$rBG$C$F$_$^$7$g$&!#(B + $B$=$l$+$i(B C-f $B$rBG$C$F2<$5$$!#0lJ8;z$7$+?J$^$J$$$O$:$G$9!#$J$<$J$i!"(B + C-g $B$G?tCM0z?t$,%-%c%s%;%k$5$l$?$+$i$G$9!#(B - >> $B1&%^!<%8%s$r1[$($k$^$G%F%-%9%H$r%?%$%W$7$J$5$$!#%F%-%9%H$,0l9T$N(B - $BI}0J>e$KD9$/$J$k$H!"$=$N9T$O2hLL$+$i$O$_=P$7$F!V7QB3!W$5$l$^$9!#(B - $B1&C<$K$"$k(B'\'$B5-9f$O!"$=$N9T$,7QB3$5$l$F$$$k$3$H$rI=$7$F$$$^$9!#(B - Emacs$B$O!"8=:_JT=8Cf$N0LCV$,8+$($k$h$&$K9T$r%9%/%m!<%k$7$^$9!#2hLL(B - $B$N1&$"$k$$$O:8$NC<$K$"$k(B'\'$B5-9f$O!"$=$NJ}8~$K9T$,$^$@B3$$$F$$$k$3(B - $B$H$rI=$7$F$$$^$9!#(B +$B4V0c$C$F(B $B$r%?%$%W$7$F$7$^$C$?;~$b!"(BC-g $B$G$=$l$rC$;$^$9!#(B - $B$3$l$O!"J8>O$G@bL@$9$k$h$j> $B@h$[$IF~NO$7$?!"7QB3$5$l$?9T$N>e$K%+!<%=%k$r$b$C$F$$$-!"(BC-d $B$G%F(B - $B%-%9%H$r:o=|$7$F!"%F%-%9%H$,0l9T$K<}$^$k$h$&$K$7$F$_$J$5$$!#7QB3(B - $B$rI=$9(B'\'$B5-9f$O>C$($^$7$?$M!#(B +$B!v;HMQIT2D(B (disabled) $B%3%^%s%I(B +================================== - >> $B%+!<%=%k$r9T$N@hF,$K0\F0$7!"(B $B$rF~NO$7$J$5$$!#$3$l$O$=$N9T(B - $B$ND>A0$N9T6g@Z$j$r:o=|$9$k$N$G!"$=$N9T$,A0$N9T$H$D$J$,$C$F$7$^$$(B - $B$^$9!#$D$J$,$C$?9T$,2hLL$NI}$h$jD9$/$J$k$H!"7QB3$NI=<($,$5$l$k$G(B - $B$7$g$&!#(B +$B$$$/$D$+$N%3%^%s%I$O=i?4> $B$r2!$7$F!"$b$&0lEY9T6g@Z$j$rA^F~$7$J$5$$!#(B +$B$b$72?$l$+$N;HMQIT2D%3%^%s%I$r%?%$%W$7$?$i!"$=$l$O$I$&$$$&%3%^%s%I$+$,(B +$BI=<($5$l!"K\Ev$K$=$l$r> C-u 8 * $B$HF~NO$7$F$_$J$5$$!#$I$&$J$j$^$7$?$+!#(B +>> `C-x n p' : $B$H%?%$%W$7$F$_$^$7$g$&!J$3$l$O;HMQIT2D%3%^%s%I$G$9!K!#(B + $B$=$l$+$i(B n $B$H%?%$%W$7$^$7$g$&!#(B - $BFs$D$N9T$N4V$K6uGr9T$r:n$j$?$$>l9g$K$O!"FsHVL\$N9T$N@hF,$K9T$-!"(BC-o $B$r(B -$BF~NO$7$^$9!#(B - >> $BE,Ev$J9T$N@hF,$K9T$-!"$=$3$G(B C-o $B$rF~NO$7$F$_$J$5$$!#(B +$B!v%&%#%s%I%&(B +============ - $B$3$l$G!"(BEmacs$B$G!"%F%-%9%H$rF~NO$7!"$^$?4V0c$$$r=$@5$9$k$b$C$H$b4pK\E*(B -$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$-(B -$B$^$9!#:o=|A`:n$K$D$$$FMWLs$9$k$H$l8DJL$NJ8>O$rI=<($9$k$3$H$,$G$-(B +$B$^$9!#(BXEmacs $B$G;H$o$l$F$$$k!V%&%#%s%I%&!W$O%&%#%s%I%&%7%9%F%`$G$N=E$J$C(B +$B$F$$$kJL$N%&%#%s%I%&$K8@5Z$7$F$$$k$N$G$O$J$/!"C10l$N(B X $B%&%#%s%I%&2<$G(B +$B$NJL$NAk$N$3$H$r8@$C$F$$$k$3$H$KCm0U$7$F$/$@$5$$!#!J(BXEmacs $B$OJ#?t$N(B X +$B$N%&%#%s%I%&!"(BXEmacs $B$NMQ8l$G$O!V%U%l!<%`!W$r;}$D$3$H$b$G$-$^$9!#$3$l(B +$B$O8e$[$I@bL@$7$^$9!#!K(B - $B%+!<%=%k$ND>A0$NJ8;z$r:o=|(B - C-d $B%+!<%=%k$N$"$kJ8;z$r:o=|(B +$B$3$3$G$O!"J#?t$N%&%#%s%I%&$r;H$&5;=Q$K$O?($i$J$$$[$&$,8-L@$G$7$g$&!#$G(B +$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(B +$B>C$7$F!"$I$&$d$C$F85$N0l$D$N%&%#%s%I%&$N>uBV$KLa$k$+$r@bL@$9$k$3$H$OI,(B +$BMW$G$7$g$&!#$=$l$O4JC1$G$9!#(B - ESC $B%+!<%=%k$ND>A0$NC18l$r:o=|(B - ESC d $B%+!<%=%k0LCV0J9_$K$"$kC18l$r:o=|(B + C-x 1 $B%&%#%s%I%&$r#1$D$K$9$k!J$D$^$jB>$N%&%#%s%I%&$rA4It>C$9!K(B - C-k $B%+!<%=%k0LCV$+$i9TKv$^$G$r:o=|(B +$B$D$^$j(B C-x $B$rBG$C$F$+$i$5$i$K(B 1 $B$rBG$D$N$G$9!#$3$N%3%^%s%I$O%+!<%=%k$N(B +$B$"$k%&%#%s%I%&$r2hLLA4BN$K9-$2$^$9!#B>$N%&%#%s%I%&$OA4It>C$($^$9!#(B - $B2?$+$r:o=|$7$?8e$G!"$=$l$r85$KLa$7$?$/$J$k$3$H$,$"$j$^$9!#(BEmacs$B$O!"0l(B -$BJ8;z$h$j$bBg$-$$C10L$G:o=|$r9T$C$?;~$K$O!":o=|$7$?FbMF$rJ]B8$7$F$*$-$^$9!#(B -$B85$KLa$9$K$O!"(BC-y $B$r;H$$$^$9!#Cm0U$7$?$$$N$O!"(BC-y $B$r:o=|$r9T$C$?>l=j$@$1$G(B -$B$O$J$/!"$I$3$K$G$b=PMh$k$3$H$G$9!#(BC-y $B$O!"J]B8$5$l$?%F%-%9%H$r8=:_%+!<%=%k(B -$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(B -$B$&$3$H$,$G$-$^$9!#(B +>> $B%+!<%=%k$r$3$N9T$K;}$C$F$-$F!"(BC-u 0 C-l $B$H%?%$%W$7$F$_$F2<$5$$!#(B - $B:o=|$r9T$&%3%^%s%I$K$O!"(B"Delete" $B%3%^%s%I$H!"(B"Kill" $B%3%^%s%I$H$,$"$j$^(B -$B$9!#(B"Kill" $B%3%^%s%I$G$O:o=|$5$l$?$b$N$OJ]B8$5$l$^$9$,!"(B"Delete" $B%3%^%s%I$G(B -$B$OJ]B8$5$l$^$;$s!#$?$@$7!"7+$jJV$72s?t$,M?$($i$l$k$H!"J]B8$5$l$^$9!#(B +$B!J(BC-l $B$,2hLL$r:FIA2h$9$k$3$H$r;W$$=P$7$F$/$@$5$$!#$=$l$K?tCM0z?t$rM?$((B +$B$k$H!"!V2hLL$r:FIA2h$7$F8=:_$N9T$r2hLL$N:G>eIt$+$i$=$N?t$@$1N%$l$?$H$3(B +$B$m$K0\F0$7$J$5$$!W$H$$$&0UL#$K$J$j$^$9!#$G$9$+$i!"(BC-u 0 C-l $B$O!V2hLL$r(B +$B:FIA2h$7$F!"8=:_$N9T$r:G>eIt$K$9$k!W$H$$$&0UL#$K$J$j$^$9!#!K(B - >> C-n $B$r#22s$[$I%?%$%W$7$F!"2hLL$NE,Ev$J>l=j$K0\F0$7$J$5$$!#$=$7$F!"(B - C-k $B$G!"$=$N9T$r:o=|$7$J$5$$!#(B +>> $BB3$$$F(B Control-x 2 $B$H%?%$%W$7$F2<$5$$!#(B + $B?7$7$$%&%#%s%I%&$,$3$N%P%C%U%!$NFbMF$rI=<($9$k$?$a$K8=$l$k$H$H$b$K!"(B + $B$3$N%&%#%s%I%&$,$I$N$h$&$K=L$`$+$r8+$F2<$5$$!#(B - $B0l2sL\$N(B C-k $B$G$=$N9T$NFbMF$,:o=|$5$l!"$b$&0lEY(B C-k $B$rF~NO$9$k$H!"$=$N(B -$B9T<+?H$,:o=|$5$l$^$9!#$b$7!"(BC-k $B$K7+$jJV$72s?t$r;XDj$7$?>l9g$K$O!"$=$N2s?t(B -$B$@$1$N9T$,!JFbMF$H9T<+?H$H$,F1;~$K!K:o=|$5$l$^$9!#(B +>> C-x 1 $B$H%?%$%W$7$F!"?7$7$$%&%#%s%I%&$,>C$($k$N$r8+$F2<$5$$!#(B - $B:#:o=|$5$l$?%F%-%9%H$O!"J]B8$5$l$F$$$k$N$G!"$=$l$r> C-y $B$r;n$7$F$_$J$5$$!#(B +$B!vA^F~$H:o=|(B +============ + +$B%F%-%9%H$rF~NO$7$?$1$l$P!"C1$K$=$l$r%?%$%W$7$F2<$5$$!#(BXEmacs $B$O!"L\$K(B +$B8+$($kJ8;z!J(BA, 7, * $BEy!K$r%F%-%9%H$G$"$k$H$_$J$9$N$G!"$=$l$i$O$=$N$^$^(B +$BA^F~$5$l$^$9!#(B$B!J2~9T%-!A0$KF~NO$7$?J8;z$r:o=|$9$k$K$O!"(B $B$r%?%$%W$7$^$9!#(B $B$O!"(B +$B%-!<%\!<%I>e$K!V(BDel$B!W$H=q$$$F$"$k%-!<$G$9!#;~$K$O(B $B%-!<$b(B + $B$H$7$FF0:n$7$^$9$,!"$$$D$b$G$O$"$j$^$;$s!#(B - >> C-k $B$r2?EY$b%?%$%W$7$F$_$J$5$$!#(B +$B$h$j0lHLE*$K$O!"(B $B$O8=:_%+!<%=%k$N$"$k0LCV$ND>A0$NJ8;z$r:o=|$7(B +$B$^$9!#(B - >> $B%F%-%9%H$r> $BJ8;z$r$$$/$D$+%?%$%W$7!"$=$l$+$i$=$l$i$r(B $B$r;H$C$F:o=|$7(B + $B$F2<$5$$!#$3$N%U%!%$%k$rJQ99$9$k$3$H$r5$$K$9$kI,MW$O$"$j$^$;$s!#%*(B + $B%j%8%J%k$NF~Lg%,%$%I%U%!%$%k$OJQ99$5$l$^$;$s$+$i!#:#8+$F$$$k%U%!%$(B + $B%k$O$"$J$?$N$?$a$N%3%T!<$G$9!#(B - $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$&(B -$B$J$k$G$7$g$&$+!#(BC-y $B$O!"$b$C$H$b:G6a:o=|$5$l$?$b$N$rO$N0l9T$,2hLL$K<}$^$i$J$$DxD9$/$J$C$?>l9g!"$=$N9T$O2hLL>e$N> $B2hLL$N1&C<$^$GJ8>O$rF~NO$7!"$5$i$KF~NO$rB3$1$F2<$5$$!#(B + $B7QB39T$,$G$-$k$N$,J,$k$G$7$g$&!#(B - >> $B9T$r:o=|$7!"%+!<%=%k$r0\F0$5$;!"JL$N9T$r:o=|$7$J$5$$!#(BC-y $B$r9T$&(B - $B$H!"#2HVL\$N9T$,F@$i$l$^$9!#(B +>> $B$r;H$C$F2hLL$K<}$^$k$H$3$m$^$G8=:_$N9T$rC;$/$7$F$_$F$/$@$5(B + $B$$!#7QB39T$O>C$($^$9!#(B -$BC$7(B(UNDO) -============== +$B2~9TJ8;z$bB>$NJ8;z$HF1$8$h$&$K:o=|$G$-$^$9!##2$D$N9T$N4V$N2~9TJ8;z$r>C(B +$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(B +$B$NI}$h$j$bD9$$>l9g$O!"7QB39T$H$J$C$FI=<($5$l$^$9!#(B + +>> $B%+!<%=%k$r9T$N@hF,$K0\F0$7!"(B $B$r%?%$%W$7$F2<$5$$!#8=:_$N9T$,(B + $B$=$NA0$N9T$H$D$J$,$j$^$9!#(B + +>> $B$r%?%$%W$7$F!":#:o=|$7$?2~9TJ8;z$r$^$?A^F~$7$F2<$5$$!#(B + +XEmacs $B$N$[$H$s$I$N%3%^%s%I$O!"7+$jJV$7$N2s?t;XDj$G$-$k$3$H$r;W$$=P$7(B +$B$F2<$5$$!#$3$l$O!"J8;z$NA^F~$K$D$$$F$bEv$F$O$^$j$^$9!#(B + +>> C-u 8 * $B$H%?%$%W$9$k$H(B ******** $B$,A^F~$5$l$^$9!#;n$7$F$_$^$7$g$&!#(B + +$B$3$l$G!"(BXEmacs $B$G%F%-%9%H$rF~NO$7!"$^$?4V0c$$$r=$@5$9$k$b$C$H$b4pK\E*(B +$B$JJ}K!$r3X$s$@$3$H$K$J$j$^$9!#J8;z$HF1$8MM$K!"C18l$d9T$b:o=|$9$k$3$H$,(B +$B$G$-$^$9!#:o=|A`:n$K$D$$$FMWLs$9$k$H $B%+!<%=%k$ND>A0$NJ8;z$r:o=|!J(Bdelete$B!K(B + C-d $B%+!<%=%k$N$"$kJ8;z$r:o=|!J(Bdelete$B!K(B + + M- $B%+!<%=%k$ND>A0$NC18l$r>C5n!J(Bkill$B!K(B + M-d $B%+!<%=%k0LCV0J9_$K$"$kC18l$r>C5n!J(Bkill$B!K(B + + C-k $B%+!<%=%k0LCV$+$i9TKv$^$G$r>C5n!J(Bkill$B!K(B + M-k $B%+!<%=%k0LCV$+$iJ8Kv$^$G$r>C5n!J(Bkill$B!K(B + + $B$H(B C-d $B$KBP$9$k(B M- $B$H(B M-d $B$O!"(BC-f $B$H(B M-f $B$G;O$^$C$?N`(B +$B;w@-$r$^$?3HD%$7$^$9!#$3$3$G(B $B$O%3%s%H%m!<%kJ8;z$G$O$"$j$^$;$s(B +$B$,!"$^$"!"$=$l$O5$$K$7$J$$$G2<$5$$!#(BC-k $B$H(B M-k $B$N4X78$O(B C-e $B$H(B M-e $B$N(B +$B4X78!J9T$HJ8$NBPHf!K$HF1$8$G$9!#(B + +$B0lEY$K#2J8;z0J>e>C$7$?>l9g!"(BXEmacs $B$O$=$N>C$7$?%F%-%9%H$rJ]B8$7$F$*$$(B +$B$F!"$^$?85$KLa$9$3$H$,$G$-$k$h$&$K$7$F$$$^$9!#$3$N!V85$KLa$9!W$H$$$&F0(B +$B:n$r:FF~!J(Byanking$B!K$H8F$S$^$9!#>C$7$?%F%-%9%H$O!"85$HF1$8>l=j$K$G$b85(B +$B$H$O0c$&>l=j$K$G$b:FF~$G$-$^$9!#$^$?!"2?EY$b:FF~$7$F%F%-%9%H$N%3%T!<$r(B +$BJ#?t:n$k$3$H$b$G$-$^$9!#:FF~$N$?$a$N%3%^%s%I$O(B C-y $B$G$9!#(B + +$B!V>C5n!J(Bkill$B!K!W$H!V:o=|!J(Bdelete$B!K!W$N0c$$$K5$$r$D$1$F2<$5$$!#>C5n$7$?(B +$B%F%-%9%H$O:FF~$G$-$^$9$,!":o=|$7$?$b$N$O:FF~$G$-$^$;$s!#0lHL$K!"BgNL$N(B +$B%F%-%9%H$r>C$9%3%^%s%I$O$=$N%F%-%9%H$rJ]B8$7$F$*$-$^$9$,!"0lJ8;z$H$+6u(B +$BGr9T$d6uGrJ8;z$r:o=|$9$k%3%^%s%I$O:o=|$7$?$b$N$rJ]B8$7$-$^$;$s!#(B + +>> $B6u9T$G$J$$9T$N@hF,$K%+!<%=%k$r0\F0$5$;$F2<$5$$!#(B + $B$=$l$+$i(B C-k $B$G$=$N9T$N%F%-%9%H$r>C5n$7$F2<$5$$!#(B +>> $B$b$&0lEY(B C-k $B$r%?%$%W$7$F$/$@$5$$!#$=$N9T$KB3$/2~9TJ8;z$,>C$5$l$k$N(B + $B$,J,$j$^$7$?$+!#(B + +$B0l2sL\$N(B C-k $B$O$=$N9T$N%F%-%9%H$r>C$7!"#22sL\$N(B C-k $B$O$=$N9T<+?H$r>C$7(B +$B$F$=$N@h$N9T$r>e$2$F$-$^$9!#(BC-k $B$N?tCM0z?t$N07$$$OFCC$7$^$9!#$3$l$OC1$J$k7+$jJV$7$G$O$"$j$^$;$s!#(B +C-u 2 C-k $B$O#2$D$N9T$H$=$l$>$l$KB3$/2~9TJ8;z$r>C$7$^$9$,!"(BC-k $B$r#2EY%?(B +$B%$%W$7$F$b$=$&$O$J$j$^$;$s!#(B + +$B:G8e$K>C5n$7$?%F%-%9%H$r8=:_%+!<%=%k$,$"$k0LCV$K:FF~$9$k$K$O(B C-y $B$r%?(B +$B%$%W$7$^$9!#(B + +>> $B;n$7$F2<$5$$!#(BC-y $B$r%?%$%W$7$F:G8e$K>C5n$7$?%F%-%9%H$r:FF~$7$^$7$g$&!#(B + +C-y $B$O!"$"$J$?$,L5$/$7$?$b$N$rC5n$7$?3F9T$OA4It$^$H$a$FJ]B8$5$l$k$N$G!"0l2s$N(B C-y $B$G(B +$B$=$l$i$N9T$,A4It:FF~$5$l$^$9!#(B + +>> C-k $B$r2?EY$+B3$1$F%?%$%W$7$F$_$F2<$5$$!#(B - $B$$$D$G$b!"%F%-%9%H$rJQ99$7$?$1$l$I$b!"$=$l$r$b$H$KLa$7$?$$$H$-$O(BC-x u -$B$GD>$j$^$9!#IaDL$O4V0c$($?%3%^%s%I$rL58z$K$9$kF/$-$r$7$^$9!#7+$jJV$7$F(BUNDO -$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!#(B +$B$5$"!">C5n$7$?%F%-%9%H$r:FF~$7$^$7$g$&!#(B - >> $B$3$N9T$r(BC-k$B$G>C$7$F2<$5$$!#$=$7$F!"(BC-x u$B$GLa$7$F2<$5$$!#(B +>> C-y $B$r%?%$%W$7$F2<$5$$!#C5n$7$?%F%-%9%H$r:FF~$7$?$$$N$K!"JL$N%F%-%9%H$r$=$N8e>C5n$7$?;~(B +$B$O$I$&$9$l$P$h$$$G$7$g$&!)(B C-y $B$O:G8e$K>C5n$7$?$b$N$r:FF~$7$^$9!#$G$b(B +$B$=$l$G$h$j0JA0$K>C5n$7$?%F%-%9%H$,$J$/$J$k$o$1$G$O$"$j$^$;$s!#$=$&$$$&(B +$B%F%-%9%H$O(B M-y $B$G:FF~$G$-$^$9!#(BC-y $B$G:G8e$K>C5n$7$?%F%-%9%H$r:FF~$7$?(B +$BD>8e$K(BM-y $B$r%?%$%W$9$k$H!"$=$N:FF~$5$l$?%F%-%9%H$O$=$l0JA0$K>C5n$7$?$b(B +$B$N$KJQ99$5$l$^$9!#2?EY$bB3$1$F(B M-y $B$r%?%$%W$9$k$H!"$5$i$KA0$K>C5n$7$?(B +$B%F%-%9%H$r8F$SLa$;$^$9!#K>$_$N%F%-%9%H$K9T$-Ev$C$?$i!"$=$l$O$=$N$^$^$K(B +$B$7$FJT=8:n6H$rB3$1$l$P$h$$$N$G$9!#(B - C-_$B$d(BC-x u$B$K(BUNDO$B$N2s?t$r!"M?$($k$3$H$,=PMh$^$9!#(B +$B$"$k2s?t$@$1(B M-y $B$r7+$jJV$7$?$i!"$^$?:G=i!J$D$^$j:G8e$K>C5n$7$?%F%-%9(B +$B%H!K$KLa$j$^$9!#(B +>> $B0l9T>C5n$7!"JL$N9T$K9T$C$F$=$N9T$r>C5n$7$F2<$5$$!#(B + $B$=$l$+$i(B C-y $B$G#2HVL\!J:G8e!K$K>C5n$7$?9T$r:FF~$7$F2<$5$$!#(B + $BB3$$$F(B M-y $B$G$=$N9T$r:G=i$K>C5n$7$?9T$KJQ$($F2<$5$$!#(B + M-y $B$rB3$1$I$&$J$k$+8+$F$_$^$7$g$&!##2HVL\$K>C5n$7$?9T$,La$C$FMh$k(B + $B$^$G(B M-y $B$r7+$jJV$7!"$5$i$K$b$&2?EY$+(B M-y $B$r$7$^$7$g$&!#(B + $B$b$7K>$_$J$i(B M-y $B$K@5$b$7$/$OIi$N?tCM0z?t$rM?$($F$bNI$$$G$7$g$&!#(B -$B%U%!%$%k(B -======== - $B%F%-%9%H$X$NJQ99$r1J5WE*$K$9$k$?$a$K$O!"$=$l$r%U%!%$%k$KJ]B8$7$J$1$l$P(B -$B$J$j$^$;$s!#J]B8$5$l$J$$$H!"$[$I$3$7$?JQ99$O!"(BEmacs$B$r=*N;$9$k$HF1;~$K<:$o$l(B -$B$F$7$^$$$^$9!#(B +$B!vC$7(B(UNDO) +================ - $B$$$^8+$F$$$k%U%!%$%k$KBP$7$F!"$"$J$?$NJT=8$r9T$C$?$b$N$r=q$-9~$_$^$9!#(B -$B$$$^8+$F$$$k%U%!%$%k$H$O!"4JC1$K$$$($PJT=8$7$F$$$k%U%!%$%k<+BN$N$3$H$G$9!#(B +$B$b$7!"J8>O$rJQ99$7$?8e$G$=$NJQ99$O4V0c$$$@$C$?$H;W$C$?$i!"C$7(B +$B!J(Bundo$B!K%3%^%s%I(B C-x u $B$G$=$NJQ99$rC$9$3$H$,$G$-$^$9!#(B - $B$"$J$?$,%U%!%$%k$r%;!<%V!JJ]B8$9$k!K$9$k$^$G!":#$^$G$NJQ99$OJT=8$7$F$$(B -$B$k%U%!%$%k$K=q$-9~$^$l$k;v$O$"$j$^$;$s!#$=$l$O!"$"$J$?$,$=$N$h$&$K9T$$$?$/(B -$B$J$$$N$K!"ESCf$^$GJQ99$r2C$($?$b$N$,>!o!"(BC-x u $B$O0l$D$N%3%^%s%I$K$h$kJQ99$rC$7$^$9!#B3$1$F2?EY$b(B C-x +u $B$r9T$($P$=$N$?$S$K0l$DA0$N%3%^%s%I$,C$7$K$J$j$^$9!#(B + +$B$?$@$7$3$l$K$ONc30$,Fs$D$"$j$^$9!#$^$:!"J8>O$rJQ99$7$J$$%3%^%s%I$OC$7$K$J$j$^$;$s!#%+!<%=%k0\F0$d%9%/%m!<%k$N%3%^%s%I$,$=$l$KEv$?$j$^$9!#(B +$B$=$l$+$i!"%F%-%9%HJ8;z$NA^F~!J<+8JA^F~%3%^%s%I!K$O(B 20 $B8D0l$^$H$a$G07$o(B +$B$l$^$9!#$3$l$O%F%-%9%H$NA^F~$rC$9$?$a$N(B C-x u $B$N2s?t$r8:$i$9$?$a(B $B$G$9!#(B - $B%;!<%V$r9T$C$?8e$G$5$(JQ99$7$?$b$N$,4V0c$C$F$$$?;~$N$?$a$K(BEmacs$B$OL>A0(B -$B$rJQ$($F%*%j%8%J%k$N%U%!%$%k$r;D$7$^$9!#(B +>> $B$3$N9T$r(BC-k$B$G>C$7$F2<$5$$!#$=$7$F!"(BC-x u $B$GLa$7$F2<$5$$!#(B -$BHw9M(B: $B$^$?!"(BEmacs$B$OITB,$N;vBV$KBP$7!"0lDj$N%?%$%_%s%0$4$H$K<+F0E*(B - $B$KJT=8$7$F$$$k%U%!%$%k$NFbMF$rL>A0$rJQ$($?%U%!%$%k$K%;!<%V$7(B - $B$^$9!#$3$l$K$h$C$F!"K|0l$N>l9g$O9T$C$?$NJQ99$KBP$7:G>.8B$NHo(B - $B32$G:Q$`$h$&$K$J$C$F$$$^$9!#(B +C-_ $B$bC$7!J(Bundo$B!K$r9T$J$&%3%^%s%I$G$9!#5!G=$O!"(BC-x u $B$HF1$8$G$9$,!"(B +$BB3$1$F2?EY$b%?%$%W$9$k>l9g$O$h$jJXMx$G$9!#(BC-_ $B$NLdBj$O!"%-!<%\!<%I$K$h$C(B +$B$F$O$I$&$d$C$F%?%$%W$9$k$N$+J,$j$E$i$$;v$G$9!#$@$+$i(B C-x u $B$,$"$k$N$G(B +$B$9!#CO$r915WE*$JJ*$K$9$k$K$O!"$=$l$r%U%!%$%k$KJ]B8$7$J$1$l$P(B +$B$J$j$^$;$s!#$5$b$J$$$H!"(BXEmacs $B$N=*N;$HF1;~$K$=$l$O$J$/$J$C$F$7$^$$$^(B +$B$9!#JT=8$7$?J*$r%U%!%$%k$KF~$l$k$K$O%U%!%$%k$r3+$$$F$+$i$7$^$9!#!J%U%!(B +$B%$%k$r(B "visit" $B$9$k$H$b8@$$$^$9!K!#(B - $B$3$N(BEmacs$B%A%e!<%H%j%"%k$N%3%T!<$O(BMULE.tut$B$H8F$P$l$F$$$^$9!#%U%!%$%k$r(B -$B%U%!%$%s%I!J%U%!%$%k$r8+$D$1$F%P%C%U%!$KFI$_9~$`$3$H!K$9$k$H!"(BMULE.tut$B$NIt(B -$BJ,$KI=<($5$l$^$9!#Nc$($P!"(Bnew-file$B$H$$$&L>A0$N%U%!%$%k$r%U%!%$%s%I$7$?$J$i(B -$B$P!"(B"Mule: new-file"$B$H$$$&%b!<%I%i%$%s$K$J$k$G$7$g$&!#(B +$B%U%!%$%k$r3+$/$H$O!"$=$N%U%!%$%k$NCf?H$r(B XEmacs $B$G8+$k$3$H$r0UL#$7$^$9!#(B +$B?'!9$J0UL#$G!"$=$l$O$"$J$?$,%U%!%$%k<+?H$rJT=8$7$F$$$k$+$NMM$G$9!#$7$+(B +$B$7!"(BXEmacs $B$G9T$&JQ99$O%U%!%$%k$r%;!<%V$9$kKx$O915WE*$J$b$N$H$J$j$^$;(B +$B$s!#$3$l$O!"$=$l$rK>$^$J$$$N$K!"ESCf$^$GJQ99$7$?%U%!%$%k$,;D$k$N$rHr$1(B +$B$k$?$a$G$9!#%;!<%V$7$?8e$G$5$(!"JQ99$7$?$b$N$,4V0c$C$F$$$?;~$N$?$a$K!"(B +$B85$N%U%!%$%k$OL>A0$rJQ$($F;D$5$l$^$9!#(B -$BCm0U!'(B $B%b!<%I%i%$%s$K$D$$$F$O8e$[$I@bL@$7$^$9!#>/$7$*BT$A$r!#(B +$B2hLL$N0lHV2<6a$/$K!"(B"ISO7--%%-XEmacs: TUTORIAL.ja" $B$NMM$JJ8;zNs$G;O$^(B +$B$j(B "----" $B$G=*$C$F$$$k9T$,$"$k$O$:$G$9!#2hLL$N$3$NItJ,$O>o$K8=:_3+$$$F(B +$B$$$k%U%!%$%k$NL>A0$,I=<($5$l$F$$$^$9!#:#$O(B "TUTORIAL.ja" $B$H$$$&L>$N%U%!(B +$B%$%k!J$3$l$O(B XEmacs $BF~Lg%,%$%I$N$"$J$?MQ$N%3%T!<$G$9!K$r3+$$$F$$$^$9!#(B +XEmacs $B$G%U%!%$%k$r3+$/$H$=$N%U%!%$%k$NL>A0$,$3$NItJ,$K8=$l$^$9!#(B - $B%U%!%$%k$r%U%!%$%s%I$7$?$j!"%;!<%V$7$?$j$9$k%3%^%s%I$O!"$3$l$^$G$N$b$N(B -$B$H$O0c$$!"#2$D$NJ8;z$+$i$J$C$F$$$^$9!#(BC-x $B$KB3$$$FF~NO$9$kJ8;z$,!"%U%!%$%k(B -$B$KBP$7$F9T$&A`:n$rI=$7$^$9!#(B +$B%U%!%$%k$r3+$$$?$jJ]B8$7$?$j$9$k%3%^%s%I$O!"#2$D$NJ8;z$+$i@.$k$H$$$&E@(B +$B$G:#$^$G3X$s$@B>$N%3%^%s%I$H$O0c$$$^$9!#N>J}$H$b!"(BControl-x $B$H$$$&J8;z(B +$B$G;O$^$j$^$9!#(BControl-x $B$G;O$^$k%3%^%s%I$O$?$/$5$s$"$j$^$9!#B?$/$O%U%!(B +$B%$%k!"%P%C%U%!$d$=$l$i$K4XO"$7$?$b$N$K4X78$7$?$3$H$r$7$^$9!#$3$l$i$N%3(B +$B%^%s%I$O#2!"#3!"#4J8;z$G$9!#(B - $B$b$&0l$D$3$l$^$G$N$b$N$H0c$&E@$O!"%U%!%$%s%I$N;~!"%U%!%$%kL>$r(BEmacs$B$K(B -$BLd$o$l$^$9!#$3$N$3$H$r!"C(B +$BA0$r;XDj$7$J$1$l$P$J$j$^$;$s!#$3$l$r!"%3%^%s%I$,!VCl9g$O0z?t$O%U%!%$%kL>$G$9!#l9g$O%U%!%$%kL>$G$9!#(B + C-x C-f Find a file - C-x C-f $B%U%!%$%k$r8+$D$1$k!J%U%!%$%s%I$9$k!K(B +$B$r%?%$%W$9$k$H!"(BXEmacs $B$O%U%!%$%kL>$rJ9$$$F$-$^$9!#%?%$%W$7$?%U%!%$%k(B +$BL>$O2hLL$N:G2<9T$KI=<($5$l$^$9!#$3$N:G2<9T$O!"$3$&$$$&F~NO$N$?$a$K;H$C(B +$B$F$$$k;~$O!"%_%K%P%C%U%!$H8F$S$^$9!#DL>o$NJT=8%3%^%s%I$G%U%!%$%kL>$rJT(B +$B=8$9$k$3$H$b$G$-$^$9!#(B - Emacs$B$O%U%!%$%kL>$rJ9$$$F$-$^$9!#$=$l$O!"2hLL$N2<$N9T$K8=$l$^$9!#%U%!(B -$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(B -$B$3$NMM$J;H$o$lJ}$r$7$^$9!#%U%!%$%kL>$KB3$$$F!"%j%?!<%s%-!<$r2!$9$H!"%_%K%P(B -$B%C%U%!$KI=<($5$l$F$$$?FbMF$O$b$&I,MW$G$O$J$/$J$k$N$G>C$($F$7$^$$$^$9!#(B +$B%U%!%$%kL>$NF~NOCf!J$"$k$$$O$=$NB>$N%_%K%P%C%U%!F~NOCf!K$K(B C-g $B$K$h$C(B +$B$F%3%^%s%I$r%-%c%s%;%k$G$-$^$9!#(B - >> C-x C-f$B$H%?%$%W$7$?8e$K(BC-g$B$H%?%$%W$7$F2<$5$$!#%_%K%P%C%U%!$NFbMF(B - $B$rC$7!"$^$?!"(BC-x C-f$B%3%^%s%I$bC$7$^$9!#$H8@$&Lu$G!"2?$b(B - $B%U%!%$%k$r8+$D$1$k$h$&$J$3$H$O$7$^$;$s!#(B +>> C-x C-f $B$r%?%$%W$7$F$+$i(B C-g $B$r%?%$%W$7$F$_$^$7$g$&!#%_%K%P%C%U%!$,(B + $BC$5$l!"$=$l$r;H$C$F$$$?%3%^%s%I(B C-x C-f $B<+BN$bC$5$l$^$9!#(B + $B$@$+$i!"%U%!%$%k$O2?$b3+$+$l$^$;$s!#(B - $B:#EY$O%U%!%$%k$r%;!<%V$7$F$_$^$7$g$&!#:#$^$G$NJQ99$rJ]B8$9$k$?$a$K$O$rF~NO$7$?$i!"(B$B%-!<$r%?%$%W$7F~NO$r40N;$5$;$^$9!#$=$&(B +$B$9$k$H!"(BC-x C-f $B%3%^%s%I$,Av$j;O$a;XDj$7$?%U%!%$%k$r3+$-$^$9!#%_%K%P%C(B +$B%U%!$O(B C-x C-f $B%3%^%s%I$N=*N;$H$H$b$K>C$($^$9!#(B - C-x C-s $B%U%!%$%k$r%;!<%V$9$k(B +$B%U%!%$%k$NFbMF$,2hLL$KI=<($5$l$k$H!"$=$NFbMF$rJQ99$9$k$3$H$,$G$-$^$9!#(B +$B2C$($?JQ99$r915WE*$J$b$N$K$7$?$1$l$P!"A0$r$D$1$i$l$F;D$5$l$F$$$k$N$GFbMF$O<:$o$l$^$;$s!#$=(B -$B$N?7$7$$L>A0$O%*%j%8%J%k$N%U%!%$%k$NL>A0$K(B'~'$B$r$D$1$?$b$N$G$9!#(B + C-x C-s Save the file - $B%;!<%V$,=*$o$k$H!"(BEmacs$B$O%;!<%V$7$?%U%!%$%k$NL>A0$rI=<($7$^$9!#(B +$B$3$l$O(B XEmacs $B$,J];}$7$F$$$kJ8>O$r%U%!%$%k$K%3%T!<$7$^$9!#=i$a$F$3$l$r(B +$BA0$KIU$1BX$($k$N$G!"$=$NFbMF$O<:(B +$B$o$l$^$;$s!#$=$N?7$7$$L>A0$O85$N%U%!%$%k$NL>A0$N:G8e$K(B'~'$B$r$D$1$?$b$N(B +$B$G$9!#(B - >> C-x C-s$B$H%?%$%W$7$F%A%e!<%H%j%"%k$N%3%T!<$r%;!<%V$7$F2<$5$$!#$=$N(B - $B;~!"2hLL$N2<$NJ}$K(B"Wrote ...../MULE.tut"$B$HI=<($5$l$^$9!#(B +$B%;!<%V$,=*$o$k$H!"%;!<%V$7$?%U%!%$%k$NL>A0$,I=<($5$l$^$9!#3d$HIQHK$K%;!<(B +$B%V$7$?J}$,NI$$$G$7$g$&!#%7%9%F%`$,Mn$A$F$b$;$C$+$/$N:n6H$,%Q%"$K$J$i$J(B +$B$$$h$&$K!#(B - $B?7$7$$%U%!%$%k$r:n$k;~!"$"$?$+$b0JA0$+$i$"$C$?%U%!%$%k$r%U%!%$%s%I$9$k(B -$B$h$&$J%U%j$r$7$^$9!#$=$&$7$F!"$=$N%U%!%$%s%I$7$?%U%!%$%k$K%?%$%W$7$F$$$-$^(B -$B$9!#(B +>> C-x C-s $B$H%?%$%W$7$F$3$NF~Lg%,%$%I$N%3%T!<$r%;!<%V$7$F2<$5$$!#(B + $B2hLL:G2O$rF~NO$7$F$$$-$^$9!#(B +$B%U%!%$%k$r%;!<%V$7$h$&$H$7$?;~$K=i$a$F?7$7$$%U%!%$%k$,:n$i$l!":#$^$GF~(B +$BNO$7$?FbMF$,$=$l$K=q$-9~$^$l$^$9!#$=$l0J9_$O!"$"$J$?$O4{B8$N%U%!%$%k(B +$B!J$?$C$?:#:n$i$l$?%U%!%$%k!K$rJT=8$7$F$$$k$H;W$C$F2<$5$$!#(B -$B%P%C%U%!(B -======== - $B$b$7!"#2HVL\$N%U%!%$%k$r(B C-x C-f $B$G> "foo" $B$H$$$&L>$N%U%!%$%k$r:n$j$^$7$g$&!#(BC-x C-f foo $B$G$9!#(B + $B2?$+J8>O$rF~$l!"JT=8$7!"(BC-x C-s $B$G(B "foo" $B$r%;!<%V$7$F2<$5$$!#(B + $B:G8e$K(B C-x C-f TUTORIAL.ja $B$H%?%$%W$7(B + $BF~Lg%,%$%I$KLa$j$^$7$g$&!#(B + +XEmacs $B$O%U%!%$%k$NFbMF$r%P%C%U%!!J(Bbuffer$B!K$H8F$P$l$k$b$N$NCf$K3JG<$7(B +$B$F$$$^$9!#%U%!%$%k$r3+$/$H?7$7$$%P%C%U%!$,$G$-$^$9!#(BXEmacs $B$,8=:_;}$C(B +$B$F$$$k%P%C%U%!$N%j%9%H$r8+$k$K$O!"> C-x C-b $B$H%?%$%W$7$J$5$$!#$=$l$>$l$N%P%C%U%!$,$I$N$h$&$KL>A0$r;}(B - $B$C$F$$$k$+!"$=$7$F!"$I$N$h$&$J%U%!%$%kL>$r$D$1$F$$$k$N$+4Q;!$7$J(B - $B$5$$!#(B + C-x C-b List buffers - $B%P%C%U%!$K$O%U%!%$%k$H0lCW$J$$$b$N$b$"$j$^$9!#$?$H$($P!"(B -"*Buffer List*" $B$H$$$&%U%!%$%k$O$"$j$^$;$s!#$3$l$O(B C-x C-b $B$K$h$C$F:n$i$l(B -$B$?%P%C%U%!%j%9%H$KBP$7$F$N%P%C%U%!$G$9!#(B +>> C-x C-b $B$r;n$7$F$_$^$7$g$&!#(B - $B$"$J$?$,8+$F$$$k(BEmacs$B%&%#%s%I%&Fb$K$"$k!"$I$s$J%F%-%9%H$G$b!"$$$:$l$+(B -$B$N%P%C%U%!Fb$K$"$j$^$9!#(B +$B3F%P%C%U%!$,$I$s$JIw$KL>A0$d$=$l$,3+$$$F$$$k%U%!%$%k$KBP$9$k%U%!%$%kL>(B +$B$r;}$C$F$$$k$+8+$F2<$5$$!#%U%!%$%k$r3+$$$F$$$J$$%P%C%U%!$b$"$j$^$9!#$?(B +$B$H$($P!"(B"*Buffer List*" $B$H$$$&L>$N%P%C%U%!$O$I$s$J%U%!%$%k$b3+$$$F$$$^(B +$B$;$s!#$3$l$O%P%C%U%!$N%j%9%H$rFbMF$H$9$k%P%C%U%!$G!"(BC-x C-b $B$G:n$i$l$?(B +$B$b$N$G$9!#(BXEmacs $B$N%&%#%s%I%&Fb$K$"$k%F%-%9%H$O$I$l$b!"$$$:$l$+$N%P%C(B +$B%U%!$N0lIt$G$9!#(B - >> $B%P%C%U%!%j%9%H$r>C$9$?$a(B C-x 1 $B$H%?%$%W$7$J$5$$!#(B +>> C-x 1 $B$H%?%$%W$7$F%P%C%U%!%j%9%H$r>C$7$^$7$g$&!#(B - $B$b$7!"$"$k%U%!%$%k$N%F%-%9%H$KJQ99$r9T$J$C$F$+$i!"B>$N%U%!%$%k$r$N%U%!%$%k$r3+$$$F(B +$B$b!":G=i$N%U%!%$%k$O$^$@%;!<%V$5$l$^$;$s!#JQ99$O(B XEmacs $B$NFbIt!"$=$N%U%!(B +$B%$%k$KBP1~$9$k%P%C%U%!$NCf$K;D$C$?$^$^$G$9!##2HVL\$N%U%!%$%k$N%P%C%U%!(B +$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$"(B +$B$j$^$;$s!#$3$l$O$H$F$bLr$KN)$A$^$9$,!":G=i$N%U%!%$%k$N%P%C%U%!$r%;!<%V(B +$B$9$k2?$+JXMx$JJ}K!$,I,MW$@$H$$$&$3$H$G$b$"$j$^$9!#(B C-x C-s $B$G%;!<%V$9(B +$B$k$?$a$K(B C-x C-f $B$G85$N%P%C%U%!$KLa$k$N$O$OLq2p$G$9!#$=$3$G$l$K$D$$$F!"$=$l(B +$B$r%;!<%V$9$k$+$I$&$+$rJ9$$$F$-$^$9!#(B - C-x s $B8=:_$"$k%P%C%U%!$r%;!<%V$9$k!#(B +>> $B0l9T%F%-%9%H$rF~NO$7$F$+$i(B C-x s $B$H%?%$%W$7$F2<$5$$!#(B + TUTORIAL.ja $B$H$$$&%P%C%U%!$r%;!<%V$9$k$+$I$&$+J9$$$F$/$k$O$:$G$9!#(B + $B!V$O$$!W$HEz$($k$?$a$K(B "y" $B$H%?%$%W$7$F2<$5$$!#(B - C-x s $B$OFbMF$rJQ$($?%P%C%U%!A4$F$r%U%!%$%k$K%;!<%V$7$^$9!#$3$N;~!"$R$H(B -$B$D$R$H$D$N(B($B%;!<%V$5$l$k$Y$-(B)$B%P%C%U%!$KBP$7$F!"%;!<%V$9$k$+!"$7$J$$$+$r(By$B$+(Bn -$B$GLd$o$l$^$9!#$3$NI=<($O2hLL$N2<$N9T$KI=<($5$l$^$9!#Nc$($P!"$3$N$h$&$K$G$9!#(B +$B!v%a%K%e!<$r;H$&(B +---------------- - Save file /usr/private/yours/MULE.tut? (y or n) +$B$b$7(B X $BCeIt$K%a%K%e!<%P!<$,$"$k$3(B +$B$H$K5$IU$/$G$7$g$&!#$3$N%a%K%e!<%P!<$r;H$C$F!V%U%!%$%k$r3+$/!W$H$$$&$h(B +$B$&$J$[$H$s$I$N$h$/;H$&(B XEmacs $B$N%3%^%s%I$r;HMQ$9$k$3$H$,$G$-$^$9!#FCDj(B +$B$N%3%^%s%I$r;HMQ$9$k$?$a$NBG80$r3P$($J$/$F$h$$$N$G!":G=i$O$3$NJ}$,4JC1(B +$B$K;W$($k$G$7$g$&!#(BXEmacs $B$K47$l$F$/$k$K$7$?$,$C$F!"%-!<%\!<%I$N%3%^%s(B +$B%I$r;H$&$3$H$,4JC1$K$J$C$F$/$k$G$7$g$&!#BP1~$9$k%-!<%\!<%I%3%^%s%I$,%3(B +$B%^%s%I$NA0$r8+$D$1$FA*Br$9$k$@$1$G(B +$B$I$N%P%C%U%!$K$G$b0\F0$G$-$^$9!#(B -$B%3%^%s%I$N3HD%(B -============== +$B!v%^%&%9$r;H$&(B +-------------- + +X $B$N2<$G$_$N>l=j$G:8%\%?%s$r%/%j%C%/$9$k$3$H$G%F%-%9%H$N%+!<%=%k$r0\F0(B +$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(B +$B%F%-%9%H$rA*Br$9$k$3$H$,$G$-$^$9!#!J$b$7$/$O!"$=$NBe$o$j$K%F%-%9%H$rA*(B +$BBr$9$k$?$a$K0lJ}$NC<$G:8%^%&%9%\%?%s$r%/%j%C%/$7!"B>$NC<$K0\F0$7$F(B +Shift $B$r2!$7$J$,$i%/%j%C%/$9$k$3$H$,$G$-$^$9!#!K(B + +$BA*Br$7$?%F%-%9%H$r>C5n(B $B!J(Bkill$B!K(B $B$9$k$?$a$K$O!"(BC-w $B$+!"(BEdit $B%a%K%e!<$N(B +Cut $B9`L\$r;H$($^$9!#$3$l$i$OEy2A$G$O(B*$BL5$$(B*$B$3$H$KCm0U$7$F$/$@$5$$(B: C-w +$B$O(BXEmacs $B$NFbIt$N$_$K%F%-%9%H$rJ]B8$7$^$9$,!J>e$G@bL@$7$?(B C-k $B$H;w$F$$(B +$B$^$9!K!"(BCut $B$O$3$l$H$H$b$K%F%-%9%H$rB>$N%"%W%j%1!<%7%g%s$,;HMQ2DG=$J(B X +$B$N%/%j%C%W%\!<%I$K$bF~$l$^$9!#(B - $B%(%G%#%?$K$O!"%3%s%H%m!<%k!&%-!<$d%a%?!&%-!<$GF~NO$G$-$k$b$N$h$j$b$:$C(B -$B$HB?$/$N%3%^%s%I$,$"$j$^$9!#$3$l$i$r07$&$?$a$K!"3HD%!J(BeXtend$B!K%3%^%s%I$r(B +X $B$N%/%j%C%W%\!<%I$+$i%F%-%9%H$r$rF~NO$7$F$$$k$H$-$K!JNc$($P!"!V%U%!%$(B +$B%k$r3+$/!W$GF~NO$rB%$5$l$?$H$-!K(B TAB $B$GJd408uJd$rI=<($5$;$k$H!"8uJd$N(B +$B0l$D$rA*Br$9$k$?$a$K??Cf$N%\%?%s$G%/%j%C%/$9$k$3$H$,$G$-$^$9!#(B + +$B1&$N%^%&%9$N%\%?%s$O%]%C%W%"%C%W%a%K%e!<$rI=<($7$^$9$3$N%a%K%e!<$NFbMF(B +$B$O:#$N%b!<%I$K0MB8$7!"IaDL$O;HMQ$70W$$$h$&$K#2!"#3$NNI$/;H$o$l$k%3%^%s(B +$B%I$r4^$s$G$-$^$9!#(B + +>> $B1&%^%&%9%\%?%s$r2!$7$F$/$@$5$$!#(B + +$B%a%K%e!<$rI=<($5$;B3$1$k$?$a$K$O%\%?%s$r2!$7B3$1$kI,MW$,$"$j$^$9!#(B + + +$B!v%3%^%s%I$N3HD%(B +================ + +XEmacs $B$K$O!"%3%s%H%m!<%kJ8;z$d%a%?J8;z$K3dEv$i$l$k$h$j$b$:$C$H$:$C$H(B +$BB?$/$N%3%^%s%I$,$"$j$^$9!#$3$l$i$r07$&$?$a$K!"3HD%!J(BeXtend$B!K%3%^%s%I$r(B $B;H$$$^$9!#$=$l$K$O!"0J2<$N#2$D$NA0$K$h$k3HD%!#B3$1$F%3%^%s%I$NL>A0$rF~NO$7$^$9!#(B - $B$3$l$i$O0lHL$K!"JXMx$@$1$l$I$b!"$3$l$^$G8+$F$-$?$b$N$[$IIQHK$K$OMQ$$$i(B -$B$l$J$$%3%^%s%I$N$?$a$N$b$N$G$9!#(BC-x C-f $B!J%U%!%$%s%I!K$d(B C-x C-s$B!J%;!<%V!K(B -$B$O$3$NCg4V$G$9!#B>$K!"(BC-x C-c$B!J%(%G%#%?$N=*N;!K$b$=$&$G$9!#(B +$B$3$l$i$O!"0lHLE*$K$OJXMx$@$1$l$I$b!"$3$l$^$G8+$F$-$?$b$N$[$I$OIQHK$KMQ(B +$B$$$i$l$J$$%3%^%s%I$G$9!#(BC-x C-f $B!J%U%!%$%k$r3+$/!K$d(B C-x C-s$B!J%U%!%$%k(B +$B$r%;!<%V!K$O$3$NCg4V$G$9!#B>$K!"(BC-x C-c$B!J(BXEmacs $B$r=*N;!K$b$=$&$G$9!#(B +C-x C-c $B$K4X$7$F$O!"$=$l$^$G$K2C$($?JQ99$,L5$/$J$k$N$r?4G[$9$kI,MW$O$"(B +$B$j$^$;$s!#(BXEmacs $B$r=*N;$5$;$kA0$KJQ99$5$l$?3F%U%!%$%k$r%;!<%V$9$k$+$I(B +$B$&$+J9$$$F$-$^$9$+$i!#(B - C-z$B$O(BEmacs$B$rH4$1$k$N$KNI$/;H$o$l$kJ}K!$G$9!#(BEmacs$B$r=*N;$9$k$3$H$J$/!"(B -$B0lC6!"(Bcsh$B$N%l%Y%k$KLa$k$K$O0lHVNI$$J}K!$H8@$($k$G$7$g$&!#(BC-z$B$r9T$J$o$l$F$b(B -Emacs$B$O%9%H%C%W$7$F$$$k$@$1$G!"FbMF$,GK2u$5$l$k$H$$$&$3$H$O$"$j$^$;$s!#(B +C-z $B$O!V0l;~E*$K!W(B XEmacs $B$rH4$1$k%3%^%s%I$G$9!#$^$?F1$8(B XEmacs $B%;%C%7%g(B +$B%s$KLa$k$3$H$,$G$-$^$9!#(B -$BCm0U(B: $B$?$@$7(BX-window$B$G9T$J$C$F$$$k>l9g!"$b$7$/$O;HMQ$7$F$$$k%7%'%k(B - $B$,(Bsh$B$N;~$O!"$3$N8B$j$G$O$"$j$^$;$s!#(B +$B$=$l$,$G$-$k%7%9%F%`>e$J$i!"(BC-z $B$O(B XEmacs $B$r!VCfCG!W$5$;$^$9!#$D$^$j(B +XEmacs $B$r=*N;$9$k$3$H$J$/!"%3%^%s%I%7%'%k$KLa$k$3$H$,$G$-$^$9!#BgJ}$N(B +$BI8=`E*$J%7%'%k$J$i!"(B`fg' $B%3%^%s%I$b$7$/$O(B `%emacs' $B$K$h$C$F(B XEmacs $B$r(B +$B:F3+$G$-$^$9!#(B +$B!VCfCG!W5!G=$r$N%W%m%0%i%`$rAv$i$;$F$+$i$^$?(B XEmacs $B$KLa$k$3$H$,$G$-(B +$B$k$h$&$K$7$^$9!#$3$N>l9gK\Ev$K(B XEmacs $B$+$iH4$1=P$k$o$1$G$O$"$j$^$;$s$N(B +$B$G!"%7%'%k%3%^%s%I$N(B `exit' $B$,$=$N%5%V%7%'%k$+$i(B XEmacs $B$KLa$kIaDL$N$d(B +$B$jJ}$G$9!#(B - C-x $B%3%^%s%I$O!"$?$/$5$s$"$j$^$9!#$9$G$K3X$s$@$b$N$O0J2<$N$b$N$G$9!#(B +C-x C-c $B$O%m%0%"%&%H$7$h$&$H;W$&;~$K;H$&$b$N$G$9!#%a!<%k%D!<%k!J(Bmail +$B%3%^%s%IEy!K$d$=$NB>$NMM!9$J%"%W%j%1!<%7%g%s%W%m%0%i%`$,5/F0$7$?(B +XEmacs $B$+$iH4$1=P$k>l9g$K;H$&$N$b@5$7$$;H$$J}$G$9!#$3$l$i$N%W%m%0%i%`(B +$B$O(B XEmacs $B$NCfCG$K$I$&BP=h$7$FNI$$$+CN$i$J$$$G$7$g$&$+$i!#$7$+$7$J$,$i!"(B +$BIaDL$N>l9g$O!"%m%0%"%&%H$7$h$&$7$J$$8B$j$O(B XEmacs $B$r=*N;$5$;$k$h$j$O(B +C-z $B$GCfCG$5$;$kJ}$,NI$$$G$7$g$&!#(B - C-x C-f $B%U%!%$%k$NJT=8!J(BFind$B!K(B - C-x C-s $B%U%!%$%k$NJ]B8!J(BSave$B!K(B - C-x C-b $B%P%C%U%!%j%9%H$NI=<((B - C-x C-c $B%(%G%#%?$r=*N;$9$k!#%U%!%$%k$NJ]B8$O!"<+F0E*$K$O9T$o$l$^$;(B - $B$s!#$7$+$7!"$b$7%U%!%$%k$,JQ99$5$l$F$$$l$P!"%U%!%$%k$NJ]B8(B - $B$r$9$k$N$+$I$&$+$rJ9$$$F$-$^$9!#J]B8$7$F=*N;$9$kIaDL$NJ}K!(B - $B$O!"(BC-x C-s C-x C-c $B$H$9$k$3$H$G$9!#(B +C-x $B%3%^%s%I$O$?$/$5$s$"$j$^$9!#$3$l$^$G$K!"0J2<$r3X$S$^$7$?!#(B - $BL>A0$K$h$k3HD%%3%^%s%I$K$O!"$"$^$j;H$o$l$J$$$b$N$d!"FCDj$N%b!<%I$G$7$+(B -$B;H$o$J$$$b$N$J$I$,$"$j$^$9!#Nc$H$7$F!"(B"command-apropos" $B$r$H$j$"$2$^$9!#$3(B -$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=(B -$B<($7$^$9!#(BESC x $B$H%?%$%W$9$k$H!"%9%/%j!<%s$N2<$K(B "M-x" $B$,I=<($5$l$^$9!#$3$l(B -$B$KBP$7$F!"A0!J:#$N>l9g!"(B"command-apropos"$B!K$rF~NO$7$^$9!#(B -"command-a" $B$^$GF~NO$7$?8e%9%Z!<%9$rF~$l$l$P!"8e$NItJ,$O<+F0E*$KJd$o$l$^$9!#(B -$B$3$N8e!"%-!<%o!<%I$rJ9$+$l$^$9$+$i!"CN$j$?$$J8;zNs$r%?%$%W$7$^$9!#$J$*!"%-!<(B -$B%o!<%I$rF~$l$J$$$H!"A4$F$N%3%^%s%I$,I=<($5$l$^$9!#(B + C-x C-f $B%U%!%$%k$r3+$/!J(BFind$B!K(B + C-x C-s $B%U%!%$%k$N%;!<%V!J(BSave$B!K(B + C-x C-b $B%P%C%U%!$N%j%9%H%"%C%W(B + C-x C-c XEmacs $B$r=*N;(B + C-x u $BC$7(B - >> ESC x $B$r%?%$%W$7!"B3$1$F!"(B"command-apropos" $B$"$k$$$O(B - "command-a" $B$H%?%$%W$7$^$9!#" - $B$H%?%$%W$7$^$9!#(B +$BL>A0$K$h$k3HD%%3%^%s%I$K$O!"$"$^$j;H$o$J$$$b$N$d!"FCDj$N%b!<%I$G$7$+;H(B +$B$o$J$$$b$N$,$"$j$^$9!#$?$H$($P(B replace-string $B$G$9$,!"$3$l$OJ8;zNs$rCV(B +$B49$9$k$b$N$G$9!#(BM-x $B$r%?%$%W$9$k$H!"(BXEmacs $B$O2hLL$N:G2<9T$K(B M-x $B$HI=<((B +$B$7F~NO$rB%$9$N$G!"$=$3$K%3%^%s%I$NL>A0!J$3$N>l9g(B "replace-string"$B!K$r(B +$BF~$l$J$1$l$P$J$j$^$;$s!#(B"repl s" $B$H$@$1%?%$%W$9$k$H(B XEmacs $B$,%3%^(B +$B%s%IL>$rJd40$7$F$/$l$^$9!#%3%^%s%IL>$rF~$l$?$i(B $B$rBG$C$F2<$5$$!#(B - $B8=$l$?!V%&%#%s%I%&!W$r>C$9$K$O!"(BC-x 1 $B$H%?%$%W$7$^$9!#(B +"Replace string" $B%3%^%s%I$K$O0z?t$,Fs$DI,MW$G$9!#$I$NJ8;zNs$r$I$&CV49(B +$B$9$k$+$G$9!#3F0z?t$rF~NO$9$k$?$S$K(B $B$rBG$C$F2<$5$$!#(B -$B%b!<%I%i%$%s(B -============ - $B$b$7$f$C$/$j$H%3%^%s%I$rBG$C$?$J$i$P!"2hLL$N2l=j$KBG$C$?$b$N$,I=<($5$l$^$9!#%(%3!<%(%j%"$O2hLL$N(B1$B$P$s2<$N9T$G$9!#$=$N(B -$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(B -$B$l$F$$$k$G$7$g$&!#(B +>> $B%+!<%=%k$r$3$3$+$i#29T2<$N6u9T$K0\F0$5$;$F2<$5$$!#(B + M-x repl schangedAltered $B$H%?%$%W$7$^$7$g$&!#(B - [--]J:--**-Mule: MULE.tut (Fundamental) ---NN%-------------- + $B$3$N9T$,$I$&JQ$o$k$+(B(changed)$B8+$^$7$g$&!#$"$J$?$O%+!<%=%k0J9_A4It$N(B + c-h-a-n-g-e-d $B$H$$$&8l$r(B "altered" $B$KJQ$($?$N$G$9!#(B -$BCm0U(B: NN%$B$N(BNN$B$O?t;z$,F~$C$F$$$^$9!#$"$J$?$,;H$C$F$$$k(BEmacs$B$N%b!<(B - $B%I%i%$%s$H0c$&$+$bCN$l$J$$$1$I!"92$F$J$$$h$&$K!#Nc$($P!";~4V(B - $B$d(Buptime$B$,I=<($5$l$F$$$k$N$O!"(Bdisplay-time$B$H$$$&5!G=$,F0$$$F(B - $B$$$k$+$i$G$9!#(B +$B!v<+F0%;!<%V(B +============ - $B$3$N9T$K$h$C$FB?$/$NM-MQ$J>pJs$,F@$i$l$^$9!#(B +$B%U%!%$%k$KJQ99$r2C$($F$^$@%;!<%V$7$F$$$J$$>l9g!"$=$l$i$NJQ99$O7W;;5!$,(B +$B%/%i%C%7%e$9$k$H<:$o$l$F$7$^$&2DG=@-$,$"$j$^$9!#$=$&$$$&;vBV$rHr$1$k$?(B +$B$a!"JT=8Cf$N3F%U%!%$%k$K$D$$$F<+F0%;!<%V%U%!%$%k$,Dj4|E*$K=q$+$l$^$9!#(B +$B<+F0%;!<%V%U%!%$%k$OF,$H$*?,$K(B # $B$,IU$$$F$$$^$9!#Nc$($P(B "hello.c" $B$H$$(B +$B$&%U%!%$%k$N<+F0%;!<%V%U%!%$%k$O(B "#hello.c#" $B$G$9!#DL>o$NJ}K!$G%U%!%$(B +$B%k$r%;!<%V$7$?$H$-$K!"$=$&$$$&<+F0%;!<%V%U%!%$%k$O>C$5$l$^$9!#(B +$B7W;;5!$,%/%i%C%7%e$7$?>l9g!"<+F0%;!<%V$5$l$?JT=8$r2sI|$5$;$k$3$H$,$G$-(B +$B$^$9!#IaDL$K%U%!%$%k!JJT=8$7$F$$$?$b$N$G!"<+F0%;!<%V%U%!%$%k$8$c$"$j$^(B +$B$;$s!K$r3+$-!"$=$l$+$i(B M-x recover file $B$H%?%$%W$9$k$N$G$9!#3N(B +$BG'$r5a$a$F$-$^$9$N$G!"(Byes $B$H%?%$%W$7<+F0%;!<%V$5$l$?%G!<%?$r2s(B +$BI|$7$^$9!#(B - $B:#!"$"$J$?$,8+$F$$$k%U%!%$%kL>$rI=<($7$F$$$^$9!#(BNN%$B$O8=:_%9%/%j!<%s>e(B -$B$K%U%!%$%k$N0lHV>e$+$i2?%Q!<%;%s%HL\$,I=<($5$l$F$$$k$+$r<($7$F$$$^$9!#%U%!(B -$B%$%k$N0lHV:G=i$rI=<($7$F$$$k$J$i$P!"(B--Top--$B$HI=<($5$l$F$^$9!#%U%!%$%k$N0lHV(B -$B:G8e$rI=<($7$F$$$k$J$i$P!"(B--Bot--$B$HI=<($5$l$^$9!#2hLL$NCf$K%U%!%$%k$NA4$F$,(B -$BI=<($5$l$F$$$k$J$i$P!"(B--All--$B$HI=<($5$l$^$9!#(B - $B%b!<%I%i%$%s$N>.3g8L$NCf$O!":#$I$s$J%b!<%I$KF~$C$F$$$k$+$r<($7$F$$$^$9!#(B -$B8=:_$O!"%G%U%)%k%H$N(BFundamental$B$KF~$C$F$$$^$9!#$3$l$b%a%8%c!<%b!<%I$N0lNc$G(B -$B$9!#(B +$B!v%(%3!<%(%j%"(B +============== - Emacs$B$O(BLisp mode$B$d(BText mode$B$N$h$&$J$3$H$J$k%W%m%0%i%`8@8l$d%F%-%9%H$K(B -$BBP$7$F%(%G%#%C%H$r9T$&$?$a$N4v$D$+$N%a%8%c!<%b!<%I$r;}$C$F$$$^$9!#$I$s$J;~(B -$B$G$bI,$:$$$:$l$+$N%a%8%c!<%b!<%I$N>uBV$K$J$C$F$$$^$9!#(B +$B$b$7$f$C$/$j$H%3%^%s%I$rBG$C$?$J$i$P!"2hLL$N2<$N%(%3!<%(%j%"$H8F$P$l(B +$B$k>l=j$KBG$C$?$b$N$,I=<($5$l$^$9!#%(%3!<%(%j%"$O2hLL$N:G2<9T$G$9!#(B - $B$=$l$>$l$N%a%8%c!<%b!<%I$O4v$D$+$N%3%^%s%I$rA4$/0c$&?6$kIq$$$K$7$F$7$^(B -$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(B -$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$,!"(B -$B$=$l$>$l$N%a%8%c!<%b!<%I$O!"$-$A$s$HF~$l$F$/$l$^$9!#(B - $B$=$l$>$l$N%a%8%c!<%b!<%I$KF~$k$?$a$N%3%^%s%I$O%b!<%IL>$N3HD%$5$l$?$b$N(B -$B$K$J$C$F$$$^$9!#Nc$($P!"(BM-x fundamental-mode$B$O(BFundamental$B$KF~$k$?$a$N$b$N$G(B -$B$9!#(B +$B!v%b!<%I%i%$%s(B +============== - $B$b$7!"1Q8l$r%(%G%#%C%H$9$k$J$i$P!"(BText mode$B$KF~$j$^$9!#(B +$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$&!#(B - >> M-x text-mode $B$H%?%$%W$7$J$5$$!#(B +ISO7-----XEmacs: TUTORIAL.ja (Fundamental)--L670--58%---------------- - $B8=:_$N%a%8%c!<%b!<%I$K$D$$$F$N%I%-%e%a%s%H$r8+$?$$;~$O!"(BC-h m$B$H%?%$%W(B -$B$7$^$9!#(B +$B$3$N9T$O(B XEmacs $B$N>uBV5Z$SJT=8Cf$NJ8>O$K$D$$$FM-1W$J>pJs$rM?$($F$/$l$^(B +$B$9!#(B - >> C-h m $B$r;H$C$F(BText mode$B$H(BFundamental mode$B$N0c$$$rD4$Y$J$5$$!#(B +$B%U%!%$%kL>$K$D$$$F$O$b$&J,$C$F$$$^$9$M!#$=$l$O$"$J$?$,3+$$$?%U%!%$%k$G(B +$B$9!#(B-NN%-- $B$OJ8>OCf$N8=:_0LCV$r<($7$F$$$^$9!#J8>O$N(B NN% $B$,2hLL:G>eCJ$h(B +$B$jA0$K$"$k$H$$$&$3$H$G$9!#$b$7J8>O$N:G=i$N9T$,2hLL$K$"$k;~$K$O(B --00%-- +$B$NBe$j$K(B --Top-- $B$HI=<($7$^$9!#$b$7J8>O$N:G8e$N9T$,2hLL$K$"$k;~$K$O(B +--Bot-- $B$HI=<($7$^$9!#$b$72hLL$KA4It<}$^$C$F$7$^$&$h$&$JC;$$J8>O$r8+$F(B +$B$$$k$H$-$K$O(B --All-- $B$HI=<($7$^$9!#(B + +$B3g8L$K0O$^$l$?ItJ,$O$I$&$JJT=8%b!<%I$K$$$k$+$r<($7$^$9!#%G%U%)%k%H$O(B +"Fundamental" $B$H$$$&%b!<%I!"$3$l$,8=:_$N%b!<%I$G$9!#$3$l$O!V%a%8%c!<%b!<(B +$B%I!J(Bmajor mode$B!K!W$N0lNc$G$9!#(B + +XEmacs $B$K$OB?$/$NO$rJT=8Cf$+$r0UL#$9$k$b(B +$B$N$b$"$j$^$9!#$$$D$G$bI,$:$$$:$l$+$N%a%8%c!<%b!<%I$N>uBV$K$J$C$F$$$^$9!#(B +$B$I$N%a%8%c!<%b!<%I$K$$$k$N$+$O!"%b!<%I%i%$%s$N8=:_$O(B "Fundamental" $B$H(B +$BI=<($7$F$$$kItJ,$r8+$l$PJ,$j$^$9!#(B + +$B3F%a%8%c!<%b!<%I$O4v$D$+$N%3%^%s%I$K0[$J$k?6$kIq$$$r$5$;$^$9!#Nc$($P!"(B +$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(B +$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(B +$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!<(B +$B%I$O3HD%%3%^%s%I$NL>A0$K$J$C$F$$$^$9!#$D$^$j$=$N3HD%%3%^%s%I$r;H$C$F%a(B +$B%8%c!<%b!<%I$r@Z$j49$($k$N$G$9!#Nc$($P!"(BM-x fundamental-mode $B$H$$$&$N(B +$B$O(B Fundamental $B%b!<%I$K@Z$j49$($k$?$a$N%3%^%s%I$G$9!#(B + +$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(B +$B$P!"(BText mode $B$r;H$$$^$7$g$&!#(B + +>> M-x text-mode $B$H%?%$%W$7$F$_$F2<$5$$!#(B + +$B?4G[$7$J$$$G!#$3$l$^$G3X$s$@%3%^%s%I$O$?$$$7$FJQ$o$j$^$;$s$+$i!#$@$1$I!"(B +M-f $B$d(B M-b $B$,%"%]%9%H%m%U%#(B "'" $B$rC18l$N0lIt$@$H2r/$7$@$1$3$H$J$k$N$G$9!#(B + +$B8=:_$N%a%8%c!<%b!<%I$K$D$$$F$N@bL@J8$r8+$k$K$O(B C-h m $B$H%?%$%W$7$^$9!#(B + +>> C-u C-v $B$r0lFsEY$d$C$F$3$N9T$r2hLL$N>e$NJ}$K;}$C$F$$$-$^$7$g$&!#(B +>> C-h m $B$H%?%$%W$7!"(BText mode $B$H(B Fundamental mode $B$N0c$$$r$_$^$7$g$&!#(B +>> q $B$G(B Text mode $B$N@bL@J8$r2hLL$+$i>C$7$^$7$g$&!#(B + +$B%a%8%c!<%b!<%I$,!V%a%8%c!$N%^%$%J!<(B +$B%b!<%I$K1F6A$rM?$($:$K!"$=$l$@$1$r%*%s%*%U$G$-$^$9!#$D$^$j!"%^%$%J!<%b!<(B +$B%I$rA4$/;H$o$J$+$C$?$j!"0l8D$@$1;H$C$?$j!"$$$/$D$+$rF1;~$K;H$C$?$j$G$-(B +$B$k$N$G$9!#(B + +$BDL>o$NJ8>O$rJT=8$7$F$$$k;~$K$H$F$bJXMx$J%^%$%J!<%b!<%I$N0l$D$K%*!<%H%U%#(B +$B%k!J(BAuto Fill$B!K%b!<%I$H$$$&$N$,$"$j$^$9!#$3$N%b!<%I$,%*%s$N;~$KJ8>O$r(B +$BF~NO$7$F$$$C$F9T$rD9$/$7$9$.$?>l9g!"<+F0E*$KC18l$HC18l$N4V$G9T$,J,3d$5(B +$B$l$^$9!JF|K\8l$N>l9g$O$I$NJ8;z$N4V$G$b!K!#(B + +Auto Fill $B%b!<%I$O(B M-x auto-fill-mode $B$H$d$l$P%*%s$K$G$-$^$9!#(B +$B$=$l$,%*%s$N>uBV$G(B M-x auto-fill-mode $B$H$d$l$,%*%U$K$G$-$^$9!#(B +$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$&(B +$B$$$&$N$r!V%b!<%I$r%H%0%k$9$k!W$H8@$$$^$9!#(B + +>> M-x auto-fill-mode $B$H%?%$%W$7$F!"(B "asdf " $B$G;O$^$k9T$rF~NO(B + $B$7$F2<$5$$!#9T$,J,3d$5$l$k$^$G2?EY$b(B "asdf " $B$H%?%$%W$7$^$7$g$&!#%9(B + $B%Z!<%9$rK:$l$:$K!#(BAuto Fill $B$O%9%Z!<%9$,F~NO$5$l$?;~$N$_F/$-$^$9!#(B + +$B1&%^!<%8%s$ODL>o(B 70 $BJ8;z!J%+%i%`!K$G$9$,!"(BC-x f $B%3%^%s%I$G$3$l$rJQ99$9(B +$B$k$3$H$,$G$-$^$9!#;XDj$NJ8;z?t$r?tCM0z?t$H$7$FM?$($^$9!#(B + +>> $B?tCM0z?t(B 20 $B$G(B C-x f $B$r$d$j$^$7$g$&!#(B (C-u 2 0 C-x f)$B!#(B + $B$=$l$+$iE,Ev$JJ8>O!J1Q8l!K$rF~NO$7!"(B20 $BJ8;z$G9T$,J,3d$5$l$k$N$r8+$F(B + $B$_$^$7$g$&!#$=$l$+$i(B C-x f $B%3%^%s%I$G$^$?%^!<%8%s$r(B 70 $BJ8;z$KLa$7$F(B + $B2<$5$$!#(B + +$B%Q%i%0%i%U$NESCf$rJQ99$7$F$b(B Auto Fill $B%b!<%I$O$=$l$r<+F0E*$K%U%#%k$7(B +$BD>$7$O$7$^$;$s!#(B +$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(B +M-q $B$r%?%$%W$7$^$9!#(B + +>> $B%+!<%=%k$r$3$N9TD>A0$N%Q%i%0%i%U$K0\F0$5$;(B M-q $B$H%?%$%W$7$F2<$5$$!#(B + +$B!v8!:w(B +====== - >> C-x 1$B$G%I%-%e%a%s%H$r2hLL$+$i>C$7$J$5$$!#(B +$BJ8>OCf$NFCDj$NJ8;zNs$r!"A08~$-$K$b8e8~$-$K$bC5$9;v$,$G$-$^$9!#J8;zNs$r(B +$BC5$9$H$$$&$N$O%+!<%=%k0\F0%3%^%s%I$G$9!#$D$^$j!"l=j$^$G%+!<%=%k$r0\F0$5$;$k$N$G$9!#(B - $B:8C<$N(B '[--]' $B$O8=:_$N%-!\$7$$@bL@$O(B -$B!V$?$^$4!W$N%^%K%e%"%k$rD4$Y$F2<$5$$!#(B +XEmacs $B$N8!:w%3%^%s%I$OB>$NBg35$N%(%G%#%?$N8!:w%3%^%s%I$H$O0[$j!V%$%s(B +$B%/%j%a%s%?%k!W$G$9!#8!:w$9$kJ8;zNs$r%?%$%W$7$F$$$k$=$P$+$i8!:w$,5/$k$N(B +$B$G$9!#(B - $B$=$N$9$01&$K$O%3!<%IBN7O(B (coding-system) $B$K4X$9$k%U%i%0$N>uBV$,I=(B -$B<($5$l$F$$$^$9!#(BMule $B$O!"%U%!%$%kF~=PNO!"F~NO!"2hLL=PNO$K$D$$$F!"$=$l$>$lFH(B -$BN)$K%3!<%IBN7O$r;XDj$5$;$k$3$H$,=PMh$^$9$,!"DL>o$O%U%!%$%kMQ$N%3!<%IBN7O$N(B -$B%K!<%b%K%C%/$N$_I=<($7$F$$$^$9!#(B +$B8!:w$r;O$a$k$?$a$N%3%^%s%I$O!"A08~$-$K8!:w$9$k$J$i$P(B C-s$B!"8e8~$-$J$i(B +C-r $B$G$9!#$^$@$G$9!*!*:#$O$^$@;n$5$J$$$G2<$5$$!#(B - >> $B%b!<%I%i%$%s>e$K(B"J:","S:",$B$b$7$/$O(B "E:"$B$,I=<($5$l$F$$$k$+$I$&$+3N(B - $BG'$7$J$5$$!#(B +C-s $B$rBG$D$H(B "I-search" $B$H$$$&J8;zNs$,%(%3!<%(%j%"$KI=<($5$l$k$N$,8+$((B +$B$k$G$7$g$&!#$3$l$O(B XEmacs $B$,%$%s%/%j%a%s%?%k8!:w$H$$$&>uBV$K$$$F!"$"$J(B +$B$?$,C5$7$?$$J8;zNs$rF~NO$9$k$N$rBT$C$F$$$k$N$G$9!#(B $B$rBG$F$P8!(B +$B:w$r=*$o$l$^$9!#(B - $B:G=i$N0lJ8;z$,%3!<%IBN7O$N%K!<%b%K%C%/!"> $B$5$F(B C-s $B$H%?%$%W$7$F8!:w$r;O$a$^$7$g$&!#$f$C$/$j$H#1J8;z$:$D(B + "cursor" $B$H$$$&C18l$rF~NO$7$^$9!##1J8;zBG$DKh$K%+!<%=%k$,$I$&F0$/$+(B + $B8+$^$7$g$&!#(B + $B$5$"!"(B"cursor" $B$,#12s8+$D$+$j$^$7$?!#(B +>> $B$b$&0lEY(B C-s $B$HBG$C$F> $B:#EY$O(B $B$r#42sBG$C$F!"%+!<%=%k$NF0$-$r8+$F2<$5$$!#(B +>> $B$HBG$C$F8!:w$r=*N;$7$^$7$g$&!#(B - $B> C-x C-k t$B$r(B2$BEY9T$$$J$5$$!#(B +$BCm0U!'%7%9%F%`$K$h$C$F$O(B C-s $B$H%?%$%W$9$k$H2hLL$,F0$+$J$/$J$j(B XEmacs +$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(B +$B%m!<%k$H8F$P$l$k#O#S$N5!G=$,(B C-s $B$rB*$(!"(BXEmacs $B$KEO$5$J$$$h$&$K$7$F$$(B +$B$k$N$G$9!#$3$l$r2r=|$9$k$K$O(B C-q $B$r%?%$%W$7$^$9!#$=$l$+$i(B XEmacs $B%^%K%e(B +$B%"%k$N(B "Spontaneous Entry to Incremental Search ($BCN$i$L4V$K%$%s%/%j%a(B +$B%s%?%k%5!<%A$K$J$k(B)" $B$N@a$rFI$s$G$/$@$5$$!#$3$N$d$C$+$$$J#O#S$N5!G=$K(B +$B$I$&BP=h$9$l$PNI$$$+$,:\$C$F$$$^$9!#(B - $BF~NO%b!<%I$,(BJIS$B%3!<%I$N@_Dj$H$J$C$F$$$k;~!"$b$7$"$J$?$N;H$C$F$$$kC$B$b(BM-<$BJ8;z(B>$B$bF1$8F/$-$r$7$^$9!#:#$^$G$N@bL@$G(BESC -<$BJ8;z(B>$B$H9T$J$C$F$$$?$H$3$m$,!"(BM-<$BJ8;z(B>$B$H$J$j$^$9!#Cm0U$7$J$1$l$P$J$i$J$$$N(B -$B$O!"%7%U%H(BJIS$B$d(BEUC$B%3!<%I$N;~$O;HMQ$G$-$^$;$s!#(B +$B%$%s%/%j%a%s%?%k8!:w$NESCf$G(B $B$rBG$D$H8!:wJ8;zNsCf$N#1HV8e$m$N(B +$BJ8;z$,>C$($^$9!#$=$7$F!"%+!<%=%k$O!"A02s$N0LCV$KLa$j$^$9!#$?$H$($P!"(B +"c" $B$H%?%$%W$7$F:G=i$N(B "c" $B$rC5$7$^$9!#$=$l$+$i(B "u" $B$rBG$D$H:G=i$N(B +"cu" $B$N>l=j$K%+!<%=%k$,F0$-$^$9!#$=$3$G(B $B$rBG$D$H(B "u" $B$r8!:wJ8(B +$B;zNs$+$i>C$7$F!"%+!<%9%k$O:G=i$K(B "c" $B$,8=$l$?>l=j$KLa$j$^$9!#(B - $B%3!<%IBN7O$N$N@Z$jBX$($O!"3F!9$N%P%C%U%!$KBP$7$F$N$_M-8z$G$9!#$=$l$>$l(B -$B$N!"%3!<%IBN7O;XDj$K$D$$$F$O!"(BC-h a coding-system $B$G8+$k$3$H(B -$B$,=PMh$^$9!#(B - >> C-h a coding-system $B$G=P$F$/$k%I%-%e%a%s%HCf$N!"(B - set-display-coding-system, set-file-coding-system, - set-process-coding-system $B$N@bL@$rFI$_$J$5$$!#(B +C-s $B$O!"8=:_$N%+!<%=%k0LCV0J9_$K=P$F$/$k8!:wJ8;zNs$rC5$7;O$a$^$9!#$b$7!"(B +$BJ8>O$NA0$NJ}$rC5$7$?$+$C$?$i!"(BC-r $B$r%?%$%W$7$^$9!#$3$l$^$G$N(B C-s $B$K$D(B +$B$$$F$N@bL@$O$9$Y$F(B C-r $B$K$bEv$F$O$^$j$^$9!#8!:w$NJ}8~$,H?BP$J$@$1$G$9!#(B -$B8!:w(B -===== +$B!vJ#?t$N%&%#%s%I%&(B +================== - $BJ8;zNs$r!"%U%!%$%kFb$G!"A0J}Kt$O8eJ}$K!"C5$9;v$,$G$-$^$9!#8!:w$r;O$a$k(B -$B%3%^%s%I$O!"%+!<%=%k0LCV0J9_$r8!:w$9$k$J$i$P(B C-s$B!"%+!<%=%k0LCV0JA0$J$i$P(B -C-r $B$G$9!#(BC-s $B$r%?%$%W$9$k$H!"%(%3!<%(%j%"$K(B "I-search:"$B$H$$$&J8;zNs$,%W%m(B -$B%s%W%H$H$7$FI=<($5$l$^$9!#(BESC$B$r2!$9$H!"=*N;$G$-$^$9!#(B +XEmacs $B$NAGE($J5!G=$N0l$D$H$7$F!"0l$D$N2hLL$KF1;~$K$$$/$D$b$N%&%#%s%I(B +$B%&$rI=<($9$k$3$H$,$G$-$^$9!#(B +>> $B%+!<%=%k$r$3$N9T$K;}$C$F$-$F(B C-u 0 C-l $B$H%?%$%W$7$F2<$5$$!#(B - >> C-s$B$G8!:w$,;O$^$j$^$9!#$=$l$+$i!"$f$C$/$j$H#1J8;z$:$D(B"cursor"$B$H$$(B - $B$&C18l$rF~NO$7$^$9!##1J8;zF~NO$9$k$4$H$K!"%+!<%=%k$O!"$I$s$JF0$-(B - $B$r$7$^$9$+(B? +>> $B$=$l$+$i(B C-x 2 $B$H%?%$%W$72hLL$r#2$D$N%&%#%s%I%&$KJ,3d$7$^$7$g$&!#(B + $B$I$A$i$N%&%#%s%I%&$b$3$NF~Lg%,%$%I$rI=<($7$F$$$^$9!#%+!<%=%k$O>e$N(B + $B%&%#%s%I%&$K$"$j$^$9!#(B - >> $B$b$EY(B C-s $B$r%?%$%W$9$k$H!"> C-M-v $B$H%?%$%W$72<$N%&%#%s%I%&$r%9%/%m!<%k$5$;$^$7$g$&!#(B + $B!J%a%?%-!<$,$J$$>l9g$O(B ESC C-v $B$H%?%$%W$7$^$9!#!K(B - >> $B$r#42sF~NO$7$F!"%+!<%=%k$NF0$-$r8+$J$5$$!#(B +>> C-x o $B!J(B"o" $B$O(B "other$B!JB>J}!K(B" $B$r0UL#$7$^$9!K$r%?%$%W$72<$N%&%#%s%I(B + $B%&$K%+!<%=%k$r0\$7$F2<$5$$!#(B +>> $B2<$N%&%#%s%I%&$G(B C-v $B$d(B M-v $B$r;H$C$F%9%/%m!<%k$5$;$^$7$g$&!#(B + $B$3$3$K=q$$$F$"$k;X<($O>e$N%&%#%s%I%&$GFI$_?J$s$G$/$@$5$$!#(B - >> ESC$B$r2!$7$F!"=*N;$7$^$9!#(B +>> $B$b$&0lEY(B C-x o $B$H%?%$%W$7!"%+!<%=%k$r>e$N%&%#%s%I%&$KLa$7$^$9!#(B + $B%+!<%=%k$O>e$N%&%#%s%I%&$N85$"$C$?0LCV$KLa$j$^$9!#(B - $BC5$7$?$$J8;zNs$r%?%$%WCf$G$b!"%?%$%W$7$?J8;zItJ,$@$1$G!"8!:w$r;O$a$^$9!#(B -$Bo$NJT=8%3%^%s%I$O3'%+!<%=%k$,$"$k%&%#%s%I%&$KBP$7(B +$B$FF/$-$^$9!#$=$N%&%#%s%I%&$r(B "selected window ($BA*BrCf$N%&%#%s%I%&(B)" $B$H(B +$B8F$S$^$9!#(B - $B8!:w$B$rF~NO$9$k$H!"8!:wJ8;zNs$N#1HV8e$m$NJ8;z$,>C$($^$9!#(B -$B$=$7$F!"%+!<%=%k$O!"A02s$N0LCV$KLa$j$^$9!#$?$H$($P!"(B"cu"$B$H%?%$%W$7$F!":G=i(B -$B$N(B"cu"$B$N0LCV$K%+!<%=%k$,F0$$$?$H$7$^$9!#$3$3$G(B$B$rF~NO$9$k$H!"%5!<%A(B -$B%i%$%s$N(B'u'$B$,>C$(!"%+!<%=%k$O!"(B'u'$B$r%?%$%W$9$kA0$K!"%+!<%=%k$,$"$C$?(B'c'$B$N0L(B -$BCV$K!"0\F0$7$^$9!#(B +C-M-v $B%3%^%s%I$O!"0l$D$N%&%#%s%I%&$GJ8>O$rJT=8Cf$KB>$N%&%#%s%I%&$r;2>H(B +$B$7$F$$$k;~$KLrN)$A$^$9!#JT=8Cf$N>l=j$K%+!<%=%k$rJ]$C$?$^$^!"(BC-M-v $B$GB>(B +$B$N%&%#%s%I%&$rFI$_?J$a$F9T$/$3$H$,$G$-$^$9!#(B - $B8!:wl9g$O!"%3%s%H%m!<(B +$B%k%-!<$H%a%?%-!<$r2!$7$J$,$i(B v $B$r%?%$%W$7$^$9!#%3%s%H%m!<%k%-!<$H%a%?(B +$B%-!<$O$I$A$i$r@h$K2!$7$F$b9=$$$^$;$s!#$I$A$i$b$=$N8e$K%?%$%W$5$l$kJ8;z(B +$B$KBP$9$k=$>~%-!<(B (modifier key) $B$H$7$FF/$/$+$i$G$9!#(B - C-s $B$O!"8=:_$N%+!<%=%k0LCV0J9_$K=P$F$/$k8!:wJ8;zNs$rC5$7$^$9!#$b$7!"A0(B -$B$NJ}$rC5$7$?$+$C$?$i!"(BC-r $B$r%?%$%W$9$k$3$H$G!"5UJ}8~8!:w$,$G$-$^$9!#(BC-s $B$H(B -C-r $B$O!"8!:w$NJ}8~$,H?BP$J$@$1$G!"A4$FF1$8F/$-$r$7$^$9!#(B +$B%a%?%-!<$,L5$$>l9g!"(BESC $B%-!<$r;H$$$^$9$,!"$3$N>l9g=gHV$,Bg;v$G$9!#$^$:(B +ESC $B$r2!$7$F$+$iN%$7$F(B CTRL-v $B$rBG$A$^$9!#(BCTRL-ESC v $B$G$OBLL\$G$9!#$3(B +$B$l$O(BESC $B$O$=$l<+BN$,0l$D$NJ8;z$G=$>~%-!<$G$O$J$$$+$i$G$9!#(B -$B%j%+!<%7%V(B $B%(%G%#%F%#%s%0(B $B%l%Y%k(B +>> $B>e$N%&%#%s%I%&$G(B C-x 1 $B$H%?%$%W$72<$N%&%#%s%I%&$r>C$7$^$7$g$&(B - $B$H$-$I$-!"!JITK\0U$K!K%j%+!<%7%V(B $B%(%G%#%F%#%s%0(B $B%l%Y%k$H8F$P$l$k>uBV$K(B -$BF~$k$3$H$,$"$j$^$9!#%a%8%c!<%b!<%I$N>.3g8L(B'()'$B$N2s$j$rCf3g8L(B'[]'$B$G0O$s$@$b(B -$B$N$,%b!<%I%i%$%s>e$KI=<($5$l$^$9!#Nc$($P!"(B(Fundamental)$B$HI=<($5$l$kBe$o$j$K(B -[(Fundamental)]$B$N$h$&$K$J$j$^$9!#(B +$B!J$b$72<$N%&%#%s%I%&$G(B C-x 1 $B$H%?%$%W$9$k$H>e$N%&%#%s%I%&$,>C$($^$9!#(B +$B$3$N%3%^%s%I$O!V8=:_<+J,$,$$$k%&%#%s%I%&$@$1$K$7$J$5$$!W$H$$$&$b$N$@$H(B +$B;W$C$F2<$5$$!#!K(B -$BCm0U(B: $B$3$3$G$O%j%+!<%7%V(B $B%(%G%#%F%#%s%0(B $B%l%Y%k<+BN$K$D$$$F$O@bL@$7(B - $B$^$;$s!#(B +$BF1$8%P%C%U%!$rN>J}$N%&%#%s%I%&$KI=<($9$kI,MW$O$"$j$^$;$s!#0lJ}$N%&%#%s(B +$B%I%&$G(B C-x C-f $B$G%U%!%$%k$r3+$$$F$bB>J}$N%&%#%s%I%&$OJQ2=$7$^$;$s!#3F(B +$B%&%#%s%I%&$K$*$$$FJL!9$N%U%!%$%k$r3+$/$3$H$,$G$-$k$N$G$9!#(B - $B%j%+!<%7%V(B $B%(%G%#%F%#%s%0(B $B%l%Y%k$+$iH4$1$G$k$?$a$K$O!"(BM-x top-level -$B$H%?%$%W$7$^$9!#(B +>> C-x 4 C-f $B$H%?%$%W$7B3$1$F2?$+<+J,$N%U%!%$%kL>$rF~NO$7$F2<$5$$!#(B + $B$GF~NO$r=*$o$i$;$F2<$5$$!#:#;XDj$7$?%U%!%$%k$,2<$N%&%#%s%I(B + $B%&$K8=$l$^$9!#%+!<%=%k$b$=$C$A$K0\$j$^$9!#(B - >> $B;n$7$F$_$F2<$5$$!#%9%/%j!<%s$NDl$K(B"Back to top level"$B$HI=<($5$l$^(B - $B$9!#(B +>> C-x o $B$H%?%$%W$7>e$N%&%#%s%I%&$KLa$C$F2<$5$$!#$=$l$+$i(B C-x 1 $B$G2<$N(B + $B%&%#%s%I%&$r>C$7$^$7$g$&!#(B - $BK\Ev$O!"$3$N;n$_$,9T$o$l$?;~$O!"$9$G$K%H%C%W%l%Y%k$K$$$?$N$G$9!#(BM-x -top-level$B$O!"2?$b1F6A$rM?$($F$$$^$;$s!#(B - $B%j%+!<%7%V(B $B%(%G%#%F%#%s%0(B $B%l%Y%k$+$iH4$1=P$k$N$KBP$7$F$O(BC-g$B$O8z$-$^$;(B -$B$s!#(B +$B!v:F5"JT=8%l%Y%k(B (RECURSIVE EDITING LEVELS) +$B;~!9!JITK\0U$K!K:F5"JT=8%l%Y%k$H8F$P$l$k>uBV$KF~$k$3$H$,$"$j$^$9!#%b!<(B +$B%I%i%$%s$N%a%8%c!<%b!<%IL>$r0O$`4]3g8L(B "()" $B$,$5$i$Knl3g8L(B "[]" $B$G0O$^(B +$B$l$^$9!#Nc$($P!"(B(Fundamental) $B$HI=<($5$l$kBe$o$j$K(B [(Fundamental)] $B$N(B +$B$h$&$K$J$j$^$9!#(B -$B%X%k%W(B -====== +$B:F5"JT=8%l%Y%k$+$iH4$1=P$9$K$O(B ESC ESC ESC $B$H%?%$%W$7$^$9!#$3$l$OHFMQ(B +$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(B +$BH4$1$?$j$9$k$N$K$b;H$($^$9!#(B - Emacs$B$K$O!"$?$/$5$s$NLr$KN)$D5!G=$,$"$j!"$3$3$G!"$9$Y$F$r@bL@$9$k$3$H(B -$B$O!"IT2DG=$G$9!#$7$+$7!"$^$@CN$i$J$$B?$/$N5!G=$r3X$V$?$a$K$O!"(B$B$H8F$P(B -$B$l$k(B C-h $B$r%?%$%W$9$k$3$H$G!"$?$/$5$s$N>pJs$rC$9(B -$B$3$H$,$G$-$^$9!#(B +>> M-x $B$H%?%$%W$7%_%K%P%C%U%!$KF~$C$F2<$5$$!#$=$l$+$i(B ESC ESC ESC $B$H%?(B + $B%$%W$7H4$1=P$7$F$_$^$7$g$&!#(B - $B:G$b4pK\E*$J$b$N$O!"(BC-h c $B$G$9!#$3$l$KB3$$$F%-!<$rF~NO$9$k$H!"$=$N%3%^(B -$B%s%I$K$D$$$F$NC;$$@bL@$rI=<($7$^$9!#(B +C-g $B$G$O:F5"JT=8%l%Y%k$+$i$OH4$1=P$;$^$;$s!#$3$l$O!"(BC-g $B$,:F5"JT=8%l%Y(B +$B%kFb$G$N%3%^%s%I$d0z?t$rC$9$N$K;H$o$l$F$$$k$+$i$G$9!#(B - >> C-h c C-p $B$H%?%$%W$7$F$_$J$5$$!#(B"C-p runs the command previous- - line"$B$N$h$&$J%a%C%;!<%8$,I=<($5$l$k$O$:$G$9!#(B - $B8+$?$3$H$O$"$k$,!"3P$($F$O$$$J$$%3%^%s%I$b;W$$=P$;$k$N$G$9!#(BC-x C-s $B$N(B -$B$h$&$JJ#?t$G#1$D$N%3%^%s%I$b(BC-h c $B$N8e$m$KB3$1$i$l$^$9!#(B +$B!v$b$C$H$b$C$H%X%k%W(B +==================== - $B$b$C$H>\$7$/CN$j$?$+$C$?$i!"(Bc $B$NBe$o$j$K(B k $B$r;XDj$7$^$9!#(B +$B$3$NF~Lg%,%$%I$G$O(B XEmacs $B$r;H$$;O$a$k$N$K==J,$J>pJs$rDs6!$7$?$D$b$j$G(B +$B$9!#(BXEmacs $B$K$O$"$^$j$K$bB?$/$N5!G=$,$"$k$N$G!"$3$3$G$9$Y$F$r@bL@$9$k(B +$B$N$OL5M}$G$9!#$=$l$G$bLr$KN)$D5!G=$r$b$C$HB?$/3X$S$?$$$H;W$&?M$N$?$a$K(B +$B$O!"(BXEmacs $B$N%3%^%s%I$N@bL@$rFI$`$?$a$N%3%^%s%I$,$"$j$^$9!#$3$l$i$N(B +$B!V%X%k%W!W%3%^%s%I$O3'(B Control-h $BJ8;z!J%X%k%WJ8;z$H8F$S$^$9!K$G;O$^$j(B +$B$^$9!#(B + +$B%X%k%W5!G=$r;H$&$K$O!"(BC-h $B$KB3$$$F$I$s$Jl9g$O(B C-h ? $B$H%?%$%W$7$^$7$g$&!#(B +$B$I$s$JC$9$3$H$,$G$-$^$9!#(B - >> C-h k C-p $B$H%?%$%W$7$F$_$J$5$$!#(B +$B!J%5%$%H$K$h$C$F$O(B C-h $BJ8;z$r:FB+G{$7$^$9!#Am3gE*$Jl9g$O%7%9%F%`4IM}A0$H5!G=$,I=<($5$l$^$9!#FI$_=*$($?$i!"(B -C-x 1 $B$H%?%$%W$9$k$H!"H4$1$i$l$^$9!#(B +$B:G$b4pK\E*$J%X%k%W5!G=$O(B C-h c $B$G$9!#(BC-h$B!"$=$l$+$i(B c$B!"$=$7$F%3%^%s%I$N(B +$BJ8;z$K$bLr$KN)$D%*%W%7%g%s$,$"$j$^$9!#(B +>> C-h c Control-p $B$H%?%$%W$7$F$_$^$7$g$&!#(B + $B0J2<$N$h$&$J%a%C%;!<%8$,I=<($5$l$k$O$:$G$9!#(B - C-h f $B%U%!%s%/%7%g%sL>$rF~NO$9$k$H!"%U%!%s%/%7%g%s$rI=<($7$^$9!#(B + C-p runs the command previous-line - >> C-h f previous-line $B$r%?%$%W$7!"(B $B$r2!$7$J$5$$!#(BC-p $B%3%^%s(B - $B%I$rpJs$rI=<($7$^$9!#(B +$B$3$l$O!V%U%!%s%/%7%g%s$NL>A0!W$rI=<($7$?$N$G$9!#%U%!%s%/%7%g%sL>$O$O$=$N%3%^%s%I$,2?$r$9$k$b$N$J$N$+$,J,$k$h$&$KIU$1$i$l$^$9(B +$B$N$G!"4JC1$J@bL@$H$7$F$b$=$N$^$^Lr$KN)$A$^$9!#0lEY3X$s$@%3%^%s%I$K$D$$(B +$B$F;W$$=P$9$K$O==J,$G$9!#(B - C-h a $B%-!<%o!<%I$rF~NO$9$k$H!"L>A0$K$=$N%-!<%o!<%I$r4^$`!"A4$F$N%3(B - $B%^%s%I$rI=<($7$^$9!#$3$l$i$N%3%^%s%I$O$9$Y$F(BESC x $B$Gl9g$N!K(B v $B$J$I$NJ#?tJ8;z(B +$B$N%3%^%s%I$r(B C-h c $B$N8e$K%?%$%W$9$k$3$H$b$G$-$^$9!#(B - >> C-h a file $B$H%?%$%W$7!"(B$B$r2!$7$J$5$$!#L>A0$K(B"file"$B$H$$$&J8(B - $B;z$r;}$DA4$F$N%3%^%s%I$rI=<($7$^$9!#$^$?!"(Bfind-file $B$d(B write-file - $B$H$$$&L>$N(B C-x C-f $B$d(B C-x C-w $B$N$h$&$J%3%^%s%I$bI=<($5$l$^$9!#(B +$B%3%^%s%I$K$D$$$F$b$C$HB?$/$N>pJs$,M_$7$1$l$P(B C-h c $B$NBe$o$j$K(B C-h k $B$r(B +$B;H$$$^$9!#(B -$B$*$o$j$K(B -======== +>> C-h k Control-p $B$H%?%$%W$7$F$_$^$7$g$&!#(B -$BK:$l$:$K!'(B $B=*N;$9$k$K$O!"(BC-x C-c $B$H$7$^$9!#(B +XEmacs$B$N%&%#%s%I%&$K!"%3%^%s%I$NL>A0$HF1;~$K$=$N5!G=$N@bL@$,I=<($5$l$^(B +$B$9!#FI$_=*$($?$i!"(Bq $B$H%?%$%W$7$F%X%k%W$N%F%-%9%H$r>C$7$^$7$g$&!#(B +C-h $B$K$OB>$K$bLr$KN)$D%*%W%7%g%s$,$"$j$^$9!#(B - $B$3$NF~LgJT$O!"$^$C$?$/$N=i?4$rF~NO$7$^$9!#(B +>> C-h f previous-line $B$H%?%$%W$7$F$_$^$7$g$&!#(B + C-p $B%3%^%s%I$rpJs$rI=<($7(B + $B$^$9!#(B - $B$b$7!"(BEMACS $B$r2?F|$+$G$b;H$C$F$_$l$P!"$=$l$r$d$a$F$7$^$&$3$H$J$I$G$-$J(B -$B$/$J$k$G$7$g$&!#:G=i$O8MOG$&$+$bCN$l$^$;$s!#$7$+$7!"$=$l$O$I$s$J%(%G%#%?$G(B -$B$bF1MM$G$9!#(BEMACS $B$N$h$&$K!"Hs>o$KB?$/$N$3$H$,$G$-$k>l9g$K$OFC$K$=$&$G$7$g(B -$B$&!#$=$7$F!"(BEMACS $B$G$O!"A0$K4^$`A4$F$N4X?t$HJQ?t$r%j%9%H%"%C%W$7$^$9!#(B + Meta-x $B$G5/F0$G$-$k%3%^%s%I$K$O:8B&$K%"%9%?%j%9%/$,IU(B + $B$-$^$9!#(B +>> C-h a newline $B$H%?%$%W$7$F$_$F2<$5$$!#(B +"newline"$B$H$$$&J8;zNs$rL>A0$N0lIt$K;}$DA4$F$N4X?t$HJQ?t$rI=<($7$^$9!#(B +$B4X?t$dJQ?t$r$h$j>\$7$/CN$k$?$a$K(B $B$+??Cf$N%^%&%9%\%?%s$r2!$7$F(B +$B$/$@$5$$!#(Bhyper-apropos $B$r=*N;$9$k$?$a$K$O(B `q' $B$rF~NO$7$^$9!#(B -$B $B$,(BNemacs/Mule $BMQ(B +$B$KJQ99!"$5$i$K5HEDLPO$O(BGMW + -Wnn + Nemacs$B$r;H$C$F=q$-$^$7$?!#$=$N$h$&$JAG@2$i$7$$%W%m%0%i%`$r:n$C$?J}!9(B -$B$X46M;R$5$s!"$I$&$b$"$j$,$H$&!#(B +$B!vCx:n8"I=<((B +============ +$B$3$3$K85$N1Q8lHG$NCx:n8"I=<($r$=$N$^$^IU$1$^$9!#$3$NK]LuHG$b$3$l$K=>$$(B +$B$^$9!#(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: -$B8mLu!"13!"$=$NB>!"$NJ8@U$O!"0J2<$N ^ <------------------------------------------------------> - 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. + +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); + diff --git a/info/lispref.info b/info/lispref.info index 256af14..97fd42d 100644 --- a/info/lispref.info +++ b/info/lispref.info @@ -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  Tag Table: (Indirect) @@ -529,361 +529,361 @@ Node: Backup Files1117641 Node: Making Backups1119038 Node: Rename or Copy1121787 Node: Numbered Backups1124280 -Node: Backup Names1126524 -Node: Auto-Saving1129816 -Node: Reverting1137958 -Node: Buffers1141116 -Node: Buffer Basics1142533 -Node: Current Buffer1144586 -Node: Buffer Names1149274 -Node: Buffer File Name1152479 -Node: Buffer Modification1156598 -Node: Modification Time1158791 -Node: Read Only Buffers1162166 -Node: The Buffer List1164584 -Node: Creating Buffers1169414 -Node: Killing Buffers1171560 -Node: Indirect Buffers1175291 -Node: Windows1177863 -Node: Basic Windows1179341 -Node: Splitting Windows1182439 -Node: Deleting Windows1189328 -Node: Selecting Windows1192008 -Node: Cyclic Window Ordering1195137 -Node: Buffers and Windows1199761 -Node: Displaying Buffers1201602 -Node: Choosing Window1206778 -Node: Window Point1214494 -Node: Window Start1216540 -Node: Vertical Scrolling1221030 -Node: Horizontal Scrolling1227167 -Node: Size of Window1230676 -Node: Position of Window1235394 -Node: Resizing Windows1237634 -Node: Window Configurations1243063 -Node: Frames1246488 -Node: Creating Frames1248257 -Node: Frame Properties1249598 -Node: Property Access1250414 -Node: Initial Properties1251263 -Node: X Frame Properties1253749 -Node: Size and Position1258383 -Node: Frame Name1260379 -Node: Frame Titles1261293 -Node: Deleting Frames1263117 -Node: Finding All Frames1263717 -Node: Frames and Windows1265711 -Node: Minibuffers and Frames1267416 -Node: Input Focus1268334 -Node: Visibility of Frames1271411 -Node: Raising and Lowering1273330 -Node: Frame Configurations1275706 -Node: Frame Hooks1276300 -Node: Consoles and Devices1278105 -Node: Basic Console Functions1280848 -Node: Basic Device Functions1281271 -Node: Console Types and Device Classes1281987 -Node: Connecting to a Console or Device1284184 -Node: The Selected Console and Device1286347 -Node: Console and Device I/O1287373 -Node: Positions1288137 -Node: Point1289106 -Node: Motion1292196 -Node: Character Motion1292963 -Node: Word Motion1295200 -Node: Buffer End Motion1296701 -Node: Text Lines1298198 -Node: Screen Lines1302793 -Node: List Motion1306856 -Node: Skipping Characters1310264 -Node: Excursions1312483 -Node: Narrowing1315515 -Node: Markers1320840 -Node: Overview of Markers1321746 -Node: Predicates on Markers1326438 -Node: Creating Markers1327684 -Node: Information from Markers1331721 -Node: Changing Markers1332819 -Node: The Mark1334197 -Node: The Region1342691 -Node: Text1348377 -Node: Near Point1351076 -Node: Buffer Contents1355263 -Node: Comparing Text1356669 -Node: Insertion1358077 -Node: Commands for Insertion1361919 -Node: Deletion1364875 -Node: User-Level Deletion1368470 -Node: The Kill Ring1372631 -Node: Kill Ring Concepts1374805 -Node: Kill Functions1375859 -Node: Yank Commands1377764 -Node: Low-Level Kill Ring1379635 -Node: Internals of Kill Ring1382421 -Node: Undo1385201 -Node: Maintaining Undo1389530 -Node: Filling1392150 -Node: Margins1398144 -Node: Auto Filling1402073 -Node: Sorting1403254 -Node: Columns1412554 -Node: Indentation1415070 -Node: Primitive Indent1415849 -Node: Mode-Specific Indent1417093 -Node: Region Indent1419604 -Node: Relative Indent1422552 -Node: Indent Tabs1424934 -Node: Motion by Indent1426255 -Node: Case Changes1427034 -Node: Text Properties1430285 -Node: Examining Properties1432098 -Node: Changing Properties1433965 -Node: Property Search1437556 -Node: Special Properties1442267 -Node: Saving Properties1442548 -Node: Substitution1445690 -Node: Registers1448960 -Node: Transposition1451503 -Node: Change Hooks1452397 -Node: Transformations1454437 -Node: Searching and Matching1458822 -Node: String Search1459953 -Node: Regular Expressions1464677 -Node: Syntax of Regexps1466044 -Node: Regexp Example1480423 -Node: Regexp Search1482593 -Node: POSIX Regexps1488681 -Node: Search and Replace1490516 -Node: Match Data1493881 -Node: Simple Match Data1495011 -Node: Replacing Match1499276 -Node: Entire Match Data1501610 -Node: Saving Match Data1503601 -Node: Searching and Case1504982 -Node: Standard Regexps1507016 -Node: Syntax Tables1509214 -Node: Syntax Basics1510328 -Node: Syntax Descriptors1513300 -Node: Syntax Class Table1515150 -Node: Syntax Flags1521188 -Node: Syntax Table Functions1524405 -Node: Motion and Syntax1528269 -Node: Parsing Expressions1529721 -Node: Standard Syntax Tables1535790 -Node: Syntax Table Internals1536634 -Node: Abbrevs1537660 -Node: Abbrev Mode1539463 -Node: Abbrev Tables1540183 -Node: Defining Abbrevs1541716 -Node: Abbrev Files1543621 -Node: Abbrev Expansion1545394 -Node: Standard Abbrev Tables1550025 -Node: Extents1551184 -Node: Intro to Extents1552427 -Node: Creating and Modifying Extents1556421 -Node: Extent Endpoints1557928 -Node: Finding Extents1561191 -Node: Mapping Over Extents1564939 -Node: Extent Properties1571056 -Node: Detached Extents1581200 -Node: Extent Parents1583059 -Node: Duplicable Extents1584753 -Node: Extents and Events1587974 -Node: Atomic Extents1589881 -Node: Specifiers1590328 -Node: Introduction to Specifiers1592441 -Node: Specifiers In-Depth1594751 -Node: Specifier Instancing1599663 -Node: Specifier Types1602925 -Node: Adding Specifications1607999 -Node: Retrieving Specifications1617361 -Node: Specifier Tag Functions1621096 -Node: Specifier Instancing Functions1624330 -Node: Specifier Example1627737 -Node: Creating Specifiers1630893 -Node: Specifier Validation Functions1633142 -Node: Other Specification Functions1635526 -Node: Faces and Window-System Objects1639345 -Node: Faces1639669 -Node: Merging Faces1641286 -Node: Basic Face Functions1643247 -Node: Face Properties1645345 -Node: Face Convenience Functions1655587 -Node: Other Face Display Functions1658717 -Node: Fonts1659530 -Node: Font Specifiers1660231 -Node: Font Instances1660472 -Node: Font Instance Names1661439 -Node: Font Instance Size1662280 -Node: Font Instance Characteristics1663566 -Node: Font Convenience Functions1664735 -Node: Colors1666025 -Node: Color Specifiers1666465 -Node: Color Instances1666692 -Node: Color Instance Properties1667436 -Node: Color Convenience Functions1668062 -Node: Glyphs1669115 -Node: Glyph Functions1670707 -Node: Creating Glyphs1671114 -Node: Glyph Properties1672701 -Node: Glyph Convenience Functions1681868 -Node: Glyph Dimensions1685815 -Node: Images1686895 -Node: Image Specifiers1687344 -Node: Image Instantiator Conversion1698765 -Node: Image Instances1700130 -Node: Image Instance Types1700881 -Node: Image Instance Functions1703536 -Node: Glyph Types1708105 -Node: Mouse Pointer1709877 -Node: Redisplay Glyphs1712880 -Node: Subwindows1713913 -Node: Annotations1714156 -Node: Annotation Basics1715172 -Node: Annotation Primitives1719110 -Node: Annotation Properties1720439 -Node: Locating Annotations1723479 -Node: Margin Primitives1724316 -Node: Annotation Hooks1726210 -Node: Display1726870 -Node: Refresh Screen1727848 -Node: Truncation1729759 -Node: The Echo Area1732284 -Node: Warnings1738719 -Node: Invisible Text1743155 -Node: Selective Display1745734 -Node: Overlay Arrow1749860 -Node: Temporary Displays1751213 -Node: Blinking1755334 -Node: Usual Display1757519 -Node: Display Tables1760068 -Node: Display Table Format1760872 -Node: Active Display Table1762314 -Node: Character Descriptors1763506 -Node: Beeping1764263 -Node: Hash Tables1769029 -Node: Introduction to Hash Tables1769637 -Node: Working With Hash Tables1775660 -Node: Weak Hash Tables1776777 -Node: Range Tables1778576 -Node: Introduction to Range Tables1779265 -Node: Working With Range Tables1779696 -Node: Databases1780581 -Node: Connecting to a Database1780880 -Node: Working With a Database1781971 -Node: Other Database Functions1782829 -Node: Processes1783403 -Node: Subprocess Creation1785627 -Node: Synchronous Processes1788916 -Node: MS-DOS Subprocesses1795634 -Node: Asynchronous Processes1796708 -Node: Deleting Processes1800421 -Node: Process Information1802292 -Node: Input to Processes1806218 -Node: Signals to Processes1808508 -Node: Output from Processes1812928 -Node: Process Buffers1813740 -Node: Filter Functions1816607 -Node: Accepting Output1822177 -Node: Sentinels1823704 -Node: Process Window Size1827194 -Node: Transaction Queues1827543 -Node: Network1829241 -Node: System Interface1831075 -Node: Starting Up1832345 -Node: Start-up Summary1832939 -Node: Init File1836493 -Node: Terminal-Specific1838874 -Node: Command Line Arguments1842033 -Node: Getting Out1845522 -Node: Killing XEmacs1846091 -Node: Suspending XEmacs1847760 -Node: System Environment1851102 -Node: User Identification1857769 -Node: Time of Day1861298 -Node: Time Conversion1864085 -Node: Timers1869125 -Node: Terminal Input1871298 -Node: Input Modes1871801 -Node: Translating Input1874214 -Node: Recording Input1878379 -Node: Terminal Output1880479 -Node: Flow Control1884102 -Node: Batch Mode1887894 -Node: X-Windows1889276 -Node: X Selections1890147 -Node: X Server1892357 -Node: Resources1892808 -Node: Server Data1898117 -Node: Grabs1899324 -Node: X Miscellaneous1900904 -Node: ToolTalk Support1903289 -Node: XEmacs ToolTalk API Summary1903506 -Node: Sending Messages1904806 -Node: Example of Sending Messages1905057 -Node: Elisp Interface for Sending Messages1906119 -Node: Receiving Messages1912511 -Node: Example of Receiving Messages1912734 -Node: Elisp Interface for Receiving Messages1913570 -Node: LDAP Support1917395 -Node: Building XEmacs with LDAP support1917891 -Node: XEmacs LDAP API1918869 -Node: LDAP Variables1919599 -Node: The High-Level LDAP API1922075 -Node: The Low-Level LDAP API1923180 -Node: The LDAP Lisp Object1923454 -Node: Opening and Closing a LDAP Connection1924007 -Node: Searching on a LDAP Server (Low-level)1925790 -Node: Syntax of Search Filters1927183 -Node: Internationalization1928481 -Node: I18N Levels 1 and 21928818 -Node: I18N Level 31929524 -Node: Level 3 Basics1929805 -Node: Level 3 Primitives1930638 -Node: Dynamic Messaging1932244 -Node: Domain Specification1932707 -Node: Documentation String Extraction1934610 -Node: I18N Level 41935528 -Node: MULE1935720 -Node: Internationalization Terminology1936831 -Node: Charsets1945365 -Node: Charset Properties1946061 -Node: Basic Charset Functions1950747 -Node: Charset Property Functions1952928 -Node: Predefined Charsets1954970 -Node: MULE Characters1957890 -Node: Composite Characters1958737 -Node: ISO 20221959991 -Node: Coding Systems1966133 -Node: Coding System Types1968054 -Node: EOL Conversion1969873 -Node: Coding System Properties1971056 -Node: Basic Coding System Functions1974908 -Node: Coding System Property Functions1976812 -Node: Encoding and Decoding Text1977370 -Node: Detection of Textual Encoding1978506 -Node: Big5 and Shift-JIS Functions1980042 -Node: CCL1981130 -Node: CCL Syntax1984234 -Node: CCL Statements1985822 -Node: CCL Expressions1990470 -Node: Calling CCL1993009 -Node: CCL Examples1995998 -Node: Category Tables1996135 -Node: Tips1998493 -Node: Style Tips1999134 -Node: Compilation Tips2008653 -Node: Documentation Tips2010567 -Node: Comment Tips2016076 -Node: Library Headers2019078 -Node: Building XEmacs and Object Allocation2023050 -Node: Building XEmacs2023933 -Node: Pure Storage2030268 -Node: Garbage Collection2033056 -Node: Standard Errors2044195 -Node: Standard Buffer-Local Variables2048404 -Node: Standard Keymaps2051037 -Node: Standard Hooks2054769 -Node: Index2062269 +Node: Backup Names1126515 +Node: Auto-Saving1129807 +Node: Reverting1137949 +Node: Buffers1141107 +Node: Buffer Basics1142524 +Node: Current Buffer1144577 +Node: Buffer Names1149265 +Node: Buffer File Name1152470 +Node: Buffer Modification1156589 +Node: Modification Time1158782 +Node: Read Only Buffers1162157 +Node: The Buffer List1164575 +Node: Creating Buffers1169405 +Node: Killing Buffers1171551 +Node: Indirect Buffers1175282 +Node: Windows1177854 +Node: Basic Windows1179332 +Node: Splitting Windows1182430 +Node: Deleting Windows1189319 +Node: Selecting Windows1191999 +Node: Cyclic Window Ordering1195128 +Node: Buffers and Windows1199752 +Node: Displaying Buffers1201593 +Node: Choosing Window1206769 +Node: Window Point1214485 +Node: Window Start1216531 +Node: Vertical Scrolling1221021 +Node: Horizontal Scrolling1227158 +Node: Size of Window1230667 +Node: Position of Window1235385 +Node: Resizing Windows1237625 +Node: Window Configurations1243054 +Node: Frames1246479 +Node: Creating Frames1248248 +Node: Frame Properties1249589 +Node: Property Access1250405 +Node: Initial Properties1251254 +Node: X Frame Properties1253740 +Node: Size and Position1258374 +Node: Frame Name1260370 +Node: Frame Titles1261284 +Node: Deleting Frames1263108 +Node: Finding All Frames1263708 +Node: Frames and Windows1265702 +Node: Minibuffers and Frames1267407 +Node: Input Focus1268325 +Node: Visibility of Frames1271402 +Node: Raising and Lowering1273321 +Node: Frame Configurations1275697 +Node: Frame Hooks1276291 +Node: Consoles and Devices1278096 +Node: Basic Console Functions1280839 +Node: Basic Device Functions1281262 +Node: Console Types and Device Classes1281978 +Node: Connecting to a Console or Device1284175 +Node: The Selected Console and Device1286338 +Node: Console and Device I/O1287364 +Node: Positions1288128 +Node: Point1289097 +Node: Motion1292187 +Node: Character Motion1292954 +Node: Word Motion1295191 +Node: Buffer End Motion1296692 +Node: Text Lines1298189 +Node: Screen Lines1302784 +Node: List Motion1306847 +Node: Skipping Characters1310255 +Node: Excursions1312474 +Node: Narrowing1315506 +Node: Markers1320831 +Node: Overview of Markers1321737 +Node: Predicates on Markers1326429 +Node: Creating Markers1327675 +Node: Information from Markers1331712 +Node: Changing Markers1332810 +Node: The Mark1334188 +Node: The Region1342682 +Node: Text1348368 +Node: Near Point1351067 +Node: Buffer Contents1355254 +Node: Comparing Text1356660 +Node: Insertion1358068 +Node: Commands for Insertion1361910 +Node: Deletion1364866 +Node: User-Level Deletion1368461 +Node: The Kill Ring1372622 +Node: Kill Ring Concepts1374796 +Node: Kill Functions1375850 +Node: Yank Commands1377755 +Node: Low-Level Kill Ring1379626 +Node: Internals of Kill Ring1382412 +Node: Undo1385192 +Node: Maintaining Undo1389521 +Node: Filling1392141 +Node: Margins1398135 +Node: Auto Filling1402064 +Node: Sorting1403245 +Node: Columns1412545 +Node: Indentation1415061 +Node: Primitive Indent1415840 +Node: Mode-Specific Indent1417084 +Node: Region Indent1419595 +Node: Relative Indent1422543 +Node: Indent Tabs1424925 +Node: Motion by Indent1426246 +Node: Case Changes1427025 +Node: Text Properties1430276 +Node: Examining Properties1432089 +Node: Changing Properties1433956 +Node: Property Search1437547 +Node: Special Properties1442258 +Node: Saving Properties1442539 +Node: Substitution1445681 +Node: Registers1448951 +Node: Transposition1451494 +Node: Change Hooks1452388 +Node: Transformations1454428 +Node: Searching and Matching1458813 +Node: String Search1459944 +Node: Regular Expressions1464668 +Node: Syntax of Regexps1466035 +Node: Regexp Example1480414 +Node: Regexp Search1482584 +Node: POSIX Regexps1488672 +Node: Search and Replace1490507 +Node: Match Data1493872 +Node: Simple Match Data1495002 +Node: Replacing Match1499267 +Node: Entire Match Data1501601 +Node: Saving Match Data1503592 +Node: Searching and Case1504973 +Node: Standard Regexps1507007 +Node: Syntax Tables1509205 +Node: Syntax Basics1510319 +Node: Syntax Descriptors1513291 +Node: Syntax Class Table1515141 +Node: Syntax Flags1521179 +Node: Syntax Table Functions1524396 +Node: Motion and Syntax1528260 +Node: Parsing Expressions1529712 +Node: Standard Syntax Tables1535781 +Node: Syntax Table Internals1536625 +Node: Abbrevs1537651 +Node: Abbrev Mode1539454 +Node: Abbrev Tables1540174 +Node: Defining Abbrevs1541707 +Node: Abbrev Files1543612 +Node: Abbrev Expansion1545385 +Node: Standard Abbrev Tables1550016 +Node: Extents1551175 +Node: Intro to Extents1552418 +Node: Creating and Modifying Extents1556412 +Node: Extent Endpoints1557919 +Node: Finding Extents1561182 +Node: Mapping Over Extents1564930 +Node: Extent Properties1571047 +Node: Detached Extents1581191 +Node: Extent Parents1583050 +Node: Duplicable Extents1584744 +Node: Extents and Events1587965 +Node: Atomic Extents1589872 +Node: Specifiers1590319 +Node: Introduction to Specifiers1592432 +Node: Specifiers In-Depth1594742 +Node: Specifier Instancing1599654 +Node: Specifier Types1602916 +Node: Adding Specifications1607990 +Node: Retrieving Specifications1617352 +Node: Specifier Tag Functions1621087 +Node: Specifier Instancing Functions1624321 +Node: Specifier Example1627728 +Node: Creating Specifiers1630884 +Node: Specifier Validation Functions1633133 +Node: Other Specification Functions1635517 +Node: Faces and Window-System Objects1639336 +Node: Faces1639660 +Node: Merging Faces1641277 +Node: Basic Face Functions1643238 +Node: Face Properties1645336 +Node: Face Convenience Functions1655578 +Node: Other Face Display Functions1658708 +Node: Fonts1659521 +Node: Font Specifiers1660222 +Node: Font Instances1660463 +Node: Font Instance Names1661430 +Node: Font Instance Size1662271 +Node: Font Instance Characteristics1663557 +Node: Font Convenience Functions1664726 +Node: Colors1666016 +Node: Color Specifiers1666456 +Node: Color Instances1666683 +Node: Color Instance Properties1667427 +Node: Color Convenience Functions1668053 +Node: Glyphs1669106 +Node: Glyph Functions1670698 +Node: Creating Glyphs1671105 +Node: Glyph Properties1672692 +Node: Glyph Convenience Functions1681859 +Node: Glyph Dimensions1685806 +Node: Images1686886 +Node: Image Specifiers1687335 +Node: Image Instantiator Conversion1698756 +Node: Image Instances1700121 +Node: Image Instance Types1700872 +Node: Image Instance Functions1703527 +Node: Glyph Types1708096 +Node: Mouse Pointer1709868 +Node: Redisplay Glyphs1712871 +Node: Subwindows1713904 +Node: Annotations1714147 +Node: Annotation Basics1715163 +Node: Annotation Primitives1719101 +Node: Annotation Properties1720430 +Node: Locating Annotations1723470 +Node: Margin Primitives1724307 +Node: Annotation Hooks1726201 +Node: Display1726861 +Node: Refresh Screen1727839 +Node: Truncation1729750 +Node: The Echo Area1732275 +Node: Warnings1738710 +Node: Invisible Text1743146 +Node: Selective Display1745725 +Node: Overlay Arrow1749851 +Node: Temporary Displays1751204 +Node: Blinking1755325 +Node: Usual Display1757510 +Node: Display Tables1760059 +Node: Display Table Format1760863 +Node: Active Display Table1762305 +Node: Character Descriptors1763497 +Node: Beeping1764254 +Node: Hash Tables1769020 +Node: Introduction to Hash Tables1769628 +Node: Working With Hash Tables1775651 +Node: Weak Hash Tables1776768 +Node: Range Tables1778567 +Node: Introduction to Range Tables1779256 +Node: Working With Range Tables1779687 +Node: Databases1780572 +Node: Connecting to a Database1780871 +Node: Working With a Database1781962 +Node: Other Database Functions1782820 +Node: Processes1783394 +Node: Subprocess Creation1785618 +Node: Synchronous Processes1788907 +Node: MS-DOS Subprocesses1795625 +Node: Asynchronous Processes1796699 +Node: Deleting Processes1800412 +Node: Process Information1802283 +Node: Input to Processes1806209 +Node: Signals to Processes1808499 +Node: Output from Processes1812919 +Node: Process Buffers1813731 +Node: Filter Functions1816598 +Node: Accepting Output1822168 +Node: Sentinels1823695 +Node: Process Window Size1827185 +Node: Transaction Queues1827534 +Node: Network1829232 +Node: System Interface1831066 +Node: Starting Up1832336 +Node: Start-up Summary1832930 +Node: Init File1836484 +Node: Terminal-Specific1838865 +Node: Command Line Arguments1842024 +Node: Getting Out1845513 +Node: Killing XEmacs1846082 +Node: Suspending XEmacs1847751 +Node: System Environment1851093 +Node: User Identification1857760 +Node: Time of Day1861289 +Node: Time Conversion1864076 +Node: Timers1869116 +Node: Terminal Input1871289 +Node: Input Modes1871792 +Node: Translating Input1874205 +Node: Recording Input1878370 +Node: Terminal Output1880470 +Node: Flow Control1884093 +Node: Batch Mode1887885 +Node: X-Windows1889267 +Node: X Selections1890138 +Node: X Server1892348 +Node: Resources1892799 +Node: Server Data1898108 +Node: Grabs1899315 +Node: X Miscellaneous1900895 +Node: ToolTalk Support1903280 +Node: XEmacs ToolTalk API Summary1903497 +Node: Sending Messages1904797 +Node: Example of Sending Messages1905048 +Node: Elisp Interface for Sending Messages1906110 +Node: Receiving Messages1912502 +Node: Example of Receiving Messages1912725 +Node: Elisp Interface for Receiving Messages1913561 +Node: LDAP Support1917386 +Node: Building XEmacs with LDAP support1917882 +Node: XEmacs LDAP API1918860 +Node: LDAP Variables1919590 +Node: The High-Level LDAP API1922066 +Node: The Low-Level LDAP API1923171 +Node: The LDAP Lisp Object1923445 +Node: Opening and Closing a LDAP Connection1923998 +Node: Searching on a LDAP Server (Low-level)1925781 +Node: Syntax of Search Filters1927174 +Node: Internationalization1928472 +Node: I18N Levels 1 and 21928809 +Node: I18N Level 31929515 +Node: Level 3 Basics1929796 +Node: Level 3 Primitives1930629 +Node: Dynamic Messaging1932235 +Node: Domain Specification1932698 +Node: Documentation String Extraction1934601 +Node: I18N Level 41935519 +Node: MULE1935711 +Node: Internationalization Terminology1936822 +Node: Charsets1945356 +Node: Charset Properties1946052 +Node: Basic Charset Functions1950738 +Node: Charset Property Functions1952919 +Node: Predefined Charsets1954961 +Node: MULE Characters1957881 +Node: Composite Characters1958728 +Node: ISO 20221959982 +Node: Coding Systems1966124 +Node: Coding System Types1968045 +Node: EOL Conversion1969864 +Node: Coding System Properties1971047 +Node: Basic Coding System Functions1974899 +Node: Coding System Property Functions1976803 +Node: Encoding and Decoding Text1977361 +Node: Detection of Textual Encoding1978497 +Node: Big5 and Shift-JIS Functions1980033 +Node: CCL1981121 +Node: CCL Syntax1984225 +Node: CCL Statements1985813 +Node: CCL Expressions1990461 +Node: Calling CCL1993000 +Node: CCL Examples1995989 +Node: Category Tables1996126 +Node: Tips1998484 +Node: Style Tips1999125 +Node: Compilation Tips2008644 +Node: Documentation Tips2010558 +Node: Comment Tips2016067 +Node: Library Headers2019069 +Node: Building XEmacs and Object Allocation2023041 +Node: Building XEmacs2023924 +Node: Pure Storage2030259 +Node: Garbage Collection2033047 +Node: Standard Errors2044186 +Node: Standard Buffer-Local Variables2048395 +Node: Standard Keymaps2051028 +Node: Standard Hooks2054760 +Node: Index2062260  End Tag Table diff --git a/info/xemacs.info b/info/xemacs.info index 10ff1ba..593db53 100644 --- a/info/xemacs.info +++ b/info/xemacs.info @@ -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  Tag Table: (Indirect) @@ -161,247 +161,247 @@ Node: Saving293486 Node: Backup298409 Node: Backup Names299805 Node: Backup Deletion301288 -Node: Backup Copying302447 -Node: Interlocking304153 -Node: Reverting308281 -Node: Auto Save310193 -Node: Auto Save Files311160 -Node: Auto Save Control313001 -Node: Recover314839 -Node: Version Control315994 -Node: Concepts of VC318032 -Node: Editing with VC319642 -Node: Variables for Check-in/out324898 -Node: Log Entries326797 -Node: Change Logs and VC327977 -Node: Old Versions331244 -Node: VC Status333247 -Node: Renaming and VC334961 -Node: Snapshots335640 -Node: Making Snapshots336141 -Node: Snapshot Caveats337434 -Node: Version Headers339243 -Node: ListDir341942 -Node: Comparing Files343991 -Node: Dired345524 -Node: Dired Enter346195 -Node: Dired Edit347020 -Node: Dired Deletion348767 -Node: Dired Immed351990 -Node: Misc File Ops353266 -Node: Buffers355754 -Node: Select Buffer357912 -Node: List Buffers359707 -Node: Misc Buffer361465 -Node: Kill Buffer363108 -Node: Several Buffers364238 -Node: Windows368104 -Node: Basic Window368815 -Node: Split Window370534 -Node: Other Window372667 -Node: Pop Up Window375096 -Node: Change Window376601 -Node: Mule379509 -Node: Mule Intro380772 -Node: Language Environments381788 -Node: Input Methods383895 -Node: Select Input Method387615 -Node: Coding Systems389770 -Node: Recognize Coding393956 -Node: Specify Coding397282 -Node: Major Modes402213 -Node: Choosing Modes404432 -Node: Indentation406822 -Node: Indentation Commands408917 -Node: Tab Stops411646 -Node: Just Spaces413495 -Node: Text414310 -Node: Text Mode416293 -Node: Nroff Mode418372 -Node: TeX Mode420015 -Node: TeX Editing422267 -Node: TeX Print425701 -Node: Outline Mode428920 -Node: Outline Format430401 -Node: Outline Motion433201 -Node: Outline Visibility434754 -Node: Words437675 -Node: Sentences440622 -Node: Paragraphs442818 -Node: Pages445106 -Node: Filling447706 -Node: Auto Fill448277 -Node: Fill Commands450424 -Node: Fill Prefix452589 -Node: Case454777 -Node: Programs456805 -Node: Program Modes459354 -Node: Lists461586 -Node: Defuns467426 -Node: Grinding470079 -Node: Basic Indent470707 -Node: Multi-line Indent472728 -Node: Lisp Indent474344 -Node: C Indent477794 -Node: Matching483034 -Node: Comments484556 -Node: Balanced Editing491008 -Node: Lisp Completion492022 -Node: Documentation493037 -Node: Change Log494276 -Node: Tags496854 -Node: Tag Syntax498503 -Node: Create Tags Table502447 -Node: Etags Regexps506507 -Node: Select Tags Table511165 -Node: Find Tag514938 -Node: Tags Search517902 -Node: List Tags521358 -Node: Fortran522387 -Node: Fortran Motion523463 -Node: Fortran Indent524283 -Node: ForIndent Commands524968 -Node: ForIndent Num526113 -Node: ForIndent Conv527387 -Node: ForIndent Vars528163 -Node: Fortran Comments529331 -Node: Fortran Columns532929 -Node: Fortran Abbrev534352 -Node: Asm Mode535261 -Node: Running535813 -Node: Compilation536783 -Node: Lisp Modes541633 -Node: Lisp Libraries542906 -Node: Loading543460 -Node: Compiling Libraries547920 -Node: Mocklisp550811 -Node: Lisp Eval551488 -Node: Lisp Debug555128 -Node: Lisp Interaction560553 -Node: External Lisp561908 -Node: Packages563982 -Node: Package Terminology564723 -Node: Using Packages566081 -Node: Building Packages574940 -Node: Abbrevs577462 -Node: Defining Abbrevs579662 -Node: Expanding Abbrevs582109 -Node: Editing Abbrevs584811 -Node: Saving Abbrevs586684 -Node: Dynamic Abbrevs588624 -Node: Picture589926 -Node: Basic Picture592359 -Node: Insert in Picture594644 -Node: Tabs in Picture596066 -Node: Rectangles in Picture597587 -Node: Sending Mail599495 -Node: Mail Format601206 -Node: Mail Headers602556 -Node: Mail Mode608964 -Node: Reading Mail612577 -Node: Calendar/Diary614152 -Node: Calendar Motion615824 -Node: Calendar Unit Motion616707 -Node: Move to Beginning or End619030 -Node: Specified Dates620163 -Node: Scroll Calendar621051 -Node: Mark and Region622842 -Node: General Calendar624748 -Node: LaTeX Calendar626356 -Node: Holidays628370 -Node: Sunrise/Sunset631472 -Node: Lunar Phases634515 -Node: Other Calendars635900 -Node: Calendar Systems637387 -Node: To Other Calendar640498 -Node: From Other Calendar642489 -Node: Mayan Calendar644794 -Node: Diary647989 -Node: Diary Commands649738 -Node: Format of Diary File653044 -Node: Date Formats655914 -Node: Adding to Diary658488 -Node: Special Diary Entries660119 -Node: Calendar Customization665458 -Node: Calendar Customizing666320 -Node: Holiday Customizing669539 -Node: Date Display Format676007 -Node: Time Display Format676965 -Node: Daylight Savings678103 -Node: Diary Customizing681291 -Node: Hebrew/Islamic Entries685912 -Node: Fancy Diary Display689252 -Node: Included Diary Files691149 -Node: Sexp Diary Entries692130 -Node: Appt Customizing697220 -Node: Sorting698266 -Node: Shell703072 -Node: Single Shell704365 -Node: Interactive Shell705964 -Node: Shell Mode709729 -Node: Terminal emulator712220 -Node: Term Mode714529 -Node: Paging in Term715443 -Node: Narrowing716241 -Node: Hardcopy718191 -Node: Recursive Edit719163 -Node: Dissociated Press722150 -Node: CONX724713 -Node: Amusements725737 -Node: Emulation726217 -Node: Customization728061 -Node: Minor Modes729785 -Node: Variables731417 -Node: Examining733373 -Node: Easy Customization734834 -Node: Customization Groups735848 -Node: Changing an Option738777 -Node: Face Customization745033 -Node: Specific Customization746797 -Node: Edit Options749404 -Node: Locals750988 -Node: File Variables754167 -Node: Keyboard Macros758721 -Node: Basic Kbd Macro760892 -Node: Save Kbd Macro762824 -Node: Kbd Macro Query764493 -Node: Key Bindings766435 -Node: Keymaps767309 -Node: Rebinding771159 -Node: Interactive Rebinding771858 -Node: Programmatic Rebinding774050 -Node: Key Bindings Using Strings776857 -Node: Disabling778484 -Node: Syntax780256 -Node: Syntax Entry781137 -Node: Syntax Change785221 -Node: Init File787390 -Node: Init Syntax788895 -Node: Init Examples791247 -Node: Terminal Init795437 -Node: Audible Bell797147 -Node: Faces800578 -Node: X Resources805415 -Node: Geometry Resources807063 -Node: Iconic Resources809511 -Node: Resource List809983 -Node: Face Resources816490 -Node: Widgets820167 -Node: Menubar Resources821106 -Node: Quitting822039 -Node: Lossage825017 -Node: Stuck Recursive825661 -Node: Screen Garbled826367 -Node: Text Garbled827501 -Node: Unasked-for Search828140 -Node: Emergency Escape828925 -Node: Total Frustration830704 -Node: Bugs831335 -Node: Glossary840869 -Node: Manifesto872498 -Node: Key Index895974 -Node: Command Index921169 -Node: Variable Index963076 -Node: Concept Index979213 +Node: Backup Copying302438 +Node: Interlocking304144 +Node: Reverting308272 +Node: Auto Save310184 +Node: Auto Save Files311151 +Node: Auto Save Control312992 +Node: Recover314830 +Node: Version Control315985 +Node: Concepts of VC318023 +Node: Editing with VC319633 +Node: Variables for Check-in/out324889 +Node: Log Entries326788 +Node: Change Logs and VC327968 +Node: Old Versions331235 +Node: VC Status333238 +Node: Renaming and VC334952 +Node: Snapshots335631 +Node: Making Snapshots336132 +Node: Snapshot Caveats337425 +Node: Version Headers339234 +Node: ListDir341933 +Node: Comparing Files343982 +Node: Dired345515 +Node: Dired Enter346186 +Node: Dired Edit347011 +Node: Dired Deletion348758 +Node: Dired Immed351981 +Node: Misc File Ops353257 +Node: Buffers355745 +Node: Select Buffer357903 +Node: List Buffers359698 +Node: Misc Buffer361456 +Node: Kill Buffer363099 +Node: Several Buffers364229 +Node: Windows368095 +Node: Basic Window368806 +Node: Split Window370525 +Node: Other Window372658 +Node: Pop Up Window375087 +Node: Change Window376592 +Node: Mule379500 +Node: Mule Intro380763 +Node: Language Environments381779 +Node: Input Methods383886 +Node: Select Input Method387606 +Node: Coding Systems389761 +Node: Recognize Coding393947 +Node: Specify Coding397273 +Node: Major Modes402204 +Node: Choosing Modes404423 +Node: Indentation406813 +Node: Indentation Commands408908 +Node: Tab Stops411637 +Node: Just Spaces413486 +Node: Text414301 +Node: Text Mode416284 +Node: Nroff Mode418363 +Node: TeX Mode420006 +Node: TeX Editing422258 +Node: TeX Print425692 +Node: Outline Mode428911 +Node: Outline Format430392 +Node: Outline Motion433192 +Node: Outline Visibility434745 +Node: Words437666 +Node: Sentences440613 +Node: Paragraphs442809 +Node: Pages445097 +Node: Filling447697 +Node: Auto Fill448268 +Node: Fill Commands450415 +Node: Fill Prefix452580 +Node: Case454768 +Node: Programs456796 +Node: Program Modes459345 +Node: Lists461577 +Node: Defuns467417 +Node: Grinding470070 +Node: Basic Indent470698 +Node: Multi-line Indent472719 +Node: Lisp Indent474335 +Node: C Indent477785 +Node: Matching483025 +Node: Comments484547 +Node: Balanced Editing490999 +Node: Lisp Completion492013 +Node: Documentation493028 +Node: Change Log494267 +Node: Tags496845 +Node: Tag Syntax498494 +Node: Create Tags Table502438 +Node: Etags Regexps506498 +Node: Select Tags Table511156 +Node: Find Tag514929 +Node: Tags Search517893 +Node: List Tags521349 +Node: Fortran522378 +Node: Fortran Motion523454 +Node: Fortran Indent524274 +Node: ForIndent Commands524959 +Node: ForIndent Num526104 +Node: ForIndent Conv527378 +Node: ForIndent Vars528154 +Node: Fortran Comments529322 +Node: Fortran Columns532920 +Node: Fortran Abbrev534343 +Node: Asm Mode535252 +Node: Running535804 +Node: Compilation536774 +Node: Lisp Modes541624 +Node: Lisp Libraries542897 +Node: Loading543451 +Node: Compiling Libraries547911 +Node: Mocklisp550802 +Node: Lisp Eval551479 +Node: Lisp Debug555119 +Node: Lisp Interaction560544 +Node: External Lisp561899 +Node: Packages563973 +Node: Package Terminology564714 +Node: Using Packages566072 +Node: Building Packages574931 +Node: Abbrevs577453 +Node: Defining Abbrevs579653 +Node: Expanding Abbrevs582100 +Node: Editing Abbrevs584802 +Node: Saving Abbrevs586675 +Node: Dynamic Abbrevs588615 +Node: Picture589917 +Node: Basic Picture592350 +Node: Insert in Picture594635 +Node: Tabs in Picture596057 +Node: Rectangles in Picture597578 +Node: Sending Mail599486 +Node: Mail Format601197 +Node: Mail Headers602547 +Node: Mail Mode608955 +Node: Reading Mail612568 +Node: Calendar/Diary614143 +Node: Calendar Motion615815 +Node: Calendar Unit Motion616698 +Node: Move to Beginning or End619021 +Node: Specified Dates620154 +Node: Scroll Calendar621042 +Node: Mark and Region622833 +Node: General Calendar624739 +Node: LaTeX Calendar626347 +Node: Holidays628361 +Node: Sunrise/Sunset631463 +Node: Lunar Phases634506 +Node: Other Calendars635891 +Node: Calendar Systems637378 +Node: To Other Calendar640489 +Node: From Other Calendar642480 +Node: Mayan Calendar644785 +Node: Diary647980 +Node: Diary Commands649729 +Node: Format of Diary File653035 +Node: Date Formats655905 +Node: Adding to Diary658479 +Node: Special Diary Entries660110 +Node: Calendar Customization665449 +Node: Calendar Customizing666311 +Node: Holiday Customizing669530 +Node: Date Display Format675998 +Node: Time Display Format676956 +Node: Daylight Savings678094 +Node: Diary Customizing681282 +Node: Hebrew/Islamic Entries685903 +Node: Fancy Diary Display689243 +Node: Included Diary Files691140 +Node: Sexp Diary Entries692121 +Node: Appt Customizing697211 +Node: Sorting698257 +Node: Shell703063 +Node: Single Shell704356 +Node: Interactive Shell705955 +Node: Shell Mode709720 +Node: Terminal emulator712211 +Node: Term Mode714520 +Node: Paging in Term715434 +Node: Narrowing716232 +Node: Hardcopy718182 +Node: Recursive Edit719154 +Node: Dissociated Press722141 +Node: CONX724704 +Node: Amusements725728 +Node: Emulation726208 +Node: Customization728052 +Node: Minor Modes729776 +Node: Variables731408 +Node: Examining733364 +Node: Easy Customization734825 +Node: Customization Groups735839 +Node: Changing an Option738768 +Node: Face Customization745024 +Node: Specific Customization746788 +Node: Edit Options749395 +Node: Locals750979 +Node: File Variables754158 +Node: Keyboard Macros758712 +Node: Basic Kbd Macro760883 +Node: Save Kbd Macro762815 +Node: Kbd Macro Query764484 +Node: Key Bindings766426 +Node: Keymaps767300 +Node: Rebinding771150 +Node: Interactive Rebinding771849 +Node: Programmatic Rebinding774041 +Node: Key Bindings Using Strings776848 +Node: Disabling778475 +Node: Syntax780247 +Node: Syntax Entry781128 +Node: Syntax Change785212 +Node: Init File787381 +Node: Init Syntax788886 +Node: Init Examples791238 +Node: Terminal Init795428 +Node: Audible Bell797138 +Node: Faces800569 +Node: X Resources805406 +Node: Geometry Resources807054 +Node: Iconic Resources809502 +Node: Resource List809974 +Node: Face Resources816481 +Node: Widgets820158 +Node: Menubar Resources821097 +Node: Quitting822030 +Node: Lossage825008 +Node: Stuck Recursive825652 +Node: Screen Garbled826358 +Node: Text Garbled827492 +Node: Unasked-for Search828131 +Node: Emergency Escape828916 +Node: Total Frustration830695 +Node: Bugs831326 +Node: Glossary840860 +Node: Manifesto872489 +Node: Key Index895965 +Node: Command Index921160 +Node: Variable Index963067 +Node: Concept Index979204  End Tag Table diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 07877cd..4fd173f 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,7 @@ +2000-02-21 Martin Buchholz + + * XEmacs 21.2.30 is released. + 2000-02-16 Martin Buchholz * XEmacs 21.2.29 is released. diff --git a/lib-src/movemail.c b/lib-src/movemail.c index 941ada9..6fa783e 100644 --- a/lib-src/movemail.c +++ b/lib-src/movemail.c @@ -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) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d61cb8d..d6e24e5 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,88 @@ +2000-02-21 Martin Buchholz + + * XEmacs 21.2.30 is released. + +2000-02-19 Martin Buchholz + + * 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 + + * 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 + + * font-lock.el: Javadoc enhancements + +1999-11-27 Oscar Figueiredo + + * 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 + Shuhei KOBAYASHI + Jan Vroonhof + + * 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 + + * package-get.el (package-get-download-sites): Use correct custom + type. + +2000-02-15 Kirill 'Big K' Katsnelson + + * files.el (write-file): Ask for coding system when compiled with + file-coding. + +2000-02-16 Andy Piper + + * 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 + + * 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 + + * info.el (Info-save-auto-generated-dir): nil -> 'never to make it + work in custom. + +2000-02-04 Kazuyuki IENAGA + + * about.el: Ienaga's e-mail address change. + +2000-02-16 Samuel Mikes + + * etags.el (find-tag): force new window -- even if buf already + visible -- when other-window is t + 2000-02-16 Martin Buchholz * XEmacs 21.2.29 is released. diff --git a/lisp/about.el b/lisp/about.el index 47f7768..ea2061c 100644 --- a/lisp/about.el +++ b/lisp/about.el @@ -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") diff --git a/lisp/buffer.el b/lisp/buffer.el index c829284..002ce0d 100644 --- a/lisp/buffer.el +++ b/lisp/buffer.el @@ -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) diff --git a/lisp/byte-optimize.el b/lisp/byte-optimize.el index 6c4847e..2ab79db 100644 --- a/lisp/byte-optimize.el +++ b/lisp/byte-optimize.el @@ -473,6 +473,10 @@ (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))))) @@ -699,33 +703,37 @@ (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)) @@ -735,54 +743,55 @@ (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)) @@ -801,13 +810,13 @@ (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))) diff --git a/lisp/etags.el b/lisp/etags.el index cba03e0..f68527b 100644 --- a/lisp/etags.el +++ b/lisp/etags.el @@ -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 diff --git a/lisp/files.el b/lisp/files.el index 2b8a77d..1c4ad7e 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -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")) diff --git a/lisp/font-lock.el b/lisp/font-lock.el index be8df46..b942db4 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el @@ -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 "\\\\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) ))) diff --git a/lisp/gutter-items.el b/lisp/gutter-items.el index fd8905c..9581a49 100644 --- a/lisp/gutter-items.el +++ b/lisp/gutter-items.el @@ -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) diff --git a/lisp/info.el b/lisp/info.el index 344adf4..0bcda60 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -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 diff --git a/lisp/ldap.el b/lisp/ldap.el index a0eaddf..c27747a 100644 --- a/lisp/ldap.el +++ b/lisp/ldap.el @@ -5,7 +5,7 @@ ;; Author: Oscar Figueiredo ;; Maintainer: Oscar Figueiredo ;; Created: Jan 1998 -;; Version: $Revision: 1.7.2.6 $ +;; Version: $Revision: 1.7.2.7 $ ;; Keywords: help comm ;; This file is part of XEmacs @@ -35,6 +35,10 @@ ;;; 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 diff --git a/lisp/modeline.el b/lisp/modeline.el index 08886a9..c5e428d 100644 --- a/lisp/modeline.el +++ b/lisp/modeline.el @@ -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) diff --git a/lisp/msw-faces.el b/lisp/msw-faces.el index f4e4125..7c34cc7 100644 --- a/lisp/msw-faces.el +++ b/lisp/msw-faces.el @@ -29,12 +29,23 @@ ;; 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) ) diff --git a/lisp/mule/mule-cmds.el b/lisp/mule/mule-cmds.el index 4ae3c49..c6e689f 100644 --- a/lisp/mule/mule-cmds.el +++ b/lisp/mule/mule-cmds.el @@ -47,11 +47,9 @@ (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. diff --git a/lisp/package-get.el b/lisp/package-get.el index b84b4a7..587ea39 100644 --- a/lisp/package-get.el +++ b/lisp/package-get.el @@ -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 diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog index 3424d79..bf5ee4b 100644 --- a/lwlib/ChangeLog +++ b/lwlib/ChangeLog @@ -1,3 +1,33 @@ +2000-02-21 Martin Buchholz + + * XEmacs 21.2.30 is released. + +2000-02-21 Andy Piper + + * 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 + + * 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 + + * xlwgauge.c (GaugeExpose): remove shadows. + 2000-02-16 Martin Buchholz * XEmacs 21.2.29 is released. diff --git a/lwlib/lwlib-Xaw.c b/lwlib/lwlib-Xaw.c index 3ff9460..dd766dc 100644 --- a/lwlib/lwlib-Xaw.c +++ b/lwlib/lwlib-Xaw.c @@ -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++; diff --git a/lwlib/lwlib-Xm.c b/lwlib/lwlib-Xm.c index 87008b5..ff1b8ff 100644 --- a/lwlib/lwlib-Xm.c +++ b/lwlib/lwlib-Xm.c @@ -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++; diff --git a/lwlib/lwlib.c b/lwlib/lwlib.c index 35be751..27f7a08 100644 --- a/lwlib/lwlib.c +++ b/lwlib/lwlib.c @@ -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++; diff --git a/lwlib/xlwgauge.c b/lwlib/xlwgauge.c index db08040..3d81e8f 100644 --- a/lwlib/xlwgauge.c +++ b/lwlib/xlwgauge.c @@ -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) ; } } } diff --git a/lwlib/xlwmenu.c b/lwlib/xlwmenu.c index c7ef3b4..a35a629 100644 --- a/lwlib/xlwmenu.c +++ b/lwlib/xlwmenu.c @@ -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); diff --git a/lwlib/xlwmenu.h b/lwlib/xlwmenu.h index 24d9635..2644a2b 100644 --- a/lwlib/xlwmenu.h +++ b/lwlib/xlwmenu.h @@ -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" diff --git a/man/ChangeLog b/man/ChangeLog index c548505..142c7d2 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,23 @@ +2000-02-21 Martin Buchholz + + * XEmacs 21.2.30 is released. + +2000-02-21 Jonathan Harris + + * internals/internals.texi: Made texinfmt-friendly. + +2000-01-20 Mark Thomas + + * lispref/backups.texi (Numbered Backups): + * xemacs/files.texi (Backup Deletion): + Change trim-versions-without-asking to delete-old-versions. + +2000-02-19 Martin Buchholz + + * internals/internals.texi (Conversion to and from External Data): + Document TO_EXTERNAL_FORMAT and friends. + Doc bug fixes. + 2000-02-16 Martin Buchholz * XEmacs 21.2.29 is released. diff --git a/man/cl.texi b/man/cl.texi index a3c3100..27d6d72 100644 --- a/man/cl.texi +++ b/man/cl.texi @@ -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 diff --git a/man/internals/internals.texi b/man/internals/internals.texi index c858f39..f432589 100644 --- a/man/internals/internals.texi +++ b/man/internals/internals.texi @@ -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 } 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. diff --git a/man/lispref/backups.texi b/man/lispref/backups.texi index 59aa856..62fc2e8 100644 --- a/man/lispref/backups.texi +++ b/man/lispref/backups.texi @@ -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. diff --git a/man/xemacs/files.texi b/man/xemacs/files.texi index 7ca98a7..7ee4fcf 100644 --- a/man/xemacs/files.texi +++ b/man/xemacs/files.texi @@ -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. diff --git a/nt/ChangeLog b/nt/ChangeLog index 7565951..0ec6b19 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,18 @@ +2000-02-21 Martin Buchholz + + * XEmacs 21.2.30 is released. + +2000-02-21 Jonathan Harris + + * README: Tidy up. + Document need for makeinfo program or texinfo package. + + * Xmd.patch: New file, previously in README. + +2000-02-17 Martin Buchholz + + * config.h: Delete unused HAVE_LINUX_VERSION_H. + 2000-02-16 Martin Buchholz * XEmacs 21.2.29 is released. diff --git a/nt/README b/nt/README index a6e5c95..67c6889 100644 --- 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: diff --git a/nt/config.h b/nt/config.h index 9a155f0..f751412 100644 --- a/nt/config.h +++ b/nt/config.h @@ -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 diff --git a/src/.dbxrc b/src/.dbxrc index 3969701..46c21a4 100644 --- a/src/.dbxrc +++ b/src/.dbxrc @@ -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 diff --git a/src/.gdbinit b/src/.gdbinit index b08c0a0..13ff77d 100644 --- a/src/.gdbinit +++ b/src/.gdbinit @@ -48,12 +48,14 @@ 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 diff --git a/src/ChangeLog b/src/ChangeLog index b484860..485d8f7 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,254 @@ +2000-02-21 Martin Buchholz + + * XEmacs 21.2.30 is released. + +2000-02-20 Martin Buchholz + + 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 + + * 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 + + * 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 + + * s/windowsnt.h: Only use __declspec(noreturn) with MSVC>=6. + +2000-02-18 Olivier Galibert + + * 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 + + * device-msw.c (mswindows_delete_device): Free DDE string + handles. + +2000-02-16 Kirill 'Big K' Katsnelson + + * 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 + + * eldap.c (Fldap_open): + (Fldap_search_basic): + (Fldap_add): + (Fldap_modify): + Use new coding system conversion macros. + +2000-01-06 Yoshiki Hayashi + + * console-tty.c (tty_init_console): Change MULE to FILE_CODING. + +1999-11-27 Oscar Figueiredo + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 * XEmacs 21.2.29 is released. @@ -43,7 +294,7 @@ * 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. @@ -58,7 +309,7 @@ * 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. @@ -124,7 +375,7 @@ * 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. @@ -141,11 +392,11 @@ * 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 @@ -313,7 +564,7 @@ * config.h.in: Add HAVE_XCONVERTCASE. 2000-02-07 Andy Piper - + * glyphs.c (image_instance_layout): undo 2000-01-29 change since it breaks many things. @@ -340,26 +591,26 @@ * 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. @@ -373,8 +624,8 @@ 2000-01-30 Martin Buchholz * 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. @@ -410,7 +661,7 @@ 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(). @@ -431,7 +682,7 @@ (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 @@ -478,7 +729,7 @@ * 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 @@ -609,7 +860,7 @@ 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. @@ -617,8 +868,8 @@ 2000-01-27 URA Hiroshi - * 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): @@ -626,7 +877,7 @@ 2000-01-27 Martin Buchholz - * buffer.c (reinit_vars_of_buffer): + * buffer.c (reinit_vars_of_buffer): The right place to initialize conversion_in_dynarr and conversion_out_dynarr. @@ -787,7 +1038,7 @@ 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. @@ -831,7 +1082,7 @@ 2000-01-24 Martin Buchholz - * realpath.c (xrealpath): + * realpath.c (xrealpath): Don't call getwd(). 2000-01-25 Martin Buchholz @@ -875,7 +1126,7 @@ 2000-01-24 Martin Buchholz - * 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 @@ -892,11 +1143,11 @@ 2000-01-23 Kirill 'Big K' Katsnelson - * 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 2000-01-22 Kirill 'Big K' Katsnelson @@ -904,7 +1155,7 @@ * 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. @@ -977,18 +1228,18 @@ 2000-01-22 Martin Buchholz * 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. @@ -1013,7 +1264,7 @@ * 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. diff --git a/src/Makefile.in.in b/src/Makefile.in.in index ba45163..bcc0103 100644 --- a/src/Makefile.in.in +++ b/src/Makefile.in.in @@ -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) */ diff --git a/src/alloc.c b/src/alloc.c index 89f3040..74b6559 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -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; -} - /************************************************************************/ /* 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; } - /************************************************************************/ /* 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 + /* 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; */ -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; icount; 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 */ + diff --git a/src/buffer.c b/src/buffer.c index 3be44f8..51e8756 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -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 */ \ diff --git a/src/bytecode.c b/src/bytecode.c index fd35a0e..b0ff4e0 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -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"); diff --git a/src/chartab.c b/src/chartab.c index f78a17b..c2d1324 100644 --- a/src/chartab.c +++ b/src/chartab.c @@ -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"); diff --git a/src/config.h.in b/src/config.h.in index 3ca219b..fe5e60b 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -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 diff --git a/src/console-tty.c b/src/console-tty.c index c8912fb..9ebfbf3 100644 --- a/src/console-tty.c +++ b/src/console-tty.c @@ -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; diff --git a/src/console.c b/src/console.c index 0c7c2ad..068200e 100644 --- a/src/console.c +++ b/src/console.c @@ -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 */ \ diff --git a/src/data.c b/src/data.c index 2309297..09e9c9d 100644 --- a/src/data.c +++ b/src/data.c @@ -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"); diff --git a/src/database.c b/src/database.c index d6edc87..0b73c47 100644 --- a/src/database.c +++ b/src/database.c @@ -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"); diff --git a/src/device-msw.c b/src/device-msw.c index 67d08ad..ded93db 100644 --- a/src/device-msw.c +++ b/src/device-msw.c @@ -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), diff --git a/src/device.c b/src/device.c index 458d617..25aa688 100644 --- a/src/device.c +++ b/src/device.c @@ -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); diff --git a/src/editfns.c b/src/editfns.c index 306315e..61ceb1f 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -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 /* diff --git a/src/eldap.c b/src/eldap.c index 1f8e2c7..99c5d53 100644 --- a/src/eldap.c +++ b/src/eldap.c @@ -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; + /************************************************************************/ /* 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 diff --git a/src/eldap.h b/src/eldap.h index 5d869c3..0ca47b1 100644 --- a/src/eldap.h +++ b/src/eldap.h @@ -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_ */ diff --git a/src/elhash.c b/src/elhash.c index 251e549..52ba848 100644 --- a/src/elhash.c +++ b/src/elhash.c @@ -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); diff --git a/src/emacs.c b/src/emacs.c index 02ca97d..b581b51 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -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 */ #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. diff --git a/src/eval.c b/src/eval.c index 50a7d33..426cda1 100644 --- a/src/eval.c +++ b/src/eval.c @@ -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); @@ -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"); diff --git a/src/event-msw.c b/src/event-msw.c index 6d37617..e18c1e6 100644 --- a/src/event-msw.c +++ b/src/event-msw.c @@ -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/ 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: diff --git a/src/event-stream.c b/src/event-stream.c index 5dccba3..8871609 100644 --- a/src/event-stream.c +++ b/src/event-stream.c @@ -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"); diff --git a/src/events.c b/src/events.c index 8d8026d..60002d8 100644 --- a/src/events.c +++ b/src/events.c @@ -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); diff --git a/src/extents.c b/src/extents.c index 686ce82..14bebe2 100644 --- a/src/extents.c +++ b/src/extents.c @@ -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"); diff --git a/src/faces.c b/src/faces.c index 215f67d..d952457 100644 --- a/src/faces.c +++ b/src/faces.c @@ -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"); diff --git a/src/file-coding.c b/src/file-coding.c index fca56b0..9db68c7 100644 --- a/src/file-coding.c +++ b/src/file-coding.c @@ -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); diff --git a/src/fileio.c b/src/fileio.c index 9d1beca..c300003 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -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); } @@ -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) diff --git a/src/floatfns.c b/src/floatfns.c index a6711fc..337c581 100644 --- a/src/floatfns.c +++ b/src/floatfns.c @@ -988,6 +988,7 @@ init_floatfns_very_early (void) void syms_of_floatfns (void) { + INIT_LRECORD_IMPLEMENTATION (float); /* Trig functions. */ diff --git a/src/fns.c b/src/fns.c index d5f5ae3..b81dafe 100644 --- 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"); diff --git a/src/frame.c b/src/frame.c index 3c10854..d742a5b 100644 --- a/src/frame.c +++ b/src/frame.c @@ -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"); diff --git a/src/glyphs-msw.c b/src/glyphs-msw.c index 8111a47..25c037f 100644 --- a/src/glyphs-msw.c +++ b/src/glyphs-msw.c @@ -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; ibitmaps) #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) diff --git a/src/glyphs-widget.c b/src/glyphs-widget.c index 41d1498..ab50d29 100644 --- a/src/glyphs-widget.c +++ b/src/glyphs-widget.c @@ -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); } diff --git a/src/glyphs-x.c b/src/glyphs-x.c index d0f76da..e56a5c4 100644 --- a/src/glyphs-x.c +++ b/src/glyphs-x.c @@ -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); } } diff --git a/src/glyphs.c b/src/glyphs.c index fb6754f..ad542b1 100644 --- a/src/glyphs.c +++ b/src/glyphs.c @@ -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); diff --git a/src/gui-msw.c b/src/gui-msw.c index 029d616..07b4a79 100644 --- a/src/gui-msw.c +++ b/src/gui-msw.c @@ -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; diff --git a/src/gui-x.c b/src/gui-x.c index 58fb4f3..467c3ab 100644 --- a/src/gui-x.c +++ b/src/gui-x.c @@ -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"); } diff --git a/src/gui.c b/src/gui.c index d00df80..00012a6 100644 --- 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"); diff --git a/src/gutter.c b/src/gutter.c index 224d2fa..d0055c7 100644 --- a/src/gutter.c +++ b/src/gutter.c @@ -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) { diff --git a/src/gutter.h b/src/gutter.h index d0ad07e..967c647 100644 --- a/src/gutter.h +++ b/src/gutter.h @@ -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); diff --git a/src/insdel.c b/src/insdel.c index 22dee0f..0ca849c 100644 --- a/src/insdel.c +++ b/src/insdel.c @@ -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 diff --git a/src/keymap.c b/src/keymap.c index 49a9fec..046c5e8 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -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"); diff --git a/src/lisp.h b/src/lisp.h index 83e08b5..f632885 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -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 diff --git a/src/lread.c b/src/lread.c index c36153e..a1f9ec9 100644 --- a/src/lread.c +++ b/src/lread.c @@ -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); diff --git a/src/lrecord.h b/src/lrecord.h index 94ebea2..d222ca3 100644 --- a/src/lrecord.h +++ b/src/lrecord.h @@ -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 { \ diff --git a/src/lstream.c b/src/lstream.c index ed9849c..801a0c1 100644 --- a/src/lstream.c +++ b/src/lstream.c @@ -1705,5 +1705,7 @@ reinit_vars_of_lstream (void) void vars_of_lstream (void) { + INIT_LRECORD_IMPLEMENTATION (lstream); + reinit_vars_of_lstream (); } diff --git a/src/m/7300.h b/src/m/7300.h index cd77e07..911016d 100644 --- a/src/m/7300.h +++ b/src/m/7300.h @@ -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. */ diff --git a/src/m/acorn.h b/src/m/acorn.h index efd8664..52dd45d 100644 --- a/src/m/acorn.h +++ b/src/m/acorn.h @@ -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 diff --git a/src/m/alliant-2800.h b/src/m/alliant-2800.h index f366ea5..f19db5d 100644 --- a/src/m/alliant-2800.h +++ b/src/m/alliant-2800.h @@ -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 */ diff --git a/src/m/alliant.h b/src/m/alliant.h index f0d2a2f..06921ef 100644 --- a/src/m/alliant.h +++ b/src/m/alliant.h @@ -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 diff --git a/src/m/altos.h b/src/m/altos.h index 40759cf..b4cb895 100644 --- a/src/m/altos.h +++ b/src/m/altos.h @@ -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__ diff --git a/src/m/amdahl.h b/src/m/amdahl.h index 8abe5b9..4810c1e 100644 --- a/src/m/amdahl.h +++ b/src/m/amdahl.h @@ -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*/ diff --git a/src/m/arm.h b/src/m/arm.h index 2bf2940..fe9b01b 100644 --- a/src/m/arm.h +++ b/src/m/arm.h @@ -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 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 */ diff --git a/src/m/att3b.h b/src/m/att3b.h index 67c3056..896a6cc 100644 --- a/src/m/att3b.h +++ b/src/m/att3b.h @@ -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 */ diff --git a/src/m/aviion.h b/src/m/aviion.h index 3bb033b..b3cc63a 100644 --- a/src/m/aviion.h +++ b/src/m/aviion.h @@ -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 */ diff --git a/src/m/celerity.h b/src/m/celerity.h index 2b6ea5e..e4dfb82 100644 --- a/src/m/celerity.h +++ b/src/m/celerity.h @@ -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 diff --git a/src/m/clipper.h b/src/m/clipper.h index 975945f..f18bc99 100644 --- a/src/m/clipper.h +++ b/src/m/clipper.h @@ -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. */ diff --git a/src/m/cnvrgnt.h b/src/m/cnvrgnt.h index 5a9e42c..2427a4f 100644 --- a/src/m/cnvrgnt.h +++ b/src/m/cnvrgnt.h @@ -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. */ diff --git a/src/m/convex.h b/src/m/convex.h index dda929b..a618993 100644 --- a/src/m/convex.h +++ b/src/m/convex.h @@ -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 */ -/* 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 diff --git a/src/m/cydra5.h b/src/m/cydra5.h index 5d3623e..887770b 100644 --- a/src/m/cydra5.h +++ b/src/m/cydra5.h @@ -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 diff --git a/src/m/delta.h b/src/m/delta.h index eb58f9c..27078f5 100644 --- a/src/m/delta.h +++ b/src/m/delta.h @@ -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 */ diff --git a/src/m/delta88k.h b/src/m/delta88k.h index bd559b5..7177af1 100644 --- a/src/m/delta88k.h +++ b/src/m/delta88k.h @@ -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 */ diff --git a/src/m/dpx2.h b/src/m/dpx2.h index 899819b..c19f6ee 100644 --- a/src/m/dpx2.h +++ b/src/m/dpx2.h @@ -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 diff --git a/src/m/dual.h b/src/m/dual.h index 88a26f8..60b0add 100644 --- a/src/m/dual.h +++ b/src/m/dual.h @@ -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. */ diff --git a/src/m/elxsi.h b/src/m/elxsi.h index 9b18a41..e62c338 100644 --- a/src/m/elxsi.h +++ b/src/m/elxsi.h @@ -28,11 +28,6 @@ Boston, MA 02111-1307, USA. */ /* This file was modified by Matt Crawford 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 diff --git a/src/m/ews4800r.h b/src/m/ews4800r.h index 35c6d97..a649ec4 100644 --- a/src/m/ews4800r.h +++ b/src/m/ews4800r.h @@ -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 diff --git a/src/m/gould-np1.h b/src/m/gould-np1.h index 763f16e..155aa61 100644 --- a/src/m/gould-np1.h +++ b/src/m/gould-np1.h @@ -64,12 +64,6 @@ #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. diff --git a/src/m/gould.h b/src/m/gould.h index eaa3c7b..a8174f2 100644 --- a/src/m/gould.h +++ b/src/m/gould.h @@ -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 diff --git a/src/m/hp300bsd.h b/src/m/hp300bsd.h index 59ccea9..30a68e0 100644 --- a/src/m/hp300bsd.h +++ b/src/m/hp300bsd.h @@ -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)) diff --git a/src/m/hp800.h b/src/m/hp800.h index b41a5a1..607b52a 100644 --- a/src/m/hp800.h +++ b/src/m/hp800.h @@ -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 #ifdef __hpux /* Now define a symbol for the cpu type, if your compiler @@ -94,8 +82,6 @@ Boston, MA 02111-1307, USA. */ /* the data segment on this machine always starts at address 0x40000000. */ -#define DATA_SEG_BITS 0x40000000 - #ifdef DATA_START #undef DATA_START #endif diff --git a/src/m/hp9000s300.h b/src/m/hp9000s300.h index d086b42..14383ef 100644 --- a/src/m/hp9000s300.h +++ b/src/m/hp9000s300.h @@ -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. */ diff --git a/src/m/i860.h b/src/m/i860.h index 338902d..79d3f53 100644 --- a/src/m/i860.h +++ b/src/m/i860.h @@ -24,11 +24,6 @@ Boston, MA 02111-1307, USA. */ operating system this machine is likely to run. USUAL-OPSYS="" */ -/* 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 diff --git a/src/m/ibmps2-aix.h b/src/m/ibmps2-aix.h index 4a7afac..73d14e3 100644 --- a/src/m/ibmps2-aix.h +++ b/src/m/ibmps2-aix.h @@ -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 diff --git a/src/m/ibmrs6000.h b/src/m/ibmrs6000.h index f287ae9..7b2a2e1 100644 --- a/src/m/ibmrs6000.h +++ b/src/m/ibmrs6000.h @@ -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) diff --git a/src/m/ibmrt-aix.h b/src/m/ibmrt-aix.h index 3ab6bb8..21e3058 100644 --- a/src/m/ibmrt-aix.h +++ b/src/m/ibmrt-aix.h @@ -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) diff --git a/src/m/ibmrt.h b/src/m/ibmrt.h index d8ee343..61f5246 100644 --- a/src/m/ibmrt.h +++ b/src/m/ibmrt.h @@ -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 -/* 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. diff --git a/src/m/intel386.h b/src/m/intel386.h index c81c6b0..481fade 100644 --- a/src/m/intel386.h +++ b/src/m/intel386.h @@ -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 diff --git a/src/m/iris4d.h b/src/m/iris4d.h index 62b56b0..5e207d2 100644 --- a/src/m/iris4d.h +++ b/src/m/iris4d.h @@ -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. */ diff --git a/src/m/iris5d.h b/src/m/iris5d.h index 05a03c0..37106d7 100644 --- a/src/m/iris5d.h +++ b/src/m/iris5d.h @@ -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. */ diff --git a/src/m/iris6d.h b/src/m/iris6d.h index caae6dc..45a0138 100644 --- a/src/m/iris6d.h +++ b/src/m/iris6d.h @@ -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. */ diff --git a/src/m/irist.h b/src/m/irist.h index 496a7ec..fcb7600 100644 --- a/src/m/irist.h +++ b/src/m/irist.h @@ -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 diff --git a/src/m/isi-ov.h b/src/m/isi-ov.h index 5240b8a..c32dc88 100644 --- a/src/m/isi-ov.h +++ b/src/m/isi-ov.h @@ -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 diff --git a/src/m/luna88k.h b/src/m/luna88k.h index c2a96e6..90ed16e 100644 --- a/src/m/luna88k.h +++ b/src/m/luna88k.h @@ -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 diff --git a/src/m/m68k.h b/src/m/m68k.h index f8cfb5b..e4cdd5e 100644 --- a/src/m/m68k.h +++ b/src/m/m68k.h @@ -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 diff --git a/src/m/masscomp.h b/src/m/masscomp.h index 3480a13..3db18b8 100644 --- a/src/m/masscomp.h +++ b/src/m/masscomp.h @@ -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 diff --git a/src/m/mega68.h b/src/m/mega68.h index 81cfab9..4961423 100644 --- a/src/m/mega68.h +++ b/src/m/mega68.h @@ -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 diff --git a/src/m/mg1.h b/src/m/mg1.h index f7ef70a..6163ad6 100644 --- a/src/m/mg1.h +++ b/src/m/mg1.h @@ -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 diff --git a/src/m/mips-nec.h b/src/m/mips-nec.h index 15fefcc..a86c443 100644 --- a/src/m/mips-nec.h +++ b/src/m/mips-nec.h @@ -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 diff --git a/src/m/mips-siemens.h b/src/m/mips-siemens.h index 32c798f..e17397c 100644 --- a/src/m/mips-siemens.h +++ b/src/m/mips-siemens.h @@ -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 diff --git a/src/m/mips.h b/src/m/mips.h index a0751cb..dc12e02 100644 --- a/src/m/mips.h +++ b/src/m/mips.h @@ -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 diff --git a/src/m/next.h b/src/m/next.h index f2d51b4..b94c659 100644 --- a/src/m/next.h +++ b/src/m/next.h @@ -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. */ diff --git a/src/m/nh3000.h b/src/m/nh3000.h index 5549c8f..89ed532 100644 --- a/src/m/nh3000.h +++ b/src/m/nh3000.h @@ -30,11 +30,6 @@ Boston, MA 02111-1307, USA. */ operating system this machine is likely to run. USUAL-OPSYS="" */ -/* 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 diff --git a/src/m/nh4000.h b/src/m/nh4000.h index 789fe6c..8d9be7f 100644 --- a/src/m/nh4000.h +++ b/src/m/nh4000.h @@ -29,11 +29,6 @@ Boston, MA 02111-1307, USA. */ operating system this machine is likely to run. USUAL-OPSYS="" */ -/* 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 diff --git a/src/m/ns32000.h b/src/m/ns32000.h index 5d5967f..c047f12 100644 --- a/src/m/ns32000.h +++ b/src/m/ns32000.h @@ -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 */ diff --git a/src/m/nu.h b/src/m/nu.h index 15a5ef0..874bbb3 100644 --- a/src/m/nu.h +++ b/src/m/nu.h @@ -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. */ diff --git a/src/m/orion.h b/src/m/orion.h index 368d209..323cf44 100644 --- a/src/m/orion.h +++ b/src/m/orion.h @@ -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 diff --git a/src/m/orion105.h b/src/m/orion105.h index 29ee9fe..f558ef4 100644 --- a/src/m/orion105.h +++ b/src/m/orion105.h @@ -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'. */ diff --git a/src/m/pfa50.h b/src/m/pfa50.h index 110030d..9161bd8 100644 --- a/src/m/pfa50.h +++ b/src/m/pfa50.h @@ -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) & 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" diff --git a/src/m/plexus.h b/src/m/plexus.h index 0a80c0f..ec8d956 100644 --- a/src/m/plexus.h +++ b/src/m/plexus.h @@ -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 diff --git a/src/m/pmax.h b/src/m/pmax.h index d27722c..3ce797b 100644 --- a/src/m/pmax.h +++ b/src/m/pmax.h @@ -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 diff --git a/src/m/powerpc.h b/src/m/powerpc.h index f8e2282..7284f6d 100644 --- a/src/m/powerpc.h +++ b/src/m/powerpc.h @@ -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) diff --git a/src/m/pyramid.h b/src/m/pyramid.h index 1a88390..7bf7766 100644 --- a/src/m/pyramid.h +++ b/src/m/pyramid.h @@ -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 diff --git a/src/m/sequent-ptx.h b/src/m/sequent-ptx.h index 047ba3b..b64851d 100644 --- a/src/m/sequent-ptx.h +++ b/src/m/sequent-ptx.h @@ -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 diff --git a/src/m/sequent.h b/src/m/sequent.h index 4ee869d..e4b7028 100644 --- a/src/m/sequent.h +++ b/src/m/sequent.h @@ -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 diff --git a/src/m/sgi-challenge.h b/src/m/sgi-challenge.h index fda7878..a6900e5 100644 --- a/src/m/sgi-challenge.h +++ b/src/m/sgi-challenge.h @@ -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. */ diff --git a/src/m/sparc.h b/src/m/sparc.h index 457e9cd..c1445d0 100644 --- a/src/m/sparc.h +++ b/src/m/sparc.h @@ -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) diff --git a/src/m/sps7.h b/src/m/sps7.h index 4436e1b..4823ac3 100644 --- a/src/m/sps7.h +++ b/src/m/sps7.h @@ -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. */ diff --git a/src/m/stride.h b/src/m/stride.h index 453e948..def9730 100644 --- a/src/m/stride.h +++ b/src/m/stride.h @@ -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 diff --git a/src/m/sun1.h b/src/m/sun1.h index e98ed8a..e5d7483 100644 --- a/src/m/sun1.h +++ b/src/m/sun1.h @@ -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 diff --git a/src/m/sun2.h b/src/m/sun2.h index 3f0c7a8..921f362 100644 --- a/src/m/sun2.h +++ b/src/m/sun2.h @@ -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 diff --git a/src/m/tad68k.h b/src/m/tad68k.h index 363db63..dfc7206 100644 --- a/src/m/tad68k.h +++ b/src/m/tad68k.h @@ -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 */ diff --git a/src/m/tahoe.h b/src/m/tahoe.h index 1dde63a..5fc2e48 100644 --- a/src/m/tahoe.h +++ b/src/m/tahoe.h @@ -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 diff --git a/src/m/targon31.h b/src/m/targon31.h index 1b9d5f0..12c7b82 100644 --- a/src/m/targon31.h +++ b/src/m/targon31.h @@ -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 */ diff --git a/src/m/tek4300.h b/src/m/tek4300.h index 4e8a64e..85fc64f 100644 --- a/src/m/tek4300.h +++ b/src/m/tek4300.h @@ -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. */ diff --git a/src/m/tekxd88.h b/src/m/tekxd88.h index 494280b..11b8146 100644 --- a/src/m/tekxd88.h +++ b/src/m/tekxd88.h @@ -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 */ diff --git a/src/m/template.h b/src/m/template.h index a6c211f..dc5c9ea 100644 --- a/src/m/template.h +++ b/src/m/template.h @@ -24,24 +24,11 @@ Boston, MA 02111-1307, USA. */ operating system this machine is likely to run. USUAL-OPSYS="" */ -/* 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 diff --git a/src/m/tower32.h b/src/m/tower32.h index 2e9c891..37413e5 100644 --- a/src/m/tower32.h +++ b/src/m/tower32.h @@ -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 */ diff --git a/src/m/tower32v3.h b/src/m/tower32v3.h index 6cf236f..502e814 100644 --- a/src/m/tower32v3.h +++ b/src/m/tower32v3.h @@ -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 */ diff --git a/src/m/ustation.h b/src/m/ustation.h index e123232..5e4d2af 100644 --- a/src/m/ustation.h +++ b/src/m/ustation.h @@ -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 diff --git a/src/m/wicat.h b/src/m/wicat.h index b05aa36..87d5803 100644 --- a/src/m/wicat.h +++ b/src/m/wicat.h @@ -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 diff --git a/src/m/windowsnt.h b/src/m/windowsnt.h index cdf6b40..a20bce5 100644 --- a/src/m/windowsnt.h +++ b/src/m/windowsnt.h @@ -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 diff --git a/src/m/xps100.h b/src/m/xps100.h index cec6abe..6dfb22d 100644 --- a/src/m/xps100.h +++ b/src/m/xps100.h @@ -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 */ diff --git a/src/malloc.c b/src/malloc.c index 9f41290..599110a 100644 --- a/src/malloc.c +++ b/src/malloc.c @@ -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 diff --git a/src/marker.c b/src/marker.c index 408acc3..0811ac0 100644 --- a/src/marker.c +++ b/src/marker.c @@ -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); diff --git a/src/mem-limits.h b/src/mem-limits.h index fac6732..427a61c 100644 --- a/src/mem-limits.h +++ b/src/mem-limits.h @@ -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; diff --git a/src/menubar-msw.c b/src/menubar-msw.c index d25ccc6..a388c30 100644 --- a/src/menubar-msw.c +++ b/src/menubar-msw.c @@ -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++; diff --git a/src/mule-charset.c b/src/mule-charset.c index bf0f718..7aabbc0 100644 --- a/src/mule-charset.c +++ b/src/mule-charset.c @@ -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); diff --git a/src/nt.c b/src/nt.c index e745609..4b21a11 100644 --- 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; } diff --git a/src/ntheap.c b/src/ntheap.c index 8e54bc8..704bd32 100644 --- a/src/ntheap.c +++ b/src/ntheap.c @@ -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 diff --git a/src/ntheap.h b/src/ntheap.h index cb169d2..091cf0c 100644 --- a/src/ntheap.h +++ b/src/ntheap.h @@ -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) \ diff --git a/src/ntplay.c b/src/ntplay.c index 8ff0be7..d535fd9 100644 --- a/src/ntplay.c +++ b/src/ntplay.c @@ -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 diff --git a/src/ntproc.c b/src/ntproc.c index f15fe99..0b95e43 100644 --- a/src/ntproc.c +++ b/src/ntproc.c @@ -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) { diff --git a/src/objects-msw.c b/src/objects-msw.c index 726af9d..421bb51 100644 --- a/src/objects-msw.c +++ b/src/objects-msw.c @@ -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) diff --git a/src/objects-msw.h b/src/objects-msw.h index 71b423b..f01de94 100644 --- a/src/objects-msw.h +++ b/src/objects-msw.h @@ -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_ */ diff --git a/src/objects.c b/src/objects.c index 3cedafd..e91dbed 100644 --- a/src/objects.c +++ b/src/objects.c @@ -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); diff --git a/src/opaque.c b/src/opaque.c index 51ea934..1b080e5 100644 --- a/src/opaque.c +++ b/src/opaque.c @@ -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 (); } diff --git a/src/process-nt.c b/src/process-nt.c index ad56f70..f7ab6a5 100644 --- a/src/process-nt.c +++ b/src/process-nt.c @@ -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]); diff --git a/src/process.c b/src/process.c index 643e123..f5e5dae 100644 --- a/src/process.c +++ b/src/process.c @@ -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"); diff --git a/src/ralloc.c b/src/ralloc.c index e091b2f..ea8f8f8 100644 --- a/src/ralloc.c +++ b/src/ralloc.c @@ -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; } diff --git a/src/rangetab.c b/src/rangetab.c index 12b3bf3..fc29885 100644 --- a/src/rangetab.c +++ b/src/rangetab.c @@ -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"); diff --git a/src/realpath.c b/src/realpath.c index b39257d..08d32d7 100644 --- a/src/realpath.c +++ b/src/realpath.c @@ -28,13 +28,14 @@ Boston, MA 02111-1307, USA. */ #include #include #include +#include + #ifdef HAVE_UNISTD_H #include #endif -#ifdef _POSIX_VERSION -#include /* for PATH_MAX */ -#else -#include /* for MAXPATHLEN */ + +#if defined (HAVE_SYS_PARAM_H) +#include #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) { diff --git a/src/redisplay.c b/src/redisplay.c index 42858ff..c3ef67c 100644 --- a/src/redisplay.c +++ b/src/redisplay.c @@ -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); } } diff --git a/src/redisplay.h b/src/redisplay.h index e70254e..9c91f6e 100644 --- a/src/redisplay.h +++ b/src/redisplay.h @@ -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, diff --git a/src/s/cygwin32.h b/src/s/cygwin32.h index 19562b8..d108923 100644 --- a/src/s/cygwin32.h +++ b/src/s/cygwin32.h @@ -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 diff --git a/src/s/mingw32.h b/src/s/mingw32.h index 0e196fe..f65ba74 100644 --- a/src/s/mingw32.h +++ b/src/s/mingw32.h @@ -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 diff --git a/src/s/windowsnt.h b/src/s/windowsnt.h index 45395e2..33d49a4 100644 --- a/src/s/windowsnt.h +++ b/src/s/windowsnt.h @@ -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 */ diff --git a/src/select-msw.c b/src/select-msw.c index a760eb0..f72a46c 100644 --- a/src/select-msw.c +++ b/src/select-msw.c @@ -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' */ diff --git a/src/specifier.c b/src/specifier.c index cdb1cc3..fad2e0f 100644 --- a/src/specifier.c +++ b/src/specifier.c @@ -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"); diff --git a/src/symbols.c b/src/symbols.c index ffb5367..2667fce 100644 --- a/src/symbols.c +++ b/src/symbols.c @@ -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) /* diff --git a/src/symeval.h b/src/symeval.h index 41e2324..ac3bec1 100644 --- a/src/symeval.h +++ b/src/symeval.h @@ -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 */ \ diff --git a/src/sysdep.c b/src/sysdep.c index b875b48..fbf71ac 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -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; diff --git a/src/toolbar-msw.c b/src/toolbar-msw.c index a09610e..c5a0778 100644 --- a/src/toolbar-msw.c +++ b/src/toolbar-msw.c @@ -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); diff --git a/src/toolbar.c b/src/toolbar.c index cff25ac..c7221c7 100644 --- a/src/toolbar.c +++ b/src/toolbar.c @@ -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)) diff --git a/src/tooltalk.c b/src/tooltalk.c index c3359e0..4a87c3e 100644 --- a/src/tooltalk.c +++ b/src/tooltalk.c @@ -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"); diff --git a/src/unexnt.c b/src/unexnt.c index feefef8..53abecf 100644 --- a/src/unexnt.c +++ b/src/unexnt.c @@ -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); diff --git a/src/vm-limit.c b/src/vm-limit.c index 404534e..b6c7dda 100644 --- a/src/vm-limit.c +++ b/src/vm-limit.c @@ -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 (); diff --git a/src/window.c b/src/window.c index 7a6eb7a..7f84aa0 100644 --- a/src/window.c +++ b/src/window.c @@ -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"); diff --git a/tests/ChangeLog b/tests/ChangeLog index e3f98c9..9344725 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,11 @@ +2000-02-21 Martin Buchholz + + * XEmacs 21.2.30 is released. + +2000-02-17 Martin Buchholz + + * automated/mule-tests.el: Added some fileio tests. + 2000-02-16 Martin Buchholz * XEmacs 21.2.29 is released. diff --git a/tests/automated/mule-tests.el b/tests/automated/mule-tests.el index 0e44714..b73163c 100644 --- a/tests/automated/mule-tests.el +++ b/tests/automated/mule-tests.el @@ -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... + ) diff --git a/version.sh b/version.sh index 9bdf523..e3759ea 100644 --- a/version.sh +++ b/version.sh @@ -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 -- 1.7.10.4