Sync up with r21-2-46-utf-2000-0_19-b1. r21-2-46-utf-2000-0_19-nc4-b5-1-2
authortomo <tomo>
Tue, 13 Aug 2002 17:40:41 +0000 (17:40 +0000)
committertomo <tomo>
Tue, 13 Aug 2002 17:40:41 +0000 (17:40 +0000)
116 files changed:
CHANGES-beta
ChangeLog
configure
configure.in
configure.usage
etc/NEWS
etc/README
etc/photos/jason.png [deleted file]
etc/photos/jasonm.png [deleted file]
etc/sample.emacs [deleted file]
lib-src/ChangeLog
lib-src/aixcc.lex [new file with mode: 0644]
lib-src/config.values.in
lib-src/gnuclient.c
lib-src/gnuserv.c
lib-src/installexe.sh
lisp/ChangeLog
lisp/auto-autoloads.el
lisp/build-report.el
lisp/custom-load.el
lisp/device.el
lisp/dragdrop.el
lisp/dumped-lisp.el
lisp/faces.el
lisp/font-lock.el
lisp/frame.el
lisp/gnuserv.el
lisp/help.el
lisp/keydefs.el
lisp/ldap.el
lisp/loadup.el
lisp/menubar-items.el
lisp/menubar.el
lisp/minibuf.el
lisp/mule/mule-init.el
lisp/simple.el
lwlib/ChangeLog
man/ChangeLog
man/internals/internals.texi
man/lispref/help.texi
man/make-stds.texi
man/new-users-guide/custom1.texi
man/new-users-guide/custom2.texi
man/new-users-guide/modes.texi
man/new-users-guide/new-users-guide.texi
man/new-users-guide/xmenu.texi
man/standards.texi
man/xemacs-faq.texi
man/xemacs/packages.texi
netinstall/ChangeLog
netinstall/Makefile.in.in
netinstall/desktop.cc
netinstall/inilex.c [deleted file]
netinstall/iniparse.c [deleted file]
netinstall/res.rc
nt/ChangeLog
nt/config.h
nt/config.inc.samp
nt/xemacs.mak
src/ChangeLog
src/Makefile.in.in
src/buffer.c
src/callproc.c
src/cmds.c
src/config.h.in
src/console.c
src/console.h
src/depend
src/device.c
src/device.h
src/dragdrop.c
src/dump-id.h [new file with mode: 0644]
src/dumper.c
src/elhash.c
src/emacs.c
src/event-msw.c
src/event-stream.c
src/events.c
src/events.h
src/faces.c
src/file-coding.c
src/fileio.c
src/frame.h
src/general-slots.h
src/glyphs-x.c
src/glyphs.c
src/gpmevent.c
src/gutter.c
src/inline.c
src/lisp-disunion.h
src/lisp.h
src/lrecord.h
src/lstream.c
src/lstream.h
src/make-src-depend
src/md5.c
src/mule-ccl.c
src/nt.c
src/process-nt.c
src/process-unix.c
src/realpath.c
src/redisplay-output.c
src/redisplay.c
src/s/mingw32.h
src/search.c
src/symsinit.h
src/syntax.c
src/sysdep.c
src/sysfile.h
src/toolbar.c
src/unexcw.c
src/window.c
tests/ChangeLog
tests/automated/case-tests.el
tests/glyph-test.el
version.sh

index a762b32..1fc567c 100644 (file)
@@ -1,3 +1,6 @@
+to 21.2.46 "Urania"
+-- GTK code has been merged as an experimental display type -- William Perry
+
 to 21.2.45 "Thelxepeia"
 -- lib-src Makefile fixes -- Martin Buchholz
 -- startup path fixes -- Michael Sperber
index 19714cd..4676cef 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
        * configure.in: Add new option `--with-utf-2000'; define `UTF2000'
        if it is specified.
 
+2001-03-21  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.46 "Urania" is released.
+
+2001-03-19  Andy Piper  <andy@xemacs.org>
+
+       * configure.in: default rel-alloc to off under cygwin
+
+2001-03-15  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * ChangeLog: Fix CVS commit breakage from GTK merge, log GTK merge.
+
+       * CHANGES-beta:
+       * configure.in:
+       Fix gratuitous whitespace changes from GTK merge.
+
+       * configure.usage: Untabify --with-{gtk,gnome}.
+
+2001-03-15  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * etc/OXYMORONS: New file of 21.4 codenames.
+
+2001-03-12  Andy Piper  <andy@xemacs.org>
+
+       * configure.in: only pick up mingw directory.
+
+2001-03-02  Ben Wing  <ben@xemacs.org>
+
+       * info\dir: Update to 21.4; clean up descriptions of manuals;
+       replace misnomer "Local Packages" with more correct "Other
+       Documentation".
+
+2001-03-02  Ben Wing  <ben@xemacs.org>
+
+       * etc\README: sample.emacs -> sample.init.el.
+
+2001-03-09  William M. Perry  <wmperry@aventail.com>
+
+       * CHANGES-beta:
+       * configure.in:
+       * configure.usage:
+       The Great GTK Merge.
+
+2001-02-23  Andy Piper  <andy@xemacs.org>
+
+       * configure.usage (--with-netinstall): add docs.
+
+       * configure.in: with_netinstall is a new option. Default to off.
+
 2001-02-23  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.45 "Thelxepeia" is released.
index a7fb810..e8f4db3 100755 (executable)
--- a/configure
+++ b/configure
@@ -182,7 +182,7 @@ done
 ac_ext=c
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
 xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run'
-xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
+xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
 ac_cpp='$CPP '"$xe_cppflags"
 ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&5'
 ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5'
@@ -230,6 +230,7 @@ package_path=''
 etcdir='${datadir}/${instvardir}/etc'
 archlibdir='${datadir}/${instvardir}/${configuration}'
 docdir='${archlibdir}'
+with_netinstall="no"
 with_prefix='yes'
 with_site_lisp='no'
 with_site_modules='yes'
@@ -247,6 +248,8 @@ rel_alloc='default'
 with_system_malloc='default'
 with_dlmalloc='default'
 native_sound_lib=''
+with_gtk='no'
+with_gnome='no'
 use_assertions="yes"
 with_toolbars=""
 with_tty=""
@@ -306,6 +309,8 @@ while test $# != 0; do
        with_site_modules | \
        with_x          | \
        with_x11        | \
+       with_gtk        | \
+       with_gnome      | \
        with_msw        | \
        with_gcc        | \
        dynamic         | \
@@ -347,6 +352,7 @@ while test $# != 0; do
        with_hesiod     | \
        with_dnet       | \
        with_infodock   | \
+       with_netinstall   | \
        external_widget | \
        verbose         | \
        extra_verbose   | \
@@ -652,7 +658,7 @@ EOF
 }
  ;;
              datadir )
-               { test "$extra_verbose" = "yes" && cat << \EOF
+               { test "$extra_verbose" = "yes" && cat << \EOF
     Defining INFODIR_USER_DEFINED
 EOF
 cat >> confdefs.h <<\EOF
@@ -660,7 +666,7 @@ cat >> confdefs.h <<\EOF
 EOF
 }
 
-               { test "$extra_verbose" = "yes" && cat << \EOF
+               { test "$extra_verbose" = "yes" && cat << \EOF
     Defining LISPDIR_USER_DEFINED
 EOF
 cat >> confdefs.h <<\EOF
@@ -668,7 +674,7 @@ cat >> confdefs.h <<\EOF
 EOF
 }
 
-               { test "$extra_verbose" = "yes" && cat << \EOF
+               { test "$extra_verbose" = "yes" && cat << \EOF
     Defining MODULEDIR_USER_DEFINED
 EOF
 cat >> confdefs.h <<\EOF
@@ -733,10 +739,11 @@ EOF
            a | at | ath | athe | athen | athena )      val=athena ;;
            n | no | non | none )                       val=no     ;;
            y | ye | yes )                              val=yes    ;;
-           m | ms | msw )                      val=msw    ;;
+           g | gt | gtk )                              val=gtk    ;;
+           m | ms | msw )                              val=msw    ;;
            * ) (echo "$progname: Usage error:"
 echo " " "The \`--$optname' option must have one of these values:
-  \`lucid', \`motif', \`athena', \`yes', or \`no'."
+  \`gtk\', \`lucid', \`motif', \`athena', \`yes', or \`no'."
 echo "  Use \`$progname --help' to show usage.") >&2 && exit 1 ;;
          esac
          eval "$opt=\"$val\""
@@ -838,7 +845,7 @@ echo "  Use \`$progname --help' to show usage.") >&2 && exit 1
 fi
 
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:842: checking whether ln -s works" >&5
+echo "configure:849: checking whether ln -s works" >&5
 
 rm -f conftestdata
 if ln -s X conftestdata 2>/dev/null
@@ -1103,7 +1110,7 @@ EOF
 
 
 echo $ac_n "checking "host system type"""... $ac_c" 1>&6
-echo "configure:1107: checking "host system type"" >&5
+echo "configure:1114: checking "host system type"" >&5
 internal_configuration=`echo $configuration | sed 's/-\(workshop\)//'`
 canonical=`${CONFIG_SHELL-/bin/sh} $srcdir/config.sub "$internal_configuration"`
 configuration=`echo "$configuration" | sed 's/^\([^-][^-]*-[^-][^-]*-[^-][^-]*\)-.*$/\1/'`
@@ -1617,7 +1624,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:1621: checking for $ac_word" >&5
+echo "configure:1628: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1644,7 +1651,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:1648: checking for $ac_word" >&5
+echo "configure:1655: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1692,7 +1699,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:1696: checking for $ac_word" >&5
+echo "configure:1703: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1721,12 +1728,12 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1725: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1732: 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'
 xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run'
-xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
+xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
 ac_cpp='$CPP '"$xe_cppflags"
 ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&5'
 ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5'
@@ -1734,12 +1741,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 1738 "configure"
+#line 1745 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1750: \"$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
@@ -1756,7 +1763,7 @@ rm -fr conftest*
 ac_ext=c
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
 xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run'
-xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
+xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
 ac_cpp='$CPP '"$xe_cppflags"
 ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&5'
 ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5'
@@ -1767,19 +1774,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:1771: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1778: 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:1776: checking whether we are using GNU C" >&5
+echo "configure:1783: checking whether we are using GNU C" >&5
 
 cat > conftest.c <<EOF
 #ifdef __GNUC__
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1783: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1790: \"$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
@@ -1797,7 +1804,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:1801: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1808: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -1830,7 +1837,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:1834: checking for $ac_word" >&5
+echo "configure:1841: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1857,7 +1864,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:1861: checking for $ac_word" >&5
+echo "configure:1868: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1905,7 +1912,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:1909: checking for $ac_word" >&5
+echo "configure:1916: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1934,12 +1941,12 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1938: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1945: 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'
 xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run'
-xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
+xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
 ac_cpp='$CPP '"$xe_cppflags"
 ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&5'
 ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5'
@@ -1947,12 +1954,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 1951 "configure"
+#line 1958 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1963: \"$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
@@ -1969,7 +1976,7 @@ rm -fr conftest*
 ac_ext=c
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
 xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run'
-xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
+xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
 ac_cpp='$CPP '"$xe_cppflags"
 ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&5'
 ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5'
@@ -1980,19 +1987,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:1984: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1991: 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:1989: checking whether we are using GNU C" >&5
+echo "configure:1996: checking whether we are using GNU C" >&5
 
 cat > conftest.c <<EOF
 #ifdef __GNUC__
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1996: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2003: \"$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
@@ -2010,7 +2017,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:2014: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2021: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -2043,7 +2050,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:2047: checking for $ac_word" >&5
+echo "configure:2054: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2070,7 +2077,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:2074: checking for $ac_word" >&5
+echo "configure:2081: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2118,7 +2125,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:2122: checking for $ac_word" >&5
+echo "configure:2129: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2147,12 +2154,12 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:2151: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:2158: 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'
 xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run'
-xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
+xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
 ac_cpp='$CPP '"$xe_cppflags"
 ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&5'
 ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5'
@@ -2160,12 +2167,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 2164 "configure"
+#line 2171 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:2169: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2176: \"$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
@@ -2182,7 +2189,7 @@ rm -fr conftest*
 ac_ext=c
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
 xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run'
-xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
+xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
 ac_cpp='$CPP '"$xe_cppflags"
 ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&5'
 ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5'
@@ -2193,19 +2200,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:2197: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:2204: 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:2202: checking whether we are using GNU C" >&5
+echo "configure:2209: checking whether we are using GNU C" >&5
 
 cat > conftest.c <<EOF
 #ifdef __GNUC__
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2209: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2216: \"$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
@@ -2223,7 +2230,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:2227: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2234: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -2260,7 +2267,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:2264: checking how to run the C preprocessor" >&5
+echo "configure:2271: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -2273,13 +2280,13 @@ if test -z "$CPP"; then
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 2277 "configure"
+#line 2284 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2290: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -2290,13 +2297,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 2294 "configure"
+#line 2301 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2300: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2307: \"$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
   :
@@ -2307,13 +2314,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 2311 "configure"
+#line 2318 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2317: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2324: \"$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
   :
@@ -2339,9 +2346,9 @@ echo "$ac_t""$CPP" 1>&6
 
 
 echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:2343: checking for AIX" >&5
+echo "configure:2350: checking for AIX" >&5
 cat > conftest.$ac_ext <<EOF
-#line 2345 "configure"
+#line 2352 "configure"
 #include "confdefs.h"
 #ifdef _AIX
   yes
@@ -2368,9 +2375,9 @@ rm -f conftest*
  
 
 echo $ac_n "checking for GNU libc""... $ac_c" 1>&6
-echo "configure:2372: checking for GNU libc" >&5
+echo "configure:2379: checking for GNU libc" >&5
 cat > conftest.$ac_ext <<EOF
-#line 2374 "configure"
+#line 2381 "configure"
 #include "confdefs.h"
 #include <features.h>
 int main() {
@@ -2382,7 +2389,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2386: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2393: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   have_glibc=yes
 else
@@ -2459,7 +2466,7 @@ EOF
 esac
 
 cat > conftest.$ac_ext <<EOF
-#line 2463 "configure"
+#line 2470 "configure"
 #include "confdefs.h"
 int main () {
 #if defined __SUNPRO_C
@@ -2473,7 +2480,7 @@ return 0;
 #endif
 }
 EOF
-if { (eval echo configure:2477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:2484: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -2693,7 +2700,7 @@ case "$opsys" in mingw* | cygwin*)
   cygwin_include=`eval "gcc -print-file-name=libc.a"` ;
   cygwin_include=`eval "dirname $cygwin_include"` ;
   cygwin_include="-I$cygwin_include/../include" ;
-  extra_includes="$cygwin_include/mingw32 $cygwin_include/mingw $cygwin_include" ;
+  extra_includes="$cygwin_include/mingw $cygwin_include" ;
   case "$opsys" in mingw*)
     c_switch_system="$c_switch_system $extra_includes" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"$extra_includes\" to \$c_switch_system"; fi ;;
   esac
@@ -2707,17 +2714,17 @@ test "$__DECC" = "yes" && c_switch_site="$c_switch_site -std1" &&  if test "$ext
 
 if test "$__USLC__" = yes; then
   echo $ac_n "checking for whether the -Kalloca compiler flag is needed""... $ac_c" 1>&6
-echo "configure:2711: checking for whether the -Kalloca compiler flag is needed" >&5
+echo "configure:2718: checking for whether the -Kalloca compiler flag is needed" >&5
   need_kalloca=no
   cat > conftest.$ac_ext <<EOF
-#line 2714 "configure"
+#line 2721 "configure"
 #include "confdefs.h"
 
 int main() {
 void *x = alloca(4);
 ; return 0; }
 EOF
-if { (eval echo configure:2721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2728: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   :
 else
@@ -2728,14 +2735,14 @@ else
     xe_save_c_switch_system="$c_switch_system"
     c_switch_system="$c_switch_system -Kalloca"
     cat > conftest.$ac_ext <<EOF
-#line 2732 "configure"
+#line 2739 "configure"
 #include "confdefs.h"
 
 int main() {
 void *x = alloca(4);
 ; return 0; }
 EOF
-if { (eval echo configure:2739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
    need_kalloca=yes 
 else
@@ -2769,7 +2776,7 @@ fi
 
 if test "$GCC" = "yes"; then
 echo $ac_n "checking for buggy gcc versions""... $ac_c" 1>&6
-echo "configure:2773: checking for buggy gcc versions" >&5
+echo "configure:2780: 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.*)
@@ -2892,7 +2899,7 @@ test "$pdump" = "yes" && extra_objs="$extra_objs dumper.o" &&  if test "$extra_v
  fi
 
 echo $ac_n "checking for dynodump""... $ac_c" 1>&6
-echo "configure:2896: checking for dynodump" >&5
+echo "configure:2903: checking for dynodump" >&5
 if test "$unexec" != "unexsol2.o"; then
   echo "$ac_t""no" 1>&6
 else
@@ -2930,12 +2937,12 @@ if test "$unexec" = "unexaix.o"; then
   done
   
 echo $ac_n "checking for terminateAndUnload in -lC""... $ac_c" 1>&6
-echo "configure:2934: checking for terminateAndUnload in -lC" >&5
+echo "configure:2941: checking for terminateAndUnload in -lC" >&5
 ac_lib_var=`echo C'_'terminateAndUnload | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lC "
 cat > conftest.$ac_ext <<EOF
-#line 2939 "configure"
+#line 2946 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2946,7 +2953,7 @@ int main() {
 terminateAndUnload()
 ; return 0; }
 EOF
-if { (eval echo configure:2950: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2957: \"$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
@@ -3054,7 +3061,7 @@ fi
 
 if test "$add_runtime_path" = "yes"; then
       echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6
-echo "configure:3058: checking "for runtime libraries flag"" >&5
+echo "configure:3065: checking "for runtime libraries flag"" >&5
   case "$opsys" in
     sol2 ) dash_r="-R" ;;
     decosf* | linux* | irix*) dash_r="-rpath " ;;
@@ -3076,14 +3083,14 @@ if test "$GCC" = "yes"; then
   done
 fi
         cat > conftest.$ac_ext <<EOF
-#line 3080 "configure"
+#line 3087 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3087: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   dash_r="$try_dash_r"
 else
@@ -3184,10 +3191,10 @@ else
 fi
 after_morecore_hook_exists=yes
 echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6
-echo "configure:3188: checking for malloc_set_state" >&5
+echo "configure:3195: checking for malloc_set_state" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3191 "configure"
+#line 3198 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char malloc_set_state(); below.  */
@@ -3210,7 +3217,7 @@ malloc_set_state();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3214: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3221: \"$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
@@ -3230,16 +3237,16 @@ doug_lea_malloc=no
 fi
 
 echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6
-echo "configure:3234: checking whether __after_morecore_hook exists" >&5
+echo "configure:3241: checking whether __after_morecore_hook exists" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3236 "configure"
+#line 3243 "configure"
 #include "confdefs.h"
 extern void (* __after_morecore_hook)();
 int main() {
 __after_morecore_hook = 0
 ; return 0; }
 EOF
-if { (eval echo configure:3243: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3250: \"$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
@@ -3295,7 +3302,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:3299: checking for $ac_word" >&5
+echo "configure:3306: checking for $ac_word" >&5
 
 if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
@@ -3350,7 +3357,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:3354: checking for a BSD compatible install" >&5
+echo "configure:3361: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 
   IFS="${IFS=  }"; ac_save_IFS="$IFS"; IFS=":"
@@ -3404,7 +3411,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:3408: checking for $ac_word" >&5
+echo "configure:3415: checking for $ac_word" >&5
 
 if test -n "$YACC"; then
   ac_cv_prog_YACC="$YACC" # Let the user override the test.
@@ -3436,15 +3443,15 @@ for ac_hdr in   a.out.h   elf.h   cygwin/version.h   fcntl.h   inttypes.h   libg
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3440: checking for $ac_hdr" >&5
+echo "configure:3447: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3443 "configure"
+#line 3450 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3448: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3455: \"$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*
@@ -3474,10 +3481,10 @@ fi
 done
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:3478: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:3485: checking for sys/wait.h that is POSIX.1 compatible" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3481 "configure"
+#line 3488 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -3493,7 +3500,7 @@ wait (&s);
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:3497: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3504: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -3517,10 +3524,10 @@ EOF
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3521: checking for ANSI C header files" >&5
+echo "configure:3528: checking for ANSI C header files" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3524 "configure"
+#line 3531 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3528,7 +3535,7 @@ cat > conftest.$ac_ext <<EOF
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3532: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3539: \"$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*
@@ -3545,7 +3552,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3549 "configure"
+#line 3556 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -3563,7 +3570,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3567 "configure"
+#line 3574 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -3581,7 +3588,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
 cat > conftest.$ac_ext <<EOF
-#line 3585 "configure"
+#line 3592 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3592,7 +3599,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:3596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:3603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -3618,10 +3625,10 @@ EOF
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:3622: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:3629: checking whether time.h and sys/time.h may both be included" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3625 "configure"
+#line 3632 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -3630,7 +3637,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:3634: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3641: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -3654,10 +3661,10 @@ EOF
 fi
 
 echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
-echo "configure:3658: checking for sys_siglist declaration in signal.h or unistd.h" >&5
+echo "configure:3665: checking for sys_siglist declaration in signal.h or unistd.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3661 "configure"
+#line 3668 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3669,7 +3676,7 @@ int main() {
 char *msg = *(sys_siglist + 1);
 ; return 0; }
 EOF
-if { (eval echo configure:3673: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3680: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_decl_sys_siglist=yes
 else
@@ -3695,9 +3702,9 @@ fi
 
 
 echo $ac_n "checking for utime""... $ac_c" 1>&6
-echo "configure:3699: checking for utime" >&5
+echo "configure:3706: checking for utime" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3701 "configure"
+#line 3708 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utime.h>
@@ -3705,7 +3712,7 @@ int main() {
 struct utimbuf x; x.actime = x.modtime = 0; utime ("/", &x);
 ; return 0; }
 EOF
-if { (eval echo configure:3709: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3716: \"$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
@@ -3724,10 +3731,10 @@ else
       for ac_func in utimes
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3728: checking for $ac_func" >&5
+echo "configure:3735: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3731 "configure"
+#line 3738 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3750,7 +3757,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3754: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3761: \"$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
@@ -3782,10 +3789,10 @@ rm -f conftest*
 
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3786: checking return type of signal handlers" >&5
+echo "configure:3793: checking return type of signal handlers" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3789 "configure"
+#line 3796 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3802,7 +3809,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:3806: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3813: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -3824,10 +3831,10 @@ EOF
 
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3828: checking for size_t" >&5
+echo "configure:3835: checking for size_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3831 "configure"
+#line 3838 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3858,10 +3865,10 @@ EOF
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3862: checking for pid_t" >&5
+echo "configure:3869: checking for pid_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3865 "configure"
+#line 3872 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3892,10 +3899,10 @@ EOF
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3896: checking for uid_t in sys/types.h" >&5
+echo "configure:3903: checking for uid_t in sys/types.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3899 "configure"
+#line 3906 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -3931,10 +3938,10 @@ EOF
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:3935: checking for mode_t" >&5
+echo "configure:3942: checking for mode_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3938 "configure"
+#line 3945 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3965,10 +3972,10 @@ EOF
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:3969: checking for off_t" >&5
+echo "configure:3976: checking for off_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3972 "configure"
+#line 3979 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3999,10 +4006,10 @@ EOF
 fi
 
 echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:4003: checking for ssize_t" >&5
+echo "configure:4010: checking for ssize_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4006 "configure"
+#line 4013 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -4034,9 +4041,9 @@ fi
 
 
 echo $ac_n "checking for socklen_t""... $ac_c" 1>&6
-echo "configure:4038: checking for socklen_t" >&5
+echo "configure:4045: checking for socklen_t" >&5
 cat > conftest.$ac_ext <<EOF
-#line 4040 "configure"
+#line 4047 "configure"
 #include "confdefs.h"
 #include <sys/socket.h>
 socklen_t x;
@@ -4045,7 +4052,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4049: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4056: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 else
@@ -4054,7 +4061,7 @@ else
   rm -rf conftest*
   
 cat > conftest.$ac_ext <<EOF
-#line 4058 "configure"
+#line 4065 "configure"
 #include "confdefs.h"
 #include <sys/socket.h>
 int accept (int, struct sockaddr *, size_t *);
@@ -4063,7 +4070,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4067: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4074: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
 echo "$ac_t""size_t" 1>&6
@@ -4095,9 +4102,9 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking for struct timeval""... $ac_c" 1>&6
-echo "configure:4099: checking for struct timeval" >&5
+echo "configure:4106: checking for struct timeval" >&5
 cat > conftest.$ac_ext <<EOF
-#line 4101 "configure"
+#line 4108 "configure"
 #include "confdefs.h"
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
@@ -4113,7 +4120,7 @@ int main() {
 static struct timeval x; x.tv_sec = x.tv_usec;
 ; return 0; }
 EOF
-if { (eval echo configure:4117: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4124: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
   HAVE_TIMEVAL=yes
@@ -4135,10 +4142,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:4139: checking whether struct tm is in sys/time.h or time.h" >&5
+echo "configure:4146: checking whether struct tm is in sys/time.h or time.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4142 "configure"
+#line 4149 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <time.h>
@@ -4146,7 +4153,7 @@ int main() {
 struct tm *tp; tp->tm_sec;
 ; return 0; }
 EOF
-if { (eval echo configure:4150: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4157: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm=time.h
 else
@@ -4170,10 +4177,10 @@ EOF
 fi
 
 echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
-echo "configure:4174: checking for tm_zone in struct tm" >&5
+echo "configure:4181: checking for tm_zone in struct tm" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4177 "configure"
+#line 4184 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_cv_struct_tm>
@@ -4181,7 +4188,7 @@ int main() {
 struct tm tm; tm.tm_zone;
 ; return 0; }
 EOF
-if { (eval echo configure:4185: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4192: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm_zone=yes
 else
@@ -4204,10 +4211,10 @@ EOF
 
 else
   echo $ac_n "checking for tzname""... $ac_c" 1>&6
-echo "configure:4208: checking for tzname" >&5
+echo "configure:4215: checking for tzname" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4211 "configure"
+#line 4218 "configure"
 #include "confdefs.h"
 #include <time.h>
 #ifndef tzname /* For SGI.  */
@@ -4217,7 +4224,7 @@ int main() {
 atoi(*tzname);
 ; return 0; }
 EOF
-if { (eval echo configure:4221: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4228: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_var_tzname=yes
 else
@@ -4243,10 +4250,10 @@ fi
 
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:4247: checking for working const" >&5
+echo "configure:4254: checking for working const" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4250 "configure"
+#line 4257 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -4295,7 +4302,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:4299: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4306: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -4320,7 +4327,7 @@ fi
 
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:4324: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:4331: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 
 cat > conftestmake <<\EOF
@@ -4345,12 +4352,12 @@ fi
 
 
 echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:4349: checking whether byte ordering is bigendian" >&5
+echo "configure:4356: checking whether byte ordering is bigendian" >&5
 
 ac_cv_c_bigendian=unknown
 # See if sys/param.h defines the BYTE_ORDER macro.
 cat > conftest.$ac_ext <<EOF
-#line 4354 "configure"
+#line 4361 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4361,11 +4368,11 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4365: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4372: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   # It does; now see whether it defined to BIG_ENDIAN or not.
 cat > conftest.$ac_ext <<EOF
-#line 4369 "configure"
+#line 4376 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4376,7 +4383,7 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4380: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4387: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -4393,7 +4400,7 @@ fi
 rm -f conftest*
 if test $ac_cv_c_bigendian = unknown; then
 cat > conftest.$ac_ext <<EOF
-#line 4397 "configure"
+#line 4404 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -4406,7 +4413,7 @@ main () {
   exit (u.c[sizeof (long) - 1] == 1);
 }
 EOF
-if { (eval echo configure:4410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_c_bigendian=no
 else
@@ -4433,10 +4440,10 @@ fi
 
 
 echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:4437: checking size of short" >&5
+echo "configure:4444: checking size of short" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4440 "configure"
+#line 4447 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <sys/types.h>
@@ -4448,7 +4455,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4452: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_short=`cat conftestval`
 else
@@ -4476,10 +4483,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:4480: checking size of int" >&5
+echo "configure:4487: checking size of int" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4483 "configure"
+#line 4490 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <sys/types.h>
@@ -4491,7 +4498,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4502: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_int=`cat conftestval`
 else
@@ -4513,10 +4520,10 @@ EOF
 
 
 echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:4517: checking size of long" >&5
+echo "configure:4524: checking size of long" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4520 "configure"
+#line 4527 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <sys/types.h>
@@ -4528,7 +4535,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4532: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_long=`cat conftestval`
 else
@@ -4550,10 +4557,10 @@ EOF
 
 
 echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:4554: checking size of long long" >&5
+echo "configure:4561: checking size of long long" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4557 "configure"
+#line 4564 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <sys/types.h>
@@ -4565,7 +4572,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4576: \"$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
@@ -4587,10 +4594,10 @@ EOF
 
 
 echo $ac_n "checking size of void *""... $ac_c" 1>&6
-echo "configure:4591: checking size of void *" >&5
+echo "configure:4598: checking size of void *" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4594 "configure"
+#line 4601 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <sys/types.h>
@@ -4602,7 +4609,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4613: \"$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
@@ -4625,7 +4632,7 @@ EOF
 
 
 echo $ac_n "checking for long file names""... $ac_c" 1>&6
-echo "configure:4629: checking for long file names" >&5
+echo "configure:4636: 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:
@@ -4671,10 +4678,10 @@ fi
 
 
 echo $ac_n "checking for sin""... $ac_c" 1>&6
-echo "configure:4675: checking for sin" >&5
+echo "configure:4682: checking for sin" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4678 "configure"
+#line 4685 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char sin(); below.  */
@@ -4697,7 +4704,7 @@ sin();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4701: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4708: \"$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
@@ -4715,12 +4722,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-echo "configure:4719: checking for sin in -lm" >&5
+echo "configure:4726: checking for sin in -lm" >&5
 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lm "
 cat > conftest.$ac_ext <<EOF
-#line 4724 "configure"
+#line 4731 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4731,7 +4738,7 @@ int main() {
 sin()
 ; return 0; }
 EOF
-if { (eval echo configure:4735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4742: \"$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
@@ -4775,14 +4782,14 @@ EOF
 
 
 cat > conftest.$ac_ext <<EOF
-#line 4779 "configure"
+#line 4786 "configure"
 #include "confdefs.h"
 #include <math.h>
 int main() {
 return atanh(1.0) + asinh(1.0) + acosh(1.0); 
 ; return 0; }
 EOF
-if { (eval echo configure:4786: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4793: \"$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
@@ -4799,14 +4806,14 @@ fi
 rm -f conftest*
 
 echo "checking type of mail spool file locking" 1>&6
-echo "configure:4803: checking type of mail spool file locking" >&5
+echo "configure:4810: 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:4807: checking for $ac_func" >&5
+echo "configure:4814: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4810 "configure"
+#line 4817 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4829,7 +4836,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4840: \"$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
@@ -4911,12 +4918,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:4915: checking for cma_open in -lpthreads" >&5
+echo "configure:4922: checking for cma_open in -lpthreads" >&5
 ac_lib_var=`echo pthreads'_'cma_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpthreads "
 cat > conftest.$ac_ext <<EOF
-#line 4920 "configure"
+#line 4927 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4927,7 +4934,7 @@ int main() {
 cma_open()
 ; return 0; }
 EOF
-if { (eval echo configure:4931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4938: \"$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
@@ -4963,7 +4970,7 @@ fi
 esac
 
 echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6
-echo "configure:4967: checking whether the -xildoff compiler flag is required" >&5
+echo "configure:4974: 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;
@@ -4975,7 +4982,7 @@ fi
 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:4979: checking for \"-z ignore\" linker flag" >&5
+echo "configure:4986: 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 ;;
@@ -4986,7 +4993,427 @@ fi
 
 
 echo "checking "for specified window system"" 1>&6
-echo "configure:4990: checking "for specified window system"" >&5
+echo "configure:4997: checking "for specified window system"" >&5
+
+
+GNOME_CONFIG=no
+GTK_CONFIG=no
+
+if test "$with_gnome" != "no"; then
+   echo $ac_n "checking for GNOME configuration script""... $ac_c" 1>&6
+echo "configure:5005: checking for GNOME configuration script" >&5
+   for possible in gnome-config
+   do
+      possible_version=`${possible} --version 2> /dev/null`
+      if test "x${possible_version}" != "x"; then
+              GNOME_CONFIG="${possible}"
+              with_gnome=yes
+              with_gtk=yes
+              break
+      fi
+   done
+   echo "$ac_t""${GNOME_CONFIG}" 1>&6
+fi
+
+if test "${GNOME_CONFIG}" != "no"; then
+      GNOME_LIBS=`${GNOME_CONFIG} --libs gnomeui`
+      GNOME_CFLAGS=`${GNOME_CONFIG} --cflags gnomeui`
+      { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining HAVE_GNOME
+EOF
+cat >> confdefs.h <<\EOF
+#define HAVE_GNOME 1
+EOF
+}
+
+      libs_gtk="$libs_gtk ${GNOME_LIBS}" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"${GNOME_LIBS}\" to \$libs_gtk"; fi
+      c_switch_gtk="$c_switch_gtk ${GNOME_CFLAGS}" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"${GNOME_CFLAGS}\" to \$c_switch_gtk"; fi
+fi
+
+if test "$with_gtk" != "no";then
+   echo $ac_n "checking for GTK configuration script""... $ac_c" 1>&6
+echo "configure:5036: checking for GTK configuration script" >&5
+   for possible in gtk12-config gtk14-config gtk-config
+   do
+      possible_version=`${possible} --version 2> /dev/null`
+      if test "x${possible_version}" != "x"; then
+              GTK_CONFIG="${possible}"
+      fi
+      case "${possible_version}" in
+        1.0.*) echo "configure: warning: GTK 1.2 is required, please upgrade your version of GTK." 1>&2; with_gtk=no;;
+        1.3.*) echo "configure: warning: GTK 1.3 is not supported right now" 1>&2; with_gtk=no;;
+       1.2.*)
+               with_gtk=yes
+               break
+               ;;
+        *)     echo "configure: warning: Found unsupported version of GTK: $possible_version" 1>&2;;
+      esac
+   done
+   echo "$ac_t""${GTK_CONFIG}" 1>&6
+fi
+
+if test "${GTK_CONFIG}" != "no"; then
+      echo $ac_n "checking gtk version""... $ac_c" 1>&6
+echo "configure:5058: checking gtk version" >&5
+      GTK_VERSION=`${GTK_CONFIG} --version`
+      echo "$ac_t""${GTK_VERSION}" 1>&6
+
+      echo $ac_n "checking gtk libs""... $ac_c" 1>&6
+echo "configure:5063: checking gtk libs" >&5
+      GTK_LIBS=`${GTK_CONFIG} --libs`
+      libs_gtk="$libs_gtk ${GTK_LIBS}" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"${GTK_LIBS}\" to \$libs_gtk"; fi
+      echo "$ac_t""${GTK_LIBS}" 1>&6
+
+      echo $ac_n "checking gtk cflags""... $ac_c" 1>&6
+echo "configure:5069: checking gtk cflags" >&5
+      GTK_CFLAGS=`${GTK_CONFIG} --cflags`
+      c_switch_gtk="$c_switch_gtk ${GTK_CFLAGS}" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"${GTK_CFLAGS}\" to \$c_switch_gtk"; fi
+      echo "$ac_t""${GTK_CFLAGS}" 1>&6
+
+      
+echo $ac_n "checking for main in -lgdk_imlib""... $ac_c" 1>&6
+echo "configure:5076: checking for main in -lgdk_imlib" >&5
+ac_lib_var=`echo gdk_imlib'_'main | sed 'y%./+-%__p_%'`
+
+xe_check_libs=" -lgdk_imlib "
+cat > conftest.$ac_ext <<EOF
+#line 5081 "configure"
+#include "confdefs.h"
+
+int main() {
+main()
+; return 0; }
+EOF
+if { (eval echo configure:5088: \"$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
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+xe_check_libs=""
+
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
+  echo "$ac_t""yes" 1>&6
+  libs_gtk="-lgdk_imlib $libs_gtk" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lgdk_imlib\" to \$libs_gtk"; fi
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+      
+echo $ac_n "checking for Imlib_init in -lImlib""... $ac_c" 1>&6
+echo "configure:5110: checking for Imlib_init in -lImlib" >&5
+ac_lib_var=`echo Imlib'_'Imlib_init | sed 'y%./+-%__p_%'`
+
+xe_check_libs=" -lImlib "
+cat > conftest.$ac_ext <<EOF
+#line 5115 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char Imlib_init();
+
+int main() {
+Imlib_init()
+; return 0; }
+EOF
+if { (eval echo configure:5126: \"$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
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+xe_check_libs=""
+
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
+  echo "$ac_t""yes" 1>&6
+  libs_gtk="$libs_gtk -lImlib" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"-lImlib\" to \$libs_gtk"; fi
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+      for ac_func in gdk_imlib_init
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:5149: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 5152 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:5175: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  { test "$extra_verbose" = "yes" && cat << EOF
+    Defining $ac_tr_func
+EOF
+cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+}
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+
+      { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining HAVE_XPM
+EOF
+cat >> confdefs.h <<\EOF
+#define HAVE_XPM 1
+EOF
+}
+
+      { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining HAVE_GTK
+EOF
+cat >> confdefs.h <<\EOF
+#define HAVE_GTK 1
+EOF
+}
+
+      
+
+      window_system=gtk
+      with_gtk=yes
+      with_x11=no
+
+      test "${with_scrollbars}" != "no" && with_scrollbars=gtk
+      test "${with_toolbars}" != no && with_toolbars=gtk
+      test "${with_menubars}" != "no" && with_menubars=gtk
+      test "${with_dialogs}" != "no" && with_dialogs=gtk
+      test "${with_widgets}" != "no" && with_widgets=gtk
+
+      extra_objs="$extra_objs console-gtk.o device-gtk.o event-gtk.o frame-gtk.o" &&  if test "$extra_verbose" = "yes"; then
+   echo "    xemacs will be linked with \"console-gtk.o device-gtk.o event-gtk.o frame-gtk.o\""
+ fi
+      extra_objs="$extra_objs objects-gtk.o redisplay-gtk.o glyphs-gtk.o" &&  if test "$extra_verbose" = "yes"; then
+   echo "    xemacs will be linked with \"objects-gtk.o redisplay-gtk.o glyphs-gtk.o\""
+ fi
+      extra_objs="$extra_objs select-gtk.o gccache-gtk.o" &&  if test "$extra_verbose" = "yes"; then
+   echo "    xemacs will be linked with \"select-gtk.o gccache-gtk.o\""
+ fi
+      extra_objs="$extra_objs gtk-xemacs.o ui-gtk.o" &&  if test "$extra_verbose" = "yes"; then
+   echo "    xemacs will be linked with \"gtk-xemacs.o ui-gtk.o\""
+ fi
+
+            OLD_CFLAGS="${CFLAGS}"
+      OLD_LDFLAGS="${LDFLAGS}"
+      CFLAGS="${GTK_CFLAGS} ${CFLAGS}"
+      LDFLAGS="${LDFLAGS} ${GTK_LIBS}"
+      for ac_hdr in glade/glade.h glade.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:5252: checking for $ac_hdr" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 5255 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:5260: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  { test "$extra_verbose" = "yes" && cat << EOF
+    Defining $ac_tr_hdr
+EOF
+cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+}
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+      
+echo $ac_n "checking for main in -lxml""... $ac_c" 1>&6
+echo "configure:5291: checking for main in -lxml" >&5
+ac_lib_var=`echo xml'_'main | sed 'y%./+-%__p_%'`
+
+xe_check_libs=" -lxml "
+cat > conftest.$ac_ext <<EOF
+#line 5296 "configure"
+#include "confdefs.h"
+
+int main() {
+main()
+; return 0; }
+EOF
+if { (eval echo configure:5303: \"$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
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+xe_check_libs=""
+
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
+  echo "$ac_t""yes" 1>&6
+  libs_gtk="-lxml $libs_gtk" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lxml\" to \$libs_gtk"; fi
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+      
+echo $ac_n "checking for main in -lglade""... $ac_c" 1>&6
+echo "configure:5325: checking for main in -lglade" >&5
+ac_lib_var=`echo glade'_'main | sed 'y%./+-%__p_%'`
+
+xe_check_libs=" -lglade "
+cat > conftest.$ac_ext <<EOF
+#line 5330 "configure"
+#include "confdefs.h"
+
+int main() {
+main()
+; return 0; }
+EOF
+if { (eval echo configure:5337: \"$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
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+xe_check_libs=""
+
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
+  echo "$ac_t""yes" 1>&6
+  libs_gtk="-lglade $libs_gtk" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lglade\" to \$libs_gtk"; fi
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+      
+echo $ac_n "checking for main in -lglade-gnome""... $ac_c" 1>&6
+echo "configure:5359: checking for main in -lglade-gnome" >&5
+ac_lib_var=`echo glade-gnome'_'main | sed 'y%./+-%__p_%'`
+
+xe_check_libs=" -lglade-gnome "
+cat > conftest.$ac_ext <<EOF
+#line 5364 "configure"
+#include "confdefs.h"
+
+int main() {
+main()
+; return 0; }
+EOF
+if { (eval echo configure:5371: \"$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
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+xe_check_libs=""
+
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
+  echo "$ac_t""yes" 1>&6
+  libs_gtk="-lglade-gnome $libs_gtk" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lglade-gnome\" to \$libs_gtk"; fi
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+      cat > conftest.$ac_ext <<EOF
+#line 5392 "configure"
+#include "confdefs.h"
+#include <glade/glade-xml.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "char \*txtdomain;" >/dev/null 2>&1; then
+  rm -rf conftest*
+  echo "$ac_t""yes" 1>&6
+                       { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining LIBGLADE_XML_TXTDOMAIN = 1
+EOF
+cat >> confdefs.h <<\EOF
+#define LIBGLADE_XML_TXTDOMAIN 1
+EOF
+}
+
+else
+  rm -rf conftest*
+  echo "$ac_t""no" 1>&6
+fi
+rm -f conftest*
+
+      CFLAGS="${OLD_CFLAGS}"
+      LDFLAGS="${OLD_LDFLAGS}"
+fi
+
 
 if test "$with_x11" != "no"; then
     test "$x_includes $x_libraries" != "NONE NONE" && \
@@ -5019,7 +5446,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:5023: checking for X" >&5
+echo "configure:5450: checking for X" >&5
 
 # Check whether --with-x or --without-x was given.
 if test "${with_x+set}" = set; then
@@ -5079,12 +5506,12 @@ if test "$ac_x_includes" = NO; then
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 5083 "configure"
+#line 5510 "configure"
 #include "confdefs.h"
 #include <$x_direct_test_include>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5088: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5515: \"$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*
@@ -5153,14 +5580,14 @@ if test "$ac_x_libraries" = NO; then
   ac_save_LIBS="$LIBS"
   LIBS="-l$x_direct_test_library $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5157 "configure"
+#line 5584 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:5164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5591: \"$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.
@@ -5269,17 +5696,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:5273: checking whether -R must be followed by a space" >&5
+echo "configure:5700: checking whether -R must be followed by a space" >&5
       ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries"
       cat > conftest.$ac_ext <<EOF
-#line 5276 "configure"
+#line 5703 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_nospace=yes
 else
@@ -5295,14 +5722,14 @@ rm -f conftest*
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat > conftest.$ac_ext <<EOF
-#line 5299 "configure"
+#line 5726 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_space=yes
 else
@@ -5338,12 +5765,12 @@ ac_cv_lib_dnet_dnet_ntoa=no
 else
 
 echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
-echo "configure:5342: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:5769: checking for dnet_ntoa in -ldnet" >&5
 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldnet "
 cat > conftest.$ac_ext <<EOF
-#line 5347 "configure"
+#line 5774 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5354,7 +5781,7 @@ int main() {
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:5358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5785: \"$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
@@ -5378,12 +5805,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:5382: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:5809: checking for dnet_ntoa in -ldnet_stub" >&5
 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldnet_stub "
 cat > conftest.$ac_ext <<EOF
-#line 5387 "configure"
+#line 5814 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5394,7 +5821,7 @@ int main() {
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:5398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5825: \"$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
@@ -5423,10 +5850,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:5427: checking for gethostbyname" >&5
+echo "configure:5854: checking for gethostbyname" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5430 "configure"
+#line 5857 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname(); below.  */
@@ -5449,7 +5876,7 @@ gethostbyname();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5453: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5880: \"$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
@@ -5470,12 +5897,12 @@ fi
     if test $ac_cv_func_gethostbyname = no; then
       
 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:5474: checking for gethostbyname in -lnsl" >&5
+echo "configure:5901: checking for gethostbyname in -lnsl" >&5
 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lnsl "
 cat > conftest.$ac_ext <<EOF
-#line 5479 "configure"
+#line 5906 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5486,7 +5913,7 @@ int main() {
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:5490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5917: \"$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
@@ -5516,10 +5943,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:5520: checking for connect" >&5
+echo "configure:5947: checking for connect" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5523 "configure"
+#line 5950 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect(); below.  */
@@ -5542,7 +5969,7 @@ connect();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5973: \"$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
@@ -5565,12 +5992,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:5569: checking "$xe_msg_checking"" >&5
+echo "configure:5996: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lsocket $X_EXTRA_LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5574 "configure"
+#line 6001 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5581,7 +6008,7 @@ int main() {
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:5585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6012: \"$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
@@ -5605,10 +6032,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:5609: checking for remove" >&5
+echo "configure:6036: checking for remove" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5612 "configure"
+#line 6039 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove(); below.  */
@@ -5631,7 +6058,7 @@ remove();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5635: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6062: \"$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
@@ -5652,12 +6079,12 @@ fi
     if test $ac_cv_func_remove = no; then
       
 echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:5656: checking for remove in -lposix" >&5
+echo "configure:6083: checking for remove in -lposix" >&5
 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lposix "
 cat > conftest.$ac_ext <<EOF
-#line 5661 "configure"
+#line 6088 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5668,7 +6095,7 @@ int main() {
 remove()
 ; return 0; }
 EOF
-if { (eval echo configure:5672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6099: \"$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
@@ -5692,10 +6119,10 @@ fi
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:5696: checking for shmat" >&5
+echo "configure:6123: checking for shmat" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5699 "configure"
+#line 6126 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat(); below.  */
@@ -5718,7 +6145,7 @@ shmat();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6149: \"$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
@@ -5739,12 +6166,12 @@ fi
     if test $ac_cv_func_shmat = no; then
       
 echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:5743: checking for shmat in -lipc" >&5
+echo "configure:6170: checking for shmat in -lipc" >&5
 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lipc "
 cat > conftest.$ac_ext <<EOF
-#line 5748 "configure"
+#line 6175 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5755,7 +6182,7 @@ int main() {
 shmat()
 ; return 0; }
 EOF
-if { (eval echo configure:5759: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6186: \"$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
@@ -5791,12 +6218,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:5795: checking "$xe_msg_checking"" >&5
+echo "configure:6222: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lICE $X_EXTRA_LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5800 "configure"
+#line 6227 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5807,7 +6234,7 @@ int main() {
 IceConnectionNumber()
 ; return 0; }
 EOF
-if { (eval echo configure:5811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6238: \"$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
@@ -5837,10 +6264,6 @@ fi
   fi
 fi
 
-case "$with_x11" in
-  yes ) window_system=x11  HAVE_X_WINDOWS=yes ;;
-  no  ) window_system=none HAVE_X_WINDOWS=no  ;;
-esac
 
 if test "$with_x11" = "yes"; then
   { test "$extra_verbose" = "yes" && cat << \EOF
@@ -5978,7 +6401,7 @@ EOF
 
 
     echo "checking for X defines extracted by xmkmf" 1>&6
-echo "configure:5982: checking for X defines extracted by xmkmf" >&5
+echo "configure:6405: checking for X defines extracted by xmkmf" >&5
   rm -fr conftestdir
   if mkdir conftestdir; then
     cd conftestdir
@@ -6025,15 +6448,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:6029: checking for X11/Intrinsic.h" >&5
+echo "configure:6452: checking for X11/Intrinsic.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6032 "configure"
+#line 6455 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6037: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6460: \"$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*
@@ -6057,12 +6480,12 @@ fi
 
       
 echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
-echo "configure:6061: checking for XOpenDisplay in -lX11" >&5
+echo "configure:6484: checking for XOpenDisplay in -lX11" >&5
 ac_lib_var=`echo X11'_'XOpenDisplay | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 "
 cat > conftest.$ac_ext <<EOF
-#line 6066 "configure"
+#line 6489 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6073,7 +6496,7 @@ int main() {
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:6077: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6500: \"$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
@@ -6098,12 +6521,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:6102: checking "$xe_msg_checking"" >&5
+echo "configure:6525: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo X11'_'XGetFontProperty | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 -b i486-linuxaout"
 cat > conftest.$ac_ext <<EOF
-#line 6107 "configure"
+#line 6530 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6114,7 +6537,7 @@ int main() {
 XGetFontProperty()
 ; return 0; }
 EOF
-if { (eval echo configure:6118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6541: \"$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
@@ -6141,12 +6564,12 @@ fi
 
     
 echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6
-echo "configure:6145: checking for XShapeSelectInput in -lXext" >&5
+echo "configure:6568: checking for XShapeSelectInput in -lXext" >&5
 ac_lib_var=`echo Xext'_'XShapeSelectInput | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXext "
 cat > conftest.$ac_ext <<EOF
-#line 6150 "configure"
+#line 6573 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6157,7 +6580,7 @@ int main() {
 XShapeSelectInput()
 ; return 0; }
 EOF
-if { (eval echo configure:6161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6584: \"$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
@@ -6180,12 +6603,12 @@ fi
 
     
 echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6
-echo "configure:6184: checking for XtOpenDisplay in -lXt" >&5
+echo "configure:6607: checking for XtOpenDisplay in -lXt" >&5
 ac_lib_var=`echo Xt'_'XtOpenDisplay | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXt "
 cat > conftest.$ac_ext <<EOF
-#line 6189 "configure"
+#line 6612 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6196,7 +6619,7 @@ int main() {
 XtOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:6200: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6623: \"$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
@@ -6219,14 +6642,14 @@ fi
 
 
   echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6
-echo "configure:6223: checking the version of X11 being used" >&5
+echo "configure:6646: checking the version of X11 being used" >&5
   cat > conftest.$ac_ext <<EOF
-#line 6225 "configure"
+#line 6648 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
     int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }
 EOF
-if { (eval echo configure:6230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:6653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ./conftest foobar; x11_release=$?
 else
@@ -6257,10 +6680,10 @@ EOF
   for ac_func in XConvertCase
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6261: checking for $ac_func" >&5
+echo "configure:6684: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6264 "configure"
+#line 6687 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6283,7 +6706,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6710: \"$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
@@ -6315,15 +6738,15 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6319: checking for $ac_hdr" >&5
+echo "configure:6742: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6322 "configure"
+#line 6745 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6327: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6750: \"$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*
@@ -6356,10 +6779,10 @@ done
     for ac_func in XRegisterIMInstantiateCallback
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6360: checking for $ac_func" >&5
+echo "configure:6783: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6363 "configure"
+#line 6786 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6382,7 +6805,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6809: \"$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
@@ -6410,9 +6833,9 @@ fi
 done
 
   echo $ac_n "checking for standard XRegisterIMInstantiateCallback prototype""... $ac_c" 1>&6
-echo "configure:6414: checking for standard XRegisterIMInstantiateCallback prototype" >&5
+echo "configure:6837: checking for standard XRegisterIMInstantiateCallback prototype" >&5
   cat > conftest.$ac_ext <<EOF
-#line 6416 "configure"
+#line 6839 "configure"
 #include "confdefs.h"
 
 #define NeedFunctionPrototypes 1
@@ -6424,7 +6847,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:6428: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6851: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 else
@@ -6445,12 +6868,12 @@ rm -f conftest*
 
     test -z "$with_xmu" && { 
 echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6
-echo "configure:6449: checking for XmuReadBitmapDataFromFile in -lXmu" >&5
+echo "configure:6872: checking for XmuReadBitmapDataFromFile in -lXmu" >&5
 ac_lib_var=`echo Xmu'_'XmuReadBitmapDataFromFile | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXmu "
 cat > conftest.$ac_ext <<EOF
-#line 6454 "configure"
+#line 6877 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6461,7 +6884,7 @@ int main() {
 XmuReadBitmapDataFromFile()
 ; return 0; }
 EOF
-if { (eval echo configure:6465: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6888: \"$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
@@ -6500,19 +6923,19 @@ EOF
 
       
 echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6
-echo "configure:6504: checking for main in -lXbsd" >&5
+echo "configure:6927: checking for main in -lXbsd" >&5
 ac_lib_var=`echo Xbsd'_'main | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXbsd "
 cat > conftest.$ac_ext <<EOF
-#line 6509 "configure"
+#line 6932 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:6516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6939: \"$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
@@ -6549,22 +6972,22 @@ fi
 fi 
 if test "$with_msw" != "no"; then
   echo "checking for MS-Windows" 1>&6
-echo "configure:6553: checking for MS-Windows" >&5
+echo "configure:6976: checking for MS-Windows" >&5
   
 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6
-echo "configure:6556: checking for main in -lgdi32" >&5
+echo "configure:6979: checking for main in -lgdi32" >&5
 ac_lib_var=`echo gdi32'_'main | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgdi32 "
 cat > conftest.$ac_ext <<EOF
-#line 6561 "configure"
+#line 6984 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:6568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6991: \"$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
@@ -6594,9 +7017,11 @@ EOF
 }
 
 
-        MAKE_SUBDIR="$MAKE_SUBDIR netinstall" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"netinstall\" to \$MAKE_SUBDIR"; fi
-    SRC_SUBDIR_DEPS="$SRC_SUBDIR_DEPS netinstall" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"netinstall\" to \$SRC_SUBDIR_DEPS"; fi
-    INSTALL_ARCH_DEP_SUBDIR="$INSTALL_ARCH_DEP_SUBDIR netinstall" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"netinstall\" to \$INSTALL_ARCH_DEP_SUBDIR"; fi
+        if test "$with_netinstall" = "yes"; then
+      MAKE_SUBDIR="$MAKE_SUBDIR netinstall" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"netinstall\" to \$MAKE_SUBDIR"; fi
+      SRC_SUBDIR_DEPS="$SRC_SUBDIR_DEPS netinstall" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"netinstall\" to \$SRC_SUBDIR_DEPS"; fi
+      INSTALL_ARCH_DEP_SUBDIR="$INSTALL_ARCH_DEP_SUBDIR netinstall" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"netinstall\" to \$INSTALL_ARCH_DEP_SUBDIR"; fi
+    fi
 
     install_pp="$blddir/lib-src/installexe.sh"
     libs_system="$libs_system -lshell32 -lgdi32 -luser32 -lcomdlg32 -lcomctl32 -lwinspool" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"-lshell32 -lgdi32 -luser32 -lcomdlg32 -lcomctl32 -lwinspool\" to \$libs_system"; fi
@@ -6635,12 +7060,12 @@ EOF
  fi
     fi
         cat > conftest.$ac_ext <<EOF
-#line 6639 "configure"
+#line 7064 "configure"
 #include "confdefs.h"
 #include <fcntl.h>
     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }
 EOF
-if { (eval echo configure:6644: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:7069: \"$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
@@ -6704,15 +7129,15 @@ fi
 if test "$with_x11" = "yes"; then
   ac_safe=`echo "X11/extensions/shape.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/extensions/shape.h""... $ac_c" 1>&6
-echo "configure:6708: checking for X11/extensions/shape.h" >&5
+echo "configure:7133: checking for X11/extensions/shape.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6711 "configure"
+#line 7136 "configure"
 #include "confdefs.h"
 #include <X11/extensions/shape.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6716: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7141: \"$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*
@@ -6750,6 +7175,11 @@ bitmapdir=
 case "$window_system" in
   x11  ) HAVE_X_WINDOWS=yes; echo "  Using X11." ;;
   msw  ) HAVE_X_WINDOWS=no ; echo "  Using MS-Windows." ;;
+  gtk  )
+       HAVE_X_WINDOWS=no
+       test "$with_gnome" = "yes" && echo "  Using GNOME."
+       test "$with_gnome" = "no" && echo "  Using GTK."
+       ;;
   none ) HAVE_X_WINDOWS=no ; echo "  Using no window system." ;;
 esac
 
@@ -6759,7 +7189,7 @@ case "$x_libraries" in *X11R4* )
 esac
 
 echo "checking for WM_COMMAND option" 1>&6
-echo "configure:6763: checking for WM_COMMAND option" >&5;
+echo "configure:7193: checking for WM_COMMAND option" >&5;
 if test "$with_wmcommand" != "no"; then
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_WMCOMMAND
@@ -6774,15 +7204,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:6778: checking for X11/Xauth.h" >&5
+echo "configure:7208: checking for X11/Xauth.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6781 "configure"
+#line 7211 "configure"
 #include "confdefs.h"
 #include <X11/Xauth.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6786: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7216: \"$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*
@@ -6805,12 +7235,12 @@ fi
  }
 test -z "$with_xauth" && { 
 echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6
-echo "configure:6809: checking for XauGetAuthByAddr in -lXau" >&5
+echo "configure:7239: checking for XauGetAuthByAddr in -lXau" >&5
 ac_lib_var=`echo Xau'_'XauGetAuthByAddr | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXau "
 cat > conftest.$ac_ext <<EOF
-#line 6814 "configure"
+#line 7244 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6821,7 +7251,7 @@ int main() {
 XauGetAuthByAddr()
 ; return 0; }
 EOF
-if { (eval echo configure:6825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7255: \"$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
@@ -6854,7 +7284,7 @@ EOF
 
   
 T=""
-for W in $X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done
+for W in $GTK_LIBS $X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done
 libs_xauth="$T"
 
 fi
@@ -6866,15 +7296,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:6870: checking for ${dir}tt_c.h" >&5
+echo "configure:7300: checking for ${dir}tt_c.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6873 "configure"
+#line 7303 "configure"
 #include "confdefs.h"
 #include <${dir}tt_c.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6878: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7308: \"$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*
@@ -6910,12 +7340,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:6914: checking "$xe_msg_checking"" >&5
+echo "configure:7344: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo tt'_'tt_message_create | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltt $extra_libs"
 cat > conftest.$ac_ext <<EOF
-#line 6919 "configure"
+#line 7349 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6926,7 +7356,7 @@ int main() {
 tt_message_create()
 ; return 0; }
 EOF
-if { (eval echo configure:6930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6983,15 +7413,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:6987: checking for Dt/Dt.h" >&5
+echo "configure:7417: checking for Dt/Dt.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6990 "configure"
+#line 7420 "configure"
 #include "confdefs.h"
 #include <Dt/Dt.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6995: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7425: \"$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*
@@ -7014,12 +7444,12 @@ fi
  }
 test -z "$with_cde" && { 
 echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6
-echo "configure:7018: checking for DtDndDragStart in -lDtSvc" >&5
+echo "configure:7448: checking for DtDndDragStart in -lDtSvc" >&5
 ac_lib_var=`echo DtSvc'_'DtDndDragStart | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lDtSvc "
 cat > conftest.$ac_ext <<EOF
-#line 7023 "configure"
+#line 7453 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7030,7 +7460,7 @@ int main() {
 DtDndDragStart()
 ; return 0; }
 EOF
-if { (eval echo configure:7034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7464: \"$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
@@ -7097,10 +7527,13 @@ EOF
   dnd_objs="$dnd_objs offix.o" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"offix.o\" to \$dnd_objs"; fi
   dragndrop_proto="$dragndrop_proto OffiX" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"OffiX\" to \$dragndrop_proto"; fi
 fi
+if test "$with_gtk" = "yes"; then
+   dragndrop_proto="$dragndrop_proto GTK" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"GTK\" to \$dragndrop_proto"; fi
+fi
 
 if test "$with_dragndrop" != "no" ; then
   echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6
-echo "configure:7104: checking if drag and drop API is needed" >&5
+echo "configure:7537: checking if drag and drop API is needed" >&5
   if test -n "$dragndrop_proto" ; then
     with_dragndrop=yes
     echo "$ac_t""yes (${dragndrop_proto} )" 1>&6
@@ -7120,18 +7553,18 @@ EOF
 fi
 
 echo "checking for LDAP" 1>&6
-echo "configure:7124: checking for LDAP" >&5
+echo "configure:7557: 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:7127: checking for ldap.h" >&5
+echo "configure:7560: checking for ldap.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7130 "configure"
+#line 7563 "configure"
 #include "confdefs.h"
 #include <ldap.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7135: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7568: \"$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*
@@ -7154,15 +7587,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:7158: checking for lber.h" >&5
+echo "configure:7591: checking for lber.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7161 "configure"
+#line 7594 "configure"
 #include "confdefs.h"
 #include <lber.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7166: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7599: \"$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*
@@ -7186,12 +7619,12 @@ fi
 if test "$with_ldap" != "no"; then
   
 echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6
-echo "configure:7190: checking for ldap_search in -lldap" >&5
+echo "configure:7623: checking for ldap_search in -lldap" >&5
 ac_lib_var=`echo ldap'_'ldap_search | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lldap "
 cat > conftest.$ac_ext <<EOF
-#line 7195 "configure"
+#line 7628 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7202,7 +7635,7 @@ int main() {
 ldap_search()
 ; return 0; }
 EOF
-if { (eval echo configure:7206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7639: \"$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
@@ -7227,12 +7660,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:7231: checking "$xe_msg_checking"" >&5
+echo "configure:7664: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lldap -llber"
 cat > conftest.$ac_ext <<EOF
-#line 7236 "configure"
+#line 7669 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7243,7 +7676,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:7247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7680: \"$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
@@ -7268,12 +7701,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:7272: checking "$xe_msg_checking"" >&5
+echo "configure:7705: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lldap -llber -lkrb"
 cat > conftest.$ac_ext <<EOF
-#line 7277 "configure"
+#line 7710 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7284,7 +7717,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:7288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7721: \"$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
@@ -7309,12 +7742,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:7313: checking "$xe_msg_checking"" >&5
+echo "configure:7746: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lldap -llber -lkrb -ldes"
 cat > conftest.$ac_ext <<EOF
-#line 7318 "configure"
+#line 7751 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7325,7 +7758,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:7329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7762: \"$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
@@ -7376,10 +7809,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:7380: checking for $ac_func" >&5
+echo "configure:7813: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7383 "configure"
+#line 7816 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7402,7 +7835,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7839: \"$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
@@ -7433,20 +7866,20 @@ fi
 
 if test "$with_postgresql" != "no"; then
   echo "checking for PostgreSQL" 1>&6
-echo "configure:7437: checking for PostgreSQL" >&5
+echo "configure:7870: checking for PostgreSQL" >&5
 
   for header_dir in "" "pgsql/" "postgresql/"; do
     ac_safe=`echo "${header_dir}libpq-fe.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ${header_dir}libpq-fe.h""... $ac_c" 1>&6
-echo "configure:7442: checking for ${header_dir}libpq-fe.h" >&5
+echo "configure:7875: checking for ${header_dir}libpq-fe.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7445 "configure"
+#line 7878 "configure"
 #include "confdefs.h"
 #include <${header_dir}libpq-fe.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7450: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7883: \"$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*
@@ -7470,12 +7903,12 @@ fi
 
   test -n "$libpq_fe_h_file" && { 
 echo $ac_n "checking for PQconnectdb in -lpq""... $ac_c" 1>&6
-echo "configure:7474: checking for PQconnectdb in -lpq" >&5
+echo "configure:7907: checking for PQconnectdb in -lpq" >&5
 ac_lib_var=`echo pq'_'PQconnectdb | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpq "
 cat > conftest.$ac_ext <<EOF
-#line 7479 "configure"
+#line 7912 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7486,7 +7919,7 @@ int main() {
 PQconnectdb()
 ; return 0; }
 EOF
-if { (eval echo configure:7490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7923: \"$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
@@ -7519,12 +7952,12 @@ EOF
 
     
 echo $ac_n "checking for PQconnectStart in -lpq""... $ac_c" 1>&6
-echo "configure:7523: checking for PQconnectStart in -lpq" >&5
+echo "configure:7956: checking for PQconnectStart in -lpq" >&5
 ac_lib_var=`echo pq'_'PQconnectStart | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpq "
 cat > conftest.$ac_ext <<EOF
-#line 7528 "configure"
+#line 7961 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7535,7 +7968,7 @@ int main() {
 PQconnectStart()
 ; return 0; }
 EOF
-if { (eval echo configure:7539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7972: \"$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
@@ -7583,15 +8016,15 @@ fi
 
 if test "$window_system" != "none"; then
   echo "checking for graphics libraries" 1>&6
-echo "configure:7587: checking for graphics libraries" >&5
+echo "configure:8020: 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:7592: checking for Xpm - no older than 3.4f" >&5
+echo "configure:8025: checking for Xpm - no older than 3.4f" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 7595 "configure"
+#line 8028 "configure"
 #include "confdefs.h"
 #define XPM_NUMBERS
 #include <X11/xpm.h>
@@ -7600,7 +8033,7 @@ echo "configure:7592: checking for Xpm - no older than 3.4f" >&5
       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
       XpmIncludeVersion < 30406 ? 2 : 0 ;}
 EOF
-if { (eval echo configure:7604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:8037: \"$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
@@ -7642,17 +8075,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:7646: checking for \"FOR_MSW\" xpm" >&5
+echo "configure:8079: checking for \"FOR_MSW\" xpm" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 7649 "configure"
+#line 8082 "configure"
 #include "confdefs.h"
 
 int main() {
 XpmCreatePixmapFromData()
 ; return 0; }
 EOF
-if { (eval echo configure:7656: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8089: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   xpm_for_msw=no
 else
@@ -7678,15 +8111,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:7682: checking for compface.h" >&5
+echo "configure:8115: checking for compface.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7685 "configure"
+#line 8118 "configure"
 #include "confdefs.h"
 #include <compface.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7690: \"$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*
@@ -7709,12 +8142,12 @@ fi
  }
   test -z "$with_xface" && { 
 echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
-echo "configure:7713: checking for UnGenFace in -lcompface" >&5
+echo "configure:8146: checking for UnGenFace in -lcompface" >&5
 ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcompface "
 cat > conftest.$ac_ext <<EOF
-#line 7718 "configure"
+#line 8151 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7725,7 +8158,7 @@ int main() {
 UnGenFace()
 ; return 0; }
 EOF
-if { (eval echo configure:7729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8162: \"$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
@@ -7777,12 +8210,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:7781: checking for inflate in -lc" >&5
+echo "configure:8214: checking for inflate in -lc" >&5
 ac_lib_var=`echo c'_'inflate | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lc "
 cat > conftest.$ac_ext <<EOF
-#line 7786 "configure"
+#line 8219 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7793,7 +8226,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:7797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8230: \"$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
@@ -7812,12 +8245,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6
-echo "configure:7816: checking for inflate in -lz" >&5
+echo "configure:8249: checking for inflate in -lz" >&5
 ac_lib_var=`echo z'_'inflate | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lz "
 cat > conftest.$ac_ext <<EOF
-#line 7821 "configure"
+#line 8254 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7828,7 +8261,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:7832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8265: \"$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
@@ -7847,12 +8280,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6
-echo "configure:7851: checking for inflate in -lgz" >&5
+echo "configure:8284: checking for inflate in -lgz" >&5
 ac_lib_var=`echo gz'_'inflate | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgz "
 cat > conftest.$ac_ext <<EOF
-#line 7856 "configure"
+#line 8289 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7863,7 +8296,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:7867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8300: \"$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
@@ -7893,15 +8326,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:7897: checking for jpeglib.h" >&5
+echo "configure:8330: checking for jpeglib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7900 "configure"
+#line 8333 "configure"
 #include "confdefs.h"
 #include <jpeglib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7905: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8338: \"$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*
@@ -7924,12 +8357,12 @@ fi
  }
   test -z "$with_jpeg" && { 
 echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6
-echo "configure:7928: checking for jpeg_destroy_decompress in -ljpeg" >&5
+echo "configure:8361: checking for jpeg_destroy_decompress in -ljpeg" >&5
 ac_lib_var=`echo jpeg'_'jpeg_destroy_decompress | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ljpeg "
 cat > conftest.$ac_ext <<EOF
-#line 7933 "configure"
+#line 8366 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7940,7 +8373,7 @@ int main() {
 jpeg_destroy_decompress()
 ; return 0; }
 EOF
-if { (eval echo configure:7944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8377: \"$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
@@ -7976,10 +8409,10 @@ EOF
 
     png_problem=""
   test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6
-echo "configure:7980: checking for pow" >&5
+echo "configure:8413: checking for pow" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7983 "configure"
+#line 8416 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char pow(); below.  */
@@ -8002,7 +8435,7 @@ pow();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8439: \"$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
@@ -8023,15 +8456,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:8027: checking for png.h" >&5
+echo "configure:8460: checking for png.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8030 "configure"
+#line 8463 "configure"
 #include "confdefs.h"
 #include <png.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8035: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8468: \"$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*
@@ -8054,12 +8487,12 @@ fi
  }
   test -z "$with_png" && { 
 echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6
-echo "configure:8058: checking for png_read_image in -lpng" >&5
+echo "configure:8491: checking for png_read_image in -lpng" >&5
 ac_lib_var=`echo png'_'png_read_image | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpng "
 cat > conftest.$ac_ext <<EOF
-#line 8063 "configure"
+#line 8496 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8070,7 +8503,7 @@ int main() {
 png_read_image()
 ; return 0; }
 EOF
-if { (eval echo configure:8074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8507: \"$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
@@ -8093,10 +8526,10 @@ fi
  }
   if test -z "$with_png"; then
     echo $ac_n "checking for workable png version information""... $ac_c" 1>&6
-echo "configure:8097: checking for workable png version information" >&5
+echo "configure:8530: checking for workable png version information" >&5
     xe_check_libs="-lpng -lz"
     cat > conftest.$ac_ext <<EOF
-#line 8100 "configure"
+#line 8533 "configure"
 #include "confdefs.h"
 #include <png.h>
     int main(int c, char **v) {
@@ -8104,7 +8537,7 @@ echo "configure:8097: 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:8108: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:8541: \"$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
@@ -8147,15 +8580,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:8151: checking for tiffio.h" >&5
+echo "configure:8584: checking for tiffio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8154 "configure"
+#line 8587 "configure"
 #include "confdefs.h"
 #include <tiffio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8159: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8592: \"$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*
@@ -8178,12 +8611,12 @@ fi
  }
   test -z "$with_tiff" && { 
 echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6
-echo "configure:8182: checking for TIFFClientOpen in -ltiff" >&5
+echo "configure:8615: checking for TIFFClientOpen in -ltiff" >&5
 ac_lib_var=`echo tiff'_'TIFFClientOpen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltiff "
 cat > conftest.$ac_ext <<EOF
-#line 8187 "configure"
+#line 8620 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8194,7 +8627,7 @@ int main() {
 TIFFClientOpen()
 ; return 0; }
 EOF
-if { (eval echo configure:8198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8631: \"$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
@@ -8230,13 +8663,100 @@ EOF
 fi
 
 
+if test "$with_gtk" = "yes"; then
+    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:8670: checking for compface.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 8673 "configure"
+#include "confdefs.h"
+#include <compface.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:8678: \"$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
+  :
+else
+  echo "$ac_t""no" 1>&6
+with_xface=no
+fi
+ }
+  test -z "$with_xface" && { 
+echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
+echo "configure:8701: checking for UnGenFace in -lcompface" >&5
+ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'`
+
+xe_check_libs=" -lcompface "
+cat > conftest.$ac_ext <<EOF
+#line 8706 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char UnGenFace();
+
+int main() {
+UnGenFace()
+; return 0; }
+EOF
+if { (eval echo configure:8717: \"$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
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+xe_check_libs=""
+
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
+  echo "$ac_t""yes" 1>&6
+  : 
+else
+  echo "$ac_t""no" 1>&6
+with_xface=no
+fi
+
+ }
+  test -z "$with_xface" && with_xface=yes
+  if test "$with_xface" = "yes"; then
+    { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining HAVE_XFACE
+EOF
+cat >> confdefs.h <<\EOF
+#define HAVE_XFACE 1
+EOF
+}
+
+    libs_gtk="-lcompface $libs_gtk" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lcompface\" to \$libs_gtk"; fi
+  fi
+fi
+
+
+
 if test "$with_x11" = "yes"; then
 
   echo "checking for X11 graphics libraries" 1>&6
-echo "configure:8237: checking for X11 graphics libraries" >&5
+echo "configure:8757: checking for X11 graphics libraries" >&5
 
   echo "checking for the Athena widgets" 1>&6
-echo "configure:8240: checking for the Athena widgets" >&5
+echo "configure:8760: checking for the Athena widgets" >&5
 
     case "$with_athena" in
         "xaw" | "")    athena_variant=Xaw      athena_3d=no  ;;
@@ -8250,12 +8770,12 @@ echo "configure:8240: 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:8254: checking for XawScrollbarSetThumb in -l$athena_variant" >&5
+echo "configure:8774: checking for XawScrollbarSetThumb in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<EOF
-#line 8259 "configure"
+#line 8779 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8266,7 +8786,7 @@ int main() {
 XawScrollbarSetThumb()
 ; return 0; }
 EOF
-if { (eval echo configure:8270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8790: \"$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
@@ -8282,12 +8802,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:8286: checking for threeDClassRec in -l$athena_variant" >&5
+echo "configure:8806: checking for threeDClassRec in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'threeDClassRec | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<EOF
-#line 8291 "configure"
+#line 8811 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8298,7 +8818,7 @@ int main() {
 threeDClassRec()
 ; return 0; }
 EOF
-if { (eval echo configure:8302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8822: \"$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
@@ -8329,12 +8849,12 @@ fi
   else
         
 echo $ac_n "checking for threeDClassRec in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:8333: checking for threeDClassRec in -l$athena_variant" >&5
+echo "configure:8853: checking for threeDClassRec in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'threeDClassRec | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<EOF
-#line 8338 "configure"
+#line 8858 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8345,7 +8865,7 @@ int main() {
 threeDClassRec()
 ; return 0; }
 EOF
-if { (eval echo configure:8349: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8363,12 +8883,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:8367: checking for threeDClassRec in -lXaw" >&5
+echo "configure:8887: checking for threeDClassRec in -lXaw" >&5
 ac_lib_var=`echo Xaw'_'threeDClassRec | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXaw "
 cat > conftest.$ac_ext <<EOF
-#line 8372 "configure"
+#line 8892 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8379,7 +8899,7 @@ int main() {
 threeDClassRec()
 ; return 0; }
 EOF
-if { (eval echo configure:8383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8903: \"$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
@@ -8410,15 +8930,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:8414: checking for X11/Xaw/ThreeD.h" >&5
+echo "configure:8934: checking for X11/Xaw/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8417 "configure"
+#line 8937 "configure"
 #include "confdefs.h"
 #include <X11/Xaw/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8422: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8942: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8438,15 +8958,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:8442: checking for X11/Xaw/XawInit.h" >&5
+echo "configure:8962: checking for X11/Xaw/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8445 "configure"
+#line 8965 "configure"
 #include "confdefs.h"
 #include <X11/Xaw/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8450: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8970: \"$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*
@@ -8472,15 +8992,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:8476: checking for X11/$athena_variant/XawInit.h" >&5
+echo "configure:8996: checking for X11/$athena_variant/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8479 "configure"
+#line 8999 "configure"
 #include "confdefs.h"
 #include <X11/$athena_variant/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8484: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9004: \"$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*
@@ -8497,15 +9017,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:8501: checking for X11/$athena_variant/ThreeD.h" >&5
+echo "configure:9021: checking for X11/$athena_variant/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8504 "configure"
+#line 9024 "configure"
 #include "confdefs.h"
 #include <X11/$athena_variant/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8509: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9029: \"$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*
@@ -8533,15 +9053,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:8537: checking for $athena_variant/XawInit.h" >&5
+echo "configure:9057: checking for $athena_variant/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8540 "configure"
+#line 9060 "configure"
 #include "confdefs.h"
 #include <$athena_variant/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8545: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9065: \"$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*
@@ -8558,15 +9078,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:8562: checking for $athena_variant/ThreeD.h" >&5
+echo "configure:9082: checking for $athena_variant/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8565 "configure"
+#line 9085 "configure"
 #include "confdefs.h"
 #include <$athena_variant/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8570: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9090: \"$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*
@@ -8595,15 +9115,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:8599: checking for X11/Xaw3d/XawInit.h" >&5
+echo "configure:9119: checking for X11/Xaw3d/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8602 "configure"
+#line 9122 "configure"
 #include "confdefs.h"
 #include <X11/Xaw3d/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8607: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9127: \"$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*
@@ -8620,15 +9140,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:8624: checking for X11/Xaw3d/ThreeD.h" >&5
+echo "configure:9144: checking for X11/Xaw3d/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8627 "configure"
+#line 9147 "configure"
 #include "confdefs.h"
 #include <X11/Xaw3d/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8632: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9152: \"$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*
@@ -8660,15 +9180,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:8664: checking for Xaw3d/XawInit.h" >&5
+echo "configure:9184: checking for Xaw3d/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8667 "configure"
+#line 9187 "configure"
 #include "confdefs.h"
 #include <Xaw3d/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8672: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9192: \"$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*
@@ -8685,15 +9205,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:8689: checking for Xaw3d/ThreeD.h" >&5
+echo "configure:9209: checking for Xaw3d/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8692 "configure"
+#line 9212 "configure"
 #include "confdefs.h"
 #include <Xaw3d/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8697: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9217: \"$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*
@@ -8725,15 +9245,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:8729: checking for X11/Xaw/ThreeD.h" >&5
+echo "configure:9249: checking for X11/Xaw/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8732 "configure"
+#line 9252 "configure"
 #include "confdefs.h"
 #include <X11/Xaw/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8737: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9257: \"$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*
@@ -8768,15 +9288,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:8772: checking for Xm/Xm.h" >&5
+echo "configure:9292: checking for Xm/Xm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8775 "configure"
+#line 9295 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8780: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9300: \"$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*
@@ -8793,12 +9313,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:8797: checking for XmStringFree in -lXm" >&5
+echo "configure:9317: checking for XmStringFree in -lXm" >&5
 ac_lib_var=`echo Xm'_'XmStringFree | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXm "
 cat > conftest.$ac_ext <<EOF
-#line 8802 "configure"
+#line 9322 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8809,7 +9329,7 @@ int main() {
 XmStringFree()
 ; return 0; }
 EOF
-if { (eval echo configure:8813: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9333: \"$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
@@ -8838,9 +9358,9 @@ fi
 
   if test "$have_motif" = "yes"; then
         echo $ac_n "checking for Lesstif""... $ac_c" 1>&6
-echo "configure:8842: checking for Lesstif" >&5
+echo "configure:9362: checking for Lesstif" >&5
     cat > conftest.$ac_ext <<EOF
-#line 8844 "configure"
+#line 9364 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 #ifdef LESSTIF_VERSION
@@ -9207,6 +9727,24 @@ test "$with_toolbars"   != "no"    && extra_objs="$extra_objs toolbar.o" &&  if
    echo "    xemacs will be linked with \"toolbar.o\""
  fi
 
+if test "$with_gtk" = "yes"; then
+  test "$with_menubars"   != "no"      && extra_objs="$extra_objs menubar-gtk.o" &&  if test "$extra_verbose" = "yes"; then
+   echo "    xemacs will be linked with \"menubar-gtk.o\""
+ fi
+  test "$with_scrollbars" != "no"      && extra_objs="$extra_objs scrollbar-gtk.o" &&  if test "$extra_verbose" = "yes"; then
+   echo "    xemacs will be linked with \"scrollbar-gtk.o\""
+ fi
+  test "$with_dialogs"    != "no"      && extra_objs="$extra_objs dialog-gtk.o" &&  if test "$extra_verbose" = "yes"; then
+   echo "    xemacs will be linked with \"dialog-gtk.o\""
+ fi
+  test "$with_toolbars"   != "no"      && extra_objs="$extra_objs toolbar-gtk.o" &&  if test "$extra_verbose" = "yes"; then
+   echo "    xemacs will be linked with \"toolbar-gtk.o\""
+ fi
+  test "$all_widgets" != "no no no no no" && extra_objs="$extra_objs gui-gtk.o" &&  if test "$extra_verbose" = "yes"; then
+   echo "    xemacs will be linked with \"gui-gtk.o\""
+ fi
+fi
+
 if test "$with_x11" = "yes"; then
   test "$with_menubars"   != "no"  && extra_objs="$extra_objs menubar-x.o" &&  if test "$extra_verbose" = "yes"; then
    echo "    xemacs will be linked with \"menubar-x.o\""
@@ -9246,7 +9784,7 @@ fi
 
 if test "$with_mule" = "yes" ; then
   echo "checking for Mule-related features" 1>&6
-echo "configure:9250: checking for Mule-related features" >&5
+echo "configure:9788: checking for Mule-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining MULE
 EOF
@@ -9287,15 +9825,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:9291: checking for $ac_hdr" >&5
+echo "configure:9829: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9294 "configure"
+#line 9832 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9299: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9837: \"$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*
@@ -9326,12 +9864,12 @@ done
 
   
 echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6
-echo "configure:9330: checking for strerror in -lintl" >&5
+echo "configure:9868: checking for strerror in -lintl" >&5
 ac_lib_var=`echo intl'_'strerror | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lintl "
 cat > conftest.$ac_ext <<EOF
-#line 9335 "configure"
+#line 9873 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9342,7 +9880,7 @@ int main() {
 strerror()
 ; return 0; }
 EOF
-if { (eval echo configure:9346: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9884: \"$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
@@ -9394,18 +9932,18 @@ EOF
   fi
 
   echo "checking for Mule input methods" 1>&6
-echo "configure:9398: checking for Mule input methods" >&5
+echo "configure:9936: checking for Mule input methods" >&5
         case "$with_xim" in "" | "yes" )
     echo "checking for XIM" 1>&6
-echo "configure:9401: checking for XIM" >&5
+echo "configure:9939: checking for XIM" >&5
     
 echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6
-echo "configure:9404: checking for XOpenIM in -lX11" >&5
+echo "configure:9942: checking for XOpenIM in -lX11" >&5
 ac_lib_var=`echo X11'_'XOpenIM | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 "
 cat > conftest.$ac_ext <<EOF
-#line 9409 "configure"
+#line 9947 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9416,7 +9954,7 @@ int main() {
 XOpenIM()
 ; return 0; }
 EOF
-if { (eval echo configure:9420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9958: \"$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
@@ -9440,12 +9978,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:9444: checking for XmImMbLookupString in -lXm" >&5
+echo "configure:9982: checking for XmImMbLookupString in -lXm" >&5
 ac_lib_var=`echo Xm'_'XmImMbLookupString | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXm "
 cat > conftest.$ac_ext <<EOF
-#line 9449 "configure"
+#line 9987 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9456,7 +9994,7 @@ int main() {
 XmImMbLookupString()
 ; return 0; }
 EOF
-if { (eval echo configure:9460: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9998: \"$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
@@ -9521,15 +10059,15 @@ EOF
 
     if test "$with_xfs" = "yes" ; then
     echo "checking for XFontSet" 1>&6
-echo "configure:9525: checking for XFontSet" >&5
+echo "configure:10063: checking for XFontSet" >&5
     
 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6
-echo "configure:9528: checking for XmbDrawString in -lX11" >&5
+echo "configure:10066: checking for XmbDrawString in -lX11" >&5
 ac_lib_var=`echo X11'_'XmbDrawString | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 "
 cat > conftest.$ac_ext <<EOF
-#line 9533 "configure"
+#line 10071 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9540,7 +10078,7 @@ int main() {
 XmbDrawString()
 ; return 0; }
 EOF
-if { (eval echo configure:9544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10082: \"$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
@@ -9580,15 +10118,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:9584: checking for wnn/jllib.h" >&5
+echo "configure:10122: checking for wnn/jllib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9587 "configure"
+#line 10125 "configure"
 #include "confdefs.h"
 #include <wnn/jllib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9592: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10130: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
  }
     test -z "$with_wnn" && { ac_safe=`echo "wnn/commonhd.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for wnn/commonhd.h""... $ac_c" 1>&6
-echo "configure:9615: checking for wnn/commonhd.h" >&5
+echo "configure:10153: checking for wnn/commonhd.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9618 "configure"
+#line 10156 "configure"
 #include "confdefs.h"
 #include <wnn/commonhd.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9623: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10161: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
     for ac_func in crypt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9648: checking for $ac_func" >&5
+echo "configure:10186: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9651 "configure"
+#line 10189 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9670,7 +10208,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:9674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10212: \"$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
@@ -9699,12 +10237,12 @@ done
 
     test "$ac_cv_func_crypt" != "yes" && { 
 echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:9703: checking for crypt in -lcrypt" >&5
+echo "configure:10241: checking for crypt in -lcrypt" >&5
 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcrypt "
 cat > conftest.$ac_ext <<EOF
-#line 9708 "configure"
+#line 10246 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9715,7 +10253,7 @@ int main() {
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:9719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
     if test -z "$with_wnn" -o "$with_wnn" = "yes"; then
     
 echo $ac_n "checking for jl_dic_list_e in -lwnn""... $ac_c" 1>&6
-echo "configure:9754: checking for jl_dic_list_e in -lwnn" >&5
+echo "configure:10292: checking for jl_dic_list_e in -lwnn" >&5
 ac_lib_var=`echo wnn'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn "
 cat > conftest.$ac_ext <<EOF
-#line 9759 "configure"
+#line 10297 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9766,7 +10304,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:9770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10308: \"$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
@@ -9784,12 +10322,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:9788: checking for jl_dic_list_e in -lwnn4" >&5
+echo "configure:10326: checking for jl_dic_list_e in -lwnn4" >&5
 ac_lib_var=`echo wnn4'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn4 "
 cat > conftest.$ac_ext <<EOF
-#line 9793 "configure"
+#line 10331 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9800,7 +10338,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:9804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10342: \"$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
@@ -9818,12 +10356,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:9822: checking for jl_dic_list_e in -lwnn6" >&5
+echo "configure:10360: checking for jl_dic_list_e in -lwnn6" >&5
 ac_lib_var=`echo wnn6'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn6 "
 cat > conftest.$ac_ext <<EOF
-#line 9827 "configure"
+#line 10365 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9834,7 +10372,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:9838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10376: \"$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
@@ -9852,12 +10390,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:9856: checking for dic_list_e in -lwnn6_fromsrc" >&5
+echo "configure:10394: checking for dic_list_e in -lwnn6_fromsrc" >&5
 ac_lib_var=`echo wnn6_fromsrc'_'dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn6_fromsrc "
 cat > conftest.$ac_ext <<EOF
-#line 9861 "configure"
+#line 10399 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9868,7 +10406,7 @@ int main() {
 dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:9872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10410: \"$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
@@ -9916,12 +10454,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:9920: checking for jl_fi_dic_list in -l$libwnn" >&5
+echo "configure:10458: checking for jl_fi_dic_list in -l$libwnn" >&5
 ac_lib_var=`echo $libwnn'_'jl_fi_dic_list | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$libwnn "
 cat > conftest.$ac_ext <<EOF
-#line 9925 "configure"
+#line 10463 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9932,7 +10470,7 @@ int main() {
 jl_fi_dic_list()
 ; return 0; }
 EOF
-if { (eval echo configure:9936: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10474: \"$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
@@ -9967,15 +10505,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:9971: checking for canna/jrkanji.h" >&5
+echo "configure:10509: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9974 "configure"
+#line 10512 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9979: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10517: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
     c_switch_site="$c_switch_site -I/usr/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:10006: checking for canna/jrkanji.h" >&5
+echo "configure:10544: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10009 "configure"
+#line 10547 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10014: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10552: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
   test -z "$with_canna" && { ac_safe=`echo "canna/RK.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for canna/RK.h""... $ac_c" 1>&6
-echo "configure:10042: checking for canna/RK.h" >&5
+echo "configure:10580: checking for canna/RK.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10045 "configure"
+#line 10583 "configure"
 #include "confdefs.h"
 #include <canna/RK.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10050: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10588: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
  }
   test -z "$with_canna" && { 
 echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6
-echo "configure:10073: checking for RkBgnBun in -lRKC" >&5
+echo "configure:10611: checking for RkBgnBun in -lRKC" >&5
 ac_lib_var=`echo RKC'_'RkBgnBun | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lRKC "
 cat > conftest.$ac_ext <<EOF
-#line 10078 "configure"
+#line 10616 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10085,7 +10623,7 @@ int main() {
 RkBgnBun()
 ; return 0; }
 EOF
-if { (eval echo configure:10089: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10627: \"$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
  }
   test -z "$with_canna" && { 
 echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6
-echo "configure:10112: checking for jrKanjiControl in -lcanna" >&5
+echo "configure:10650: checking for jrKanjiControl in -lcanna" >&5
 ac_lib_var=`echo canna'_'jrKanjiControl | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcanna "
 cat > conftest.$ac_ext <<EOF
-#line 10117 "configure"
+#line 10655 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10124,7 +10662,7 @@ int main() {
 jrKanjiControl()
 ; return 0; }
 EOF
-if { (eval echo configure:10128: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10666: \"$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
@@ -10173,12 +10711,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:10177: checking for layout_object_getvalue in -li18n" >&5
+echo "configure:10715: checking for layout_object_getvalue in -li18n" >&5
 ac_lib_var=`echo i18n'_'layout_object_getvalue | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -li18n "
 cat > conftest.$ac_ext <<EOF
-#line 10182 "configure"
+#line 10720 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10189,7 +10727,7 @@ int main() {
 layout_object_getvalue()
 ; return 0; }
 EOF
-if { (eval echo configure:10193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo getpagesize gettimeofday getcwd getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strerror tzset ulimit usleep waitpid vsnprintf fsync ftruncate umask
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10279: checking for $ac_func" >&5
+echo "configure:10817: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10282 "configure"
+#line 10820 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -10301,7 +10839,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10305: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10843: \"$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
@@ -10333,10 +10871,10 @@ done
 for ac_func in getpt _getpty grantpt unlockpt ptsname killpg tcgetpgrp
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10337: checking for $ac_func" >&5
+echo "configure:10875: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10340 "configure"
+#line 10878 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -10359,7 +10897,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10901: \"$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
@@ -10388,10 +10926,10 @@ done
 
 
 echo $ac_n "checking for openpty""... $ac_c" 1>&6
-echo "configure:10392: checking for openpty" >&5
+echo "configure:10930: checking for openpty" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10395 "configure"
+#line 10933 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char openpty(); below.  */
@@ -10414,7 +10952,7 @@ openpty();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10418: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_openpty=yes"
 else
@@ -10433,12 +10971,12 @@ else
 
   
 echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6
-echo "configure:10437: checking for openpty in -lutil" >&5
+echo "configure:10975: checking for openpty in -lutil" >&5
 ac_lib_var=`echo util'_'openpty | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lutil "
 cat > conftest.$ac_ext <<EOF
-#line 10442 "configure"
+#line 10980 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10449,7 +10987,7 @@ int main() {
 openpty()
 ; return 0; }
 EOF
-if { (eval echo configure:10453: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10991: \"$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
@@ -10484,15 +11022,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10488: checking for $ac_hdr" >&5
+echo "configure:11026: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10491 "configure"
+#line 11029 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10496: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11034: \"$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*
@@ -10528,15 +11066,15 @@ for ac_hdr in stropts.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10532: checking for $ac_hdr" >&5
+echo "configure:11070: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10535 "configure"
+#line 11073 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10540: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11078: \"$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*
@@ -10569,10 +11107,10 @@ if test "$ac_cv_header_stropts_h" = "yes"; then
   for ac_func in isastream
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10573: checking for $ac_func" >&5
+echo "configure:11111: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10576 "configure"
+#line 11114 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -10595,7 +11133,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10599: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11137: \"$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
@@ -10626,15 +11164,15 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10630: checking for $ac_hdr" >&5
+echo "configure:11168: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10633 "configure"
+#line 11171 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10638: \"$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*
@@ -10671,10 +11209,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:10675: checking for $ac_func" >&5
+echo "configure:11213: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10678 "configure"
+#line 11216 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -10697,7 +11235,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10701: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11239: \"$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
@@ -10730,15 +11268,15 @@ if test "$ac_cv_func_getloadavg" = "yes"; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10734: checking for $ac_hdr" >&5
+echo "configure:11272: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10737 "configure"
+#line 11275 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10742: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11280: \"$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*
@@ -10774,12 +11312,12 @@ else
 
     
 echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6
-echo "configure:10778: checking for kstat_open in -lkstat" >&5
+echo "configure:11316: checking for kstat_open in -lkstat" >&5
 ac_lib_var=`echo kstat'_'kstat_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lkstat "
 cat > conftest.$ac_ext <<EOF
-#line 10783 "configure"
+#line 11321 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10790,7 +11328,7 @@ int main() {
 kstat_open()
 ; return 0; }
 EOF
-if { (eval echo configure:10794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11332: \"$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
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10829: checking for $ac_hdr" >&5
+echo "configure:11367: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10832 "configure"
+#line 11370 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10837: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11375: \"$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*
@@ -10865,12 +11403,12 @@ done
 
     
 echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6
-echo "configure:10869: checking for kvm_read in -lkvm" >&5
+echo "configure:11407: checking for kvm_read in -lkvm" >&5
 ac_lib_var=`echo kvm'_'kvm_read | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lkvm "
 cat > conftest.$ac_ext <<EOF
-#line 10874 "configure"
+#line 11412 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10881,7 +11419,7 @@ int main() {
 kvm_read()
 ; return 0; }
 EOF
-if { (eval echo configure:10885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11423: \"$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
 fi
 
 echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6
-echo "configure:10919: checking whether netdb declares h_errno" >&5
+echo "configure:11457: checking whether netdb declares h_errno" >&5
 cat > conftest.$ac_ext <<EOF
-#line 10921 "configure"
+#line 11459 "configure"
 #include "confdefs.h"
 #include <netdb.h>
 int main() {
 return h_errno;
 ; return 0; }
 EOF
-if { (eval echo configure:10928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11466: \"$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
 rm -f conftest*
 
 echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6
-echo "configure:10948: checking for sigsetjmp" >&5
+echo "configure:11486: checking for sigsetjmp" >&5
 cat > conftest.$ac_ext <<EOF
-#line 10950 "configure"
+#line 11488 "configure"
 #include "confdefs.h"
 #include <setjmp.h>
 int main() {
 sigjmp_buf bar; sigsetjmp (bar, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:10957: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11495: \"$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
 rm -f conftest*
 
 echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6
-echo "configure:10977: checking whether localtime caches TZ" >&5
+echo "configure:11515: checking whether localtime caches TZ" >&5
 
 if test "$ac_cv_func_tzset" = "yes"; then
 cat > conftest.$ac_ext <<EOF
-#line 10981 "configure"
+#line 11519 "configure"
 #include "confdefs.h"
 #include <time.h>
 #if STDC_HEADERS
@@ -11012,7 +11550,7 @@ main()
   exit (0);
 }
 EOF
-if { (eval echo configure:11016: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:11554: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   emacs_cv_localtime_cache=no
 else
@@ -11042,9 +11580,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:11046: checking whether gettimeofday accepts one or two arguments" >&5
+echo "configure:11584: checking whether gettimeofday accepts one or two arguments" >&5
 cat > conftest.$ac_ext <<EOF
-#line 11048 "configure"
+#line 11586 "configure"
 #include "confdefs.h"
 
 #ifdef TIME_WITH_SYS_TIME
@@ -11065,7 +11603,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:11069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""two" 1>&6
 else
 
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:11091: checking for inline" >&5
+echo "configure:11629: checking for inline" >&5
 
 ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 11096 "configure"
+#line 11634 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:11103: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11641: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -11140,17 +11678,17 @@ if test "$__DECC" != "yes"; then
   # 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:11144: checking for working alloca.h" >&5
+echo "configure:11682: checking for working alloca.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11147 "configure"
+#line 11685 "configure"
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
 char *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:11154: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11692: \"$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
@@ -11174,10 +11712,10 @@ EOF
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:11178: checking for alloca" >&5
+echo "configure:11716: checking for alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11181 "configure"
+#line 11719 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -11205,7 +11743,7 @@ int main() {
 char *p = (char *) alloca(1);
 ; return 0; }
 EOF
-if { (eval echo configure:11209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11747: \"$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
@@ -11244,10 +11782,10 @@ EOF
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:11248: checking whether alloca needs Cray hooks" >&5
+echo "configure:11786: checking whether alloca needs Cray hooks" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11251 "configure"
+#line 11789 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -11271,10 +11809,10 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
 if test $ac_cv_os_cray = yes; then
 for ac_func in _getb67 GETB67 getb67; do
   echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11275: checking for $ac_func" >&5
+echo "configure:11813: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11278 "configure"
+#line 11816 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11297,7 +11835,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11839: \"$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
@@ -11327,10 +11865,10 @@ done
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:11331: checking stack direction for C alloca" >&5
+echo "configure:11869: checking stack direction for C alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11334 "configure"
+#line 11872 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -11349,7 +11887,7 @@ main ()
   exit (find_stack_direction() < 0);
 }
 EOF
-if { (eval echo configure:11353: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:11891: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_c_stack_direction=1
 else
 
 ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
-echo "configure:11383: checking for vfork.h" >&5
+echo "configure:11921: checking for vfork.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11386 "configure"
+#line 11924 "configure"
 #include "confdefs.h"
 #include <vfork.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11391: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11929: \"$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*
@@ -11415,10 +11953,10 @@ else
 fi
 
 echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:11419: checking for working vfork" >&5
+echo "configure:11957: checking for working vfork" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11422 "configure"
+#line 11960 "configure"
 #include "confdefs.h"
 /* Thanks to Paul Eggert for this test.  */
 #include <stdio.h>
@@ -11513,7 +12051,7 @@ main() {
   }
 }
 EOF
-if { (eval echo configure:11517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_vfork_works=yes
 else
 
 
 echo $ac_n "checking for working strcoll""... $ac_c" 1>&6
-echo "configure:11543: checking for working strcoll" >&5
+echo "configure:12081: checking for working strcoll" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11546 "configure"
+#line 12084 "configure"
 #include "confdefs.h"
 #include <string.h>
 main ()
@@ -11552,7 +12090,7 @@ main ()
        strcoll ("123", "456") >= 0);
 }
 EOF
-if { (eval echo configure:11556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_strcoll_works=yes
 else
 for ac_func in getpgrp
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11584: checking for $ac_func" >&5
+echo "configure:12122: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11587 "configure"
+#line 12125 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11606,7 +12144,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
 done
 
 echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6
-echo "configure:11638: checking whether getpgrp takes no argument" >&5
+echo "configure:12176: checking whether getpgrp takes no argument" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11641 "configure"
+#line 12179 "configure"
 #include "confdefs.h"
 
 /*
@@ -11692,7 +12230,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:11696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_getpgrp_void=yes
 else
 
 
 echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:11723: checking for working mmap" >&5
+echo "configure:12261: checking for working mmap" >&5
 case "$opsys" in ultrix* ) have_mmap=no ;; *)
 cat > conftest.$ac_ext <<EOF
-#line 11726 "configure"
+#line 12264 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <unistd.h>
@@ -11755,7 +12293,7 @@ int main (int argc, char *argv[])
   return 1;
 }
 EOF
-if { (eval echo configure:11759: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12297: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   have_mmap=yes
 else
@@ -11777,13 +12315,16 @@ EOF
 }
 
 
+case "$opsys" in cygwin*) 
+       test "$rel_alloc" = "default" && rel_alloc=no ;;
+esac
 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:11785: checking for M_MMAP_THRESHOLD" >&5
+echo "configure:12326: checking for M_MMAP_THRESHOLD" >&5
     cat > conftest.$ac_ext <<EOF
-#line 11787 "configure"
+#line 12328 "configure"
 #include "confdefs.h"
 #include <malloc.h>
 int main() {
@@ -11795,7 +12336,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:11799: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12340: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   rel_alloc=no; echo "$ac_t""yes" 1>&6;
 else
@@ -11820,15 +12361,15 @@ EOF
 
 ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for termios.h""... $ac_c" 1>&6
-echo "configure:11824: checking for termios.h" >&5
+echo "configure:12365: checking for termios.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11827 "configure"
+#line 12368 "configure"
 #include "confdefs.h"
 #include <termios.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11832: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12373: \"$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*
@@ -11871,15 +12412,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:11875: checking for termio.h" >&5
+echo "configure:12416: checking for termio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11878 "configure"
+#line 12419 "configure"
 #include "confdefs.h"
 #include <termio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11883: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12424: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
 
 echo $ac_n "checking for socket""... $ac_c" 1>&6
-echo "configure:11915: checking for socket" >&5
+echo "configure:12456: checking for socket" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11918 "configure"
+#line 12459 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char socket(); below.  */
@@ -11937,7 +12478,7 @@ socket();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11941: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12482: \"$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
@@ -11952,15 +12493,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:11956: checking for netinet/in.h" >&5
+echo "configure:12497: checking for netinet/in.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11959 "configure"
+#line 12500 "configure"
 #include "confdefs.h"
 #include <netinet/in.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11964: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12505: \"$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*
@@ -11977,15 +12518,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:11981: checking for arpa/inet.h" >&5
+echo "configure:12522: checking for arpa/inet.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11984 "configure"
+#line 12525 "configure"
 #include "confdefs.h"
 #include <arpa/inet.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11989: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12530: \"$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*
@@ -12010,9 +12551,9 @@ EOF
 }
 
       echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6
-echo "configure:12014: checking "for sun_len member in struct sockaddr_un"" >&5
+echo "configure:12555: checking "for sun_len member in struct sockaddr_un"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 12016 "configure"
+#line 12557 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -12023,7 +12564,7 @@ int main() {
 static struct sockaddr_un x; x.sun_len = 1;
 ; return 0; }
 EOF
-if { (eval echo configure:12027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12568: \"$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
@@ -12041,9 +12582,9 @@ else
 fi
 rm -f conftest*
       echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6
-echo "configure:12045: checking "for ip_mreq struct in netinet/in.h"" >&5
+echo "configure:12586: checking "for ip_mreq struct in netinet/in.h"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 12047 "configure"
+#line 12588 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -12053,7 +12594,7 @@ int main() {
 static struct ip_mreq x;
 ; return 0; }
 EOF
-if { (eval echo configure:12057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_MULTICAST
 
 
 echo $ac_n "checking for msgget""... $ac_c" 1>&6
-echo "configure:12088: checking for msgget" >&5
+echo "configure:12629: checking for msgget" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12091 "configure"
+#line 12632 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char msgget(); below.  */
@@ -12110,7 +12651,7 @@ msgget();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12114: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12655: \"$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
@@ -12125,15 +12666,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:12129: checking for sys/ipc.h" >&5
+echo "configure:12670: checking for sys/ipc.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12132 "configure"
+#line 12673 "configure"
 #include "confdefs.h"
 #include <sys/ipc.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12137: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12678: \"$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*
@@ -12150,15 +12691,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:12154: checking for sys/msg.h" >&5
+echo "configure:12695: checking for sys/msg.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12157 "configure"
+#line 12698 "configure"
 #include "confdefs.h"
 #include <sys/msg.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12162: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12703: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
 ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dirent.h""... $ac_c" 1>&6
-echo "configure:12200: checking for dirent.h" >&5
+echo "configure:12741: checking for dirent.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12203 "configure"
+#line 12744 "configure"
 #include "confdefs.h"
 #include <dirent.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12208: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12749: \"$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*
@@ -12231,15 +12772,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:12235: checking for sys/dir.h" >&5
+echo "configure:12776: checking for sys/dir.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12238 "configure"
+#line 12779 "configure"
 #include "confdefs.h"
 #include <sys/dir.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12243: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12784: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
 ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for nlist.h""... $ac_c" 1>&6
-echo "configure:12276: checking for nlist.h" >&5
+echo "configure:12817: checking for nlist.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12279 "configure"
+#line 12820 "configure"
 #include "confdefs.h"
 #include <nlist.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12825: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
 
 echo "checking "for sound support"" 1>&6
-echo "configure:12314: checking "for sound support"" >&5
+echo "configure:12855: 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:12321: checking for multimedia/audio_device.h" >&5
+echo "configure:12862: checking for multimedia/audio_device.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12324 "configure"
+#line 12865 "configure"
 #include "confdefs.h"
 #include <multimedia/audio_device.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12329: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12870: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
       if test -z "$native_sound_lib"; then
         
 echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6
-echo "configure:12377: checking for ALopenport in -laudio" >&5
+echo "configure:12918: checking for ALopenport in -laudio" >&5
 ac_lib_var=`echo audio'_'ALopenport | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -laudio "
 cat > conftest.$ac_ext <<EOF
-#line 12382 "configure"
+#line 12923 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12389,7 +12930,7 @@ int main() {
 ALopenport()
 ; return 0; }
 EOF
-if { (eval echo configure:12393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12934: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
       if test -z "$native_sound_lib"; then
        
 echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6
-echo "configure:12424: checking for AOpenAudio in -lAlib" >&5
+echo "configure:12965: checking for AOpenAudio in -lAlib" >&5
 ac_lib_var=`echo Alib'_'AOpenAudio | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lAlib "
 cat > conftest.$ac_ext <<EOF
-#line 12429 "configure"
+#line 12970 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12436,7 +12977,7 @@ int main() {
 AOpenAudio()
 ; return 0; }
 EOF
-if { (eval echo configure:12440: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
     for dir in "machine" "sys" "linux"; do
       ac_safe=`echo "${dir}/soundcard.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ${dir}/soundcard.h""... $ac_c" 1>&6
-echo "configure:12478: checking for ${dir}/soundcard.h" >&5
+echo "configure:13019: checking for ${dir}/soundcard.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12481 "configure"
+#line 13022 "configure"
 #include "confdefs.h"
 #include <${dir}/soundcard.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12486: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13027: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 if test "$with_nas_sound" != "no"; then
   ac_safe=`echo "audio/audiolib.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for audio/audiolib.h""... $ac_c" 1>&6
-echo "configure:12547: checking for audio/audiolib.h" >&5
+echo "configure:13088: checking for audio/audiolib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12550 "configure"
+#line 13091 "configure"
 #include "confdefs.h"
 #include <audio/audiolib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12555: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13096: \"$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*
@@ -12569,12 +13110,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:12573: checking for AuOpenServer in -laudio" >&5
+echo "configure:13114: checking for AuOpenServer in -laudio" >&5
 ac_lib_var=`echo audio'_'AuOpenServer | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -laudio "
 cat > conftest.$ac_ext <<EOF
-#line 12578 "configure"
+#line 13119 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12585,7 +13126,7 @@ int main() {
 AuOpenServer()
 ; return 0; }
 EOF
-if { (eval echo configure:12589: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13130: \"$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
@@ -12624,7 +13165,7 @@ EOF
  fi
     libs_x="-laudio $libs_x" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-laudio\" to \$libs_x"; fi
             cat > conftest.$ac_ext <<EOF
-#line 12628 "configure"
+#line 13169 "configure"
 #include "confdefs.h"
 #include <audio/Xtutil.h>
 EOF
@@ -12655,7 +13196,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:12659: checking for $ac_word" >&5
+echo "configure:13200: checking for $ac_word" >&5
 
 if test -n "$have_esd_config"; then
   ac_cv_prog_have_esd_config="$have_esd_config" # Let the user override the test.
     c_switch_site="$c_switch_site `esd-config --cflags`" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"`esd-config --cflags`\" to \$c_switch_site"; fi
     LIBS="`esd-config --libs` $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"`esd-config --libs`\" to \$LIBS"; fi
     echo $ac_n "checking for esd_play_stream""... $ac_c" 1>&6
-echo "configure:12688: checking for esd_play_stream" >&5
+echo "configure:13229: checking for esd_play_stream" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12691 "configure"
+#line 13232 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char esd_play_stream(); below.  */
@@ -12710,7 +13251,7 @@ esd_play_stream();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13255: \"$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
@@ -12761,7 +13302,7 @@ test -z "$with_tty" && with_tty=yes
 
 if test "$with_tty" = "yes"  ; then
   echo "checking for TTY-related features" 1>&6
-echo "configure:12765: checking for TTY-related features" >&5
+echo "configure:13306: checking for TTY-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_TTY
 EOF
@@ -12777,12 +13318,12 @@ EOF
     if test -z "$with_ncurses"; then
     
 echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
-echo "configure:12781: checking for tgetent in -lncurses" >&5
+echo "configure:13322: checking for tgetent in -lncurses" >&5
 ac_lib_var=`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lncurses "
 cat > conftest.$ac_ext <<EOF
-#line 12786 "configure"
+#line 13327 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12793,7 +13334,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:12797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13338: \"$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
@@ -12826,15 +13367,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:12830: checking for ncurses/curses.h" >&5
+echo "configure:13371: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12833 "configure"
+#line 13374 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12838: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13379: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
     ac_safe=`echo "ncurses/term.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6
-echo "configure:12860: checking for ncurses/term.h" >&5
+echo "configure:13401: checking for ncurses/term.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12863 "configure"
+#line 13404 "configure"
 #include "confdefs.h"
 #include <ncurses/term.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12868: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13409: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
       c_switch_site="$c_switch_site -I/usr/include/ncurses"
       ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6
-echo "configure:12898: checking for ncurses/curses.h" >&5
+echo "configure:13439: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12901 "configure"
+#line 13442 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12906: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13447: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
        for lib in curses termlib termcap; do
          
 echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6
-echo "configure:12941: checking for tgetent in -l$lib" >&5
+echo "configure:13482: checking for tgetent in -l$lib" >&5
 ac_lib_var=`echo $lib'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$lib "
 cat > conftest.$ac_ext <<EOF
-#line 12946 "configure"
+#line 13487 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12953,7 +13494,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:12957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13498: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
       else
        
 echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6
-echo "configure:12988: checking for tgetent in -lcurses" >&5
+echo "configure:13529: checking for tgetent in -lcurses" >&5
 ac_lib_var=`echo curses'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcurses "
 cat > conftest.$ac_ext <<EOF
-#line 12993 "configure"
+#line 13534 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13000,7 +13541,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:13004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13545: \"$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
@@ -13018,12 +13559,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:13022: checking for tgetent in -ltermcap" >&5
+echo "configure:13563: checking for tgetent in -ltermcap" >&5
 ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltermcap "
 cat > conftest.$ac_ext <<EOF
-#line 13027 "configure"
+#line 13568 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13034,7 +13575,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:13038: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13579: \"$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
@@ -13082,15 +13623,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:13086: checking for gpm.h" >&5
+echo "configure:13627: checking for gpm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13089 "configure"
+#line 13630 "configure"
 #include "confdefs.h"
 #include <gpm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13094: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13635: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
  }
   test -z "$with_gpm" && { 
 echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
-echo "configure:13117: checking for Gpm_Open in -lgpm" >&5
+echo "configure:13658: checking for Gpm_Open in -lgpm" >&5
 ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgpm "
 cat > conftest.$ac_ext <<EOF
-#line 13122 "configure"
+#line 13663 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13129,7 +13670,7 @@ int main() {
 Gpm_Open()
 ; return 0; }
 EOF
-if { (eval echo configure:13133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13674: \"$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
@@ -13179,20 +13720,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:13183: checking for database support" >&5
+echo "configure:13724: 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:13188: checking for ndbm.h" >&5
+echo "configure:13729: checking for ndbm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13191 "configure"
+#line 13732 "configure"
 #include "confdefs.h"
 #include <ndbm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13196: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13737: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 if test "$with_database_gdbm" != "no"; then
   
 echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6
-echo "configure:13226: checking for dbm_open in -lgdbm" >&5
+echo "configure:13767: checking for dbm_open in -lgdbm" >&5
 ac_lib_var=`echo gdbm'_'dbm_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgdbm "
 cat > conftest.$ac_ext <<EOF
-#line 13231 "configure"
+#line 13772 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13238,7 +13779,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:13242: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 
 if test "$with_database_dbm" != "no"; then
   echo $ac_n "checking for dbm_open""... $ac_c" 1>&6
-echo "configure:13270: checking for dbm_open" >&5
+echo "configure:13811: checking for dbm_open" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13273 "configure"
+#line 13814 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbm_open(); below.  */
@@ -13292,7 +13833,7 @@ dbm_open();
 
 ; return 0; }
 EOF
-if { (eval echo configure:13296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13837: \"$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
@@ -13311,12 +13852,12 @@ else
 
     
 echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
-echo "configure:13315: checking for dbm_open in -ldbm" >&5
+echo "configure:13856: checking for dbm_open in -ldbm" >&5
 ac_lib_var=`echo dbm'_'dbm_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldbm "
 cat > conftest.$ac_ext <<EOF
-#line 13320 "configure"
+#line 13861 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13327,7 +13868,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:13331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13872: \"$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
@@ -13368,10 +13909,10 @@ EOF
 
 if test "$with_database_berkdb" != "no"; then
   echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6
-echo "configure:13372: checking for Berkeley db.h" >&5
+echo "configure:13913: checking for Berkeley db.h" >&5
   for header in "db/db.h" "db.h"; do
     cat > conftest.$ac_ext <<EOF
-#line 13375 "configure"
+#line 13916 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -13393,7 +13934,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:13397: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13938: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   db_h_file="$header"; break
 else
@@ -13409,9 +13950,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:13413: checking for Berkeley DB version" >&5
+echo "configure:13954: checking for Berkeley DB version" >&5
     cat > conftest.$ac_ext <<EOF
-#line 13415 "configure"
+#line 13956 "configure"
 #include "confdefs.h"
 #include <$db_h_file>
 #if DB_VERSION_MAJOR > 1
@@ -13423,7 +13964,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   egrep "yes" >/dev/null 2>&1; then
   rm -rf conftest*
   cat > conftest.$ac_ext <<EOF
-#line 13427 "configure"
+#line 13968 "configure"
 #include "confdefs.h"
 #include <$db_h_file>
 #if DB_VERSION_MAJOR > 2
 rm -f conftest*
 
     echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6
-echo "configure:13454: checking for $dbfunc" >&5
+echo "configure:13995: checking for $dbfunc" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13457 "configure"
+#line 13998 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $dbfunc(); below.  */
@@ -13476,7 +14017,7 @@ $dbfunc();
 
 ; return 0; }
 EOF
-if { (eval echo configure:13480: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14021: \"$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
@@ -13495,12 +14036,12 @@ else
 
     
 echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6
-echo "configure:13499: checking for $dbfunc in -ldb" >&5
+echo "configure:14040: checking for $dbfunc in -ldb" >&5
 ac_lib_var=`echo db'_'$dbfunc | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldb "
 cat > conftest.$ac_ext <<EOF
-#line 13504 "configure"
+#line 14045 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13511,7 +14052,7 @@ int main() {
 $dbfunc()
 ; return 0; }
 EOF
-if { (eval echo configure:13515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14056: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 if test "$with_socks" = "yes"; then
   
 echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6
-echo "configure:13589: checking for SOCKSinit in -lsocks" >&5
+echo "configure:14130: checking for SOCKSinit in -lsocks" >&5
 ac_lib_var=`echo socks'_'SOCKSinit | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lsocks "
 cat > conftest.$ac_ext <<EOF
-#line 13594 "configure"
+#line 14135 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13601,7 +14142,7 @@ int main() {
 SOCKSinit()
 ; return 0; }
 EOF
-if { (eval echo configure:13605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14146: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 
 if test "$with_modules" != "no"; then
   echo "checking for module support" 1>&6
-echo "configure:13660: checking for module support" >&5
+echo "configure:14201: checking for module support" >&5
 
     if test "$with_msw" = "yes"; then
     have_dl=yes;
   else
         ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
-echo "configure:13667: checking for dlfcn.h" >&5
+echo "configure:14208: checking for dlfcn.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13670 "configure"
+#line 14211 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13675: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:14216: \"$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*
@@ -13688,16 +14229,16 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   
       echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6
-echo "configure:13692: checking for dlopen in -lc" >&5
+echo "configure:14233: checking for dlopen in -lc" >&5
       cat > conftest.$ac_ext <<EOF
-#line 13694 "configure"
+#line 14235 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 int main() {
        dlopen ("", 0);
 ; return 0; }
 EOF
-if { (eval echo configure:13701: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14242: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
    have_dl=yes 
 else
@@ -13706,18 +14247,18 @@ else
   rm -rf conftest*
   
       echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:13710: checking for dlopen in -ldl" >&5
+echo "configure:14251: checking for dlopen in -ldl" >&5
       ac_save_LIBS="$LIBS"
       LIBS="-ldl $LIBS"
       cat > conftest.$ac_ext <<EOF
-#line 13714 "configure"
+#line 14255 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 int main() {
        dlopen ("", 0);
 ; return 0; }
 EOF
-if { (eval echo configure:13721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14262: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
    have_dl=yes 
 else
@@ -13746,12 +14287,12 @@ EOF
     else
       
 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:13750: checking for shl_load in -ldld" >&5
+echo "configure:14291: checking for shl_load in -ldld" >&5
 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldld "
 cat > conftest.$ac_ext <<EOF
-#line 13755 "configure"
+#line 14296 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13762,7 +14303,7 @@ int main() {
 shl_load()
 ; return 0; }
 EOF
-if { (eval echo configure:13766: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14307: \"$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
@@ -13789,12 +14330,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6
-echo "configure:13793: checking for dld_init in -ldld" >&5
+echo "configure:14334: checking for dld_init in -ldld" >&5
 ac_lib_var=`echo dld'_'dld_init | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldld "
 cat > conftest.$ac_ext <<EOF
-#line 13798 "configure"
+#line 14339 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13805,7 +14346,7 @@ int main() {
 dld_init()
 ; return 0; }
 EOF
-if { (eval echo configure:13809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14350: \"$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
@@ -13850,7 +14391,7 @@ xehost=$canonical
 xealias=$internal_configuration
 
 echo "checking how to build dynamic libraries for ${xehost}" 1>&6
-echo "configure:13854: checking how to build dynamic libraries for ${xehost}" >&5
+echo "configure:14395: checking how to build dynamic libraries for ${xehost}" >&5
 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts.
 case "$xehost" in
 *-*-linux-gnu*) ;;
@@ -13878,9 +14419,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:13882: checking checking whether we are using GNU C" >&5
+echo "configure:14423: checking checking whether we are using GNU C" >&5
   cat > conftest.$ac_ext <<EOF
-#line 13884 "configure"
+#line 14425 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -13902,7 +14443,7 @@ rm -f conftest*
 fi
 
 echo $ac_n "checking how to produce PIC code""... $ac_c" 1>&6
-echo "configure:13906: checking how to produce PIC code" >&5
+echo "configure:14447: checking how to produce PIC code" >&5
 wl=
 
 can_build_shared=yes
@@ -14003,18 +14544,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:14007: checking if PIC flag ${dll_cflags} really works" >&5
+echo "configure:14548: checking if PIC flag ${dll_cflags} really works" >&5
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $dll_cflags -DPIC"
   cat > conftest.$ac_ext <<EOF
-#line 14011 "configure"
+#line 14552 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:14018: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14559: \"$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
@@ -14045,7 +14586,7 @@ cc_produces_so=no
 xldf=
 xcldf=
 echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6
-echo "configure:14049: checking if C compiler can produce shared libraries" >&5
+echo "configure:14590: checking if C compiler can produce shared libraries" >&5
 if test "$XEGCC" = yes; then
   xcldf="-shared"
   xldf="-shared"
@@ -14096,14 +14637,14 @@ if test -n "$xcldf"; then
   xe_libs=
   ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5'
   cat > conftest.$ac_ext <<EOF
-#line 14100 "configure"
+#line 14641 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:14107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cc_produces_so=yes
 else
@@ -14128,7 +14669,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:14132: checking for ld used by GCC" >&5
+echo "configure:14673: checking for ld used by GCC" >&5
     ac_prog=`($CC -print-prog-name=ld) 2>&5`
     case "$ac_prog" in
     # Accept absolute paths.
@@ -14153,7 +14694,7 @@ echo "configure:14132: checking for ld used by GCC" >&5
     esac
   else
     echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:14157: checking for GNU ld" >&5
+echo "configure:14698: checking for GNU ld" >&5
   fi
 
   if test -z "$LTLD"; then
@@ -14191,7 +14732,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:14195: checking if the linker is GNU ld" >&5
+echo "configure:14736: checking if the linker is GNU ld" >&5
 # I'd rather use --version here, but apparently some GNU ld's only accept -v.
 if $LTLD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
   xe_gnu_ld=yes
@@ -14219,7 +14760,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:14223: checking whether the linker supports shared libraries" >&5
+echo "configure:14764: checking whether the linker supports shared libraries" >&5
   dll_ld=$CC
   dll_ldflags=$LDFLAGS
   ld_shlibs=yes
@@ -14430,10 +14971,10 @@ EOF
     for ac_func in dlerror _dlerror
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14434: checking for $ac_func" >&5
+echo "configure:14975: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14437 "configure"
+#line 14978 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -14456,7 +14997,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:14460: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15001: \"$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
@@ -14495,11 +15036,11 @@ done
 fi
 
 cat > conftest.$ac_ext <<EOF
-#line 14499 "configure"
+#line 15040 "configure"
 #include "confdefs.h"
 int main(int c,char *v[]){return 0;}
 EOF
-if { (eval echo configure:14503: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:15044: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -14562,7 +15103,7 @@ c_switch_general="$T"
 
 
 T=""
-for W in $c_switch_x_site $X_CFLAGS; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done
+for W in $c_switch_x_site $c_switch_gtk $X_CFLAGS; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done
 c_switch_window_system="$T"
 
 
@@ -14592,7 +15133,7 @@ ld_libs_general="$T"
 
 
 T=""
-for W in $X_EXTRA_LIBS $libs_x $X_PRE_LIBS; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done
+for W in $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done
 ld_libs_window_system="$T"
 
 
@@ -15145,6 +15686,7 @@ if test "$need_athena" = "yes"; then
   echo "    - Athena library to link:                     $athena_lib"
 fi
 case "$with_menubars" in
+  gtk   ) echo "  Using GTK menubars."   ;;
   lucid ) echo "  Using Lucid menubars." ;;
   motif ) echo "  Using Motif menubars."
           echo "  *WARNING*  The Motif menubar implementation is currently buggy."
@@ -15153,12 +15695,14 @@ case "$with_menubars" in
     msw ) echo "  Using MS-Windows menubars." ;;
 esac
 case "$with_scrollbars" in
+  gtk    ) echo "  Using GTK scrollbars."        ;;
   lucid  ) echo "  Using Lucid scrollbars."      ;;
   motif  ) echo "  Using Motif scrollbars."      ;;
   athena ) echo "  Using Athena scrollbars."     ;;
      msw ) echo "  Using MS-Windows scrollbars." ;;
 esac
 case "$with_dialogs" in
+  gtk    ) echo "  Using GTK dialog boxes." ;;
   motif  ) echo "  Using Motif dialog boxes."
            if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
              echo "  *WARNING*  The Motif dialog boxes cause problems on AIX 4.3 and higher."
@@ -15170,6 +15714,7 @@ case "$with_dialogs" in
      msw ) echo "  Using MS-Windows dialog boxes." ;;
 esac
 case "$with_widgets" in
+  gtk    ) echo "  Using GTK native widgets."        ;;
   motif  ) echo "  Using Motif native widgets."      ;;
   athena ) echo "  Using Athena native widgets."     ;;
      msw ) echo "  Using MS-Windows native widgets." ;;
@@ -15401,6 +15946,7 @@ s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
 s%@INSTALL_DATA@%$INSTALL_DATA%g
 s%@YACC@%$YACC%g
 s%@SET_MAKE@%$SET_MAKE%g
+s%@GTK_CONFIG@%$GTK_CONFIG%g
 s%@X_CFLAGS@%$X_CFLAGS%g
 s%@X_PRE_LIBS@%$X_PRE_LIBS%g
 s%@X_LIBS@%$X_LIBS%g
index 3de01c5..26e7024 100644 (file)
@@ -198,7 +198,7 @@ dnl ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&AC_FD_CC'
 dnl ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC'
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
 xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run'
-xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
+xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
 ac_cpp='$CPP '"$xe_cppflags"
 ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&AC_FD_CC'
 ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&AC_FD_CC'
@@ -341,6 +341,7 @@ package_path=''
 etcdir='${datadir}/${instvardir}/etc'
 archlibdir='${datadir}/${instvardir}/${configuration}'
 docdir='${archlibdir}'
+with_netinstall="no"
 with_prefix='yes'
 with_site_lisp='no'
 with_site_modules='yes'
@@ -358,6 +359,10 @@ rel_alloc='default'
 with_system_malloc='default'
 with_dlmalloc='default'
 native_sound_lib=''
+dnl These should be set to the empty string when we want gtk / gnome to
+dnl be auto-detected instead of manually specified.
+with_gtk='no'
+with_gnome='no'
 dnl use_assertions should be 'yes' by default.  Too many people in this
 dnl world have core dumps turned off by default or \"cannot find where the
 dnl core file went\".  At least we should get some useful output ...
@@ -454,6 +459,8 @@ while test $# != 0; do
        with_site_modules | \
        with_x          | \
        with_x11        | \
+       with_gtk        | \
+       with_gnome      | \
        with_msw        | \
        with_gcc        | \
        dynamic         | \
@@ -495,6 +502,7 @@ while test $# != 0; do
        with_hesiod     | \
        with_dnet       | \
        with_infodock   | \
+       with_netinstall   | \
        external_widget | \
        verbose         | \
        extra_verbose   | \
@@ -753,9 +761,9 @@ The default is to autodetect all sound support."])
              infopath ) AC_DEFINE(INFOPATH_USER_DEFINED) ;;
              package_path ) AC_DEFINE(PACKAGE_PATH_USER_DEFINED) ;;
              datadir )
-               AC_DEFINE(INFODIR_USER_DEFINED)
-               AC_DEFINE(LISPDIR_USER_DEFINED)
-               AC_DEFINE(MODULEDIR_USER_DEFINED)
+               AC_DEFINE(INFODIR_USER_DEFINED)
+               AC_DEFINE(LISPDIR_USER_DEFINED)
+               AC_DEFINE(MODULEDIR_USER_DEFINED)
                AC_DEFINE(ETCDIR_USER_DEFINED)
                AC_DEFINE(DOCDIR_USER_DEFINED)
                 AC_DEFINE(ARCHLIBDIR_USER_DEFINED) ;;
@@ -781,9 +789,10 @@ The default is to autodetect all sound support."])
            a | at | ath | athe | athen | athena )      val=athena ;;
            n | no | non | none )                       val=no     ;;
            y | ye | yes )                              val=yes    ;;
-           m | ms | msw )                      val=msw    ;;
+           g | gt | gtk )                              val=gtk    ;;
+           m | ms | msw )                              val=msw    ;;
            * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
-  \`lucid', \`motif', \`athena', \`yes', or \`no'."]) ;;
+  \`gtk\', \`lucid', \`motif', \`athena', \`yes', or \`no'."]) ;;
          esac
          eval "$opt=\"$val\""
        ;;
@@ -1839,12 +1848,15 @@ test "$extra_verbose" = "yes" && \
   ld lib_gcc ld_text_start_addr start_files ordinary_link
   have_terminfo mail_use_flock mail_use_lockf) && echo ""
 
-dnl Pick up mingw32 include path
+dnl Pick up mingw include path
+dnl We only cope with headers in mingw, not mingw32: no previous version of
+dnl XEmacs supported mingw and cygnus have made this incompatible change
+dnl so we just go with the flow.
 case "$opsys" in mingw* | cygwin*)
   cygwin_include=`eval "gcc -print-file-name=libc.a"` ;
   cygwin_include=`eval "dirname $cygwin_include"` ;
   cygwin_include="-I$cygwin_include/../include" ;
-  extra_includes="$cygwin_include/mingw32 $cygwin_include/mingw $cygwin_include" ;
+  extra_includes="$cygwin_include/mingw $cygwin_include" ;
   case "$opsys" in mingw*)
     XE_APPEND($extra_includes, c_switch_system) ;;
   esac
@@ -2495,6 +2507,116 @@ dnl ----------------------
 
 AC_CHECKING("for specified window system")
 
+dnl Autodetection of Gdk libraries and includes
+dnl -------------------------------------------
+dnl On some systems (FreeBSD springs to mind), they use
+dnl versions on the utility routines, so instead of gtk-config
+dnl you must use gtk12-config, etc, etc.
+
+GNOME_CONFIG=no
+GTK_CONFIG=no
+
+if test "$with_gnome" != "no"; then
+   AC_MSG_CHECKING(for GNOME configuration script)
+   for possible in gnome-config
+   do
+      possible_version=`${possible} --version 2> /dev/null`
+      if test "x${possible_version}" != "x"; then
+              GNOME_CONFIG="${possible}"
+              with_gnome=yes
+              with_gtk=yes
+              break
+      fi
+   done
+   AC_MSG_RESULT([${GNOME_CONFIG}])
+fi
+
+if test "${GNOME_CONFIG}" != "no"; then
+      GNOME_LIBS=`${GNOME_CONFIG} --libs gnomeui`
+      GNOME_CFLAGS=`${GNOME_CONFIG} --cflags gnomeui`
+      AC_DEFINE(HAVE_GNOME)
+      XE_APPEND(${GNOME_LIBS}, libs_gtk)
+      XE_APPEND(${GNOME_CFLAGS}, c_switch_gtk)
+fi
+
+if test "$with_gtk" != "no";then
+   AC_MSG_CHECKING(for GTK configuration script)
+   for possible in gtk12-config gtk14-config gtk-config
+   do
+      possible_version=`${possible} --version 2> /dev/null`
+      if test "x${possible_version}" != "x"; then
+              GTK_CONFIG="${possible}"
+      fi
+      case "${possible_version}" in
+        1.0.*) AC_MSG_WARN([GTK 1.2 is required, please upgrade your version of GTK.]); with_gtk=no;;
+        1.3.*) AC_MSG_WARN([GTK 1.3 is not supported right now]); with_gtk=no;;
+       1.2.*)
+               with_gtk=yes
+               break
+               ;;
+        *)     AC_MSG_WARN([Found unsupported version of GTK: $possible_version]);;
+      esac
+   done
+   AC_MSG_RESULT([${GTK_CONFIG}])
+fi
+
+if test "${GTK_CONFIG}" != "no"; then
+      AC_MSG_CHECKING(gtk version)
+      GTK_VERSION=`${GTK_CONFIG} --version`
+      AC_MSG_RESULT(${GTK_VERSION})
+
+      AC_MSG_CHECKING(gtk libs)
+      GTK_LIBS=`${GTK_CONFIG} --libs`
+      XE_APPEND(${GTK_LIBS}, libs_gtk)
+      AC_MSG_RESULT(${GTK_LIBS})
+
+      AC_MSG_CHECKING(gtk cflags)
+      GTK_CFLAGS=`${GTK_CONFIG} --cflags`
+      XE_APPEND(${GTK_CFLAGS}, c_switch_gtk)
+      AC_MSG_RESULT(${GTK_CFLAGS})
+
+      AC_CHECK_LIB(gdk_imlib, main, XE_PREPEND(-lgdk_imlib, libs_gtk))
+      AC_CHECK_LIB(Imlib, Imlib_init, XE_APPEND(-lImlib, libs_gtk))
+      AC_CHECK_FUNCS(gdk_imlib_init)
+
+      AC_DEFINE(HAVE_XPM)
+      AC_DEFINE(HAVE_GTK)
+      AC_SUBST(GTK_CONFIG)
+
+      window_system=gtk
+      with_gtk=yes
+      with_x11=no
+
+      test "${with_scrollbars}" != "no" && with_scrollbars=gtk
+      test "${with_toolbars}" != no && with_toolbars=gtk
+      test "${with_menubars}" != "no" && with_menubars=gtk
+      test "${with_dialogs}" != "no" && with_dialogs=gtk
+      test "${with_widgets}" != "no" && with_widgets=gtk
+
+      XE_ADD_OBJS(console-gtk.o device-gtk.o event-gtk.o frame-gtk.o)
+      XE_ADD_OBJS(objects-gtk.o redisplay-gtk.o glyphs-gtk.o)
+      XE_ADD_OBJS(select-gtk.o gccache-gtk.o)
+      XE_ADD_OBJS(gtk-xemacs.o ui-gtk.o)
+
+      dnl Check for libglade support (it rocks)
+      OLD_CFLAGS="${CFLAGS}"
+      OLD_LDFLAGS="${LDFLAGS}"
+      CFLAGS="${GTK_CFLAGS} ${CFLAGS}"
+      LDFLAGS="${LDFLAGS} ${GTK_LIBS}"
+      AC_CHECK_HEADERS(glade/glade.h glade.h)
+      AC_CHECK_LIB(xml, main, XE_PREPEND(-lxml, libs_gtk))
+      AC_CHECK_LIB(glade, main, XE_PREPEND(-lglade, libs_gtk))
+      AC_CHECK_LIB(glade-gnome, main, XE_PREPEND(-lglade-gnome, libs_gtk))
+      AC_EGREP_HEADER([char \*txtdomain;], [glade/glade-xml.h],
+                      [AC_MSG_RESULT(yes)
+                       AC_DEFINE(LIBGLADE_XML_TXTDOMAIN,1)],
+                      [AC_MSG_RESULT(no)])
+      CFLAGS="${OLD_CFLAGS}"
+      LDFLAGS="${OLD_LDFLAGS}"
+fi
+
+dnl We may eventually prefer gtk/gdk over vanilla X11...
+
 if test "$with_x11" != "no"; then
   dnl User-specified --x-includes or --x-libraries implies --with-x11.
   test "$x_includes $x_libraries" != "NONE NONE" && \
@@ -2539,10 +2661,11 @@ if test "$with_x11" != "no"; then
   fi
 fi
 
-case "$with_x11" in
-  yes ) window_system=x11  HAVE_X_WINDOWS=yes ;;
-  no  ) window_system=none HAVE_X_WINDOWS=no  ;;
-esac
+dnl #### wmperry:: !x11 != NONE
+dnl case "$with_x11" in
+dnl  yes ) window_system=x11  HAVE_X_WINDOWS=yes ;;
+dnl  no  ) window_system=none HAVE_X_WINDOWS=no  ;;
+dnl esac
 
 if test "$with_x11" = "yes"; then
   AC_DEFINE(HAVE_X_WINDOWS)
@@ -2698,7 +2821,7 @@ dnl Avoid re-AC_DEFINE-ing xmkmf symbols we've already defined above.
 #include <X11/Xlib.h>
 extern Bool XRegisterIMInstantiateCallback(
    Display*, struct _XrmHashBucketRec*, char*, char*, XIMProc, XPointer*);
-], [],
+], [], 
   [AC_MSG_RESULT(yes)],
   [AC_MSG_RESULT(no)
    AC_DEFINE(XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE)])
@@ -2741,9 +2864,11 @@ if test "$with_msw" != "no"; then
     AC_DEFINE(HAVE_MS_WINDOWS)
 
     dnl The net installer only works with MS-Windows currently
-    XE_APPEND(netinstall, MAKE_SUBDIR)
-    XE_APPEND(netinstall, SRC_SUBDIR_DEPS)
-    XE_APPEND(netinstall, INSTALL_ARCH_DEP_SUBDIR)
+    if test "$with_netinstall" = "yes"; then
+      XE_APPEND(netinstall, MAKE_SUBDIR)
+      XE_APPEND(netinstall, SRC_SUBDIR_DEPS)
+      XE_APPEND(netinstall, INSTALL_ARCH_DEP_SUBDIR)
+    fi
 
     install_pp="$blddir/lib-src/installexe.sh"
     XE_APPEND(-lshell32 -lgdi32 -luser32 -lcomdlg32 -lcomctl32 -lwinspool, libs_system)
@@ -2835,6 +2960,11 @@ bitmapdir=
 case "$window_system" in
   x11  ) HAVE_X_WINDOWS=yes; echo "  Using X11." ;;
   msw  ) HAVE_X_WINDOWS=no ; echo "  Using MS-Windows." ;;
+  gtk  )
+       HAVE_X_WINDOWS=no
+       test "$with_gnome" = "yes" && echo "  Using GNOME."
+       test "$with_gnome" = "no" && echo "  Using GTK."
+       ;;
   none ) HAVE_X_WINDOWS=no ; echo "  Using no window system." ;;
 esac
 
@@ -2858,7 +2988,7 @@ test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no)
 test -z "$with_xauth" && with_xauth=yes
 if test "$with_xauth" = "yes"; then
   AC_DEFINE(HAVE_XAUTH)
-  XE_SPACE(libs_xauth, $X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS)
+  XE_SPACE(libs_xauth, $GTK_LIBS $X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS)
 fi
 AC_SUBST(libs_xauth)
 
@@ -2940,6 +3070,9 @@ if test "$with_offix" = "yes"; then
   XE_APPEND(offix.o, dnd_objs)
   XE_APPEND(OffiX, dragndrop_proto)
 fi
+if test "$with_gtk" = "yes"; then
+   XE_APPEND(GTK, dragndrop_proto)
+fi
 
 dnl Autodetect Drag'n'Drop support
 dnl always included if CDE, Offix, or MSWindows are defined
@@ -3160,6 +3293,22 @@ if test "$window_system" != "none"; then
 fi
 
 dnl ----------------------
+dnl GTK-Specific Graphics libraries
+dnl ----------------------
+
+if test "$with_gtk" = "yes"; then
+  dnl Autodetect XFACE
+  test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
+  test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
+  test -z "$with_xface" && with_xface=yes
+  if test "$with_xface" = "yes"; then
+    AC_DEFINE(HAVE_XFACE)
+    XE_PREPEND(-lcompface, libs_gtk)
+  fi
+fi
+
+
+dnl ----------------------
 dnl X-Specific Graphics libraries
 dnl ----------------------
 
@@ -3397,6 +3546,14 @@ test "$with_scrollbars" != "no"    && XE_ADD_OBJS(scrollbar.o)
 test "$with_dialogs"    != "no"    && XE_ADD_OBJS(dialog.o)
 test "$with_toolbars"   != "no"    && XE_ADD_OBJS(toolbar.o)
 
+if test "$with_gtk" = "yes"; then
+  test "$with_menubars"   != "no"      && XE_ADD_OBJS(menubar-gtk.o)
+  test "$with_scrollbars" != "no"      && XE_ADD_OBJS(scrollbar-gtk.o)
+  test "$with_dialogs"    != "no"      && XE_ADD_OBJS(dialog-gtk.o)
+  test "$with_toolbars"   != "no"      && XE_ADD_OBJS(toolbar-gtk.o)
+  test "$all_widgets" != "no no no no no" && XE_ADD_OBJS(gui-gtk.o)
+fi
+
 if test "$with_x11" = "yes"; then
   test "$with_menubars"   != "no"  && XE_ADD_OBJS(menubar-x.o)
   test "$with_scrollbars" != "no"  && XE_ADD_OBJS(scrollbar-x.o)
@@ -3765,6 +3922,10 @@ esac
 AC_MSG_RESULT($have_mmap)
 test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP)
 
+dnl By default we switch off rel-alloc on cygwin as it generally causes us grief
+case "$opsys" in cygwin*) 
+       test "$rel_alloc" = "default" && rel_alloc=no ;;
+esac
 dnl rel_alloc requires either GNU malloc or system malloc with mmap
 dnl We only turn rel_alloc on by default if mmap is available.
 test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no
@@ -4250,13 +4411,13 @@ dnl Use XE_SPACE instead of plain assignment statements to remove extraneous bla
 XE_SPACE(CFLAGS, $CFLAGS)
 XE_SPACE(extra_objs, $extra_objs)
 XE_SPACE(c_switch_general, -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system)
-XE_SPACE(c_switch_window_system, $c_switch_x_site $X_CFLAGS)
+XE_SPACE(c_switch_window_system, $c_switch_x_site $c_switch_gtk $X_CFLAGS)
 XE_SPACE(c_switch_all, $c_switch_general $c_switch_window_system)
 XE_SPACE(ld_switch_general, $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run)
 XE_SPACE(ld_switch_window_system, $ld_switch_x_site)
 XE_SPACE(ld_switch_all, $ld_switch_general $ld_switch_window_system)
 XE_SPACE(ld_libs_general, $LIBS $libs_machine $libs_system $libs_standard)
-XE_SPACE(ld_libs_window_system, $X_EXTRA_LIBS $libs_x $X_PRE_LIBS)
+XE_SPACE(ld_libs_window_system, $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS)
 XE_SPACE(ld_libs_all, $ld_libs_window_system $ld_libs_general)
 
 dnl Compute lists of Makefiles and subdirs
@@ -4658,6 +4819,7 @@ if test "$need_athena" = "yes"; then
   echo "    - Athena library to link:                     $athena_lib"
 fi
 case "$with_menubars" in
+  gtk   ) echo "  Using GTK menubars."   ;;
   lucid ) echo "  Using Lucid menubars." ;;
   motif ) echo "  Using Motif menubars."
           echo "  *WARNING*  The Motif menubar implementation is currently buggy."
@@ -4666,12 +4828,14 @@ case "$with_menubars" in
     msw ) echo "  Using MS-Windows menubars." ;;
 esac
 case "$with_scrollbars" in
+  gtk    ) echo "  Using GTK scrollbars."        ;;
   lucid  ) echo "  Using Lucid scrollbars."      ;;
   motif  ) echo "  Using Motif scrollbars."      ;;
   athena ) echo "  Using Athena scrollbars."     ;;
      msw ) echo "  Using MS-Windows scrollbars." ;;
 esac
 case "$with_dialogs" in
+  gtk    ) echo "  Using GTK dialog boxes." ;;
   motif  ) echo "  Using Motif dialog boxes."
            if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
              echo "  *WARNING*  The Motif dialog boxes cause problems on AIX 4.3 and higher."
@@ -4683,6 +4847,7 @@ case "$with_dialogs" in
      msw ) echo "  Using MS-Windows dialog boxes." ;;
 esac
 case "$with_widgets" in
+  gtk    ) echo "  Using GTK native widgets."        ;;
   motif  ) echo "  Using Motif native widgets."      ;;
   athena ) echo "  Using Athena native widgets."     ;;
      msw ) echo "  Using MS-Windows native widgets." ;;
index d7e9f6c..4f95ce2 100644 (file)
@@ -59,6 +59,8 @@ Installation options:
 
 Window-system options:
 
+--with-gtk              Support GTK on the X Window System. (EXPERIMENTAL)
+--with-gnome            Support GNOME on the X Window System. (EXPERIMENTAL)
 --with-x11 (*)          Support the X Window System.
 --x-includes=DIR        Search for X header files in DIR.
 --x-libraries=DIR       Search for X libraries in DIR.
@@ -166,6 +168,7 @@ Additional features:
 --with-dnet (*)         Compile with support for DECnet.
 --with-modules          Compile in experimental support for dynamically
                         loaded libraries (Dynamic Shared Objects).
+--with-netinstall      Compile in support for installation over the internet.          
 --with-site-lisp=yes    Allow for a site-lisp directory in the XEmacs hierarchy
                         searched before the installation packages.
 --with-site-modules=no  Disable site-modules directory in the XEmacs hierarchy,
index 6bf41ea..268e048 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -245,7 +245,7 @@ is now equivalent to -user-init-file ~<user>/.xemacs/init.el
 ~<user>/.emacs -user-init-directory ~<user>/.xemacs, whichever init
 file comes first.
 
-** New variable `mswindows-meta-activates-menu'.
+** New variable `mswindows-alt-by-itself-activates-menu'.
 If you set this variable to nil then pressing and releasing the Alt
 key under MS-Windows will no longer activate the menubar.  The default
 is t.  This is not to be confused with `menu-accelerator-enabled',
index 49c2065..7cc2125 100644 (file)
@@ -61,7 +61,7 @@ recycle2.xpm          Two versions of oversized Recycle cursor
 refcard.ps.gz          Postscript version of XEmacs reference card
 refcard.tex            XEmacs reference card
 sample.Xdefaults       Example ~/.Xdefaults file
-sample.emacs           Example ~/.emacs file
+sample.init.el         Example ~/.xemacs/init.el file
 sink.xbm               A Gnu icon
 sparcworks/            Support files for Sparcworks
 tests/                 Testcases for external widget
diff --git a/etc/photos/jason.png b/etc/photos/jason.png
deleted file mode 100644 (file)
index afe324c..0000000
Binary files a/etc/photos/jason.png and /dev/null differ
diff --git a/etc/photos/jasonm.png b/etc/photos/jasonm.png
deleted file mode 100644 (file)
index afe324c..0000000
Binary files a/etc/photos/jasonm.png and /dev/null differ
diff --git a/etc/sample.emacs b/etc/sample.emacs
deleted file mode 100644 (file)
index 3124457..0000000
+++ /dev/null
@@ -1,660 +0,0 @@
-;; -*- Mode: Emacs-Lisp -*-
-
-;;; This is a sample .emacs file.
-;;;
-;;; The .emacs file, which should reside in your home directory, allows you to
-;;; customize the behavior of Emacs.  In general, changes to your .emacs file
-;;; will not take effect until the next time you start up Emacs.  You can load
-;;; it explicitly with `M-x load-file RET ~/.emacs RET'.
-;;;
-;;; There is a great deal of documentation on customization in the Emacs
-;;; manual.  You can read this manual with the online Info browser: type
-;;; `C-h i' or select "Emacs Info" from the "Help" menu.
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;                     Basic Customization                         ;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; Enable the command `narrow-to-region' ("C-x n n"), a useful
-;; command, but possibly confusing to a new user, so it's disabled by
-;; default.
-(put 'narrow-to-region 'disabled nil)
-
-;;; Define a variable to indicate whether we're running XEmacs/Lucid Emacs.
-;;; (You do not have to defvar a global variable before using it --
-;;; you can just call `setq' directly like we do for `emacs-major-version'
-;;; below.  It's clearer this way, though.)
-
-(defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
-
-;; Make the sequence "C-x w" execute the `what-line' command, 
-;; which prints the current line number in the echo area.
-(global-set-key "\C-xw" 'what-line)
-
-;; set up the function keys to do common tasks to reduce Emacs pinky
-;; and such.
-
-;; Make F1 invoke help
-(global-set-key [f1] 'help-command)
-;; Make F2 be `undo'
-(global-set-key [f2] 'undo)
-;; Make F3 be `find-file'
-;; Note: it does not currently work to say
-;;   (global-set-key 'f3 "\C-x\C-f")
-;; The reason is that macros can't do interactive things properly.
-;; This is an extremely longstanding bug in Emacs.  Eventually,
-;; it will be fixed. (Hopefully ..)
-(global-set-key [f3] 'find-file)
-
-;; Make F4 be "mark", F5 be "copy", F6 be "paste"
-;; Note that you can set a key sequence either to a command or to another
-;; key sequence.
-(global-set-key [f4] 'set-mark-command)
-(global-set-key [f5] "\M-w")
-(global-set-key [f6] "\C-y")
-
-;; Shift-F4 is "pop mark off of stack"
-(global-set-key [(shift f4)] (lambda () (interactive) (set-mark-command t)))
-
-;; Make F7 be `save-buffer'
-(global-set-key [f7] 'save-buffer)
-
-;; Make F8 be "start macro", F9 be "end macro", F10 be "execute macro"
-(global-set-key [f8] 'start-kbd-macro)
-(global-set-key [f9] 'end-kbd-macro)
-(global-set-key [f10] 'call-last-kbd-macro)
-
-;; Here's an alternative binding if you don't use keyboard macros:
-;; Make F8 be `save-buffer' followed by `delete-window'.
-;;(global-set-key 'f8 "\C-x\C-s\C-x0")
-
-;; If you prefer delete to actually delete forward then you want to
-;; uncomment the next line (or use `Customize' to customize this).
-;; (setq delete-key-deletes-forward t)
-
-
-(cond (running-xemacs
-       ;;
-       ;; Code for any version of XEmacs/Lucid Emacs goes here
-       ;;
-
-       ;; Change the values of some variables.
-       ;; (t means true; nil means false.)
-       ;;
-       ;; Use the "Describe Variable..." option on the "Help" menu
-       ;; to find out what these variables mean.
-       (setq find-file-use-truenames nil
-            find-file-compare-truenames t
-            minibuffer-confirm-incomplete t
-            complex-buffers-menu-p t
-            next-line-add-newlines nil
-            mail-yank-prefix "> "
-            kill-whole-line t
-            )
-
-       ;; When running ispell, consider all 1-3 character words as correct.
-       (setq ispell-extra-args '("-W" "3"))
-
-       (cond ((or (not (fboundp 'device-type))
-                 (equal (device-type) 'x)
-                 (equal (device-type) 'mswindows))
-             ;; Code which applies only when running emacs under X or
-             ;; MicroSoft Windows goes here.  (We check whether the
-             ;; function `device-type' exists before using it.  In
-             ;; versions before 19.12, there was no such function.
-             ;; If it doesn't exist, we simply assume we're running
-             ;; under X -- versions before 19.12 only supported X.)
-
-             ;; Remove the binding of C-x C-c, which normally exits emacs.
-             ;; It's easy to hit this by mistake, and that can be annoying.
-             ;; Under X, you can always quit with the "Exit Emacs" option on
-             ;; the File menu.
-             (global-set-key "\C-x\C-c" nil)
-
-             ;; Uncomment this to enable "sticky modifier keys" in 19.13
-             ;; and up.  With sticky modifier keys enabled, you can
-             ;; press and release a modifier key before pressing the
-             ;; key to be modified, like how the ESC key works always.
-             ;; If you hold the modifier key down, however, you still
-             ;; get the standard behavior.  I personally think this
-             ;; is the best thing since sliced bread (and a *major*
-             ;; win when it comes to reducing Emacs pinky), but it's
-             ;; disorienting at first so I'm not enabling it here by
-             ;; default.
-
-             ;;(setq modifier-keys-are-sticky t)
-
-             ;; This changes the variable which controls the text that goes
-             ;; in the top window title bar.  (However, it is not changed
-             ;; unless it currently has the default value, to avoid
-             ;; interfering with a -wn command line argument I may have
-             ;; started emacs with.)
-             (if (equal frame-title-format "%S: %b")
-                 (setq frame-title-format
-                       (concat "%S: " invocation-directory invocation-name
-                               " [" emacs-version "]"
-                               (if nil ; (getenv "NCD")
-                                   ""
-                                 "   %b"))))
-
-             ;; If we're running on display 0, load some nifty sounds that
-             ;; will replace the default beep.  But if we're running on a
-             ;; display other than 0, which probably means my NCD X terminal,
-             ;; which can't play digitized sounds, do two things: reduce the
-             ;; beep volume a bit, and change the pitch of the sound that is
-             ;; made for "no completions."
-             ;;
-             ;; (Note that sampled sounds only work if XEmacs was compiled
-             ;; with sound support, and we're running on the console of a
-             ;; Sparc, HP, or SGI machine, or on a machine which has a
-             ;; NetAudio server; otherwise, you just get the standard beep.)
-             ;;
-             ;; (Note further that changing the pitch and duration of the
-             ;; standard beep only works with some X servers; many servers
-             ;; completely ignore those parameters.)
-             ;;
-             (cond ((or (and (getenv "DISPLAY") 
-                             (string-match ":0" (getenv "DISPLAY")))
-                        (and (eq (console-type) 'mswindows)
-                             (device-sound-enabled-p)))
-                    (load-default-sounds))
-                   (t
-                    (setq bell-volume 40)
-                    (setq sound-alist
-                          (append sound-alist '((no-completion :pitch 500))))
-                    ))
-
-             ;; Make `C-x C-m' and `C-x RET' be different (since I tend
-             ;; to type the latter by accident sometimes.)
-             (define-key global-map [(control x) return] nil)
-
-             ;; Change the pointer used when the mouse is over a modeline
-             (set-glyph-image modeline-pointer-glyph "leftbutton")
-
-             ;; Change the continuation glyph face so it stands out more
-             (and (fboundp 'make-face-bold)
-                  (boundp 'continuation-glyph)
-                  (make-face-bold (glyph-face continuation-glyph)))
-
-             ;; Change the pointer used during garbage collection.
-             ;;
-             ;; Note that this pointer image is rather large as pointers go,
-             ;; and so it won't work on some X servers (such as the MIT
-             ;; R5 Sun server) because servers may have lamentably small
-             ;; upper limits on pointer size.
-             ;;(if (featurep 'xpm)
-             ;;   (set-glyph-image gc-pointer-glyph
-             ;;         (expand-file-name "trash.xpm" data-directory)))
-
-             ;; Here's another way to do that: it first tries to load the
-             ;; pointer once and traps the error, just to see if it's
-             ;; possible to load that pointer on this system; if it is,
-             ;; then it sets gc-pointer-glyph, because we know that
-             ;; will work.  Otherwise, it doesn't change that variable
-             ;; because we know it will just cause some error messages.
-             (if (featurep 'xpm)
-                 (let ((file (expand-file-name "recycle.xpm" data-directory)))
-                   (if (condition-case error
-                           ;; check to make sure we can use the pointer.
-                           (make-image-instance file nil
-                                                '(pointer))
-                         (error nil))      ; returns nil if an error occurred.
-                       (set-glyph-image gc-pointer-glyph file))))
-
-             (when (featurep 'menubar)
-               ;; Add `dired' to the File menu
-               (add-menu-button '("File") ["Edit Directory" dired t])
-
-               ;; Here's a way to add scrollbar-like buttons to the menubar
-               (add-menu-button nil ["Top" beginning-of-buffer t])
-               (add-menu-button nil ["<<<" scroll-down         t])
-               (add-menu-button nil [" . " recenter            t])
-               (add-menu-button nil [">>>" scroll-up           t])
-               (add-menu-button nil ["Bot" end-of-buffer       t]))
-
-             ;; Change the behavior of mouse button 2 (which is normally
-             ;; bound to `mouse-yank'), so that it inserts the selected text
-             ;; at point (where the text cursor is), instead of at the
-             ;; position clicked.
-             ;;
-             ;; Note that you can find out what a particular key sequence or
-             ;; mouse button does by using the "Describe Key..." option on
-             ;; the Help menu.
-             (setq mouse-yank-at-point t)
-
-             ;; When editing C code (and Lisp code and the like), I often
-             ;; like to insert tabs into comments and such.  It gets to be
-             ;; a pain to always have to use `C-q TAB', so I set up a more
-             ;; convenient binding.  Note that this does not work in
-             ;; TTY frames, where tab and shift-tab are indistinguishable.
-             (define-key global-map '(shift tab) 'self-insert-command)
-
-             ;; LISPM bindings of Control-Shift-C and Control-Shift-E.
-             ;; Note that "\C-C" means Control-C, not Control-Shift-C.
-             ;; To specify shifted control characters, you must use the
-             ;; more verbose syntax used here.
-             (define-key emacs-lisp-mode-map '(control C) 'compile-defun)
-             (define-key emacs-lisp-mode-map '(control E) 'eval-defun)
-
-             ;; If you like the FSF Emacs binding of button3 (single-click
-             ;; extends the selection, double-click kills the selection),
-             ;; uncomment the following:
-
-             ;; Under 19.13, the following is enough:
-              ;(define-key global-map 'button3 'mouse-track-adjust)
-
-             ;; But under 19.12, you need this:
-              ;(define-key global-map 'button3
-              ;    (lambda (event)
-              ;      (interactive "e")
-              ;      (let ((default-mouse-track-adjust t))
-              ;        (mouse-track event))))
-
-             ;; Under both 19.12 and 19.13, you also need this:
-              ;(add-hook 'mouse-track-click-hook
-              ;          (lambda (event count)
-              ;            (if (or (/= (event-button event) 3)
-              ;                    (/= count 2))
-              ;                nil ;; do the normal operation
-              ;              (kill-region (point) (mark))
-              ;              t ;; don't do the normal operations.
-              ;              )))
-
-             ))
-
-       ))
-
-;; Oh, and here's a cute hack you might want to put in the sample .emacs
-;; file: it changes the color of the window if it's not on the local
-;; machine, or if it's running as root:
-
-;; local emacs background:  whitesmoke
-;; remote emacs background: palegreen1
-;; root emacs background:   coral2
-(cond
- ((and (string-match "XEmacs" emacs-version)
-       (eq window-system 'x)
-       (boundp 'emacs-major-version)
-       (= emacs-major-version 19)
-       (>= emacs-minor-version 12))
-  (let* ((root-p (eq 0 (user-uid)))
-        (dpy (or (getenv "DISPLAY") ""))
-        (remote-p (not
-                   (or (string-match "^\\(\\|unix\\|localhost\\):" dpy)
-                       (let ((s (system-name)))
-                         (if (string-match "\\.\\(netscape\\|mcom\\)\\.com" s)
-                             (setq s (substring s 0 (match-beginning 0))))
-                         (string-match (concat "^" (regexp-quote s)) dpy)))))
-        (bg (cond (root-p "coral2")
-                  (remote-p "palegreen1")
-                  (t nil))))
-    (cond (bg
-          (let ((def (color-name (face-background 'default)))
-                (faces (face-list)))
-            (while faces
-              (let ((obg (face-background (car faces))))
-                (if (and obg (equal def (color-name obg)))
-                    (set-face-background (car faces) bg)))
-              (setq faces (cdr faces)))))))))
-
-
-;;; Older versions of emacs did not have these variables
-;;; (emacs-major-version and emacs-minor-version.)
-;;; Let's define them if they're not around, since they make
-;;; it much easier to conditionalize on the emacs version.
-
-(if (and (not (boundp 'emacs-major-version))
-        (string-match "^[0-9]+" emacs-version))
-    (setq emacs-major-version
-         (string-to-int (substring emacs-version
-                                   (match-beginning 0) (match-end 0)))))
-(if (and (not (boundp 'emacs-minor-version))
-        (string-match "^[0-9]+\\.\\([0-9]+\\)" emacs-version))
-    (setq emacs-minor-version
-         (string-to-int (substring emacs-version
-                                   (match-beginning 1) (match-end 1)))))
-
-;;; Define a function to make it easier to check which version we're
-;;; running.
-
-(defun running-emacs-version-or-newer (major minor)
-  (or (> emacs-major-version major)
-      (and (= emacs-major-version major)
-          (>= emacs-minor-version minor))))
-
-(cond ((and running-xemacs
-           (running-emacs-version-or-newer 19 6))
-       ;;
-       ;; Code requiring XEmacs/Lucid Emacs version 19.6 or newer goes here
-       ;;
-       ))
-
-(cond ((>= emacs-major-version 19)
-       ;;
-       ;; Code for any vintage-19 emacs goes here
-       ;;
-       ))
-
-(cond ((and (not running-xemacs)
-           (>= emacs-major-version 19))
-       ;;
-       ;; Code specific to FSF Emacs 19 (not XEmacs/Lucid Emacs) goes here
-       ;;
-       ))
-
-(cond ((< emacs-major-version 19)
-       ;;
-       ;; Code specific to emacs 18 goes here
-       ;;
-       ))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;             Customization of Specific Packages                  ;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;; Load gnuserv, which will allow you to connect to XEmacs sessions
-;;; using `gnuclient'.
-
-;; If you never run more than one XEmacs at a time, you might want to
-;; always start gnuserv.  Otherwise it is preferable to specify
-;; `-f gnuserv-start' on the command line to one of the XEmacsen.
-; (gnuserv-start)
-
-
-;;; ********************
-;;; Load efs, which uses the FTP protocol as a pseudo-filesystem.
-;;; When this is loaded, the pathname syntax /user@host:/remote/path
-;;; refers to files accessible through ftp.
-;;;
-(require 'dired)
-;; compatible ange-ftp/efs initialization derived from code
-;; from John Turner <turner@lanl.gov>
-;; As of 19.15, efs is bundled instead of ange-ftp.
-;; NB: doesn't handle 20.0 properly, efs didn't appear until 20.1.
-;;
-;; The environment variable EMAIL_ADDRESS is used as the password
-;; for access to anonymous ftp sites, if it is set.  If not, one is
-;; constructed using the environment variables USER and DOMAINNAME
-;; (e.g. turner@lanl.gov), if set.
-
-(if (and running-xemacs
-        (or (> emacs-major-version 20)
-            (and (= emacs-major-version 20) (>= emacs-minor-version 1))
-            (and (= emacs-major-version 19) (>= emacs-minor-version 15))))
-    (progn
-      (message "Loading and configuring bundled packages... efs")
-      (require 'efs-auto)
-      (if (getenv "USER")
-         (setq efs-default-user (getenv "USER")))
-      (if (getenv "EMAIL_ADDRESS")
-         (setq efs-generate-anonymous-password (getenv "EMAIL_ADDRESS"))
-       (if (and (getenv "USER")
-                (getenv "DOMAINNAME"))
-           (setq efs-generate-anonymous-password
-                 (concat (getenv "USER")"@"(getenv "DOMAINNAME")))))
-      (setq efs-auto-save 1))
-  (progn
-    (message "Loading and configuring bundled packages... ange-ftp")
-    (require 'ange-ftp)
-    (if (getenv "USER")
-       (setq ange-ftp-default-user (getenv "USER")))
-    (if (getenv "EMAIL_ADDRESS")
-       (setq ange-ftp-generate-anonymous-password (getenv "EMAIL_ADDRESS"))
-      (if (and (getenv "USER")
-              (getenv "DOMAINNAME"))
-         (setq ange-ftp-generate-anonymous-password
-               (concat (getenv "USER")"@"(getenv "DOMAINNAME")))))
-    (setq ange-ftp-auto-save 1)
-    )
-  )
-
-;;; ********************
-;;; Load the default-dir.el package which installs fancy handling
-;;;  of the initial contents in the minibuffer when reading
-;;; file names.
-
-(if (and running-xemacs
-        (or (and (= emacs-major-version 20) (>= emacs-minor-version 1))
-            (and (= emacs-major-version 19) (>= emacs-minor-version 15))))
-    (require 'default-dir))
-
-;;; ********************
-;;; Load the auto-save.el package, which lets you put all of your autosave
-;;; files in one place, instead of scattering them around the file system.
-;;;
-(setq auto-save-directory (expand-file-name "~/autosave/")
-      auto-save-directory-fallback auto-save-directory
-      auto-save-hash-p nil
-      efs-auto-save t
-      efs-auto-save-remotely nil
-      ;; now that we have auto-save-timeout, let's crank this up
-      ;; for better interactive response.
-      auto-save-interval 2000
-      )
-;; We load this afterwards because it checks to make sure the
-;; auto-save-directory exists (creating it if not) when it's loaded.
-(require 'auto-save)
-
-;; This adds additional extensions which indicate files normally
-;; handled by cc-mode.
-(setq auto-mode-alist
-      (append '(("\\.C$"  . c++-mode)
-               ("\\.cc$" . c++-mode)
-               ("\\.hh$" . c++-mode)
-               ("\\.c$"  . c-mode)
-               ("\\.h$"  . c-mode))
-             auto-mode-alist))
-
-
-;;; ********************
-;;; cc-mode (the mode you're in when editing C, C++, and Objective C files)
-
-;; Tell cc-mode not to check for old-style (K&R) function declarations.
-;; This speeds up indenting a lot.
-(setq c-recognize-knr-p nil)
-
-;; Change the indentation amount to 4 spaces instead of 2.
-;; You have to do it in this complicated way because of the
-;; strange way the cc-mode initializes the value of `c-basic-offset'.
-(add-hook 'c-mode-hook (lambda () (setq c-basic-offset 4)))
-
-
-;;; ********************
-;;; Load a partial-completion mechanism, which makes minibuffer completion
-;;; search multiple words instead of just prefixes; for example, the command
-;;; `M-x byte-compile-and-load-file RET' can be abbreviated as `M-x b-c-a RET'
-;;; because there are no other commands whose first three words begin with
-;;; the letters `b', `c', and `a' respectively.
-;;;
-(load-library "completer")
-
-
-;;; ********************
-;;; Load crypt, which is a package for automatically decoding and reencoding
-;;; files by various methods - for example, you can visit a .Z or .gz file,
-;;; edit it, and have it automatically re-compressed when you save it again.
-;;; 
-(setq crypt-encryption-type 'pgp   ; default encryption mechanism
-      crypt-confirm-password t    ; make sure new passwords are correct
-      ;crypt-never-ever-decrypt t  ; if you don't encrypt anything, set this to
-                                  ; tell it not to assume that "binary" files
-                                  ; are encrypted and require a password.
-      )
-(require 'crypt)
-
-
-;;; ********************
-;;; Edebug is a source-level debugger for emacs-lisp programs.
-;;;
-(define-key emacs-lisp-mode-map "\C-xx" 'edebug-defun)
-
-
-;;; ********************
-;;; Font-Lock is a syntax-highlighting package.  When it is enabled and you
-;;; are editing a program, different parts of your program will appear in
-;;; different fonts or colors.  For example, with the code below, comments
-;;; appear in red italics, function names in function definitions appear in
-;;; blue bold, etc.  The code below will cause font-lock to automatically be
-;;; enabled when you edit C, C++, Emacs-Lisp, and many other kinds of
-;;; programs.
-;;;
-;;; The "Options" menu has some commands for controlling this as well.
-;;;
-(cond (running-xemacs
-
-       ;; If you want the default colors, you could do this:
-       ;; (setq font-lock-use-default-fonts nil)
-       ;; (setq font-lock-use-default-colors t)
-       ;; but I want to specify my own colors, so I turn off all
-       ;; default values.
-       (setq font-lock-use-default-fonts nil)
-       (setq font-lock-use-default-colors nil)
-
-       (require 'font-lock)
-
-       ;; Mess around with the faces a bit.  Note that you have
-       ;; to change the font-lock-use-default-* variables *before*
-       ;; loading font-lock, and wait till *after* loading font-lock
-       ;; to customize the faces.
-
-       ;; string face is green
-       (set-face-foreground 'font-lock-string-face "forest green")
-
-       ;; comments are italic and red; doc strings are italic
-       ;;
-       ;; (I use copy-face instead of make-face-italic/make-face-bold
-       ;; because the startup code does intelligent things to the
-       ;; 'italic and 'bold faces to ensure that they are different
-       ;; from the default face.  For example, if the default face
-       ;; is bold, then the 'bold face will be unbold.)
-       (copy-face 'italic 'font-lock-comment-face)
-       ;; Underlining comments looks terrible on tty's
-       (set-face-underline-p 'font-lock-comment-face nil 'global 'tty)
-       (set-face-highlight-p 'font-lock-comment-face t 'global 'tty)
-       (copy-face 'font-lock-comment-face 'font-lock-doc-string-face)
-       (set-face-foreground 'font-lock-comment-face "red")
-
-       ;; function names are bold and blue
-       (copy-face 'bold 'font-lock-function-name-face)
-       (set-face-foreground 'font-lock-function-name-face "blue")
-
-       ;; misc. faces
-       (and (find-face 'font-lock-preprocessor-face) ; 19.13 and above
-            (copy-face 'bold 'font-lock-preprocessor-face))
-       (copy-face 'italic 'font-lock-type-face)
-       (copy-face 'bold 'font-lock-keyword-face)
-       ))
-
-
-;;; ********************
-;;; fast-lock is a package which speeds up the highlighting of files
-;;; by saving information about a font-locked buffer to a file and
-;;; loading that information when the file is loaded again.  This
-;;; requires a little extra disk space be used.
-;;;
-;;; Normally fast-lock puts the cache file (the filename appended with
-;;; .flc) in the same directory as the file it caches.  You can
-;;; specify an alternate directory to use by setting the variable
-;;; fast-lock-cache-directories.
-
-;; Let's use lazy-lock instead.
-;;(add-hook 'font-lock-mode-hook 'turn-on-fast-lock)
-;;(setq fast-lock-cache-directories '("/foo/bar/baz"))
-
-
-;;; ********************
-;;; lazy-lock is a package which speeds up the highlighting of files
-;;; by doing it "on-the-fly" -- only the visible portion of the
-;;; buffer is fontified.  The results may not always be quite as
-;;; accurate as using full font-lock or fast-lock, but it's *much*
-;;; faster.  No more annoying pauses when you load files.
-
-(add-hook 'font-lock-mode-hook 'turn-on-lazy-lock)
-;; I personally don't like "stealth mode" (where lazy-lock starts
-;; fontifying in the background if you're idle for 30 seconds)
-;; because it takes too long to wake up again on my piddly Sparc 1+.
-(setq lazy-lock-stealth-time nil)
-
-
-;;; ********************
-;;; func-menu is a package that scans your source file for function
-;;; definitions and makes a menubar entry that lets you jump to any
-;;; particular function definition by selecting it from the menu.  The
-;;; following code turns this on for all of the recognized languages.
-;;; Scanning the buffer takes some time, but not much.
-;;;
-;;; Send bug reports, enhancements etc to:
-;;; David Hughes <ukchugd@ukpmr.cs.philips.nl>
-;;;
-(cond (running-xemacs
-       (require 'func-menu)
-       (define-key global-map 'f8 'function-menu)
-       (add-hook 'find-file-hooks 'fume-add-menubar-entry)
-       (define-key global-map "\C-cl" 'fume-list-functions)
-       (define-key global-map "\C-cg" 'fume-prompt-function-goto)
-
-       ;; The Hyperbole information manager package uses (shift button2) and
-       ;; (shift button3) to provide context-sensitive mouse keys.  If you
-       ;; use this next binding, it will conflict with Hyperbole's setup.
-       ;; Choose another mouse key if you use Hyperbole.
-       (define-key global-map '(shift button3) 'mouse-function-menu)
-
-       ;; For descriptions of the following user-customizable variables,
-       ;; type C-h v <variable>
-       (setq fume-max-items 25
-             fume-fn-window-position 3
-             fume-auto-position-popup t
-             fume-display-in-modeline-p t
-             fume-menubar-menu-location "File"
-             fume-buffer-name "*Function List*"
-             fume-no-prompt-on-valid-default nil)
-       ))
-
-
-;;; ********************
-;;; MH is a mail-reading system from the Rand Corporation that relies on a
-;;; number of external filter programs (which do not come with emacs.)
-;;; Emacs provides a nice front-end onto MH, called "mh-e".
-;;;
-;; Bindings that let you send or read mail using MH
-;(global-set-key "\C-xm"  'mh-smail)
-;(global-set-key "\C-x4m" 'mh-smail-other-window)
-;(global-set-key "\C-cr"  'mh-rmail)
-
-;; Customization of MH behavior.
-(setq mh-delete-yanked-msg-window t)
-(setq mh-yank-from-start-of-msg 'body)
-(setq mh-summary-height 11)
-
-;; Use lines like the following if your version of MH
-;; is in a special place.
-;(setq mh-progs "/usr/dist/pkgs/mh/bin.svr4/")
-;(setq mh-lib "/usr/dist/pkgs/mh/lib.svr4/")
-
-
-;;; ********************
-;;; resize-minibuffer-mode makes the minibuffer automatically
-;;; resize as necessary when it's too big to hold its contents.
-
-(autoload 'resize-minibuffer-mode "rsz-minibuf" nil t)
-(resize-minibuffer-mode)
-(setq resize-minibuffer-window-exactly nil)
-
-;;; ********************
-;;; W3 is a browser for the World Wide Web, and takes advantage of the very
-;;; latest redisplay features in XEmacs.  You can access it simply by typing 
-;;; 'M-x w3'; however, if you're unlucky enough to be on a machine that is 
-;;; behind a firewall, you will have to do something like this first:
-
-;(setq w3-use-telnet t
-;      ;;
-;      ;; If the Telnet program you use to access the outside world is
-;      ;; not called "telnet", specify its name like this.
-;      w3-telnet-prog "itelnet"
-;      ;;
-;      ;; If your Telnet program adds lines of junk at the beginning
-;      ;; of the session, specify the number of lines here.
-;      w3-telnet-header-length 4
-;      )
index 2ff3afa..cf45be8 100644 (file)
@@ -1,3 +1,20 @@
+2001-03-21  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.46 "Urania" is released.
+
+2001-03-19  Andy Piper  <andy@xemacs.org>
+
+       * installexe.sh: use bash by default.
+
+2001-03-09  William M. Perry  <wmperry@aventail.com>
+
+       * gnuclient.c: The Great GTK Merge.
+
+2000-08-10  Ben Wing  <ben@xemacs.org>
+
+       * update-elc.sh: deleted (retroactively).  replaced by update-elc-2.el,
+       which does the same thing but in a platform-independent way.
+
 2001-02-23  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.45 "Thelxepeia" is released.
diff --git a/lib-src/aixcc.lex b/lib-src/aixcc.lex
new file mode 100644 (file)
index 0000000..e69de29
index a0cb7ef..1074285 100644 (file)
@@ -31,6 +31,7 @@ ETCDIR_USER_DEFINED "@ETCDIR_USER_DEFINED@"
 EXEC_PREFIX "@EXEC_PREFIX@"
 EXEC_PREFIX_USER_DEFINED "@EXEC_PREFIX_USER_DEFINED@"
 FFLAGS "@FFLAGS@"
+GTK_CONFIG "@GTK_CONFIG@"
 INFODIR "@INFODIR@"
 INFODIR_USER_DEFINED "@INFODIR_USER_DEFINED@"
 INFOPATH "@INFOPATH@"
index d4c1630..2b1e5d7 100644 (file)
@@ -641,9 +641,17 @@ main (int argc, char *argv[])
        }
       else /* !suppress_windows_system */
        {
-         if (display)
+         if (0)
+           ;
+#ifdef HAVE_X_WINDOWS
+         else if (display)
            sprintf (command, "(gnuserv-edit-files '(x %s) '(",
                     clean_string (display));
+#endif
+#ifdef HAVE_GTK
+         else if (display)
+           strcpy (command, "(gnuserv-edit-files '(gtk nil) '(");
+#endif
 #ifdef HAVE_MS_WINDOWS
          else
            sprintf (command, "(gnuserv-edit-files '(mswindows nil) '(");
index 3cf78c4..34b933b 100644 (file)
@@ -500,7 +500,7 @@ permitted (unsigned long host_addr, int fd)
 
 #ifdef AUTH_MAGIC_COOKIE
          if (server_xauth && server_xauth->data)
-         {
+           {
            /* Do a compare without comprising info about
               the size of the cookie */
            int auth_data_pos;
@@ -517,7 +517,7 @@ permitted (unsigned long host_addr, int fd)
              return TRUE;
            
            for(;rand() % 1000;);
-         }
+           }
 
 #else
          printf ("client tried Xauth, but server is not compiled with Xauth\n");
index 2c1849a..d971b09 100644 (file)
@@ -1,9 +1,10 @@
-#!sh
+#!bash
 
 install_prog=$1
 shift
 
 tstr=""
+
 while [ $# -gt 0 ]
 do
   if [ -f $1.exe ]
index 98db61f..b144a43 100644 (file)
        * files.el (insert-file-contents-literally): Treat file as binary;
        call file-name-handlers. [sync with Emacs 20.3.10]
 
+2001-03-21  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.46 "Urania" is released.
+
+2001-03-16  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * menubar-items.el (default-menubar): Update sample.emacs to
+       sample.init.el and adjust accelerators.
+
+2001-02-02  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * build-report.el (build-report): Improve docstring.
+
+2001-03-15  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * ChangeLog: Log GTK merge.
+
+       * gutter-items.el:
+       * mwheel.el:
+       * sound.el:
+       * startup.el:
+       Revert gratuitous whitespace changes.
+
+2001-03-07  Ben Wing  <ben@xemacs.org>
+
+       * help.el:
+       * help.el (key-or-menu-binding):
+       * help.el (Help-find-file): New.
+       * help.el (describe-beta):
+       * help.el (describe-copying):
+       * help.el (describe-project):
+       * help.el (view-emacs-news):
+       * help.el (view-sample-init-el): New.
+       * help.el (Help-princ-face): New.
+       * help.el (Help-prin1-face): New.
+       * help.el (help-symbol-function-context-menu):
+       * help.el (help-symbol-variable-context-menu):
+       * help.el (help-symbol-function-and-variable-context-menu):
+       * help.el (frob-help-extents):
+       * help.el (describe-function-1):
+       * help.el (describe-variable):
+
+       Add coloring in Help buffers, correspondent with hyperlinks.
+       View files in view-mode rather than Fundamental.
+       Remove separators from context menus -- now handled in generic code.
+       Add `Find Tag' to context menu.
+       
+       * menubar.el (popup-mode-menu):
+
+       Rewrite code that outputs the popup menu to (a) put more specific
+       entries first, (b) be more robust, (c) output the proper context
+       menu separators automatically (the context menu functionality is
+       new and currently used only by Help).
+
+2001-03-10  William M. Perry  <wmperry@aventail.com>
+
+       * dialog-gtk.el (gtk-make-dialog-box-internal): Forgot to rewrite
+       this function when converting from the 21.1 GTK branch.  Now
+       supports file, password, question, and color built-in dialogs.
+
+2001-03-06  Ben Wing  <ben@xemacs.org>
+
+       * keydefs.el:
+       * keydefs.el (global-map):
+       Add commented-out change of M-k (for 21.5).
+       
+       * menubar-items.el (default-menubar):
+       Fix items to control kill-line behavior; add items for
+       shifted motion.
+       
+       * simple.el:
+       * simple.el (kill-whole-line):
+       * simple.el (historical-kill-line): Removed.
+       * simple.el (kill-line): Removed.
+       * simple.el (kill-entire-line): New.
+       * simple.el (kill-line-1): New.
+       * simple.el (backward-kill-line):
+       Undo kill-whole-line == always changes.  Add new function
+       kill-entire-line to unconditionally delete the current line.
+       Add comments describing the lamentable state of affairs of
+       the kill-line functions and variables.
+
+2001-03-02  Ben Wing  <ben@xemacs.org>
+
+       * simple.el:
+       * simple.el (beginning-of-buffer):
+       * simple.el (end-of-buffer):
+       * simple.el (mark-ring-unrecorded-commands):
+       * simple.el (signal-error-on-buffer-boundary):
+       * simple.el (shifted-motion-keys-select-region):
+       * simple.el (unshifted-motion-keys-deselect-region):
+       * simple.el (motion-keys-for-shifted-motion): New.
+       * simple.el (handle-pre-motion-command):
+       * simple.el (handle-post-motion-command):
+       * simple.el (forward-char-command):
+       * simple.el (backward-char-command):
+       * simple.el (scroll-up-command):
+       * simple.el (scroll-down-command):
+       * simple.el (next-line):
+       * simple.el (previous-line):
+       * simple.el (backward-block-of-lines):
+       * simple.el (forward-block-of-lines):
+       * simple.el (backward-word):
+       * simple.el (mark-word):
+
+       Augment documentation of the most common motion commands to make
+       note of the shifted-motion support.  Improve the support to (a)
+       properly document how it works and why it's done in the fashion it
+       is, and (b) allow the keystrokes that trigger it to be customized.
+
+       Correct error in the customize specification of
+       mark-ring-unrecorded-commands.
+
+2001-03-02  Ben Wing  <ben@xemacs.org>
+
+       * font-lock.el:
+       * font-lock.el (font-lock-pending-extent-table): Removed.
+       * font-lock.el (font-lock-pending-buffer-table): New.
+       * font-lock.el (font-lock-pre-idle-hook):
+       * font-lock.el (font-lock-after-change-function):
+       * font-lock.el (font-lock-fontify-pending-extents):
+       * font-lock.el (font-lock-lisp-like):
+
+       Fix handling of pending extents to avoid excessive slowness (N^2
+       behavior) when making lots of buffer changes between redisplays,
+       such as when saving the Options.
+
+2001-03-09  William M. Perry  <wmperry@aventail.com>
+
+       * device.el:
+       * dragdrop.el:
+       * dumped-lisp.el:
+       * faces.el:
+       * frame.el:
+       * gnuserv.el:
+       * loadup.el:
+       * menubar-items.el:
+       * minibuf.el:
+       The Great GTK Merge.
+
+       * ChangeLog.GTK:
+       * dialog-gtk.el:
+       * gdk.el:
+       * generic-widgets.el:
+       * glade.el:
+       * gnome-widgets.el:
+       * gnome.el:
+       * gtk-compose.el:
+       * gtk-extra.el:
+       * gtk-faces.el:
+       * gtk-ffi.el:
+       * gtk-file-dialog.el:
+       * gtk-font-menu.el:
+       * gtk-glyphs.el:
+       * gtk-init.el:
+       * gtk-iso8859-1.el:
+       * gtk-marshal.el:
+       * gtk-mouse.el:
+       * gtk-package.el:
+       * gtk-password-dialog.el:
+       * gtk-select.el:
+       * gtk-widget-accessors.el:
+       * gtk-widgets.el:
+       * gtk.el:
+       widgets-gtk.el:
+       The Great GTK Merge: new files.
+
+2001-03-05  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * generic-widgets.el: Don't require gtk (a built-in feature) at
+       top level.  Don't execute the last sexp unless (featurep 'gtk).
+
+2001-02-28  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * mule/mule-init.el (auto-language-alist): Split zh into GB and BIG5.
+
 2001-02-23  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.45 "Thelxepeia" is released.
index 3881e9a..20cfd5f 100644 (file)
@@ -978,6 +978,8 @@ Find packages matching a given keyword." t nil)
 
 (defcustom font-lock-maximum-size (* 250 1024) "*If non-nil, the maximum size for buffers for fontifying.\nOnly buffers less than this can be fontified when Font Lock mode is turned on.\nIf nil, means size is irrelevant.\nIf a list, each element should be a cons pair of the form (MAJOR-MODE . SIZE),\nwhere MAJOR-MODE is a symbol or t (meaning the default).  For example:\n ((c++-mode . 256000) (c-mode . 256000) (rmail-mode . 1048576))\nmeans that the maximum size is 250K for buffers in `c++-mode' or `c-mode', one\nmegabyte for buffers in `rmail-mode', and size is irrelevant otherwise." :type '(choice (const :tag "none" nil) (integer :tag "size") (repeat :menu-tag "mode specific" :tag "mode specific" :value ((t)) (cons :tag "Instance" (radio :tag "Mode" (const :tag "all" t) (symbol :tag "name")) (radio :tag "Size" (const :tag "none" nil) (integer :tag "size"))))) :group 'font-lock)
 
+(defcustom font-lock-fontify-string-delimiters nil "*If non-nil, apply font-lock-string-face to string delimiters as well as\nstring text when fontifying." :type 'boolean :group 'font-lock)
+
 (defvar font-lock-keywords nil "\
 A list defining the keywords for `font-lock-mode' to highlight.
 
@@ -1099,6 +1101,43 @@ dramatically slow things down!
 
 (make-variable-buffer-local 'font-lock-keywords)
 
+(defvar font-lock-syntactic-keywords nil "\
+A list of the syntactic keywords to highlight.
+Can be the list or the name of a function or variable whose value is the list.
+See `font-lock-keywords' for a description of the form of this list;
+the differences are listed below.  MATCH-HIGHLIGHT should be of the form:
+
+ (MATCH SYNTAX OVERRIDE LAXMATCH)
+
+where SYNTAX can be of the form (SYNTAX-CODE . MATCHING-CHAR), the name of a
+syntax table, or an expression whose value is such a form or a syntax table.
+OVERRIDE cannot be `prepend' or `append'.
+
+For example, an element of the form highlights syntactically:
+
+ (\"\\\\$\\\\(#\\\\)\" 1 (1 . nil))
+
+ a hash character when following a dollar character, with a SYNTAX-CODE of
+ 1 (meaning punctuation syntax).  Assuming that the buffer syntax table does
+ specify hash characters to have comment start syntax, the element will only
+ highlight hash characters that do not follow dollar characters as comments
+ syntactically.
+
+ (\"\\\\('\\\\).\\\\('\\\\)\"
+  (1 (7 . ?'))
+  (2 (7 . ?')))
+
+ both single quotes which surround a single character, with a SYNTAX-CODE of
+ 7 (meaning string quote syntax) and a MATCHING-CHAR of a single quote (meaning
+ a single quote matches a single quote).  Assuming that the buffer syntax table
+ does not specify single quotes to have quote syntax, the element will only
+ highlight single quotes of the form 'c' as strings syntactically.
+ Other forms, such as foo'bar or 'fubar', will not be highlighted as strings.
+
+This is normally set via `font-lock-defaults'.")
+
+(make-variable-buffer-local 'font-lock-syntactic-keywords)
+
 (defcustom font-lock-mode nil "Non nil means `font-lock-mode' is on" :group 'font-lock :type 'boolean :initialize 'custom-initialize-default :require 'font-lock :set (function (lambda (var val) (font-lock-mode (or val 0)))))
 
 (defvar font-lock-mode-hook nil "\
@@ -1760,6 +1799,11 @@ buffer called `*Shadows*'.  Shadowings are located by calling the
 (autoload 'load-sound-file "sound" "\
 Read in an audio-file and add it to the sound-alist.
 
+FILENAME can either be absolute or relative, in which case the file will
+be searched in the directories given by `default-sound-directory-list'.
+When looking for the file, the extensions given by `sound-extension-list' are
+also tried in the given order.
+
 You can only play sound files if you are running on display 0 of the
 console of a machine with native sound support or running a NetAudio
 server and XEmacs has the necessary sound support compiled in.
index b35fd05..c7e126d 100644 (file)
@@ -4,7 +4,7 @@
 
 ;; Author: Adrian Aichner <adrian@xemacs.org>
 ;; Date: Sun., Apr. 20, 1997-2000.
-;; Version: $Revision: 1.5.2.7 $
+;; Version: $Revision: 1.5.2.9 $
 ;; Keywords: internal
 
 ;; This file is part of XEmacs.
@@ -271,19 +271,22 @@ under csh, so that you get beta.err went you run `mk beta'."
 
 ;;;###autoload
 (defun build-report (&rest args)
-  "Composes a fresh mail message with the contents of the built XEmacs
-Installation file and excerpts from XEmacs make output.
-`compose-mail' is used to create the mail message.  Point is left at
-the beginning of the mail text.  You may add some personal notes if
-you like and send the report.
-See also
-  `compose-mail', `mail-user-agent',
-  `build-report-destination',
-  `build-report-keep-regexp',
-  `build-report-delete-regexp',
-  `build-report-make-output-dir',
-  `build-report-make-output-files', and
-  `build-report-installation-file'."
+  "Report build information including Installation and make output.
+
+Prompts for status (usually \"Success\" or \"Failure\").  Then uses
+`compose-mail' to create a mail message.  The Subject header contains
+status and version information.  Point is left at the beginning of the
+mail text.  Add some notes if you like, and send the report.
+
+Looks for Installation and the make output file (`beta.err' by
+default, customizable via `build-report-make-output-files') in the
+build directory of the running XEmacs by default (customizable via
+`build-report-make-output-dir').  The output from make is filtered
+through `build-report-keep-regexp' and `build-report-delete-regexp'
+before including in the message.
+
+See also `mail-user-agent', `build-report-destination', and
+`build-report-installation-file'."
   ;; `interactive' form returns value for formal parameter `args'.
   (interactive
    (let (prompt
index 61699b3..ec81952 100644 (file)
@@ -17,7 +17,7 @@
 (custom-add-loads 'menu '("menubar-items"))
 (custom-add-loads 'minibuffer '("simple" "minibuf"))
 (custom-add-loads 'log-message '("simple"))
-(custom-add-loads 'environment '("frame" "keydefs" "minibuf" "modeline" "window-xemacs" "menubar" "gutter" "toolbar-items" "x-init" "cus-edit" "gnuserv" "sound"))
+(custom-add-loads 'environment '("frame" "keydefs" "minibuf" "modeline" "window-xemacs" "menubar" "gutter" "toolbar-items" "cus-edit" "gnuserv" "sound" "x-init"))
 (custom-add-loads 'sound '("sound"))
 (custom-add-loads 'pui '("package-ui"))
 (custom-add-loads 'terminals '("gnuserv"))
@@ -82,7 +82,7 @@
 (custom-add-loads 'isearch '("isearch-mode"))
 (custom-add-loads 'font-lock-faces '("font-lock"))
 (custom-add-loads 'modeline '("modeline"))
-(custom-add-loads 'editing '("simple" "abbrev" "fill" "mouse" "cus-edit" "dragdrop"))
+(custom-add-loads 'editing '("simple" "abbrev" "fill" "mouse" "dragdrop" "cus-edit"))
 (custom-add-loads 'matching '("simple" "isearch-mode" "hyper-apropos"))
 (custom-add-loads 'i18n '("cus-edit"))
 (custom-add-loads 'info '("toolbar-items" "info"))
index 8468f33..2942e1d 100644 (file)
@@ -52,6 +52,7 @@
 This is equivalent to the type of the device's console.
 Value is `tty' for a tty device (a character-only terminal),
 `x' for a device that is a screen on an X display,
+`gtk' for a device that is a GTK connection.
 `ns' for a device that is a NeXTstep connection (not yet implemented),
 `mswindows' for a device that is a MS Windows workstation,
 `msprinter' for a device that is a MS Windows printer connection,
@@ -103,6 +104,10 @@ it is nil, it is assumes to be the value returned by emacs-pid."
   "Return the number of color cells of DEVICE, or nil if unknown."
   (device-system-metric device 'num-color-cells))
 
+(defun make-gtk-device ()
+  "Create a new GTK device."
+  (make-device 'gtk nil))
+
 (defun make-x-device (&optional display)
   "Create a new device connected to DISPLAY."
   (make-device 'x display))
index 1250482..ec5002f 100644 (file)
@@ -420,5 +420,16 @@ This always assumes DndText as type."
               event (buffer-substring-no-properties begin end))
     (error "OffiX functionality not compiled in.")))
 
+(defun gtk-start-drag (event data &optional type)
+  (interactive "esi")
+  (if (featurep 'gtk)
+      (gtk-start-drag-internal event data type)
+    (error "GTK functionality not compiled in.")))
+
+(defun gtk-start-drag-region (event begin end)
+  (interactive "_er")
+  (if (featurep 'gtk)
+      (gtk-start-drag-internal event (buffer-substring-no-properties begin end) "text/plain")
+    (error "GTK functionality not compiled in.")))
 
 ;;; dragdrop.el ends here
index 433abd8..8ed7867 100644 (file)
 ;; id-menus is not here.  infodock needs to figure out a clever way to
 ;; advise this stuff or we need to export a clean way for infodock or
 ;; others to control this programmatically.
-       (when-feature (and infodock (or x mswindows) menubar) "id-menus")
+       (when-feature (and infodock (or x mswindows gtk) menubar) "id-menus")
 ;; preload the X code.
        (when-feature x "x-faces")
        (when-feature x "x-iso8859-1")
        (when-feature x "x-init")
        (when-feature x "x-win-xfree86")
        (when-feature x "x-win-sun")
+;; preload the GTK code
+       (when-feature gtk "gtk-ffi")
+       (when-feature gtk "gtk-widgets")
+       (when-feature gtk "gdk")
+       (when-feature gtk "gtk-init")
+       (when-feature gtk "gtk-faces")
+       (when-feature gtk "gtk-iso8859-1")
+       (when-feature (and gtk dialog) "dialog-gtk")
+       (when-feature gtk "gtk-select")
+       (when-feature gtk "gtk-mouse")
+       (when-feature gtk "gtk-glyphs")
+       (when-feature glade "glade")
+       (when-feature gtk "widgets-gtk")
+
 ;; preload the mswindows code.
        (when-feature mswindows "msw-glyphs")
        (when-feature mswindows "msw-faces")
index 568c7ae..4e34298 100644 (file)
@@ -761,7 +761,10 @@ See `face-property-instance' for the semantics of the DOMAIN argument."
     (and (face-equal-loop common-props face1 face2 domain)
         (cond ((eq 'tty (device-type device))
                (face-equal-loop tty-props face1 face2 domain))
+              ;; #### Why isn't this (console-on-window-system-p (device-console device))?
+              ;; #### FIXME!
               ((or (eq 'x (device-type device))
+                   (eq 'gtk (device-type device))
                    (eq 'mswindows (device-type device)))
                (face-equal-loop win-props face1 face2 domain))
               (t t)))))
@@ -1018,7 +1021,10 @@ circumstances."
      (when (featurep 'tty)
        (set-face-highlight-p face t locale (cons 'tty tags))))
    (lambda ()
-     ;; handle X/MS Windows specific entries
+     ;; handle window-system specific entries
+     (when (featurep 'gtk)
+       (frob-face-property face 'font 'gtk-make-font-bold
+                          '(gtk) locale tags))
      (when (featurep 'x)
        (frob-face-property face 'font 'x-make-font-bold
                           '(x) locale tags))
@@ -1045,7 +1051,10 @@ how this function works."
      (when (featurep 'tty)
        (set-face-underline-p face t locale (cons 'tty tags))))
    (lambda ()
-     ;; handle X specific entries
+     ;; handle window-system specific entries
+     (when (featurep 'gtk)
+       (frob-face-property face 'font 'gtk-make-font-italic
+                          '(gtk) locale tags))
      (when (featurep 'x)
        (frob-face-property face 'font 'x-make-font-italic
                           '(x) locale tags))
@@ -1073,7 +1082,10 @@ argument and for more specifics on exactly how this function works."
        (set-face-highlight-p face t locale (cons 'tty tags))
        (set-face-underline-p face t locale (cons 'tty tags))))
    (lambda ()
-     ;; handle X specific entries
+     ;; handle window-system specific entries
+     (when (featurep 'gtk)
+       (frob-face-property face 'font 'gtk-make-font-bold-italic
+                          '(gtk) locale tags))
      (when (featurep 'x)
        (frob-face-property face 'font 'x-make-font-bold-italic
                           '(x) locale tags))
@@ -1100,7 +1112,10 @@ specifics on exactly how this function works."
      (when (featurep 'tty)
        (set-face-highlight-p face nil locale (cons 'tty tags))))
    (lambda ()
-     ;; handle X specific entries
+     ;; handle window-system specific entries
+     (when (featurep 'gtk)
+       (frob-face-property face 'font 'gtk-make-font-unbold
+                          '(gtk) locale tags))
      (when (featurep 'x)
        (frob-face-property face 'font 'x-make-font-unbold
                           '(x) locale tags))
@@ -1127,7 +1142,10 @@ specifics on exactly how this function works."
      (when (featurep 'tty)
        (set-face-underline-p face nil locale (cons 'tty tags))))
    (lambda ()
-     ;; handle X specific entries
+     ;; handle window-system specific entries
+     (when (featurep 'gtk)
+       (frob-face-property face 'font 'gtk-make-font-unitalic
+                          '(gtk) locale tags))
      (when (featurep 'x)
        (frob-face-property face 'font 'x-make-font-unitalic
                           '(x) locale tags))
@@ -1477,6 +1495,8 @@ and 'global)."
     ;; Then do any device-specific initialization.
     (cond ((eq 'x (device-type device))
           (x-init-device-faces device))
+         ((eq 'gtk (device-type device))
+          (gtk-init-device-faces device))
          ((eq 'mswindows (device-type device))
           (mswindows-init-device-faces device))
          ;; Nothing to do for TTYs?
@@ -1492,6 +1512,8 @@ and 'global)."
     ;; Then do any frame-specific initialization.
     (cond ((eq 'x (frame-type frame))
           (x-init-frame-faces frame))
+         ((eq 'gtk (frame-type frame))
+          (gtk-init-frame-faces frame))
          ((eq 'mswindows (frame-type frame))
           (mswindows-init-frame-faces frame))
          ;; Is there anything which should be done for TTY's?
@@ -1508,7 +1530,9 @@ and 'global)."
   (loop for face in (face-list) do
        (init-face-from-resources face 'global))
   ;; Further X frobbing.
-  (x-init-global-faces)
+  (and (featurep 'x) (x-init-global-faces))
+  (and (featurep 'gtk) (gtk-init-global-faces))
+
   ;; for bold and the like, make the global specification be bold etc.
   ;; if the user didn't already specify a value.  These will also be
   ;; frobbed further in init-other-random-faces.
@@ -1737,6 +1761,7 @@ in that frame; otherwise change each frame."
                     'global)
 (set-face-background-pixmap 'highlight
                            '(((x default mono) . "gray1")
+;;                           ((gtk default mono) . "gray1")
                              ((mswindows default mono) . "gray1"))
                            'global)
 
@@ -1748,6 +1773,7 @@ in that frame; otherwise change each frame."
                     'global)
 (set-face-background-pixmap 'zmacs-region
                            '(((x default mono) . "gray3")
+;;                           ((gtk default mono) . "gray3")
                              ((mswindows default mono) . "gray3"))
                            'global)
 
@@ -1755,6 +1781,9 @@ in that frame; otherwise change each frame."
                     '(((x default color) . "gray68")
                       ((x default grayscale) . "gray68")
                       ((x default mono) . [default foreground])
+;;                    ((gtk default color) . "gray68")
+;;                    ((gtk default grayscale) . "gray68")
+;;                    ((gtk default mono) . [default foreground])
                       ((mswindows default color) . "gray68")
                       ((mswindows default grayscale) . "gray68")
                       ((mswindows default mono) . [default foreground]))
@@ -1772,6 +1801,7 @@ in that frame; otherwise change each frame."
                     'global)
 (set-face-background-pixmap 'primary-selection
                            '(((x default mono) . "gray3")
+                             ;;((gtk default mono) . "gray3")
                              ((mswindows default mono) . "gray3"))
                            'global)
 
@@ -1779,18 +1809,24 @@ in that frame; otherwise change each frame."
                     '(((x default color) . "paleturquoise")
                       ((x default color) . "green")
                       ((x default grayscale) . "gray53")
+                      ;;((gtk default color) . "paleturquoise")
+                      ;;((gtk default color) . "green")
+                      ;;((gtk default grayscale) . "gray53")
                       ((mswindows default color) . "paleturquoise")
                       ((mswindows default color) . "green")
                       ((mswindows default grayscale) . "gray53"))
                     'global)
 (set-face-background-pixmap 'secondary-selection
                            '(((x default mono) . "gray1")
+                             ;;((gtk default mono) . "gray1")
                              ((mswindows default mono) . "gray1"))
                            'global)
 
 (set-face-background 'isearch
                     '(((x default color) . "paleturquoise")
                       ((x default color) . "green")
+                      ;;((gtk default color) . "paleturquoise")
+                      ;;((gtk default color) . "green")
                       ((mswindows default color) . "paleturquoise")
                       ((mswindows default color) . "green"))
                     'global)
index 9373594..71c7a33 100644 (file)
@@ -1186,12 +1186,14 @@ Otherwise, changes to existing text will not be processed until the
 next redisplay cycle, avoiding excessive fontification when many
 buffer modifications are performed or a buffer is reverted.")
 
-(defvar font-lock-pending-extent-table (make-hash-table :weakness 'key))
+;; list of buffers in which there is a pending change.
+(defvar font-lock-pending-buffer-table (make-hash-table :weakness 'key))
+;; table used to keep track of ranges needing fontification.
 (defvar font-lock-range-table (make-range-table))
 
 (defun font-lock-pre-idle-hook ()
   (condition-case font-lock-error
-      (if (> (hash-table-count font-lock-pending-extent-table) 0)
+      (if (> (hash-table-count font-lock-pending-buffer-table) 0)
          (font-lock-fontify-pending-extents))
     (error (warn "Error caught in `font-lock-pre-idle-hook': %s"
                 font-lock-error))))
@@ -1203,12 +1205,15 @@ buffer modifications are performed or a buffer is reverted.")
 
 (defun font-lock-after-change-function (beg end old-len)
   (when font-lock-mode
-    (let ((ex (make-extent beg end)))
-      (set-extent-property ex 'detachable nil)
-      (set-extent-property ex 'end-open nil)
-      (let ((exs (gethash (current-buffer) font-lock-pending-extent-table)))
-       (push ex exs)
-       (puthash (current-buffer) exs font-lock-pending-extent-table)))
+    ;; treat deletions as if the following character (or previous, if
+    ;; there is no following) were inserted.  this is a bit of a hack
+    ;; but allows us to use text properties for everything.
+    (if (= beg end)
+       (cond ((/= end (point-max)) (setq end (1+ end)))
+             ((/= beg (point-min)) (setq beg (1- beg)))
+             (t nil)))
+    (put-text-property beg end 'font-lock-pending t)
+    (puthash (current-buffer) t font-lock-pending-buffer-table)
     (if font-lock-always-fontify-immediately
        (font-lock-fontify-pending-extents))))
 
@@ -1218,61 +1223,55 @@ buffer modifications are performed or a buffer is reverted.")
   ;; only one buffer and one contiguous region!
   (save-match-data
     (maphash
-     #'(lambda (buffer exs)
+     #'(lambda (buffer dummy)
         ;; remove first, to avoid infinite reprocessing if error
-        (remhash buffer font-lock-pending-extent-table)
+        (remhash buffer font-lock-pending-buffer-table)
         (when (buffer-live-p buffer)
           (clear-range-table font-lock-range-table)
           (with-current-buffer buffer
             (save-excursion
               (save-restriction
-                ;; if we don't widen, then the C code will fail to
-                ;; realize that we're inside a comment.
+                ;; if we don't widen, then the C code in
+                ;; syntactically-sectionize will fail to realize that
+                ;; we're inside a comment. #### We don't actually use
+                ;; syntactically-sectionize any more.  Do we still
+                ;; need the widen?
                 (widen)
                 (let ((zmacs-region-stays
                        zmacs-region-stays)) ; protect from change!
-                  (mapc
-                   #'(lambda (ex)
-                       ;; paranoia.
-                       (when (and (extent-live-p ex)
-                                  (not (extent-detached-p ex)))
-                         ;; first expand the ranges to full lines, because
-                         ;; that is what will be fontified; then use a
-                         ;; range table to merge the ranges.
-                         (let* ((beg (extent-start-position ex))
-                                (end (extent-end-position ex))
-                                (beg (progn (goto-char beg)
-                                            (beginning-of-line)
-                                            (point)))
-                                (end (progn (goto-char end)
-                                            (forward-line 1)
-                                            (point))))
-                           (detach-extent ex)
-                           (put-range-table beg end t
-                                            font-lock-range-table))))
-                   exs)
+                  (map-extents
+                   #'(lambda (ex dummy-maparg)
+                       ;; first expand the ranges to full lines,
+                       ;; because that is what will be fontified;
+                       ;; then use a range table to merge the
+                       ;; ranges. (we could also do this simply using
+                       ;; text properties.  the range table code was
+                       ;; here from a previous version of this code
+                       ;; and works just as well.)
+                       (let* ((beg (extent-start-position ex))
+                              (end (extent-end-position ex))
+                              (beg (progn (goto-char beg)
+                                          (beginning-of-line)
+                                          (point)))
+                              (end (progn (goto-char end)
+                                          (forward-line 1)
+                                          (point))))
+                         (put-range-table beg end t
+                                          font-lock-range-table)))
+                   nil nil nil nil nil 'font-lock-pending t)
+                  ;; clear all pending extents first in case of error below.
+                  (put-text-property (point-min) (point-max)
+                                     'font-lock-pending nil)
                   (map-range-table
                    #'(lambda (beg end val)
-                       ;; Maybe flush the internal cache used by
-                       ;; syntactically-sectionize.  (It'd be nice if this
-                       ;; was more automatic.)  Any deletions mean the
-                       ;; cache is invalid, and insertions at beginning or
-                       ;; end of line mean that the bol cache might be
-                       ;; invalid.
-                       ;; #### This code has been commented out for some time
-                       ;; now and is bit-rotting.  Someone should look into
-                       ;; this.
-;;                     (if (or change-was-deletion (bobp)
-;;                             (= (preceding-char) ?\n))
-;;                         (buffer-syntactic-context-flush-cache))
-                       ;; #### This creates some unnecessary progress gauges.
+                       ;; This creates some unnecessary progress gauges.
 ;;                     (if (and (= beg (point-min))
 ;;                              (= end (point-max)))
 ;;                         (font-lock-fontify-buffer)
 ;;                       (font-lock-fontify-region beg end)))
                        (font-lock-fontify-region beg end))
                    font-lock-range-table)))))))
-     font-lock-pending-extent-table)))
+     font-lock-pending-buffer-table)))
 \f
 ;; Syntactic fontification functions.
 
index f13e517..c8ddc29 100644 (file)
@@ -451,6 +451,7 @@ tty     A standard TTY connection or terminal.  CONNECTION should be
            the Unix command `tty') or nil for XEmacs' standard input
            and output (usually the TTY in which XEmacs started).  Only
            if support for TTY's was compiled into XEmacs.
+gtk        A GTK device.
 ns         A connection to a machine running the NeXTstep windowing
            system.  Not currently implemented.
 mswindows   A connection to a machine running Microsoft Windows NT or
index 01128a9..2389480 100644 (file)
@@ -271,6 +271,7 @@ Each element is a gnuclient structure that identifies a client.")
 (defun gnuserv-main-frame-function (type)
   "Return a sensible value for the main Emacs frame."
   (if (or (eq type 'x)
+         (eq type 'gtk)
          (eq type 'mswindows))
       (car (frame-list))
     nil))
@@ -280,6 +281,7 @@ Each element is a gnuclient structure that identifies a client.")
 This is meant in the X sense, so it will not return frames that are on another
 visual screen.  Totally visible frames are preferred.  If none found, return nil."
   (if (or (eq type 'x)
+         (eq type 'gtk)
          (eq type 'mswindows))
       (cond ((car (filtered-frame-list 'frame-totally-visible-p
                                       (selected-device))))
@@ -428,6 +430,7 @@ If a flag is `view', view the files read-only."
                         ((null dest-frame)
                          (case (car type)
                            (tty (apply 'make-tty-device (cdr type)))
+                           (gtk (make-gtk-device))
                            (x   (make-x-device (cadr type)))
                            (mswindows   (make-mswindows-device))
                            (t   (error "Invalid device type"))))
index a337b13..e7e769f 100644 (file)
@@ -1,6 +1,7 @@
 ;;; help.el --- help commands for XEmacs.
 
 ;; Copyright (C) 1985, 1986, 1992-4, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 2001 Ben Wing.
 
 ;; Maintainer: FSF
 ;; Keywords: help, internal, dumped
@@ -264,41 +265,9 @@ otherwise it is killed."
 
 ;;(define-key global-map 'backspace 'deprecated-help-command)
 
-;; This function has been moved to help-nomule.el and mule-help.el.
-;; TUTORIAL arg is XEmacs addition
-;(defun help-with-tutorial (&optional tutorial)
-;  "Select the XEmacs learn-by-doing tutorial.
-;Optional arg TUTORIAL specifies the tutorial file; default is \"TUTORIAL\"."
-;  (interactive)
-;  (if (null tutorial)
-;      (setq tutorial "TUTORIAL"))
-;  (let ((file (expand-file-name (concat "~/" tutorial))))
-;    (delete-other-windows)
-;    (if (get-file-buffer file)
-;      (switch-to-buffer (get-file-buffer file))
-;      (switch-to-buffer (create-file-buffer file))
-;      (setq buffer-file-name file)
-;      (setq default-directory (expand-file-name "~/"))
-;      (setq buffer-auto-save-file-name nil)
-;      (insert-file-contents (expand-file-name tutorial data-directory))
-;      (goto-char (point-min))
-;      (search-forward "\n<<")
-;      (delete-region (point-at-bol) (point-at-eol))
-;      (let ((n (- (window-height (selected-window))
-;                (count-lines (point-min) (point))
-;                6)))
-;      (if (< n 12)
-;          (newline n)
-;        ;; Some people get confused by the large gap.
-;        (newline (/ n 2))
-;        (insert "[Middle of page left blank for didactic purposes.  "
-;                "Text continues below]")
-;        (newline (- n (/ n 2)))))
-;      (goto-char (point-min))
-;      (set-buffer-modified-p nil))))
+;; help-with-tutorial moved to help-nomule.el and mule-help.el.
 
 ;; used by describe-key, describe-key-briefly, insert-key-binding, etc.
-
 (defun key-or-menu-binding (key &optional menu-flag)
   "Return the command invoked by KEY.
 Like `key-binding', but handles menu events and toolbar presses correctly.
@@ -620,25 +589,27 @@ describes the minor mode."
 ;; So keyboard macro definitions are documented correctly
 (fset 'defining-kbd-macro (symbol-function 'start-kbd-macro))
 
+;; view a read-only file intelligently
+(defun Help-find-file (file)
+  (if (fboundp 'view-file)
+      (view-file file)
+    (find-file-read-only file)
+    (goto-char (point-min))))
+
 (defun describe-distribution ()
   "Display info on how to obtain the latest version of XEmacs."
   (interactive)
-  (find-file-read-only
-   (locate-data-file "DISTRIB")))
+  (Help-find-file (locate-data-file "DISTRIB")))
 
 (defun describe-beta ()
   "Display info on how to deal with Beta versions of XEmacs."
   (interactive)
-  (find-file-read-only
-   (locate-data-file "BETA"))
-  (goto-char (point-min)))
+  (Help-find-file (locate-data-file "BETA")))
 
 (defun describe-copying ()
   "Display info on how you may redistribute copies of XEmacs."
   (interactive)
-  (find-file-read-only
-   (locate-data-file "COPYING"))
-  (goto-char (point-min)))
+  (Help-find-file (locate-data-file "COPYING")))
 
 (defun describe-pointer ()
   "Show a list of all defined mouse buttons, and their definitions."
@@ -648,9 +619,7 @@ describes the minor mode."
 (defun describe-project ()
   "Display info on the GNU project."
   (interactive)
-  (find-file-read-only
-   (locate-data-file "GNU"))
-  (goto-char (point-min)))
+  (Help-find-file (locate-data-file "GNU")))
 
 (defun describe-no-warranty ()
   "Display info on all the kinds of warranty XEmacs does NOT have."
@@ -762,7 +731,7 @@ of the key sequence that ran this command."
 (defun view-emacs-news ()
   "Display info on recent changes to XEmacs."
   (interactive)
-  (find-file (locate-data-file "NEWS")))
+  (Help-find-file (locate-data-file "NEWS")))
 
 (defun xemacs-www-page ()
   "Go to the XEmacs World Wide Web page."
@@ -788,6 +757,11 @@ instead, to ensure that you get the most up-to-date information."
     (Info-find-node "xemacs-faq" "Top"))
   (switch-to-buffer "*info*"))
 
+(defun view-sample-init-el ()
+  "Display the sample init.el file."
+  (interactive)
+  (Help-find-file (locate-data-file "sample.init.el")))
+
 (defcustom view-lossage-key-count 100
   "*Number of keys `view-lossage' shows.
 The maximum number of available keys is governed by `recent-keys-ring-size'."
@@ -1124,6 +1098,38 @@ part of the documentation of internal subroutines."
 ;     ;; CLisp `:' keywords as references.
 ;     (list (concat "\\<:" sym-char "+\\>") 0 'font-lock-reference-face t)))
 
+;; replacement for `princ' that puts the text in the specified face,
+;; if possible
+(defun Help-princ-face (object face)
+  (cond ((bufferp standard-output)
+        (let ((opoint (point standard-output)))
+          (princ object)
+          (put-nonduplicable-text-property opoint (point standard-output)
+                                           'face face standard-output)))
+       ((markerp standard-output)
+        (let ((buf (marker-buffer standard-output))
+              (pos (marker-position standard-output)))
+          (princ object)
+          (put-nonduplicable-text-property
+           pos (marker-position standard-output) 'face face buf)))
+       (t princ object)))
+
+;; replacement for `prin1' that puts the text in the specified face,
+;; if possible
+(defun Help-prin1-face (object face)
+  (cond ((bufferp standard-output)
+        (let ((opoint (point standard-output)))
+          (prin1 object)
+          (put-nonduplicable-text-property opoint (point standard-output)
+                                           'face face standard-output)))
+       ((markerp standard-output)
+        (let ((buf (marker-buffer standard-output))
+              (pos (marker-position standard-output)))
+          (prin1 object)
+          (put-nonduplicable-text-property
+           pos (marker-position standard-output) 'face face buf)))
+       (t prin1 object)))
+
 (defvar help-symbol-regexp
   (let ((sym-char "[+a-zA-Z0-9_:*]")
        (sym-char-no-dash "[-+a-zA-Z0-9_:*]"))
@@ -1151,25 +1157,25 @@ part of the documentation of internal subroutines."
       (help-symbol-run-function-1 last-popup-menu-event ex fun))))
 
 (defvar help-symbol-function-context-menu
-  '("---"
-    ["View %_Documentation" (help-symbol-run-function 'describe-function)]
+  '(["View %_Documentation" (help-symbol-run-function 'describe-function)]
     ["Find %_Function Source" (help-symbol-run-function 'find-function)]
+    ["Find %_Tag" (help-symbol-run-function 'find-tag)]
     ))
 
 (defvar help-symbol-variable-context-menu
-  '("---"
-    ["View %_Documentation" (help-symbol-run-function 'describe-variable)]
+  '(["View %_Documentation" (help-symbol-run-function 'describe-variable)]
     ["Find %_Variable Source" (help-symbol-run-function 'find-variable)]
+    ["Find %_Tag" (help-symbol-run-function 'find-tag)]
     ))
 
 (defvar help-symbol-function-and-variable-context-menu
-  '("---"
-    ["View Function %_Documentation" (help-symbol-run-function
+  '(["View Function %_Documentation" (help-symbol-run-function
                                      'describe-function)]
     ["View Variable D%_ocumentation" (help-symbol-run-function
                                      'describe-variable)]
     ["Find %_Function Source" (help-symbol-run-function 'find-function)]
     ["Find %_Variable Source" (help-symbol-run-function 'find-variable)]
+    ["Find %_Tag" (help-symbol-run-function 'find-tag)]
     ))
 
 (defun frob-help-extents (buffer)
@@ -1179,9 +1185,10 @@ part of the documentation of internal subroutines."
   ;; properties:
   ;; 1. mouse-face is 'highlight (so the extent gets highlighted on mouse over)
   ;; 2. help-symbol is the name of the symbol.
-  ;; 3. context-menu is a list of context menu items, specific to whether
+  ;; 3. face is 'font-lock-reference-face.
+  ;; 4. context-menu is a list of context menu items, specific to whether
   ;;    the symbol is a function, variable, or both.
-  ;; 4. activate-function will cause the function or variable to be described,
+  ;; 5. activate-function will cause the function or variable to be described,
   ;;    replacing the existing help contents.
   (save-excursion
     (set-buffer buffer)
@@ -1200,6 +1207,7 @@ part of the documentation of internal subroutines."
            (let ((ex (make-extent b e)))
              (set-extent-property ex 'mouse-face 'highlight)
              (set-extent-property ex 'help-symbol sym)
+             (set-extent-property ex 'face 'font-lock-reference-face)
              (set-extent-property
               ex 'context-menu
               (cond ((and var fun)
@@ -1217,7 +1225,10 @@ part of the documentation of internal subroutines."
 
 (defun describe-function-1 (function &optional nodoc)
   "This function does the work for `describe-function'."
-  (princ (format "`%s' is " function))
+  (princ "`")
+  ;; (Help-princ-face function 'font-lock-function-name-face) overkill
+  (princ function)
+  (princ "' is ")
   (let* ((def function)
         aliases file-name autoload-file kbd-macro-p fndef macrop)
     (while (and (symbolp def) (fboundp def))
@@ -1281,7 +1292,7 @@ part of the documentation of internal subroutines."
     (if describe-function-show-arglist
        (let ((arglist (function-arglist function)))
          (when arglist
-           (princ arglist)
+           (Help-princ-face arglist 'font-lock-comment-face)
            (terpri))))
     (terpri)
     (cond (kbd-macro-p
@@ -1421,7 +1432,11 @@ there is no variable around that point, nil is returned."
      (let ((origvar variable)
           aliases)
        (let ((print-escape-newlines t))
-        (princ (format "`%s' is " (symbol-name variable)))
+        (princ "`")
+        ;; (Help-princ-face (symbol-name variable)
+        ;;               'font-lock-variable-name-face) overkill
+        (princ (symbol-name variable))
+        (princ "' is ")
         (while (variable-alias variable)
           (let ((newvar (variable-alias variable)))
             (if aliases
@@ -1443,8 +1458,8 @@ there is no variable around that point, nil is returned."
               (princ (format "  -- loaded from \"%s\"\n" file-name))))
         (princ "\nValue: ")
         (if (not (boundp variable))
-            (princ "void\n")
-          (prin1 (symbol-value variable))
+            (Help-princ-face "void\n" 'font-lock-comment-face)
+          (Help-prin1-face (symbol-value variable) 'font-lock-comment-face)
           (terpri))
         (terpri)
         (cond ((local-variable-p variable (current-buffer))
index 17f2e66..cbece4f 100644 (file)
@@ -238,7 +238,8 @@ Keymap for characters following C-c.")
 (define-key global-map '(control meta -) 'negative-argument)
 
 (define-key global-map "\C-k" 'kill-line)
-(define-key global-map '(control K) 'historical-kill-line)
+;will change like this in 21.5.
+;(define-key global-map "\M-k" 'kill-entire-line)
 (define-key global-map "\C-w" 'kill-region)
 (define-key global-map "\M-w" 'kill-ring-save)
 (define-key global-map "\M-\C-w" 'append-next-kill)
@@ -352,6 +353,8 @@ Keymap for characters following C-c.")
 (define-key global-map "\M-a" 'backward-sentence)
 (define-key global-map "\M-e" 'forward-sentence)
 (define-key global-map "\M-k" 'kill-sentence)
+;will change like this in 21.5.
+;(define-key global-map "\M-K" 'kill-sentence)
 ;;(define-key global-map "\C-x\177" 'backward-kill-sentence)
 
 (define-key global-map "\C-x[" 'backward-page)
index 1c14c13..8ddc567 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch>
 ;; Maintainer: Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch>
 ;; Created: Jan 1998
-;; Version: $Revision: 1.7.2.9 $
+;; Version: $Revision: 1.7.2.11 $
 ;; Keywords: help comm
 
 ;; This file is part of XEmacs
index df70360..fa64a15 100644 (file)
   ;; (condition-case () (delete-file "xemacs") (file-error nil))
   (when (fboundp 'really-free)
     (really-free))
-  (dump-emacs (if (featurep 'infodock) "infodock" "xemacs") "temacs")
+  (dump-emacs
+   (cond
+    ((featurep 'infodock) "infodock")
+    ;; #### BILL!!!
+    ;; If we want to dump under a name other than `xemacs', do that here!
+    ;; ((featurep 'gtk) "xemacs-gtk")
+    (t "xemacs"))
+   "temacs")
   (kill-emacs))
 
 ;; Avoid error if user loads some more libraries now.
index 088c499..54a82e8 100644 (file)
@@ -226,7 +226,8 @@ which will not be used as accelerators."
 
      ("%_View"
       ["%_New Frame" make-frame]
-      ["Frame on Other Displa%_y..." make-frame-on-display]
+      ["Frame on Other Displa%_y..." make-frame-on-display
+       :active (fboundp 'make-frame-on-display)]
       ["%_Delete Frame" delete-frame
        :active (not (eq (next-frame (selected-frame) 'nomini 'window-system)
                        (selected-frame)))]
@@ -703,16 +704,10 @@ which will not be used as accelerators."
        :style toggle
        :selected (and (boundp 'pending-delete-mode) pending-delete-mode)
        :active (boundp 'pending-delete-mode)]
-       ("`%_kill-line' Behavior..."
-       ["Kill %_Whole Line"
-        (customize-set-variable 'kill-whole-line 'always)
-        :style radio :selected (eq kill-whole-line 'always)]
-       ["Kill to %_End of Line"
-        (customize-set-variable 'kill-whole-line nil)
-        :style radio :selected (eq kill-whole-line nil)]
-       ["Kill Whole Line at %_Beg, Otherwise to End"
-        (customize-set-variable 'kill-whole-line t)
-        :style radio :selected (eq kill-whole-line t)])
+       ["`%_kill-line' Kills Whole Line at %_Beg"
+        (customize-set-variable 'kill-whole-line (not kill-whole-line))
+        :style toggle
+        :selected kill-whole-line]
        ["Size for %_Block-Movement Commands..."
        (customize-set-variable 'block-movement-size
                                (read-number "Block Movement Size: "
@@ -724,6 +719,17 @@ which will not be used as accelerators."
        :style toggle :selected (and (boundp 'viper-mode) viper-mode)
        :active (fboundp 'toggle-viper-mode)]
        "----"
+       ["S%_hifted Motion Keys Select Region"
+        (customize-set-variable 'shifted-motion-keys-select-region
+                                (not shifted-motion-keys-select-region))
+        :style toggle
+        :selected shifted-motion-keys-select-region]
+       ["%_After Shifted Motion, Unshifted Motion Keys Deselect"
+        (customize-set-variable 'unshifted-motion-keys-deselect-region
+                                (not unshifted-motion-keys-deselect-region))
+        :style toggle
+        :selected unshifted-motion-keys-deselect-region]
+       "----"
        ["%_Set Key..." global-set-key]
        ["%_Unset Key..." global-unset-key]
        "---"
@@ -1435,13 +1441,18 @@ which will not be used as accelerators."
       ("%_Tutorials"
        :filter tutorials-menu-filter)
       ("%_Samples"
-       ["Sample .%_emacs"
-       (find-file (locate-data-file "sample.emacs"))
-       :active (locate-data-file "sample.emacs")]
+       ["Sample %_init.el"
+       (find-file (locate-data-file "sample.init.el"))
+       :active (locate-data-file "sample.init.el")]
+       ["Sample .%_gtkrc"
+       (find-file (locate-data-file "sample.gtkrc"))
+       :included (featurep 'gtk)
+       :active (locate-data-file "sample.gtkrc")]
        ["Sample .%_Xdefaults"
        (find-file (locate-data-file "sample.Xdefaults"))
+       :included (featurep 'x)
        :active (locate-data-file "sample.Xdefaults")]
-       ["Sample e%_nriched"
+       ["Sample %_enriched"
        (find-file (locate-data-file "enriched.doc"))
        :active (locate-data-file "enriched.doc")])
       ("%_Commands & Keys"
index 44c5b6a..917b49c 100644 (file)
@@ -523,35 +523,40 @@ button was clicked."
                                     (extent-property extent 'context-menu))
                                 context-extents))))
     (popup-menu
-     (cond ((and global-popup-menu mode-popup-menu)
+     (progn
            ;; Merge global-popup-menu and mode-popup-menu
-           (check-menu-syntax mode-popup-menu)
-           (let* ((title (car mode-popup-menu))
-                  (items (cdr mode-popup-menu))
+           (and mode-popup-menu (check-menu-syntax mode-popup-menu))
+           (let* ((mode-title (and (stringp (car mode-popup-menu))
+                                   (car mode-popup-menu)))
+                  (mode-items (if mode-title (cdr mode-popup-menu)
+                                mode-popup-menu))
+                  (global-title (and (stringp (car global-popup-menu))
+                                     (car global-popup-menu)))
+                  (global-items (if global-title (cdr global-popup-menu)
+                                  global-popup-menu))
                   mode-filters)
              ;; Strip keywords from local menu for attaching them at the top
-             (while (and items
-                         (keywordp (car items)))
+             (while (and mode-items
+                         (keywordp (car mode-items)))
                ;; Push both keyword and its argument.
-               (push (pop items) mode-filters)
-               (push (pop items) mode-filters))
+               (push (pop mode-items) mode-filters)
+               (push (pop mode-items) mode-filters))
              (setq mode-filters (nreverse mode-filters))
              ;; If mode-filters contains a keyword already present in
              ;; `global-popup-menu', you will probably lose.
-             (append (list (car global-popup-menu))
+             (append (and popup-menu-titles
+                          (cond (mode-title (list mode-title))
+                                (global-title (list global-title))
+                                (t "")))
                      mode-filters
-                     (cdr global-popup-menu)
-                     '("---" "---")
-                     (if popup-menu-titles (list title))
-                     (if popup-menu-titles '("---" "---"))
-                     items
-                     context-menu-items)))
-          (t
-           (append
-            (or mode-popup-menu
-                global-popup-menu
-                (error "No menu defined in this buffer"))
-            context-menu-items))))
+                     context-menu-items
+                     (and context-menu-items mode-items '("---"))
+                     mode-items
+                     (and (or context-menu-items mode-items)
+                          global-items '("---" "---"))
+                     (and global-title (list global-title))
+                     global-items
+                     ))))
 
     (while (popup-up-p)
       (dispatch-event (next-event)))
index 019519f..44dab20 100644 (file)
@@ -2208,7 +2208,7 @@ whether it is a file(/result) or a directory (/result/)."
 (defun read-color-completion-table ()
   (case (device-type)
     ;; #### Evil device-type dependency
-    (x
+    ((x gtk)
      (if (boundp 'x-read-color-completion-table)
         x-read-color-completion-table
        (let ((rgb-file (locate-file "rgb.txt" x-library-search-path))
index c587e46..296e210 100644 (file)
@@ -76,7 +76,8 @@
 
 (defvar auto-language-alist
   '(("^ja" . "Japanese")
-    ("^zh" . "Chinese")
+    ("^zh_.*.GB.*" . "Chinese-GB")
+    ("^zh_.*.BIG5.*" . "Chinese-BIG5")
     ("^ko" . "Korean"))
   "Alist of LANG patterns vs. corresponding language environment.
 Each element looks like (REGEXP . LANGUAGE-ENVIRONMENT).
index 38fd6fa..4ff4777 100644 (file)
@@ -525,6 +525,11 @@ With arg N, put point N/10 of the way from the beginning.
 If the buffer is narrowed, this command uses the beginning and size
 of the accessible part of the buffer.
 
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
 Don't use this command in Lisp programs!
 \(goto-char (point-min)) is faster and avoids clobbering the mark."
   ;; XEmacs change
@@ -548,6 +553,11 @@ With arg N, put point N/10 of the way from the end.
 If the buffer is narrowed, this command uses the beginning and size
 of the accessible part of the buffer.
 
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
 Don't use this command in Lisp programs!
 \(goto-char (point-max)) is faster and avoids clobbering the mark."
   ;; XEmacs change
@@ -1103,46 +1113,20 @@ Repeating \\[universal-argument] without digits or minus sign
   (skip-chars-forward " \t"))
 
 (defcustom kill-whole-line nil
-  "*Control when and whether `kill-line' removes entire lines.
-Note: This only applies when `kill-line' is called interactively;
-otherwise, it behaves \"historically\".
-
-If `always', `kill-line' with no arg always kills the whole line,
-wherever point is in the line. (If you want to just kill to the end
-of the line, use \\[historical-kill-line].)
-
-If not `always' but non-nil, `kill-line' with no arg kills the whole
-line if point is at the beginning, and otherwise behaves historically.
-
-If nil, `kill-line' behaves historically."
-  :type '(radio (const :tag "Kill to end of line" nil)
-               (const :tag "Kill whole line" always)
-               (const
-                :tag "Kill whole line at beginning, otherwise end of line" t))
+  "*If non-nil, kill the whole line if point is at the beginning.
+Otherwise, `kill-line' kills only up to the end of the line, but not
+the terminating newline.  Note: This only applies when `kill-line' is
+called interactively.
+
+WARNING: This is a misnamed variable!  It should be called something
+like `kill-whole-line-when-at-beginning'.  If you simply want
+\\[kill-line] to kill the entire current line, bind it to the function
+`kill-entire-line'.  "
+  :type 'boolean
   :group 'killing)
 
-(defun historical-kill-line (&optional arg)
-  "Same as `kill-line' but ignores value of `kill-whole-line'."
-  (interactive "*P")
-  (let ((kill-whole-line nil))
-    (if (interactive-p)
-       (call-interactively 'kill-line)
-      (kill-line arg))))
-
-(defun kill-line (&optional arg)
-  "Kill the rest of the current line, or the entire line.
-If no nonblanks there, kill thru newline.
-If called interactively, may kill the entire line; see `kill-whole-line'.
-when given no argument at the beginning of a line.
-With prefix argument, kill that many lines from point.
-Negative arguments kill lines backward.
-
-When calling from a program, nil means \"no arg\",
-a number counts as a prefix arg."
-  (interactive "*P")
-  (kill-region (if (and (interactive-p)
-                       (not arg)
-                       (eq kill-whole-line 'always))
+(defun kill-line-1 (arg entire-line interactive-p)
+  (kill-region (if entire-line
                   (save-excursion
                     (beginning-of-line)
                     (point))
@@ -1162,13 +1146,39 @@ a number counts as a prefix arg."
                   (if (eobp)
                       (signal 'end-of-buffer nil))
                   (if (or (looking-at "[ \t]*$")
-                          (and (interactive-p)
-                               (or (eq kill-whole-line 'always)
+                          (or entire-line
+                              (and interactive-p
                                    (and kill-whole-line (bolp)))))
                       (forward-line 1)
                     (end-of-line)))
                 (point))))
 
+(defun kill-entire-line (&optional arg)
+  "Kill the entire line.
+With prefix argument, kill that many lines from point.  Negative
+arguments kill lines backward.
+
+When calling from a program, nil means \"no arg\",
+a number counts as a prefix arg."
+  (interactive "*P")
+  (kill-line-1 arg t (interactive-p)))
+
+(defun kill-line (&optional arg)
+  "Kill the rest of the current line, or the entire line.
+If no nonblanks there, kill thru newline.  If called interactively,
+may kill the entire line when given no argument at the beginning of a
+line; see `kill-whole-line'.  With prefix argument, kill that many
+lines from point.  Negative arguments kill lines backward.
+
+WARNING: This is a misnamed function!  It should be called something
+like `kill-to-end-of-line'.  If you simply want to kill the entire
+current line, use `kill-entire-line'.
+
+When calling from a program, nil means \"no arg\",
+a number counts as a prefix arg."
+  (interactive "*P")
+  (kill-line-1 arg nil (interactive-p)))
+
 ;; XEmacs
 (defun backward-kill-line nil
   "Kill back to the beginning of the line."
@@ -1726,24 +1736,24 @@ of selection using any shifted motion commands to not be recorded.
 
 The value `yank' affects all yank-like commands, as well as just `yank'."
   :type '(repeat (choice (const :tag "shifted motion commands"
-                               'shifted-motion-commands)
+                               shifted-motion-commands)
                         (const :tag "functions that select text"
                                :inline t
-                               '(mark-beginning-of-buffer
-                                 mark-bob
-                                 mark-defun
-                                 mark-end-of-buffer
-                                 mark-end-of-line
-                                 mark-end-of-sentence
-                                 mark-eob
-                                 mark-marker
-                                 mark-page
-                                 mark-paragraph
-                                 mark-sexp
-                                 mark-whole-buffer
-                                 mark-word))
+                               (mark-beginning-of-buffer
+                                mark-bob
+                                mark-defun
+                                mark-end-of-buffer
+                                mark-end-of-line
+                                mark-end-of-sentence
+                                mark-eob
+                                mark-marker
+                                mark-page
+                                mark-paragraph
+                                mark-sexp
+                                mark-whole-buffer
+                                mark-word))
                         (const :tag "functions that paste text"
-                               'yank)
+                               yank)
                         function))
   :group 'killing)
 
@@ -1920,7 +1930,7 @@ The mark is activated unless DONT-ACTIVATE-REGION is non-nil."
 
 \f
 (defcustom signal-error-on-buffer-boundary t
-  "*Non-nil value causes XEmacs to beep or signal an error when certain interactive commands would move point past (point-min) or (point-max).
+  "*If Non-nil, beep or signal an error when moving past buffer boundary.
 The commands that honor this variable are
 
 forward-char-command
@@ -1942,33 +1952,122 @@ We think it is an unnecessary and unwanted side-effect."
 
 (defcustom shifted-motion-keys-select-region t
   "*If non-nil, shifted motion keys select text, like in MS Windows.
-See also `unshifted-motion-keys-deselect-region'."
+
+More specifically, if a keystroke that matches one of the key
+specifications in `motion-keys-for-shifted-motion' is pressed along
+with the Shift key, and the command invoked moves the cursor and
+preserves the active region (see `zmacs-region-stays'), the
+intervening text will be added to the active region.
+
+When the region has been enabled or augmented as a result of a shifted
+motion key, an unshifted motion key will normally deselect the region.
+However, if `unshifted-motion-keys-deselect-region' is t, the region
+will remain active, augmented by the characters moved over by this
+motion key.
+
+This functionality is specifically interpreted in terms of keys, and
+*NOT* in terms of particular commands, because that produces the most
+intuitive behavior: `forward-char' will work with shifted motion
+when invoked by `right' but not `C-f', and user-written motion commands
+bound to motion keys will automatically work with shifted motion."
   :type 'boolean
   :group 'editing-basics)
 
 (defcustom unshifted-motion-keys-deselect-region t
   "*If non-nil, unshifted motion keys deselect a shifted-motion region.
-This only occurs after a region has been selected using shifted motion keys
-(not when using the traditional set-mark-then-move method), and has no effect
-if `shifted-motion-keys-select-region' is nil."
+This only occurs after a region has been selected or augmented using
+shifted motion keys (not when using the traditional set-mark-then-move
+method), and has no effect if `shifted-motion-keys-select-region' is
+nil."
   :type 'boolean
   :group 'editing-basics)
 
+(defcustom motion-keys-for-shifted-motion
+  '(left right up down home end prior next
+        kp-left kp-right kp-up kp-down kp-home kp-end kp-prior kp-next)
+  "*List of keys considered motion keys for the purpose of shifted selection.
+When one of these keys is pressed along with the Shift key, and the
+command invoked moves the cursor and preserves the active region (see
+`zmacs-region-stays'), the intervening text will be added to the active
+region.  See `shifted-motion-keys-select-region' for more details.
+
+Each entry should be a keysym or a list (MODIFIERS ... KEYSYM),
+i.e. zero or more modifiers followed by a keysym.  When a keysym alone
+is given, a keystroke consisting of that keysym, with or without any
+modifiers, is considered a motion key.  When the list form is given,
+only a keystroke with exactly those modifiers and no others (with the
+exception of the Shift key) is considered a motion key.
+
+NOTE: Currently, the keysym cannot be a non-alphabetic character key
+such as the `=/+' key.  In any case, the shifted-motion paradigm does
+not make much sense with those keys.  The keysym can, however, be an
+alphabetic key without problem, and you can specify the key using
+either a character or a symbol, uppercase or lowercase."
+  :type '(repeat (choice (const :tag "normal cursor-pad (\"gray\") keys"
+                               :inline t
+                               (left right up down home end prior next))
+                        (const :tag "keypad motion keys"
+                               :inline t
+                               (kp-left kp-right kp-up kp-down
+                                        kp-home kp-end kp-prior kp-next))
+                        (const :tag "alphabetic motion keys"
+                               :inline t
+                               ((control b) (control f)
+                                (control p) (control n)
+                                (control a) (control e)
+                                (control v) (meta v)
+                                (meta b) (meta f)
+                                (meta a) (meta e)
+                                (meta m) ; back-to-indentation
+                                (meta r) ; move-to-window-line
+                                (meta control b) (meta control f)
+                                (meta control p) (meta control n)
+                                (meta control a) (meta control e)
+                                (meta control d) ;; down-list
+                                (meta control u) ;; backward-up-list
+                                ))
+                        symbol))
+  :group 'editing-basics)
+
 (defun handle-pre-motion-command-current-command-is-motion ()
   (and (key-press-event-p last-input-event)
-  (memq (event-key last-input-event)
-       '(left right up down home end prior next
-              kp-left kp-right kp-up kp-down
-              kp-home kp-end kp-prior kp-next))))
+       (let ((key (event-key last-input-event))
+            (mods (delq 'shift (event-modifiers last-input-event))))
+        ;(princ (format "key: %s mods: %s\n" key mods) 'external-debugging-output)
+        (catch 'handle-pre-motion-command-current-command-is-motion
+          (flet ((keysyms-equal (a b)
+                   (if (characterp a)
+                       (setq a (intern (char-to-string (downcase a)))))
+                   (if (characterp b)
+                       (setq b (intern (char-to-string (downcase b)))))
+                   (eq a b)))
+            (mapc #'(lambda (keysym)
+                      (when (if (listp keysym)
+                                (and (equal mods (butlast keysym))
+                                     (keysyms-equal key (car (last keysym))))
+                              (keysyms-equal key keysym))
+                        (throw
+                         'handle-pre-motion-command-current-command-is-motion
+                         t)))
+                  motion-keys-for-shifted-motion)
+            nil)))))
 
 (defun handle-pre-motion-command ()
-  (if
-      (and
+  (if (and
        (handle-pre-motion-command-current-command-is-motion)
        zmacs-regions
        shifted-motion-keys-select-region
        (not (region-active-p))
-       (memq 'shift (event-modifiers last-input-event)))
+       ;; Special-case alphabetic keysyms, because the `shift'
+       ;; modifier does not appear on them. (Unfortunately, we have no
+       ;; way of determining Shift-key status on non-alphabetic ASCII
+       ;; keysyms.  However, in this case, using Shift will invoke a
+       ;; separate command from the non-shifted version, so the
+       ;; "shifted motion" paradigm makes no sense.)
+       (or (memq 'shift (event-modifiers last-input-event))
+          (let ((key (event-key last-input-event)))
+            (and (characterp key)
+                 (not (eq key (downcase key)))))))
       (let ((in-shifted-motion-command t))
        (push-mark nil nil t))))
 
@@ -1978,7 +2077,12 @@ if `shifted-motion-keys-select-region' is nil."
        (handle-pre-motion-command-current-command-is-motion)
        zmacs-regions
        (region-active-p))
-      (cond ((memq 'shift (event-modifiers last-input-event))
+      ;; Special-case alphabetic keysyms, because the `shift'
+      ;; modifier does not appear on them.  See above.
+      (cond ((or (memq 'shift (event-modifiers last-input-event))
+                (let ((key (event-key last-input-event)))
+                  (and (characterp key)
+                       (not (eq key (downcase key))))))
             (if shifted-motion-keys-select-region
                 (putf this-command-properties 'shifted-motion-command t))
             (setq zmacs-region-stays t))
@@ -1993,7 +2097,12 @@ if `shifted-motion-keys-select-region' is nil."
 On attempt to pass end of buffer, stop and signal `end-of-buffer'.
 On attempt to pass beginning of buffer, stop and signal `beginning-of-buffer'.
 Error signaling is suppressed if `signal-error-on-buffer-boundary'
-is nil.  If BUFFER is nil, the current buffer is assumed."
+is nil.  If BUFFER is nil, the current buffer is assumed.
+
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details."
   (interactive "_p")
   (if signal-error-on-buffer-boundary
       (forward-char arg buffer)
@@ -2007,7 +2116,12 @@ is nil.  If BUFFER is nil, the current buffer is assumed."
 On attempt to pass end of buffer, stop and signal `end-of-buffer'.
 On attempt to pass beginning of buffer, stop and signal `beginning-of-buffer'.
 Error signaling is suppressed if `signal-error-on-buffer-boundary'
-is nil.  If BUFFER is nil, the current buffer is assumed."
+is nil.  If BUFFER is nil, the current buffer is assumed.
+
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details."
   (interactive "_p")
   (if signal-error-on-buffer-boundary
       (backward-char arg buffer)
@@ -2036,6 +2150,11 @@ On attempt to scroll past end of buffer, `end-of-buffer' is signaled.
 On attempt to scroll past beginning of buffer, `beginning-of-buffer' is
 signaled.
 
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
 If `signal-error-on-buffer-boundary' is nil, attempts to scroll past buffer
 boundaries do not cause an error to be signaled."
   (interactive "_P")
@@ -2067,7 +2186,12 @@ On attempt to scroll past beginning of buffer, `beginning-of-buffer' is
 signaled.
 
 If `signal-error-on-buffer-boundary' is nil, attempts to scroll past buffer
-boundaries do not cause an error to be signaled."
+boundaries do not cause an error to be signaled.
+
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details."
   (interactive "_P")
   (if signal-error-on-buffer-boundary
       (scroll-down n)
@@ -2092,6 +2216,11 @@ a semipermanent goal column to which this command always moves.
 Then it does not try to move vertically.  This goal column is stored
 in `goal-column', which is nil when there is none.
 
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
 If you are thinking of using this in a Lisp program, consider
 using `forward-line' instead.  It is usually easier to use
 and more reliable (no dependence on goal column, etc.)."
@@ -2123,6 +2252,11 @@ The command \\[set-goal-column] can be used to create
 a semipermanent goal column to which this command always moves.
 Then it does not try to move vertically.
 
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
 If you are thinking of using this in a Lisp program, consider using
 `forward-line' with a negative argument instead.  It is usually easier
 to use and more reliable (no dependence on goal column, etc.)."
@@ -2144,14 +2278,24 @@ to use and more reliable (no dependence on goal column, etc.)."
 (defun backward-block-of-lines ()
   "Move backward by one \"block\" of lines.
 The number of lines that make up a block is controlled by
-`block-movement-size', which defaults to 6."
+`block-movement-size', which defaults to 6.
+
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details."
   (interactive "_")
   (forward-line (- block-movement-size)))
 
 (defun forward-block-of-lines ()
   "Move forward by one \"block\" of lines.
 The number of lines that make up a block is controlled by
-`block-movement-size', which defaults to 6."
+`block-movement-size', which defaults to 6.
+
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details."
   (interactive "_")
   (forward-line block-movement-size))
 
@@ -2743,7 +2887,12 @@ not end the comment.  Blank lines do not get comments."
 Normally t is returned, but if an edge of the buffer is reached,
 point is left there and nil is returned.
 
-COUNT defaults to 1, and BUFFER defaults to the current buffer."
+COUNT defaults to 1, and BUFFER defaults to the current buffer.
+
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details."
   (interactive "_p")
   (forward-word (- (or count 1)) buffer))
 
index 12f1c4e..73a67bd 100644 (file)
@@ -1,40 +1,6 @@
-2001-02-23  Martin Buchholz <martin@xemacs.org>
+2001-03-21  Martin Buchholz <martin@xemacs.org>
 
-       * XEmacs 21.2.45 "Thelxepeia" is released.
-
-2001-02-16  Raymond Toy  <toy@rtp.ericsson.se>
-
-       * lwlib-Xaw.c: Always include ATHENA_AsciiText_h_ to get the
-       text-field widget.
-       (xaw_creation_table): Always include the text-field widget
-
-2001-02-08  Martin Buchholz <martin@xemacs.org>
-
-       * XEmacs 21.2.44 "Thalia" is released.
-
-2001-02-06  Martin Buchholz  <martin@xemacs.org>
-
-       * xlwgauge.c:
-       * xlwgcs.c:
-       * xlwgcs.c (XtAllocateGC): Fix typo for X11R4.
-       * xlwgcs.h:
-       * xlwradio.c (RadioExpose):
-       * xlwcheckbox.c:
-       Remove use of BSD-specific types.
-       s/u_(char|short|int_long)/unsigned $1/g
-
-2001-02-05  Martin Buchholz  <martin@xemacs.org>
-
-       * lwlib-Xm.c (xm_update_one_value):
-       Obey the man page; use XtFree instead of free.
-
-2001-02-02  Martin Buchholz  <martin@xemacs.org>
-
-       * config.h.in: Use "..." to include config.h
-
-2001-01-26  Martin Buchholz <martin@xemacs.org>
-
-       * XEmacs 21.2.43 "Terspichore" is released.
+       * XEmacs 21.2.46 "Urania" is released.
 
 2001-01-20  Martin Buchholz <martin@xemacs.org>
 
index 320621f..74239eb 100644 (file)
@@ -1,3 +1,319 @@
+2001-03-21  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.46 "Urania" is released.
+
+2001-03-08  Ben Wing  <ben@xemacs.org>
+
+       * internals\internals.texi (Top):
+       * internals\internals.texi (A History of Emacs):
+       * internals\internals.texi (Through Version 18):
+       * internals\internals.texi (Lucid Emacs):
+       * internals\internals.texi (GNU Emacs 19):
+       * internals\internals.texi (GNU Emacs 20):
+       * internals\internals.texi (XEmacs From the Outside):
+       * internals\internals.texi (The Lisp Language):
+       * internals\internals.texi (XEmacs From the Perspective of Building):
+       * internals\internals.texi (XEmacs From the Inside):
+       * internals\internals.texi (The XEmacs Object System (Abstractly Speaking)):
+       * internals\internals.texi (How Lisp Objects Are Represented in C):
+       * internals\internals.texi (Rules When Writing New C Code):
+       * internals\internals.texi (General Coding Rules):
+       * internals\internals.texi (Writing Lisp Primitives):
+       * internals\internals.texi (Writing Good Comments):
+       * internals\internals.texi (Adding Global Lisp Variables):
+       * internals\internals.texi (Proper Use of Unsigned Types):
+       * internals\internals.texi (Coding for Mule):
+       * internals\internals.texi (Character-Related Data Types):
+       * internals\internals.texi (Working With Character and Byte Positions):
+       * internals\internals.texi (Conversion to and from External Data):
+       * internals\internals.texi (General Guidelines for Writing Mule-Aware Code):
+       * internals\internals.texi (An Example of Mule-Aware Code):
+       * internals\internals.texi (Techniques for XEmacs Developers):
+       * internals\internals.texi (A Summary of the Various XEmacs Modules):
+       * internals\internals.texi (Low-Level Modules):
+       * internals\internals.texi (Basic Lisp Modules):
+       * internals\internals.texi (Modules for Standard Editing Operations):
+       * internals\internals.texi (Editor-Level Control Flow Modules):
+       * internals\internals.texi (Modules for the Basic Displayable Lisp Objects):
+       * internals\internals.texi (Modules for other Display-Related Lisp Objects):
+       * internals\internals.texi (Modules for the Redisplay Mechanism):
+       * internals\internals.texi (Modules for Interfacing with the File System):
+       * internals\internals.texi (Modules for Other Aspects of the Lisp Interpreter and Object System):
+       * internals\internals.texi (Modules for Interfacing with the Operating System):
+       * internals\internals.texi (Modules for Interfacing with X Windows):
+       * internals\internals.texi (Allocation of Objects in XEmacs Lisp):
+       * internals\internals.texi (Introduction to Allocation):
+       * internals\internals.texi (Garbage Collection):
+       * internals\internals.texi (GCPROing):
+       * internals\internals.texi (Garbage Collection - Step by Step):
+       * internals\internals.texi (Invocation):
+       * internals\internals.texi (garbage_collect_1):
+       * internals\internals.texi (mark_object):
+       * internals\internals.texi (gc_sweep):
+       * internals\internals.texi (sweep_lcrecords_1):
+       * internals\internals.texi (compact_string_chars):
+       * internals\internals.texi (sweep_strings):
+       * internals\internals.texi (sweep_bit_vectors_1):
+       * internals\internals.texi (Integers and Characters):
+       * internals\internals.texi (Allocation from Frob Blocks):
+       * internals\internals.texi (lrecords):
+       * internals\internals.texi (Low-level allocation):
+       * internals\internals.texi (Cons):
+       * internals\internals.texi (Vector):
+       * internals\internals.texi (Bit Vector):
+       * internals\internals.texi (Symbol):
+       * internals\internals.texi (Marker):
+       * internals\internals.texi (String):
+       * internals\internals.texi (Dumping):
+       * internals\internals.texi (Overview):
+       * internals\internals.texi (Data descriptions):
+       * internals\internals.texi (Dumping phase):
+       * internals\internals.texi (Object inventory):
+       * internals\internals.texi (Address allocation):
+       * internals\internals.texi (The header):
+       * internals\internals.texi (Data dumping):
+       * internals\internals.texi (Pointers dumping):
+       * internals\internals.texi (Reloading phase):
+       * internals\internals.texi (Events and the Event Loop):
+       * internals\internals.texi (Introduction to Events):
+       * internals\internals.texi (Main Loop):
+       * internals\internals.texi (Specifics of the Event Gathering Mechanism):
+       * internals\internals.texi (Specifics About the Emacs Event):
+       * internals\internals.texi (The Event Stream Callback Routines):
+       * internals\internals.texi (Other Event Loop Functions):
+       * internals\internals.texi (Converting Events):
+       * internals\internals.texi (Evaluation; Stack Frames; Bindings):
+       * internals\internals.texi (Evaluation):
+       * internals\internals.texi (Dynamic Binding; The specbinding Stack; Unwind-Protects):
+       * internals\internals.texi (Simple Special Forms):
+       * internals\internals.texi (Symbols and Variables):
+       * internals\internals.texi (Introduction to Symbols):
+       * internals\internals.texi (Obarrays):
+       * internals\internals.texi (Buffers and Textual Representation):
+       * internals\internals.texi (Introduction to Buffers):
+       * internals\internals.texi (The Text in a Buffer):
+       * internals\internals.texi (Buffer Lists):
+       * internals\internals.texi (Markers and Extents):
+       * internals\internals.texi (Bufbytes and Emchars):
+       * internals\internals.texi (MULE Character Sets and Encodings):
+       * internals\internals.texi (Character Sets):
+       * internals\internals.texi (Encodings):
+       * internals\internals.texi (Japanese EUC (Extended Unix Code)):
+       * internals\internals.texi (JIS7):
+       * internals\internals.texi (Internal Mule Encodings):
+       * internals\internals.texi (Internal String Encoding):
+       * internals\internals.texi (Internal Character Encoding):
+       * internals\internals.texi (The Lisp Reader and Compiler):
+       * internals\internals.texi (Lstreams):
+       * internals\internals.texi (Creating an Lstream):
+       * internals\internals.texi (Lstream Types):
+       * internals\internals.texi (Lstream Functions):
+       * internals\internals.texi (Consoles; Devices; Frames; Windows):
+       * internals\internals.texi (Introduction to Consoles; Devices; Frames; Windows):
+       * internals\internals.texi (Point):
+       * internals\internals.texi (Window Hierarchy):
+       * internals\internals.texi (The Redisplay Mechanism):
+       * internals\internals.texi (Critical Redisplay Sections):
+       * internals\internals.texi (Line Start Cache):
+       * internals\internals.texi (Extents):
+       * internals\internals.texi (Introduction to Extents):
+       * internals\internals.texi (Extent Ordering):
+       * internals\internals.texi (Format of the Extent Info):
+       * internals\internals.texi (Zero-Length Extents):
+       * internals\internals.texi (Mathematics of Extent Ordering):
+       * internals\internals.texi (Faces):
+       * internals\internals.texi (Glyphs):
+       * internals\internals.texi (Specifiers):
+       * internals\internals.texi (Menus):
+       * internals\internals.texi (Subprocesses):
+       * internals\internals.texi (Interface to the X Window System):
+       * internals\internals.texi (Lucid Widget Library):
+       * internals\internals.texi (Generic Widget Interface):
+       * internals\internals.texi (Scrollbars):
+       * internals\internals.texi (Menubars):
+       * internals\internals.texi (Checkboxes and Radio Buttons):
+       * internals\internals.texi (Progress Bars):
+       * internals\internals.texi (Tab Controls):
+       Add more index entries.  Add sections on comments and unsigned types.
+
+2001-03-08  Ben Wing  <ben@xemacs.org>
+
+       * make-stds.texi (Makefile Basics):
+       * make-stds.texi (Command Variables):
+       * make-stds.texi (Directory Variables):
+       * make-stds.texi (Standard Targets):
+       * standards.texi:
+       * standards.texi (Top):
+       * standards.texi (Preface):
+       * standards.texi (Legal Issues):
+       * standards.texi (Reading Non-Free Code):
+       * standards.texi (Contributions):
+       * standards.texi (Trademarks):
+       * standards.texi (Design Advice):
+       * standards.texi (Source Language):
+       * standards.texi (Compatibility):
+       * standards.texi (Using Extensions):
+       * standards.texi (Standard C):
+       * standards.texi (Program Behavior):
+       * standards.texi (Semantics):
+       * standards.texi (Libraries):
+       * standards.texi (Errors):
+       * standards.texi (User Interfaces):
+       * standards.texi (Graphical Interfaces):
+       * standards.texi (Command-Line Interfaces):
+       * standards.texi (Option Table):
+       * standards.texi (Memory Usage):
+       * standards.texi (File Usage):
+       * standards.texi (Formatting):
+       * standards.texi (Comments):
+       * standards.texi (Syntactic Conventions):
+       * standards.texi (Names):
+       * standards.texi (System Portability):
+       * standards.texi (CPU Portability):
+       * standards.texi (System Functions):
+       * standards.texi (Internationalization):
+       * standards.texi (Mmap):
+       * standards.texi (Documentation):
+       * standards.texi (GNU Manuals):
+       * standards.texi (Doc Strings and Manuals):
+       * standards.texi (Manual Structure Details):
+       * standards.texi (License for Manuals):
+       * standards.texi (Manual Credits):
+       * standards.texi (Printed Manuals):
+       * standards.texi (NEWS File):
+       * standards.texi (Change Logs):
+       * standards.texi (Style of Change Logs):
+       * standards.texi (Simple Changes):
+       * standards.texi (Conditional Changes):
+       * standards.texi (Indicating the Part Changed):
+       * standards.texi (Managing Releases):
+       * standards.texi (Configuration):
+       * standards.texi (Releases):
+       * standards.texi (References):
+       * standards.texi (Index):
+       Update to latest GNU version.
+       
+       * xemacs-faq.texi (Q6.3.3):
+       * xemacs-faq.texi (Q6.4.1):
+       Improve questions on current Windows activity.
+
+2001-03-07  Sandra Wambold  <wambold@xemacs.org>
+
+       * xemacs-faq.texi: (Q.1.0.7): changed list archive address
+
+2001-02-25  Ben Wing  <ben@xemacs.org>
+
+       * xemacs-faq.texi (Top):
+       * xemacs-faq.texi (Introduction):
+       * xemacs-faq.texi (Q1.0.1):
+       * xemacs-faq.texi (Q1.0.4):
+       * xemacs-faq.texi (Q1.0.6):
+       * xemacs-faq.texi (Q1.0.10):
+       * xemacs-faq.texi (Q1.2.1):
+       * xemacs-faq.texi (Q1.4.1):
+       * xemacs-faq.texi (Q1.4.2):
+       * xemacs-faq.texi (Q2.0.12):
+       * xemacs-faq.texi (Q2.1.1):
+       * xemacs-faq.texi (Q2.1.2):
+       * xemacs-faq.texi (Q2.1.9):
+       * xemacs-faq.texi (Q2.1.15):
+       * xemacs-faq.texi (Q2.1.19):
+       * xemacs-faq.texi (Customization):
+       * xemacs-faq.texi (Q3.0.1):
+       * xemacs-faq.texi (Q3.0.2):
+       * xemacs-faq.texi (Q3.0.3):
+       * xemacs-faq.texi (Q3.0.7):
+       * xemacs-faq.texi (Q3.1.5):
+       * xemacs-faq.texi (Q3.1.6):
+       * xemacs-faq.texi (Q3.2.1):
+       * xemacs-faq.texi (Q3.2.3):
+       * xemacs-faq.texi (Q3.2.4):
+       * xemacs-faq.texi (Q3.3.1):
+       * xemacs-faq.texi (Q3.3.2):
+       * xemacs-faq.texi (Q3.3.3):
+       * xemacs-faq.texi (Q3.3.4):
+       * xemacs-faq.texi (Q3.3.5):
+       * xemacs-faq.texi (Q3.4.1):
+       * xemacs-faq.texi (Q3.4.2):
+       * xemacs-faq.texi (Q3.5.2):
+       * xemacs-faq.texi (Q3.5.4):
+       * xemacs-faq.texi (key-translation-map): New.
+       * xemacs-faq.texi (Q3.5.5):
+       * xemacs-faq.texi (Q3.5.6):
+       * xemacs-faq.texi (Q3.5.7):
+       * xemacs-faq.texi (Q3.5.8):
+       * xemacs-faq.texi (global-map): Removed.
+       * xemacs-faq.texi (Q3.5.9):
+       * xemacs-faq.texi (Q3.6.1):
+       * xemacs-faq.texi (Q3.6.2):
+       * xemacs-faq.texi (Q3.6.3):
+       * xemacs-faq.texi (Q3.7.6):
+       * xemacs-faq.texi (Q3.7.7):
+       * xemacs-faq.texi (Q3.8.1):
+       * xemacs-faq.texi (Q3.8.2):
+       * xemacs-faq.texi (Q3.8.3):
+       * xemacs-faq.texi (Q3.9.1):
+       * xemacs-faq.texi (Q3.9.4):
+       * xemacs-faq.texi (Q3.10.1):
+       * xemacs-faq.texi (Q3.10.2):
+       * xemacs-faq.texi (Q3.10.3):
+       * xemacs-faq.texi (Q4.0.12):
+       * xemacs-faq.texi (Miscellaneous):
+       * xemacs-faq.texi (Q5.0.1):
+       * xemacs-faq.texi (Q5.0.2):
+       * xemacs-faq.texi (Q5.0.3):
+       * xemacs-faq.texi (Q5.0.4):
+       * xemacs-faq.texi (Q5.0.5):
+       * xemacs-faq.texi (Q5.0.8):
+       * xemacs-faq.texi (Q5.0.9):
+       * xemacs-faq.texi (Q5.0.11):
+       * xemacs-faq.texi (Q5.0.12):
+       * xemacs-faq.texi (Q5.0.13):
+       * xemacs-faq.texi (Q5.0.16):
+       * xemacs-faq.texi (Q5.0.17):
+       * xemacs-faq.texi (Q5.1.9):
+       * xemacs-faq.texi (Q5.1.11):
+       * xemacs-faq.texi (Q5.2.1):
+       * xemacs-faq.texi (Q5.2.2):
+       * xemacs-faq.texi (Q5.3.1):
+       * xemacs-faq.texi (Q5.3.2):
+       * xemacs-faq.texi (Q5.3.4):
+       * xemacs-faq.texi (MS Windows):
+       * xemacs-faq.texi (Q6.0.1):
+       * xemacs-faq.texi (Q6.0.2):
+       * xemacs-faq.texi (Q6.0.3):
+       * xemacs-faq.texi (Q6.0.4):
+       * xemacs-faq.texi (Q6.1.5):
+       * xemacs-faq.texi (Q6.2.3):
+       * xemacs-faq.texi (Q6.3.1):
+
+       Remove most references to XEmacs pre-19.15, since they are way out
+       of date and are cluttering up and confusing many answers.  Update
+       references to .emacs to take into account the new init file
+       location.  Update information about the MS Windows port.  Change
+       description of XEmacs at beginning to match the web site.  Update
+       info about current developers.
+       
+
+2001-02-25  Ben Wing  <ben@xemacs.org>
+
+       * lispref\help.texi (Describing Characters):
+       kp- not kp_.
+       
+2001-02-25  Ben Wing  <ben@xemacs.org>
+
+       * new-users-guide\custom1.texi (Customization Basics):
+       * new-users-guide\custom1.texi (Customizing key Bindings):
+       * new-users-guide\custom1.texi (Customizing Menus):
+       * new-users-guide\custom2.texi (Other Customizations):
+       * new-users-guide\custom2.texi (Setting Variables):
+       * new-users-guide\custom2.texi (Init File):
+       * new-users-guide\xmenu.texi (Options Menu):
+       * new-users-guide\modes.texi (Major Modes):
+       * new-users-guide\modes.texi (Minor Modes):
+       * new-users-guide\new-users-guide.texi (Top):
+       Fix up references to .emacs to take into account init.el.
+       
 2001-02-23  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.45 "Thelxepeia" is released.
index db888d1..f82c7ee 100644 (file)
@@ -105,7 +105,7 @@ instead of in the original English.
 @node Top, A History of Emacs, (dir), (dir)
 
 @ifinfo
-This Info file contains v1.0 of the XEmacs Internals Manual.
+This Info file contains v1.3 of the XEmacs Internals Manual, August 1999.
 @end ifinfo
 
 @menu
@@ -309,7 +309,8 @@ Extents
 
 @node A History of Emacs, XEmacs From the Outside, Top, Top
 @chapter A History of Emacs
-@cindex history of Emacs
+@cindex history of Emacs, a
+@cindex Emacs, a history of
 @cindex Hackers (Steven Levy)
 @cindex Levy, Steven
 @cindex ITS (Incompatible Timesharing System)
@@ -345,8 +346,9 @@ Lisp, a programming language developed at MIT that underlies Emacs.)
 * XEmacs::                      The continuation of Lucid Emacs.
 @end menu
 
-@node Through Version 18, Lucid Emacs, A History of Emacs, A History of Emacs
+@node Through Version 18
 @section Through Version 18
+@cindex version 18, through
 @cindex Gosling, James
 @cindex Great Usenet Renaming
 
@@ -458,7 +460,7 @@ version 18.58 released ?????.
 version 18.59 released October 31, 1992.
 @end itemize
 
-@node Lucid Emacs, GNU Emacs 19, Through Version 18, A History of Emacs
+@node Lucid Emacs
 @section Lucid Emacs
 @cindex Lucid Emacs
 @cindex Lucid Inc.
@@ -546,9 +548,11 @@ version 20.3 (the first stable version of XEmacs 20.x) released November 30,
 version 20.4 released February 28, 1998.
 @end itemize
 
-@node GNU Emacs 19, GNU Emacs 20, Lucid Emacs, A History of Emacs
+@node GNU Emacs 19
 @section GNU Emacs 19
 @cindex GNU Emacs 19
+@cindex Emacs 19, GNU
+@cindex version 19, GNU Emacs
 @cindex FSF Emacs
 
   About a year after the initial release of Lucid Emacs, the FSF
@@ -623,9 +627,11 @@ Lucid Emacs; the work was mostly done by Richard Mlynarik, who had been
 working on and using GNU Emacs for a long time (back as far as version
 16 or 17).
 
-@node GNU Emacs 20, XEmacs, GNU Emacs 19, A History of Emacs
+@node GNU Emacs 20
 @section GNU Emacs 20
 @cindex GNU Emacs 20
+@cindex Emacs 20, GNU
+@cindex version 20, GNU Emacs
 @cindex FSF Emacs
 
 On February 2, 1997 work began on GNU Emacs to integrate Mule.  The first
@@ -642,7 +648,7 @@ version 20.2 released September 20, 1997.
 version 20.3 released August 19, 1998.
 @end itemize
 
-@node XEmacs,  , GNU Emacs 20, A History of Emacs
+@node XEmacs
 @section XEmacs
 @cindex XEmacs
 
@@ -720,6 +726,8 @@ have consistently failed.
 
 @node XEmacs From the Outside, The Lisp Language, A History of Emacs, Top
 @chapter XEmacs From the Outside
+@cindex XEmacs from the outside
+@cindex outside, XEmacs from the
 @cindex read-eval-print
 
   XEmacs appears to the outside world as an editor, but it is really a
@@ -762,6 +770,7 @@ have to write functions to do those operations in Lisp.
 
 @node The Lisp Language, XEmacs From the Perspective of Building, XEmacs From the Outside, Top
 @chapter The Lisp Language
+@cindex Lisp language, the
 @cindex Lisp vs. C
 @cindex C vs. Lisp
 @cindex Lisp vs. Java
@@ -983,6 +992,8 @@ inside the real OS.
 
 @node XEmacs From the Perspective of Building, XEmacs From the Inside, The Lisp Language, Top
 @chapter XEmacs From the Perspective of Building
+@cindex XEmacs from the perspective of building
+@cindex building, XEmacs from the perspective of
 
 The heart of XEmacs is the Lisp environment, which is written in C.
 This is contained in the @file{src/} subdirectory.  Underneath
@@ -1092,6 +1103,8 @@ such as allocation memory in one process, and freeing it in the next.
 
 @node XEmacs From the Inside, The XEmacs Object System (Abstractly Speaking), XEmacs From the Perspective of Building, Top
 @chapter XEmacs From the Inside
+@cindex XEmacs from the inside
+@cindex inside, XEmacs from the
 
 Internally, XEmacs is quite complex, and can be very confusing.  To
 simplify things, it can be useful to think of XEmacs as containing an
@@ -1251,6 +1264,8 @@ change the C code.
 
 @node The XEmacs Object System (Abstractly Speaking), How Lisp Objects Are Represented in C, XEmacs From the Inside, Top
 @chapter The XEmacs Object System (Abstractly Speaking)
+@cindex XEmacs object system (abstractly speaking), the
+@cindex object system (abstractly speaking), the XEmacs
 
   At the heart of the Lisp interpreter is its management of objects.
 XEmacs Lisp contains many built-in objects, some of which are
@@ -1610,6 +1625,9 @@ initialized through a read syntax.
 
 @node How Lisp Objects Are Represented in C, Rules When Writing New C Code, The XEmacs Object System (Abstractly Speaking), Top
 @chapter How Lisp Objects Are Represented in C
+@cindex Lisp objects are represented in C, how
+@cindex objects are represented in C, how Lisp
+@cindex represented in C, how Lisp objects are
 
 Lisp objects are represented in C using a 32-bit or 64-bit machine word
 (depending on the processor; i.e. DEC Alphas use 64-bit Lisp objects and
@@ -1694,6 +1712,9 @@ specified.
 
 @node Rules When Writing New C Code, A Summary of the Various XEmacs Modules, How Lisp Objects Are Represented in C, Top
 @chapter Rules When Writing New C Code
+@cindex writing new C code, rules when
+@cindex C code, rules when writing new
+@cindex code, rules when writing new C
 
 The XEmacs C Code is extremely complex and intricate, and there are many
 rules that are more or less consistently followed throughout the code.
@@ -1705,13 +1726,16 @@ situations, often in code far away from where the actual breakage is.
 @menu
 * General Coding Rules::
 * Writing Lisp Primitives::
+* Writing Good Comments::
 * Adding Global Lisp Variables::
+* Proper Use of Unsigned Types::
 * Coding for Mule::
 * Techniques for XEmacs Developers::
 @end menu
 
-@node General Coding Rules, Writing Lisp Primitives, Rules When Writing New C Code, Rules When Writing New C Code
+@node General Coding Rules
 @section General Coding Rules
+@cindex coding rules, general
 
 The C code is actually written in a dialect of C called @dfn{Clean C},
 meaning that it can be compiled, mostly warning-free, with either a C or
@@ -1828,8 +1852,11 @@ the list.  The macros @code{EXTERNAL_LIST_LOOP_DELETE_IF} and
 @code{LIST_LOOP_DELETE_IF} delete elements from a lisp list satisfying some
 predicate.
 
-@node Writing Lisp Primitives, Adding Global Lisp Variables, General Coding Rules, Rules When Writing New C Code
+@node Writing Lisp Primitives
 @section Writing Lisp Primitives
+@cindex writing Lisp primitives
+@cindex Lisp primitives, writing
+@cindex primitives, writing Lisp
 
 Lisp primitives are Lisp functions implemented in C.  The details of
 interfacing the C function so that Lisp can call it are handled by a few
@@ -2072,8 +2099,73 @@ number of arguments.  They work by calling @code{Ffuncall}.
 @file{lisp.h} contains the definitions for important macros and
 functions.
 
-@node Adding Global Lisp Variables, Coding for Mule, Writing Lisp Primitives, Rules When Writing New C Code
+@node Writing Good Comments
+@section Writing Good Comments
+@cindex writing good comments
+@cindex comments, writing good
+
+Comments are a lifeline for programmers trying to understand tricky
+code.  In general, the less obvious it is what you are doing, the more
+you need a comment, and the more detailed it needs to be.  You should
+always be on guard when you're writing code for stuff that's tricky, and
+should constantly be putting yourself in someone else's shoes and asking
+if that person could figure out without much difficulty what's going
+on. (Assume they are a competent programmer who understands the
+essentials of how the XEmacs code is structured but doesn't know much
+about the module you're working on or any algorithms you're using.) If
+you're not sure whether they would be able to, add a comment.  Always
+err on the side of more comments, rather than less.
+
+Generally, when making comments, there is no need to attribute them with
+your name or initials.  This especially goes for small,
+easy-to-understand, non-opinionated ones.  Also, comments indicating
+where, when, and by whom a file was changed are @emph{strongly}
+discouraged, and in general will be removed as they are discovered.
+This is exactly what @file{ChangeLogs} are there for.  However, it can
+occasionally be useful to mark exactly where (but not when or by whom)
+changes are made, particularly when making small changes to a file
+imported from elsewhere.  These marks help when later on a newer version
+of the file is imported and the changes need to be merged. (If
+everything were always kept in CVS, there would be no need for this.
+But in practice, this often doesn't happen, or the CVS repository is
+later on lost or unavailable to the person doing the update.)
+
+When putting in an explicit opinion in a comment, you should
+@emph{always} attribute it with your name, and optionally the date.
+This also goes for long, complex comments explaining in detail the
+workings of something -- by putting your name there, you make it
+possible for someone who has questions about how that thing works to
+determine who wrote the comment so they can write to them.  Preferably,
+use your actual name and not your initials, unless your initials are
+generally recognized (e.g. @samp{jwz}).  You can use only your first
+name if it's obvious who you are; otherwise, give first and last name.
+If you're not a regular contributor, you might consider putting your
+email address in -- it may be in the ChangeLog, but after awhile
+ChangeLogs have a tendency of disappearing or getting
+muddled. (E.g. your comment may get copied somewhere else or even into
+another program, and tracking down the proper ChangeLog may be very
+difficult.)
+
+If you come across an opinion that is not or no longer valid, or you
+come across any comment that no longer applies but you want to keep it
+around, enclose it in @samp{[[ } and @samp{ ]]} marks and add a comment
+afterwards explaining why the preceding comment is no longer valid.  Put
+your name on this comment, as explained above.
+
+Just as comments are a lifeline to programmers, incorrect comments are
+death.  If you come across an incorrect comment, @strong{immediately}
+correct it or flag it as incorrect, as described in the previous
+paragraph.  Whenever you work on a section of code, @emph{always} make
+sure to update any comments to be correct -- or, at the very least, flag
+them as incorrect.
+
+To indicate a "todo" or other problem, use four pound signs --
+i.e. @samp{####}.
+
+@node Adding Global Lisp Variables
 @section Adding Global Lisp Variables
+@cindex global Lisp variables, adding
+@cindex variables, adding global Lisp
 
 Global variables whose names begin with @samp{Q} are constants whose
 value is a symbol of a particular name.  The name of the variable should
@@ -2134,9 +2226,41 @@ is in use, and will happily collect it and reuse its storage for another
 Lisp object, and you will be the one who's unhappy when you can't figure
 out how your variable got overwritten.
 
-@node Coding for Mule, Techniques for XEmacs Developers, Adding Global Lisp Variables, Rules When Writing New C Code
+@node Proper Use of Unsigned Types
+@section Proper Use of Unsigned Types
+@cindex unsigned types, proper use of
+@cindex types, proper use of unsigned
+
+Avoid using @code{unsigned int} and @code{unsigned long} whenever
+possible.  Unsigned types are viral -- any arithmetic or comparisons
+involving mixed signed and unsigned types are automatically converted to
+unsigned, which is almost certainly not what you want.  Many subtle and
+hard-to-find bugs are created by careless use of unsigned types.  In
+general, you should almost @emph{never} use an unsigned type to hold a
+regular quantity of any sort.  The only exceptions are
+
+@enumerate
+@item
+When there's a reasonable possibility you will actually need all 32 or
+64 bits to store the quantity.
+@item
+When calling existing API's that require unsigned types.  In this case,
+you should still do all manipulation using signed types, and do the
+conversion at the very threshold of the API call.
+@item
+In existing code that you don't want to modify because you don't
+maintain it.
+@item
+In bit-field structures.
+@end enumerate
+
+Other reasonable uses of @code{unsigned int} and @code{unsigned long}
+are representing non-quantities -- e.g. bit-oriented flags and such.
+
+@node Coding for Mule
 @section Coding for Mule
-@cindex Coding for Mule
+@cindex coding for Mule
+@cindex Mule, coding for
 
 Although Mule support is not compiled by default in XEmacs, many people
 are using it, and we consider it crucial that new code works correctly
@@ -2157,8 +2281,10 @@ code generalization for future I18N work.
 * An Example of Mule-Aware Code::
 @end menu
 
-@node Character-Related Data Types, Working With Character and Byte Positions, Coding for Mule, Coding for Mule
+@node Character-Related Data Types
 @subsection Character-Related Data Types
+@cindex character-related data types
+@cindex data types, character-related
 
 First, let's review the basic character-related datatypes used by
 XEmacs.  Note that the separate @code{typedef}s are not mandatory in the
@@ -2234,8 +2360,11 @@ which are equivalent to @code{unsigned char}.  Obviously, an
 and Extcounts are not all that frequent in XEmacs code.
 @end table
 
-@node Working With Character and Byte Positions, Conversion to and from External Data, Character-Related Data Types, Coding for Mule
+@node Working With Character and Byte Positions
 @subsection Working With Character and Byte Positions
+@cindex character and byte positions, working with
+@cindex byte positions, working with character and
+@cindex positions, working with character and byte
 
 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
@@ -2358,8 +2487,10 @@ Bufbyte *charptr_n_addr (Bufbyte *p, Charcount cc);
 @end example
 @end table
 
-@node Conversion to and from External Data, General Guidelines for Writing Mule-Aware Code, Working With Character and Byte Positions, Coding for Mule
+@node Conversion to and from External Data
 @subsection Conversion to and from External Data
+@cindex conversion to and from external data
+@cindex external data, conversion to and from
 
 When an external function, such as a C library function, returns a
 @code{char} pointer, you should almost never treat it as @code{Bufbyte}.
@@ -2500,8 +2631,11 @@ 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
+@node General Guidelines for Writing Mule-Aware Code
 @subsection General Guidelines for Writing Mule-Aware Code
+@cindex writing Mule-aware code, general guidelines for
+@cindex Mule-aware code, general guidelines for writing
+@cindex code, general guidelines for writing Mule-aware
 
 This section contains some general guidance on how to write Mule-aware
 code, as well as some pitfalls you should avoid.
@@ -2552,8 +2686,10 @@ needs to be decoded only once, when it is read.  After that, it is
 passed around in internal format.
 @end table
 
-@node An Example of Mule-Aware Code,  , General Guidelines for Writing Mule-Aware Code, Coding for Mule
+@node An Example of Mule-Aware Code
 @subsection An Example of Mule-Aware Code
+@cindex code, an example of Mule-aware
+@cindex Mule-aware code, an example of
 
 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
@@ -2602,9 +2738,13 @@ over the XEmacs code.  For starters, I recommend
 understood this section of the manual and studied the examples, you can
 proceed writing new Mule-aware code.
 
-@node Techniques for XEmacs Developers,  , Coding for Mule, Rules When Writing New C Code
+@node Techniques for XEmacs Developers
 @section Techniques for XEmacs Developers
+@cindex techniques for XEmacs developers
+@cindex developers, techniques for XEmacs
 
+@cindex Purify
+@cindex Quantify
 To make a purified XEmacs, do: @code{make puremacs}.
 To make a quantified XEmacs, do: @code{make quantmacs}.
 
@@ -2616,6 +2756,7 @@ machine!.  Run it like so:
 temacs -batch -l loadup.el run-temacs @var{xemacs-args...}
 @end example
 
+@cindex error checking
 Before you go through the trouble, are you compiling with all
 debugging and error-checking off?  If not, try that first.  Be warned
 that while Quantify is directly responsible for quite a few
@@ -2660,6 +2801,7 @@ Heavily used small code fragments need to be fast.  The traditional way
 to implement such code fragments in C is with macros.  But macros in C
 are known to be broken.
 
+@cindex macro hygiene
 Macro arguments that are repeatedly evaluated may suffer from repeated
 side effects or suboptimal performance.
 
@@ -2702,6 +2844,7 @@ is, since a C block has no value, a macro used as an expression rather
 than a statement cannot use the techniques just described to avoid
 multiple evaluation.
 
+@cindex inline functions
 In most cases where a macro has function semantics, an inline function
 is a better implementation technique.  Modern compiler optimizers tend
 to inline functions even if they have no @code{inline} keyword, and
@@ -2744,6 +2887,8 @@ The declaration right before the definition is to prevent warnings when
 compiling with @code{gcc -Wmissing-declarations}.  I consider issuing
 this warning for inline functions a gcc bug, but the gcc maintainers disagree.
 
+@cindex inline functions, headers
+@cindex header files, inline functions
 Every header which contains inline functions, either directly by using
 @code{INLINE_HEADER} or indirectly by using @code{DECLARE_LRECORD} must
 be added to @file{inline.c}'s includes to make the optimization
@@ -2794,6 +2939,9 @@ use it to do so.
 
 @end itemize
 
+@cindex Lisp object types, creating
+@cindex creating Lisp object types
+@cindex object types, creating Lisp
 Here is a checklist of things to do when creating a new lisp object type
 named @var{foo}:
 
@@ -2821,6 +2969,7 @@ add an INIT_LRECORD_IMPLEMENTATION call to @code{syms_of_@var{foo}.c}
 
 @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
+@cindex modules, a summary of the various XEmacs
 
   This is accurate as of XEmacs 20.0.
 
@@ -2839,8 +2988,10 @@ add an INIT_LRECORD_IMPLEMENTATION call to @code{syms_of_@var{foo}.c}
 * Modules for Internationalization::
 @end menu
 
-@node Low-Level Modules, Basic Lisp Modules, A Summary of the Various XEmacs Modules, A Summary of the Various XEmacs Modules
+@node Low-Level Modules
 @section Low-Level Modules
+@cindex low-level modules
+@cindex modules, low-level
 
 @example
 config.h
@@ -3055,8 +3206,10 @@ This is not currently used.
 
 
 
-@node Basic Lisp Modules, Modules for Standard Editing Operations, Low-Level Modules, A Summary of the Various XEmacs Modules
+@node Basic Lisp Modules
 @section Basic Lisp Modules
+@cindex Lisp modules, basic
+@cindex modules, basic Lisp
 
 @example
 lisp-disunion.h
@@ -3229,8 +3382,10 @@ structures.  Note that the byte-code @emph{compiler} is written in Lisp.
 
 
 
-@node Modules for Standard Editing Operations, Editor-Level Control Flow Modules, Basic Lisp Modules, A Summary of the Various XEmacs Modules
+@node Modules for Standard Editing Operations
 @section Modules for Standard Editing Operations
+@cindex modules for standard editing operations
+@cindex editing operations, modules for standard
 
 @example
 buffer.c
@@ -3399,8 +3554,10 @@ Most of this could be implemented in Lisp.
 
 
 
-@node Editor-Level Control Flow Modules, Modules for the Basic Displayable Lisp Objects, Modules for Standard Editing Operations, A Summary of the Various XEmacs Modules
+@node Editor-Level Control Flow Modules
 @section Editor-Level Control Flow Modules
+@cindex control flow modules, editor-level
+@cindex modules, editor-level control flow
 
 @example
 event-Xt.c
@@ -3501,8 +3658,12 @@ code is loaded).
 
 
 
-@node Modules for the Basic Displayable Lisp Objects, Modules for other Display-Related Lisp Objects, Editor-Level Control Flow Modules, A Summary of the Various XEmacs Modules
+@node Modules for the Basic Displayable Lisp Objects
 @section Modules for the Basic Displayable Lisp Objects
+@cindex modules for the basic displayable Lisp objects
+@cindex displayable Lisp objects, modules for the basic
+@cindex Lisp objects, modules for the basic displayable
+@cindex objects, modules for the basic displayable Lisp
 
 @example
 console-msw.c
@@ -3592,8 +3753,11 @@ types such as scrollbars.
 
 
 
-@node Modules for other Display-Related Lisp Objects, Modules for the Redisplay Mechanism, Modules for the Basic Displayable Lisp Objects, A Summary of the Various XEmacs Modules
+@node Modules for other Display-Related Lisp Objects
 @section Modules for other Display-Related Lisp Objects
+@cindex modules for other display-related Lisp objects
+@cindex display-related Lisp objects, modules for other
+@cindex Lisp objects, modules for other display-related
 
 @example
 faces.c
@@ -3682,8 +3846,10 @@ These files were removed due to Unisys patent infringement concerns.
 
 
 
-@node Modules for the Redisplay Mechanism, Modules for Interfacing with the File System, Modules for other Display-Related Lisp Objects, A Summary of the Various XEmacs Modules
+@node Modules for the Redisplay Mechanism
 @section Modules for the Redisplay Mechanism
+@cindex modules for the redisplay mechanism
+@cindex redisplay mechanism, modules for the
 
 @example
 redisplay-output.c
@@ -3755,8 +3921,11 @@ probably be merged into @file{redisplay-tty.c}.
 
 
 
-@node Modules for Interfacing with the File System, Modules for Other Aspects of the Lisp Interpreter and Object System, Modules for the Redisplay Mechanism, A Summary of the Various XEmacs Modules
+@node Modules for Interfacing with the File System
 @section Modules for Interfacing with the File System
+@cindex modules for interfacing with the file system
+@cindex interfacing with the file system, modules for
+@cindex file system, modules for interfacing with the
 
 @example
 lstream.c
@@ -3856,8 +4025,12 @@ a broken implementation.
 
 
 
-@node Modules for Other Aspects of the Lisp Interpreter and Object System, Modules for Interfacing with the Operating System, Modules for Interfacing with the File System, A Summary of the Various XEmacs Modules
+@node Modules for Other Aspects of the Lisp Interpreter and Object System
 @section Modules for Other Aspects of the Lisp Interpreter and Object System
+@cindex modules for other aspects of the Lisp interpreter and object system
+@cindex Lisp interpreter and object system, modules for other aspects of the
+@cindex interpreter and object system, modules for other aspects of the Lisp
+@cindex object system, modules for other aspects of the Lisp interpreter and
 
 @example
 elhash.c
@@ -4018,8 +4191,11 @@ various security applications on the Internet.
 
 
 
-@node Modules for Interfacing with the Operating System, Modules for Interfacing with X Windows, Modules for Other Aspects of the Lisp Interpreter and Object System, A Summary of the Various XEmacs Modules
+@node Modules for Interfacing with the Operating System
 @section Modules for Interfacing with the Operating System
+@cindex modules for interfacing with the operating system
+@cindex interfacing with the operating system, modules for
+@cindex operating system, modules for interfacing with the
 
 @example
 callproc.c
@@ -4247,8 +4423,11 @@ AIX prior to 4.1.
 
 
 
-@node Modules for Interfacing with X Windows, Modules for Internationalization, Modules for Interfacing with the Operating System, A Summary of the Various XEmacs Modules
+@node Modules for Interfacing with X Windows
 @section Modules for Interfacing with X Windows
+@cindex modules for interfacing with X Windows
+@cindex interfacing with X Windows, modules for
+@cindex X Windows, modules for interfacing with
 
 @example
 Emacs.ad.h
@@ -4392,8 +4571,10 @@ Don't touch this code; something is liable to break if you do.
 
 
 
-@node Modules for Internationalization,  , Modules for Interfacing with X Windows, A Summary of the Various XEmacs Modules
+@node Modules for Internationalization
 @section Modules for Internationalization
+@cindex modules for internationalization
+@cindex internationalization, modules for
 
 @example
 mule-canna.c
@@ -4471,6 +4652,9 @@ Asian-language support, and is not currently used.
 
 @node Allocation of Objects in XEmacs Lisp, Dumping, A Summary of the Various XEmacs Modules, Top
 @chapter Allocation of Objects in XEmacs Lisp
+@cindex allocation of objects in XEmacs Lisp
+@cindex objects in XEmacs Lisp, allocation of
+@cindex Lisp objects, allocation of in XEmacs
 
 @menu
 * Introduction to Allocation::
@@ -4490,8 +4674,9 @@ Asian-language support, and is not currently used.
 * Compiled Function::
 @end menu
 
-@node Introduction to Allocation, Garbage Collection, Allocation of Objects in XEmacs Lisp, Allocation of Objects in XEmacs Lisp
+@node Introduction to Allocation
 @section Introduction to Allocation
+@cindex allocation, introduction to
 
   Emacs Lisp, like all Lisps, has garbage collection.  This means that
 the programmer never has to explicitly free (destroy) an object; it
@@ -4561,7 +4746,7 @@ except that their type is stored in lrecord fashion rather than
 in directly-tagged fashion.
 
 
-@node Garbage Collection, GCPROing, Introduction to Allocation, Allocation of Objects in XEmacs Lisp
+@node Garbage Collection
 @section Garbage Collection
 @cindex garbage collection
 
@@ -4585,8 +4770,11 @@ 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
+@node GCPROing
 @section @code{GCPRO}ing
+@cindex @code{GCPRO}ing
+@cindex garbage collection protection
+@cindex protection, garbage collection
 
 @code{GCPRO}ing is one of the ugliest and trickiest parts of Emacs
 internals.  The basic idea is that whenever garbage collection
@@ -4741,9 +4929,9 @@ will result in a few objects not getting collected when they should, but
 it obviates the need for @code{GCPRO}ing, and allows garbage collection
 to happen at any point at all, such as during object allocation.
 
-@node Garbage Collection - Step by Step, Integers and Characters, GCPROing, Allocation of Objects in XEmacs Lisp
+@node Garbage Collection - Step by Step
 @section Garbage Collection - Step by Step
-@cindex garbage collection step by step
+@cindex garbage collection - step by step
 
 @menu
 * Invocation::
@@ -4756,7 +4944,7 @@ to happen at any point at all, such as during object allocation.
 * sweep_bit_vectors_1::
 @end menu
 
-@node Invocation, garbage_collect_1, Garbage Collection - Step by Step, Garbage Collection - Step by Step
+@node Invocation
 @subsection Invocation
 @cindex garbage collection, invocation
 
@@ -4816,7 +5004,7 @@ everything related to @code{eval} (@code{Feval_buffer}, @code{call0},
 for example the ones raised by every @code{QUIT}-macro triggered after
 pressing Ctrl-g.
 
-@node garbage_collect_1, mark_object, Invocation, Garbage Collection - Step by Step
+@node garbage_collect_1
 @subsection @code{garbage_collect_1}
 @cindex @code{garbage_collect_1}
 
@@ -5006,7 +5194,7 @@ A small memory reserve is always held back that can be reached by
 and exit.
 @end enumerate
 
-@node mark_object, gc_sweep, garbage_collect_1, Garbage Collection - Step by Step
+@node mark_object
 @subsection @code{mark_object}
 @cindex @code{mark_object}
 
@@ -5040,7 +5228,7 @@ be performed.
 In case another object was returned, as mentioned before, we reiterate
 the whole @code{mark_object} process beginning with this next object.
 
-@node gc_sweep, sweep_lcrecords_1, mark_object, Garbage Collection - Step by Step
+@node gc_sweep
 @subsection @code{gc_sweep}
 @cindex @code{gc_sweep}
 
@@ -5135,7 +5323,7 @@ whole block is empty. If so, the whole block is freed (using
 @code{xfree}) and the free list state is set to the state it had before
 handling this block.
 
-@node sweep_lcrecords_1, compact_string_chars, gc_sweep, Garbage Collection - Step by Step
+@node sweep_lcrecords_1
 @subsection @code{sweep_lcrecords_1}
 @cindex @code{sweep_lcrecords_1}
 
@@ -5156,7 +5344,7 @@ has to persist, otherwise it is manually freed by calling
 @code{xfree}. During this loop, the lcrecord statistics are kept up to
 date by calling @code{tick_lcrecord_stats} with the right arguments,
 
-@node compact_string_chars, sweep_strings, sweep_lcrecords_1, Garbage Collection - Step by Step
+@node compact_string_chars
 @subsection @code{compact_string_chars}
 @cindex @code{compact_string_chars}
 
@@ -5202,7 +5390,7 @@ is reset on the last block to which we moved a string,
 i.e. @code{to_block}, and all remaining blocks (we know that they just
 carry garbage) are explicitly @code{xfree}d.
 
-@node sweep_strings, sweep_bit_vectors_1, compact_string_chars, Garbage Collection - Step by Step
+@node sweep_strings
 @subsection @code{sweep_strings}
 @cindex @code{sweep_strings}
 
@@ -5223,7 +5411,7 @@ addition: in case, the string was not allocated in a
 therefore it was @code{malloc}ed separately, we know also @code{xfree}
 it explicitly.
 
-@node sweep_bit_vectors_1,  , sweep_strings, Garbage Collection - Step by Step
+@node sweep_bit_vectors_1
 @subsection @code{sweep_bit_vectors_1}
 @cindex @code{sweep_bit_vectors_1}
 
@@ -5237,8 +5425,10 @@ them become unmarked.
 In addition, the bookkeeping information used for garbage
 collector's output purposes is updated.
 
-@node Integers and Characters, Allocation from Frob Blocks, Garbage Collection - Step by Step, Allocation of Objects in XEmacs Lisp
+@node Integers and Characters
 @section Integers and Characters
+@cindex integers and characters
+@cindex characters, integers and
 
   Integer and character Lisp objects are created from integers using the
 macros @code{XSETINT()} and @code{XSETCHAR()} or the equivalent
@@ -5251,8 +5441,10 @@ directly in the @code{Lisp_Object}.
 are too big; i.e. you won't get the value you expected but the tag bits
 will at least be correct.
 
-@node Allocation from Frob Blocks, lrecords, Integers and Characters, Allocation of Objects in XEmacs Lisp
+@node Allocation from Frob Blocks
 @section Allocation from Frob Blocks
+@cindex allocation from frob blocks
+@cindex frob blocks, allocation from
 
 The uninitialized memory required by a @code{Lisp_Object} of a particular type
 is allocated using
@@ -5278,8 +5470,9 @@ last frob block for space, and creates a new frob block if there is
 none. (There are actually two versions of these macros, one of which is
 more defensive but less efficient and is used for error-checking.)
 
-@node lrecords, Low-level allocation, Allocation from Frob Blocks, Allocation of Objects in XEmacs Lisp
+@node lrecords
 @section lrecords
+@cindex lrecords
 
   [see @file{lrecord.h}]
 
@@ -5517,8 +5710,10 @@ 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, Cons, lrecords, Allocation of Objects in XEmacs Lisp
+@node Low-level allocation
 @section Low-level allocation
+@cindex low-level allocation
+@cindex allocation, low-level
 
   Memory that you want to allocate directly should be allocated using
 @code{xmalloc()} rather than @code{malloc()}.  This implements
@@ -5588,8 +5783,9 @@ and bit-vector creation routines.  These routines also call
 statistics on how much memory is allocated, so that garbage-collection
 can be invoked when the threshold is reached.
 
-@node Cons, Vector, Low-level allocation, Allocation of Objects in XEmacs Lisp
+@node Cons
 @section Cons
+@cindex cons
 
   Conses are allocated in standard frob blocks.  The only thing to
 note is that conses can be explicitly freed using @code{free_cons()}
@@ -5602,8 +5798,9 @@ However, you have to be @emph{extremely} careful when doing this.
 If you mess this up, you will get BADLY BURNED, and it has happened
 before.
 
-@node Vector, Bit Vector, Cons, Allocation of Objects in XEmacs Lisp
+@node Vector
 @section Vector
+@cindex vector
 
   As mentioned above, each vector is @code{malloc()}ed individually, and
 all are threaded through the variable @code{all_vectors}.  Vectors are
@@ -5613,8 +5810,10 @@ Note that the @code{struct Lisp_Vector} is declared with its
 is actually @code{malloc()}ed with the right size, however, and access
 to any element through the @code{contents} array works fine.
 
-@node Bit Vector, Symbol, Vector, Allocation of Objects in XEmacs Lisp
+@node Bit Vector
 @section Bit Vector
+@cindex bit vector
+@cindex vector, bit
 
   Bit vectors work exactly like vectors, except for more complicated
 code to access an individual bit, and except for the fact that bit
@@ -5623,8 +5822,9 @@ that there's an lrecord implementation pointer at the beginning and the
 tag field in bit vector Lisp words is ``lrecord'' rather than
 ``vector''.)
 
-@node Symbol, Marker, Bit Vector, Allocation of Objects in XEmacs Lisp
+@node Symbol
 @section Symbol
+@cindex symbol
 
   Symbols are also allocated in frob blocks.  Symbols in the awful
 horrible obarray structure are chained through their @code{next} field.
@@ -5632,8 +5832,9 @@ 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.
 
-@node Marker, String, Symbol, Allocation of Objects in XEmacs Lisp
+@node Marker
 @section Marker
+@cindex marker
 
   Markers are allocated in frob blocks, as usual.  They are kept
 in a buffer unordered, but in a doubly-linked list so that they
@@ -5643,8 +5844,9 @@ long time due to the O(N^2) time required to remove lots of
 markers from a buffer.) Markers are removed from a buffer in
 the finalize stage, in @code{ADDITIONAL_FREE_marker()}.
 
-@node String, Compiled Function, Marker, Allocation of Objects in XEmacs Lisp
+@node String
 @section String
+@cindex string
 
   As mentioned above, strings are a special case.  A string is logically
 two parts, a fixed-size object (containing the length, property list,
@@ -5704,16 +5906,20 @@ string data (which would normally be obtained from the now-non-existent
 The string compactor recognizes this special 0xFFFFFFFF marker and
 handles it correctly.
 
-@node Compiled Function,  , String, Allocation of Objects in XEmacs Lisp
+@node Compiled Function
 @section Compiled Function
+@cindex compiled function
+@cindex function, compiled
 
   Not yet documented.
 
 
 @node Dumping, Events and the Event Loop, Allocation of Objects in XEmacs Lisp, Top
 @chapter Dumping
+@cindex dumping
 
 @section What is dumping and its justification
+@cindex dumping and its justification, what is
 
 The C code of XEmacs is just a Lisp engine with a lot of built-in
 primitives useful for writing an editor.  The editor itself is written
@@ -5756,8 +5962,9 @@ without any system-specific hacks.
 * Remaining issues::
 @end menu
 
-@node Overview, Data descriptions, Dumping, Dumping
+@node Overview
 @section Overview
+@cindex dumping overview
 
 The portable dumping system has to:
 
@@ -5773,8 +5980,9 @@ starting address if needed, and reinitialize all pointers to this
 data.  Also, rebuild all the quickly rebuildable data.
 @end enumerate
 
-@node Data descriptions, Dumping phase, Overview, Dumping
+@node Data descriptions
 @section Data descriptions
+@cindex dumping data descriptions
 
 The more complex task of the dumper is to be able to write lisp objects
 (lrecords) and C structs to disk and reload them at a different address,
@@ -5813,8 +6021,9 @@ lrecord_implementation, so we don't need to duplicate it.  For C
 structures we use a struct struct_description, which includes a size
 field and a pointer to an associated array of lrecord_description.
 
-@node Dumping phase, Reloading phase, Data descriptions, Dumping
+@node Dumping phase
 @section Dumping phase
+@cindex dumping phase
 
 Dumping is done by calling the function pdump() (in dumper.c) which is
 invoked from Fdump_emacs (in emacs.c).  This function performs a number
@@ -5828,8 +6037,9 @@ of tasks.
 * Pointers dumping::
 @end menu
 
-@node Object inventory, Address allocation, Dumping phase, Dumping phase
+@node Object inventory
 @subsection Object inventory
+@cindex dumping object inventory
 
 The first task is to build the list of the objects to dump.  This
 includes:
@@ -5914,8 +6124,9 @@ Weak lists and weak hash tables are dumped as if they were their
 non-weak equivalent (without changing their type, of course).  This has
 not yet been a problem.
 
-@node Address allocation, The header, Object inventory, Dumping phase
+@node Address allocation
 @subsection Address allocation
+@cindex dumping address allocation
 
 
 The next step is to allocate the offsets of each of the objects in the
@@ -5951,8 +6162,9 @@ The maximum alignment requirement we take into account is 2^8.
 starting at offset 256 (this leaves room for the header and keeps the
 alignments happy).
 
-@node The header, Data dumping, Address allocation, Dumping phase
+@node The header
 @subsection The header
+@cindex dumping, the header
 
 The next step creates the file and writes a header with a signature and
 some random information in it.  The @code{reloc_address} field, which
@@ -5960,8 +6172,10 @@ indicates at which address the file should be loaded if we want to avoid
 post-reload relocation, is set to 0.  It then seeks to offset 256 (base
 offset for the objects).
 
-@node Data dumping, Pointers dumping, The header, Dumping phase
+@node Data dumping
 @subsection Data dumping
+@cindex data dumping
+@cindex dumping, data
 
 The data is dumped in the same order as the addresses were allocated by
 @code{pdump_dump_data()}, called from @code{pdump_scan_by_alignment()}.
@@ -5972,8 +6186,10 @@ if we are careful with lrecords whose size is not a multiple of 4, we
 are ensured that the object is always written at the offset in the file
 allocated in step Address Allocation.
 
-@node Pointers dumping,  , Data dumping, Dumping phase
+@node Pointers dumping
 @subsection Pointers dumping
+@cindex pointers dumping
+@cindex dumping, pointers
 
 A bunch of tables needed to reassign properly the global pointers are
 then written.  They are:
@@ -6009,10 +6225,13 @@ Some very important information like the @code{staticpros} and
 
 This is the end of the dumping part.
 
-@node Reloading phase, Remaining issues, Dumping phase, Dumping
+@node Reloading phase
 @section Reloading phase
+@cindex reloading phase
+@cindex dumping, reloading phase
 
 @subsection File loading
+@cindex dumping, file loading
 
 The file is mmap'ed in memory (which ensures a PAGESIZE alignment, at
 least 4096), or if mmap is unavailable or fails, a 256-bytes aligned
@@ -6025,17 +6244,20 @@ is computed and will be used for all the relocations.
 
 
 @subsection Putting back the pdump_opaques
+@cindex dumping, putting back the pdump_opaques
 
 The memory contents are restored in the obvious and trivial way.
 
 
 @subsection Putting back the pdump_root_struct_ptrs
+@cindex dumping, putting back the pdump_root_struct_ptrs
 
 The variables pointed to by pdump_root_struct_ptrs in the dump phase are
 reset to the right relocated object addresses.
 
 
 @subsection Object relocation
+@cindex dumping, object relocation
 
 All the objects are relocated using their description and their offset
 by @code{pdump_reloc_one}.  This step is unnecessary if the
@@ -6043,18 +6265,21 @@ reloc_address is equal to the file loading address.
 
 
 @subsection Putting back the pdump_root_objects and pdump_weak_object_chains
+@cindex dumping, putting back the pdump_root_objects and pdump_weak_object_chains
 
 Same as Putting back the pdump_root_struct_ptrs.
 
 
 @subsection Reorganize the hash tables
+@cindex dumping, reorganize the hash tables
 
 Since some of the hash values in the lisp hash tables are
 address-dependent, their layout is now wrong.  So we go through each of
 them and have them resorted by calling @code{pdump_reorganize_hash_table}.
 
-@node Remaining issues,  , Reloading phase, Dumping
+@node Remaining issues
 @section Remaining issues
+@cindex dumping, remaining issues
 
 The build process will have to start a post-dump xemacs, ask it the
 loading address (which will, hopefully, be always the same between
@@ -6075,6 +6300,8 @@ The DOC file contents should probably end up in the dump file.
 
 @node Events and the Event Loop, Evaluation; Stack Frames; Bindings, Dumping, Top
 @chapter Events and the Event Loop
+@cindex events and the event loop
+@cindex event loop, events and the
 
 @menu
 * Introduction to Events::
@@ -6087,8 +6314,9 @@ The DOC file contents should probably end up in the dump file.
 * Dispatching Events; The Command Builder::
 @end menu
 
-@node Introduction to Events, Main Loop, Events and the Event Loop, Events and the Event Loop
+@node Introduction to Events
 @section Introduction to Events
+@cindex events, introduction to
 
   An event is an object that encapsulates information about an
 interesting occurrence in the operating system.  Events are
@@ -6126,8 +6354,10 @@ Emacs events---there may not be a one-to-one correspondence.
   Emacs events are documented in @file{events.h}; I'll discuss them
 later.
 
-@node Main Loop, Specifics of the Event Gathering Mechanism, Introduction to Events, Events and the Event Loop
+@node Main Loop
 @section Main Loop
+@cindex main loop
+@cindex events, main loop
 
   The @dfn{command loop} is the top-level loop that the editor is always
 running.  It loops endlessly, calling @code{next-event} to retrieve an
@@ -6193,8 +6423,9 @@ wrapper similar to @code{command_loop_2()}.  Note also that
 invoking @code{top_level_1()}, just like when it invokes
 @code{command_loop_2()}.
 
-@node Specifics of the Event Gathering Mechanism, Specifics About the Emacs Event, Main Loop, Events and the Event Loop
+@node Specifics of the Event Gathering Mechanism
 @section Specifics of the Event Gathering Mechanism
+@cindex event gathering mechanism, specifics of the
 
   Here is an approximate diagram of the collection processes
 at work in XEmacs, under TTY's (TTY's are simpler than X
@@ -6432,14 +6663,18 @@ a SIGINT?   emacs_Xt_next_event()
             using `dispatch-event'
 @end example
 
-@node Specifics About the Emacs Event, The Event Stream Callback Routines, Specifics of the Event Gathering Mechanism, Events and the Event Loop
+@node Specifics About the Emacs Event
 @section Specifics About the Emacs Event
+@cindex event, specifics about the Lisp object
 
-@node The Event Stream Callback Routines, Other Event Loop Functions, Specifics About the Emacs Event, Events and the Event Loop
+@node The Event Stream Callback Routines
 @section The Event Stream Callback Routines
+@cindex event stream callback routines, the
+@cindex callback routines, the event stream
 
-@node Other Event Loop Functions, Converting Events, The Event Stream Callback Routines, Events and the Event Loop
+@node Other Event Loop Functions
 @section Other Event Loop Functions
+@cindex event loop functions, other
 
   @code{detect_input_pending()} and @code{input-pending-p} look for
 input by calling @code{event_stream->event_pending_p} and looking in
@@ -6460,8 +6695,10 @@ or scrollbar action), calling @code{dispatch-event} on any others.
 the right kind of input method support, it is possible for (read-char)
 to return a Kanji character.
 
-@node Converting Events, Dispatching Events; The Command Builder, Other Event Loop Functions, Events and the Event Loop
+@node Converting Events
 @section Converting Events
+@cindex converting events
+@cindex events, converting
 
   @code{character_to_event()}, @code{event_to_character()},
 @code{event-to-character}, and @code{character-to-event} convert between
@@ -6471,13 +6708,19 @@ event was not a keypress, @code{event_to_character()} returns -1 and
 between character representation and the split-up event representation
 (keysym plus mod keys).
 
-@node Dispatching Events; The Command Builder,  , Converting Events, Events and the Event Loop
+@node Dispatching Events; The Command Builder
 @section Dispatching Events; The Command Builder
+@cindex dispatching events; the command builder
+@cindex events; the command builder, dispatching
+@cindex command builder, dispatching events; the
 
 Not yet documented.
 
 @node Evaluation; Stack Frames; Bindings, Symbols and Variables, Events and the Event Loop, Top
 @chapter Evaluation; Stack Frames; Bindings
+@cindex evaluation; stack frames; bindings
+@cindex stack frames; bindings, evaluation;
+@cindex bindings, evaluation; stack frames;
 
 @menu
 * Evaluation::
@@ -6486,8 +6729,9 @@ Not yet documented.
 * Catch and Throw::
 @end menu
 
-@node Evaluation, Dynamic Binding; The specbinding Stack; Unwind-Protects, Evaluation; Stack Frames; Bindings, Evaluation; Stack Frames; Bindings
+@node Evaluation
 @section Evaluation
+@cindex evaluation
 
   @code{Feval()} evaluates the form (a Lisp object) that is passed to
 it.  Note that evaluation is only non-trivial for two types of objects:
@@ -6616,8 +6860,12 @@ arguments are given as separate C arguments rather than being passed as
 an array).  @code{apply1()} uses @code{Fapply()} while the others use
 @code{Ffuncall()} to do the real work.
 
-@node Dynamic Binding; The specbinding Stack; Unwind-Protects, Simple Special Forms, Evaluation, Evaluation; Stack Frames; Bindings
+@node Dynamic Binding; The specbinding Stack; Unwind-Protects
 @section Dynamic Binding; The specbinding Stack; Unwind-Protects
+@cindex dynamic binding; the specbinding stack; unwind-protects
+@cindex binding; the specbinding stack; unwind-protects, dynamic
+@cindex specbinding stack; unwind-protects, dynamic binding; the
+@cindex unwind-protects, dynamic binding; the specbinding stack;
 
 @example
 struct specbinding
@@ -6670,8 +6918,9 @@ a local-variable binding (@code{func} is 0, @code{symbol} is not
 the symbol's value).
 @end enumerate
 
-@node Simple Special Forms, Catch and Throw, Dynamic Binding; The specbinding Stack; Unwind-Protects, Evaluation; Stack Frames; Bindings
+@node Simple Special Forms
 @section Simple Special Forms
+@cindex special forms, simple
 
 @code{or}, @code{and}, @code{if}, @code{cond}, @code{progn},
 @code{prog1}, @code{prog2}, @code{setq}, @code{quote}, @code{function},
@@ -6687,8 +6936,10 @@ 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.
 
-@node Catch and Throw,  , Simple Special Forms, Evaluation; Stack Frames; Bindings
+@node Catch and Throw
 @section Catch and Throw
+@cindex catch and throw
+@cindex throw, catch and
 
 @example
 struct catchtag
@@ -6748,6 +6999,8 @@ created since the catch.
 
 @node Symbols and Variables, Buffers and Textual Representation, Evaluation; Stack Frames; Bindings, Top
 @chapter Symbols and Variables
+@cindex symbols and variables
+@cindex variables, symbols and
 
 @menu
 * Introduction to Symbols::
@@ -6755,8 +7008,9 @@ created since the catch.
 * Symbol Values::
 @end menu
 
-@node Introduction to Symbols, Obarrays, Symbols and Variables, Symbols and Variables
+@node Introduction to Symbols
 @section Introduction to Symbols
+@cindex symbols, introduction to
 
   A symbol is basically just an object with four fields: a name (a
 string), a value (some Lisp object), a function (some Lisp object), and
@@ -6772,8 +7026,9 @@ property list is used as a more general mechanism of associating
 additional values with particular names, and once again the namespace is
 independent of the function and variable namespaces.
 
-@node Obarrays, Symbol Values, Introduction to Symbols, Symbols and Variables
+@node Obarrays
 @section Obarrays
+@cindex obarrays
 
   The identity of symbols with their names is accomplished through a
 structure called an obarray, which is just a poorly-implemented hash
@@ -6839,8 +7094,10 @@ returns the removed symbol. (Remember: You can't put the symbol back
 into any obarray.) Finally, @code{mapatoms} maps over all of the symbols
 in an obarray.
 
-@node Symbol Values,  , Obarrays, Symbols and Variables
+@node Symbol Values
 @section Symbol Values
+@cindex symbol values
+@cindex values, symbol
 
   The value field of a symbol normally contains a Lisp object.  However,
 a symbol can be @dfn{unbound}, meaning that it logically has no value.
@@ -6884,6 +7141,8 @@ well-documented in comments in @file{buffer.c}, @file{symbols.c}, and
 
 @node Buffers and Textual Representation, MULE Character Sets and Encodings, Symbols and Variables, Top
 @chapter Buffers and Textual Representation
+@cindex buffers and textual representation
+@cindex textual representation, buffers and
 
 @menu
 * Introduction to Buffers::     A buffer holds a block of text such as a file.
@@ -6894,8 +7153,9 @@ well-documented in comments in @file{buffer.c}, @file{symbols.c}, and
 * The Buffer Object::           The Lisp object corresponding to a buffer.
 @end menu
 
-@node Introduction to Buffers, The Text in a Buffer, Buffers and Textual Representation, Buffers and Textual Representation
+@node Introduction to Buffers
 @section Introduction to Buffers
+@cindex buffers, introduction to
 
   A buffer is logically just a Lisp object that holds some text.
 In this, it is like a string, but a buffer is optimized for
@@ -6947,8 +7207,10 @@ and @dfn{buffer of the selected window}, and the distinction between
 window. (This latter distinction is explained in detail in the section
 on windows.)
 
-@node The Text in a Buffer, Buffer Lists, Introduction to Buffers, Buffers and Textual Representation
+@node The Text in a Buffer
 @section The Text in a Buffer
+@cindex text in a buffer, the
+@cindex buffer, the text in a
 
   The text in a buffer consists of a sequence of zero or more
 characters.  A @dfn{character} is an integer that logically represents
@@ -7087,8 +7349,9 @@ in the internal Emacs buffer representation rather than in one of a
 number of possible alternative representations (e.g. EUC-encoded text,
 etc.).
 
-@node Buffer Lists, Markers and Extents, The Text in a Buffer, Buffers and Textual Representation
+@node Buffer Lists
 @section Buffer Lists
+@cindex buffer lists
 
   Recall earlier that buffers are @dfn{permanent} objects, i.e.  that
 they remain around until explicitly deleted.  This entails that there is
@@ -7123,8 +7386,10 @@ respectively.  You can also force a new buffer to be created using
 a unique name from this by appending a number, and then creates the
 buffer.  This is basically like the symbol operation @code{gensym}.
 
-@node Markers and Extents, Bufbytes and Emchars, Buffer Lists, Buffers and Textual Representation
+@node Markers and Extents
 @section Markers and Extents
+@cindex markers and extents
+@cindex extents, markers and
 
   Among the things associated with a buffer are things that are
 logically attached to certain buffer positions.  This can be used to
@@ -7163,13 +7428,17 @@ given the buffer.  Extents remain in a buffer until they are detached
 (which could happen as a result of text being deleted) or the buffer is
 deleted, and primitives do exist to enumerate the extents in a buffer.
 
-@node Bufbytes and Emchars, The Buffer Object, Markers and Extents, Buffers and Textual Representation
+@node Bufbytes and Emchars
 @section Bufbytes and Emchars
+@cindex Bufbytes and Emchars
+@cindex Emchars, Bufbytes and
 
   Not yet documented.
 
-@node The Buffer Object,  , Bufbytes and Emchars, Buffers and Textual Representation
+@node The Buffer Object
 @section The Buffer Object
+@cindex buffer object, the
+@cindex object, the buffer
 
   Buffers contain fields not directly accessible by the Lisp programmer.
 We describe them here, naming them by the names used in the C code.
@@ -7267,6 +7536,9 @@ or @code{nil}.
 
 @node MULE Character Sets and Encodings, The Lisp Reader and Compiler, Buffers and Textual Representation, Top
 @chapter MULE Character Sets and Encodings
+@cindex Mule character sets and encodings
+@cindex character sets and encodings, Mule
+@cindex encodings, Mule character sets and
 
   Recall that there are two primary ways that text is represented in
 XEmacs.  The @dfn{buffer} representation sees the text as a series of
@@ -7287,8 +7559,9 @@ representation is that it's compact and is compatible with ASCII.
 * CCL::
 @end menu
 
-@node Character Sets, Encodings, MULE Character Sets and Encodings, MULE Character Sets and Encodings
+@node Character Sets
 @section Character Sets
+@cindex character sets
 
   A character set (or @dfn{charset}) is an ordered set of characters.  A
 particular character in a charset is indexed using one or more
@@ -7368,8 +7641,10 @@ Bytes           Character set           Range
 
   This is a bit ad-hoc but gets the job done.
 
-@node Encodings, Internal Mule Encodings, Character Sets, MULE Character Sets and Encodings
+@node Encodings
 @section Encodings
+@cindex encodings, Mule
+@cindex Mule encodings
 
   An @dfn{encoding} is a way of numerically representing characters from
 one or more character sets.  If an encoding only encompasses one
@@ -7395,8 +7670,11 @@ encodings:
 * JIS7::
 @end menu
 
-@node Japanese EUC (Extended Unix Code), JIS7, Encodings, Encodings
+@node Japanese EUC (Extended Unix Code)
 @subsection Japanese EUC (Extended Unix Code)
+@cindex Japanese EUC (Extended Unix Code)
+@cindex EUC (Extended Unix Code), Japanese
+@cindex Extended Unix Code, Japanese EUC
 
 This encompasses the character sets Printing-ASCII, Japanese-JISX0201,
 and Japanese-JISX0208-Kana (half-width katakana, the right half of
@@ -7417,8 +7695,9 @@ Japanese-JISX0212        PC1 + 0x80 | PC2 + 0x80
 @end example
 
 
-@node JIS7,  , Japanese EUC (Extended Unix Code), Encodings
+@node JIS7
 @subsection JIS7
+@cindex JIS7
 
 This encompasses the character sets Printing-ASCII,
 Japanese-JISX0201-Roman (the left half of JISX0201; this character set
@@ -7452,8 +7731,11 @@ Escape sequence   ASCII equivalent   Meaning
 
   Initially, Printing-ASCII is invoked.
 
-@node Internal Mule Encodings, CCL, Encodings, MULE Character Sets and Encodings
+@node Internal Mule Encodings
 @section Internal Mule Encodings
+@cindex internal Mule encodings
+@cindex Mule encodings, internal
+@cindex encodings, internal Mule
 
 In XEmacs/Mule, each character set is assigned a unique number, called a
 @dfn{leading byte}.  This is used in the encodings of a character.
@@ -7498,8 +7780,11 @@ followed later by the exact details.)
 * Internal Character Encoding::
 @end menu
 
-@node Internal String Encoding, Internal Character Encoding, Internal Mule Encodings, Internal Mule Encodings
+@node Internal String Encoding
 @subsection Internal String Encoding
+@cindex internal string encoding
+@cindex string encoding, internal
+@cindex encoding, internal string
 
 ASCII characters are encoded using their position code directly.  Other
 characters are encoded using their leading byte followed by their
@@ -7548,8 +7833,11 @@ conditions.  For example, EUC satisfies only (2) and (3), while
 Shift-JIS and Big5 (not yet described) satisfy only (2). (All
 non-modal encodings must satisfy (2), in order to be unambiguous.)
 
-@node Internal Character Encoding,  , Internal String Encoding, Internal Mule Encodings
+@node Internal Character Encoding
 @subsection Internal Character Encoding
+@cindex internal character encoding
+@cindex character encoding, internal
+@cindex encoding, internal character
 
   One 19-bit word represents a single character.  The word is
 separated into three fields:
@@ -7583,8 +7871,9 @@ Composite                 0x1F             ?               ?
   Note that character codes 0 - 255 are the same as the ``binary encoding''
 described above.
 
-@node CCL,  , Internal Mule Encodings, MULE Character Sets and Encodings
+@node CCL
 @section CCL
+@cindex CCL
 
 @example
 CCL PROGRAM SYNTAX:
@@ -7751,11 +8040,15 @@ ReadJumpCondR:  11111 RRR c...c      Read1 and JumpCondR
 
 @node The Lisp Reader and Compiler, Lstreams, MULE Character Sets and Encodings, Top
 @chapter The Lisp Reader and Compiler
+@cindex Lisp reader and compiler, the
+@cindex reader and compiler, the Lisp
+@cindex compiler, the Lisp reader and
 
 Not yet documented.
 
 @node Lstreams, Consoles; Devices; Frames; Windows, The Lisp Reader and Compiler, Top
 @chapter Lstreams
+@cindex lstreams
 
   An @dfn{lstream} is an internal Lisp object that provides a generic
 buffering stream implementation.  Conceptually, you send data to the
@@ -7774,8 +8067,9 @@ blocking data together in order to achieve efficiency.
 * Lstream Methods::             Creating new lstream types.
 @end menu
 
-@node Creating an Lstream, Lstream Types, Lstreams, Lstreams
+@node Creating an Lstream
 @section Creating an Lstream
+@cindex lstream, creating an
 
 Lstreams come in different types, depending on what is being interfaced
 to.  Although the primitive for creating new lstreams is
@@ -7805,8 +8099,10 @@ and he's probably right.
   Open for writing, but never writes partial MULE characters.
 @end table
 
-@node Lstream Types, Lstream Functions, Creating an Lstream, Lstreams
+@node Lstream Types
 @section Lstream Types
+@cindex lstream types
+@cindex types, lstream
 
 @table @asis
 @item stdio
@@ -7830,8 +8126,9 @@ and he's probably right.
 @item encoding
 @end table
 
-@node Lstream Functions, Lstream Methods, Lstream Types, Lstreams
+@node Lstream Functions
 @section Lstream Functions
+@cindex lstream functions
 
 @deftypefun {Lstream *} Lstream_new (Lstream_implementation *@var{imp}, const char *@var{mode})
 Allocate and return a new Lstream.  This function is not really meant to
@@ -7913,8 +8210,9 @@ necessary storage structures, for example.
 Rewind the stream to the beginning.
 @end deftypefun
 
-@node Lstream Methods,  , Lstream Functions, Lstreams
+@node Lstream Methods
 @section Lstream Methods
+@cindex lstream methods
 
 @deftypefn {Lstream Method} ssize_t reader (Lstream *@var{stream}, unsigned char *@var{data}, size_t @var{size})
 Read some data from the stream's end and store it into @var{data}, which
@@ -7980,6 +8278,10 @@ Mark this object for garbage collection.  Same semantics as a standard
 
 @node Consoles; Devices; Frames; Windows, The Redisplay Mechanism, Lstreams, Top
 @chapter Consoles; Devices; Frames; Windows
+@cindex consoles; devices; frames; windows
+@cindex devices; frames; windows, consoles;
+@cindex frames; windows, consoles; devices;
+@cindex windows, consoles; devices; frames;
 
 @menu
 * Introduction to Consoles; Devices; Frames; Windows::
@@ -7988,8 +8290,12 @@ Mark this object for garbage collection.  Same semantics as a standard
 * The Window Object::
 @end menu
 
-@node Introduction to Consoles; Devices; Frames; Windows, Point, Consoles; Devices; Frames; Windows, Consoles; Devices; Frames; Windows
+@node Introduction to Consoles; Devices; Frames; Windows
 @section Introduction to Consoles; Devices; Frames; Windows
+@cindex consoles; devices; frames; windows, introduction to
+@cindex devices; frames; windows, introduction to consoles;
+@cindex frames; windows, introduction to consoles; devices;
+@cindex windows, introduction to consoles; devices; frames;
 
 A window-system window that you see on the screen is called a
 @dfn{frame} in Emacs terminology.  Each frame is subdivided into one or
@@ -8030,8 +8336,9 @@ selected, and changing the selected frame causes the remembered window
 within it to become the selected window.  Similar relationships apply
 for consoles to devices and devices to frames.
 
-@node Point, Window Hierarchy, Introduction to Consoles; Devices; Frames; Windows, Consoles; Devices; Frames; Windows
+@node Point
 @section Point
+@cindex point
 
   Recall that every buffer has a current insertion position, called
 @dfn{point}.  Now, two or more windows may be displaying the same buffer,
@@ -8051,7 +8358,7 @@ you must special-case on the selected window and retrieve the
 buffer's point instead.  This is related to why @code{save-window-excursion}
 does not save the selected window's value of @code{point}.
 
-@node Window Hierarchy, The Window Object, Point, Consoles; Devices; Frames; Windows
+@node Window Hierarchy
 @section Window Hierarchy
 @cindex window hierarchy
 @cindex hierarchy of windows
@@ -8149,8 +8456,10 @@ is @code{nil} but the @code{prev} points to itself. (#### This is an
 artifact that should be fixed.)
 @end enumerate
 
-@node The Window Object,  , Window Hierarchy, Consoles; Devices; Frames; Windows
+@node The Window Object
 @section The Window Object
+@cindex window object, the
+@cindex object, the window
 
   Windows have the following accessible fields:
 
@@ -8256,6 +8565,7 @@ this field is @code{nil}.
 
 @node The Redisplay Mechanism, Extents, Consoles; Devices; Frames; Windows, Top
 @chapter The Redisplay Mechanism
+@cindex redisplay mechanism, the
 
   The redisplay mechanism is one of the most complicated sections of
 XEmacs, especially from a conceptual standpoint.  This is doubly so
@@ -8281,8 +8591,9 @@ It Is Better To Be Fast Than Not To Be.
 * Redisplay Piece by Piece::
 @end menu
 
-@node Critical Redisplay Sections, Line Start Cache, The Redisplay Mechanism, The Redisplay Mechanism
+@node Critical Redisplay Sections
 @section Critical Redisplay Sections
+@cindex redisplay sections, critical
 @cindex critical redisplay sections
 
 Within this section, we are defenseless and assume that the
@@ -8313,7 +8624,7 @@ we simply return. #### We should abort instead.
 #### If a frame-size change does occur we should probably
 actually be preempting redisplay.
 
-@node Line Start Cache, Redisplay Piece by Piece, Critical Redisplay Sections, The Redisplay Mechanism
+@node Line Start Cache
 @section Line Start Cache
 @cindex line start cache
 
@@ -8374,9 +8685,9 @@ the part of the cache starting at where the modification occurs.
   In case you're wondering, the Second Golden Rule of Redisplay is not
 applicable.
 
-@node Redisplay Piece by Piece,  , Line Start Cache, The Redisplay Mechanism
+@node Redisplay Piece by Piece
 @section Redisplay Piece by Piece
-@cindex Redisplay Piece by Piece
+@cindex redisplay piece by piece
 
 As you can begin to see redisplay is complex and also not well
 documented. Chuck no longer works on XEmacs so this section is my take
@@ -8427,6 +8738,7 @@ display have been removed.
 
 @node Extents, Faces, The Redisplay Mechanism, Top
 @chapter Extents
+@cindex extents
 
 @menu
 * Introduction to Extents::     Extents are ranges over text, with properties.
@@ -8437,8 +8749,9 @@ display have been removed.
 * Extent Fragments::            Cached information useful for redisplay.
 @end menu
 
-@node Introduction to Extents, Extent Ordering, Extents, Extents
+@node Introduction to Extents
 @section Introduction to Extents
+@cindex extents, introduction to
 
   Extents are regions over a buffer, with a start and an end position
 denoting the region of the buffer included in the extent.  In
@@ -8459,8 +8772,9 @@ further work needing to be done.  It didn't work out that way,
 however, and just ended up complexifying and buggifying all the
 rest of the code.)
 
-@node Extent Ordering, Format of the Extent Info, Introduction to Extents, Extents
+@node Extent Ordering
 @section Extent Ordering
+@cindex extent ordering
 
   Extents are compared using memory indices.  There are two orderings
 for extents and both orders are kept current at all times.  The normal
@@ -8493,8 +8807,9 @@ theorem about the display order also applies to the e-order if you swap
 all occurrences of ``display order'' and ``e-order'', ``less than'' and
 ``greater than'', and ``extent start'' and ``extent end''.
 
-@node Format of the Extent Info, Zero-Length Extents, Extent Ordering, Extents
+@node Format of the Extent Info
 @section Format of the Extent Info
+@cindex extent info, format of the
 
   An extent-info structure consists of a list of the buffer or string's
 extents and a @dfn{stack of extents} that lists all of the extents over
@@ -8527,8 +8842,10 @@ not be aware of the fact that the extent list is implemented as an
 array, except for the fact that positions are integers (this should be
 generalized to handle integers and linked list equally well).
 
-@node Zero-Length Extents, Mathematics of Extent Ordering, Format of the Extent Info, Extents
+@node Zero-Length Extents
 @section Zero-Length Extents
+@cindex zero-length extents
+@cindex extents, zero-length
 
   Extents can be zero-length, and will end up that way if their endpoints
 are explicitly set that way or if their detachable property is @code{nil}
@@ -8556,10 +8873,10 @@ endpoint is open, the extent remains in the buffer, moving as necessary.
 exactly like markers and that open-closed, non-detachable zero-length
 extents behave like the ``point-type'' marker in Mule.
 
-@node Mathematics of Extent Ordering, Extent Fragments, Zero-Length Extents, Extents
+@node Mathematics of Extent Ordering
 @section Mathematics of Extent Ordering
+@cindex mathematics of extent ordering
 @cindex extent mathematics
-@cindex mathematics of extents
 @cindex extent ordering
 
 @cindex display order of extents
@@ -8691,9 +9008,10 @@ greater than @math{I} and thus it is greater than any extent in
 @math{S}, including @math{F}.  Otherwise, @math{F2} includes @math{I}
 and thus is in @math{S}, and thus @math{F2 >= F}.
 
-@node Extent Fragments,  , Mathematics of Extent Ordering, Extents
+@node Extent Fragments
 @section Extent Fragments
-@cindex extent fragment
+@cindex extent fragments
+@cindex fragments, extent
 
   Imagine that the buffer is divided up into contiguous, non-overlapping
 @dfn{runs} of text such that no extent starts or ends within a run
@@ -8715,11 +9033,13 @@ determining which extents overly a particular position.
 
 @node Faces, Glyphs, Extents, Top
 @chapter Faces
+@cindex faces
 
 Not yet documented.
 
 @node Glyphs, Specifiers, Faces, Top
 @chapter Glyphs
+@cindex glyphs
 
 Glyphs are graphical elements that can be displayed in XEmacs buffers or
 gutters. We use the term graphical element here in the broadest possible
@@ -8753,6 +9073,8 @@ Any action on a glyph first consults the cache before actually
 instantiating a widget.
 
 @section Glyph Instantiation
+@cindex glyph instantiation
+@cindex instantiation, glyph
 
 Glyph instantiation is a hairy topic and requires some explanation. The
 guts of glyph instantiation is contained within
@@ -8819,12 +9141,17 @@ governing-domain. The governing domain for an image-instance is
 determined using the governing_domain image-instance method.
 
 @section Widget-Glyphs
+@cindex widget-glyphs
 
 @section Widget-Glyphs in the MS-Windows Environment
+@cindex widget-glyphs in the MS-Windows environment
+@cindex MS-Windows environment, widget-glyphs in the
 
 To Do
 
 @section Widget-Glyphs in the X Environment
+@cindex widget-glyphs in the X environment
+@cindex X environment, widget-glyphs in the
 
 Widget-glyphs under X make heavy use of lwlib (@pxref{Lucid Widget
 Library}) for manipulating the native toolkit objects. This is primarily
@@ -8851,11 +9178,13 @@ the widget is and how to set its properties.
 
 @node Specifiers, Menus, Glyphs, Top
 @chapter Specifiers
+@cindex specifiers
 
 Not yet documented.
 
 @node Menus, Subprocesses, Specifiers, Top
 @chapter Menus
+@cindex menus
 
   A menu is set by setting the value of the variable
 @code{current-menubar} (which may be buffer-local) and then calling
@@ -8908,6 +9237,7 @@ description.
 
 @node Subprocesses, Interface to the X Window System, Menus, Top
 @chapter Subprocesses
+@cindex subprocesses
 
   The fields of a process are:
 
@@ -8981,6 +9311,7 @@ or @code{nil} if it is using pipes.
 
 @node Interface to the X Window System, Index, Subprocesses, Top
 @chapter Interface to the X Window System
+@cindex X Window System, interface to the
 
 Mostly undocumented.
 
@@ -8988,8 +9319,11 @@ Mostly undocumented.
 * Lucid Widget Library::        An interface to various widget sets.
 @end menu
 
-@node Lucid Widget Library, , , Interface to the X Window System
+@node Lucid Widget Library
 @section Lucid Widget Library
+@cindex Lucid Widget Library
+@cindex widget library, Lucid
+@cindex library, Lucid Widget
 
 Lwlib is extremely poorly documented and quite hairy.  The author(s)
 blame that on X, Xt, and Motif, with some justice, but also sufficient
@@ -9018,8 +9352,9 @@ interface.
 * Tab Controls::
 @end menu
 
-@node Generic Widget Interface, Scrollbars, , Lucid Widget Library
+@node Generic Widget Interface
 @subsection Generic Widget Interface
+@cindex widget interface, generic
 
 In general in any toolkit a widget may be a composite object.  In Xt,
 all widgets have an X window that they manage, but typically a complex
@@ -9098,20 +9433,28 @@ The @code{widget_instance} structure also contains a pointer to the root
 of its tree.  Widget instances are further confi
 
 
-@node Scrollbars, Menubars, Generic Widget Interface, Lucid Widget Library
+@node Scrollbars
 @subsection Scrollbars
+@cindex scrollbars
 
-@node Menubars, Checkboxes and Radio Buttons, Scrollbars, Lucid Widget Library
+@node Menubars
 @subsection Menubars
+@cindex menubars
 
-@node Checkboxes and Radio Buttons, Progress Bars, Menubars, Lucid Widget Library
+@node Checkboxes and Radio Buttons
 @subsection Checkboxes and Radio Buttons
+@cindex checkboxes and radio buttons
+@cindex radio buttons, checkboxes and
+@cindex buttons, checkboxes and radio
 
-@node Progress Bars, Tab Controls, Checkboxes and Radio Buttons, Lucid Widget Library
+@node Progress Bars
 @subsection Progress Bars
+@cindex progress bars
+@cindex bars, progress
 
-@node Tab Controls, , Progress Bars, Lucid Widget Library
+@node Tab Controls
 @subsection Tab Controls
+@cindex tab controls
 
 @include index.texi
 
index 88ec58f..4007d8e 100644 (file)
@@ -417,8 +417,8 @@ appears as the name of the symbol in the @sc{car} of the list.
      @result{} "C-x SPC M-y SPC LFD SPC TAB SPC RET SPC C-l 1 2 3"
 @end group
 @group
-(single-key-description 'kp_next)
-     @result{} "kp_next"
+(single-key-description 'kp-next)
+     @result{} "kp-next"
 @end group
 @group
 (single-key-description '(shift button1))
index 746dca5..68faa8d 100644 (file)
@@ -81,7 +81,7 @@ foo.1 : foo.man sedscript
 
 @noindent
 will fail when the build directory is not the source directory, because
-@file{foo.man} and @file{sedscript} are in the the source directory.
+@file{foo.man} and @file{sedscript} are in the source directory.
 
 When using GNU @code{make}, relying on @samp{VPATH} to find the source
 file will work in the case where there is a single dependency file,
@@ -249,9 +249,10 @@ Every Makefile should define the variable @code{INSTALL}, which is the
 basic command for installing a file into the system.
 
 Every Makefile should also define the variables @code{INSTALL_PROGRAM}
-and @code{INSTALL_DATA}.  (The default for each of these should be
-@code{$(INSTALL)}.)  Then it should use those variables as the commands
-for actual installation, for executables and nonexecutables
+and @code{INSTALL_DATA}.  (The default for @code{INSTALL_PROGRAM} should
+be @code{$(INSTALL)}; the default for @code{INSTALL_DATA} should be
+@code{$@{INSTALL@} -m 644}.)  Then it should use those variables as the
+commands for actual installation, for executables and nonexecutables
 respectively.  Use these variables as follows:
 
 @example
@@ -282,26 +283,28 @@ installed.
 Installation directories should always be named by variables, so it is
 easy to install in a nonstandard place.  The standard names for these
 variables are described below.  They are based on a standard filesystem
-layout; variants of it are used in SVR4, 4.4BSD, Linux, Ultrix v4, and
-other modern operating systems.
+layout; variants of it are used in SVR4, 4.4BSD, GNU/Linux, Ultrix v4,
+and other modern operating systems.
 
 These two variables set the root for the installation.  All the other
 installation directories should be subdirectories of one of these two,
 and nothing should be directly installed into these two directories.
 
-@table @samp
+@table @code
 @item prefix
+@vindex prefix
 A prefix used in constructing the default values of the variables listed
 below.  The default value of @code{prefix} should be @file{/usr/local}.
 When building the complete GNU system, the prefix will be empty and
 @file{/usr} will be a symbolic link to @file{/}.
 (If you are using Autoconf, write it as @samp{@@prefix@@}.)
 
-Running @samp{make install} with a different value of @code{prefix}
-from the one used to build the program should @var{not} recompile
-the program.
+Running @samp{make install} with a different value of @code{prefix} from
+the one used to build the program should @emph{not} recompile the
+program.
 
 @item exec_prefix
+@vindex exec_prefix
 A prefix used in constructing the default values of some of the
 variables listed below.  The default value of @code{exec_prefix} should
 be @code{$(prefix)}.
@@ -312,20 +315,22 @@ machine-specific files (such as executables and subroutine libraries),
 while @code{$(prefix)} is used directly for other directories.
 
 Running @samp{make install} with a different value of @code{exec_prefix}
-from the one used to build the program should @var{not} recompile the
+from the one used to build the program should @emph{not} recompile the
 program.
 @end table
 
 Executable programs are installed in one of the following directories.
 
-@table @samp
+@table @code
 @item bindir
+@vindex bindir
 The directory for installing executable programs that users can run.
 This should normally be @file{/usr/local/bin}, but write it as
 @file{$(exec_prefix)/bin}.
 (If you are using Autoconf, write it as @samp{@@bindir@@}.)
 
 @item sbindir
+@vindex sbindir
 The directory for installing executable programs that can be run from
 the shell, but are only generally useful to system administrators.  This
 should normally be @file{/usr/local/sbin}, but write it as
@@ -333,6 +338,7 @@ should normally be @file{/usr/local/sbin}, but write it as
 (If you are using Autoconf, write it as @samp{@@sbindir@@}.)
 
 @item libexecdir
+@vindex libexecdir
 @comment This paragraph adjusted to avoid overfull hbox --roland 5jul94
 The directory for installing executable programs to be run by other
 programs rather than by users.  This directory should normally be
@@ -507,7 +513,7 @@ And finally, you should set the following variable:
 @item srcdir
 The directory for the sources being compiled.  The value of this
 variable is normally inserted by the @code{configure} shell script.
-(If you are using Autoconf, use @samp{srcdir = @@srcdir@@}.)
+(If you are using Autconf, use @samp{srcdir = @@srcdir@@}.)
 @end table
 
 For example:
@@ -625,7 +631,8 @@ the installation commands.  @xref{Install Command Categories}.
 
 @item install-strip
 Like @code{install}, but strip the executable files while installing
-them.  In many cases, the definition of this target can be very simple:
+them.  In simple cases, this target can use the @code{install} target in
+a simple way:
 
 @smallexample
 install-strip:
@@ -633,6 +640,14 @@ install-strip:
                 install
 @end smallexample
 
+But if the package installs scripts as well as real executables, the
+@code{install-strip} target can't just refer to the @code{install}
+target; it has to strip the executables but not the scripts.
+
+@code{install-strip} should not strip the executables in the build
+directory which are being copied for installation.  It should only strip
+the copies that are installed.
+
 Normally we do not recommend stripping an executable unless you are sure
 the program has no bugs.  However, it can be reasonable to install a
 stripped executable for actual execution while saving the unstripped
@@ -747,7 +762,7 @@ The easiest way to do this is to create a subdirectory appropriately
 named, use @code{ln} or @code{cp} to install the proper files in it, and
 then @code{tar} that subdirectory.
 
-Compress the tar file file with @code{gzip}.  For example, the actual
+Compress the tar file with @code{gzip}.  For example, the actual
 distribution file for GCC version 1.40 is called @file{gcc-1.40.tar.gz}.
 
 The @code{dist} target should explicitly depend on all non-source files
@@ -795,6 +810,19 @@ installdirs: mkinstalldirs
                                 $(mandir)
 @end smallexample
 
+@noindent
+or, if you wish to support @env{DESTDIR},
+
+@smallexample
+# Make sure all installation directories (e.g. $(bindir))
+# actually exist by making them if necessary.
+installdirs: mkinstalldirs
+        $(srcdir)/mkinstalldirs \
+            $(DESTDIR)$(bindir) $(DESTDIR)$(datadir) \
+            $(DESTDIR)$(libdir) $(DESTDIR)$(infodir) \
+            $(DESTDIR)$(mandir)
+@end smallexample
+
 This rule should not modify the directories where compilation is done.
 It should do nothing but create installation directories.
 @end table
index f60c940..97f679f 100644 (file)
@@ -1,25 +1,25 @@
 @comment  node-name,  next,  previous,  up
 @node Customization Basics, Help, Edit, Top
 @chapter Customize key bindings and menus 
-@cindex .emacs
+@cindex init.el
 @cindex customize
 @findex eval-region
 
-  When you start Emacs, it reads the file @file{~/.emacs} in your home
-directory. You can use this file to initialize and customize Emacs to
-your liking. This file should contain lisp-code. You can customize your
-@file{.emacs} file to create new
-menus, disable menus, change key bindings, enable a minor mode, etc. Any
-kind of customization affects 
-only a particular Emacs job that you do them in. If you want to save
-your customizations `permanently' i.e. for future use also, you have to
-put it in your @samp{.emacs} file. After you make changes to your
-@file{.emacs} file and save it, the changes will be effective only after
-you start Emacs again i.e. for a new Emacs process. To try out some of
-the examples in this section, highlight that region and evaluate the
-region by giving the command @kbd{M-x eval-region}. You will be able to
-see the results of your customizations in that Emacs session only
-(@pxref{Lisp Eval,,,xemacs,XEmacs User's Manual}).
+When you start Emacs, it reads the file @file{~/.xemacs/init.el} in the
+@file{.xemacs/} subdirectory of your home directory. You can use this
+file to initialize and customize Emacs to your liking. This file should
+contain lisp-code. You can customize your @file{init.el} file to create
+new menus, disable menus, change key bindings, enable a minor mode,
+etc. Any kind of customization affects only a particular Emacs job that
+you do them in. If you want to save your customizations `permanently'
+i.e. for future use also, you have to put it in your @samp{init.el}
+file. After you make changes to your @file{init.el} file and save it, the
+changes will be effective only after you start Emacs again i.e. for a
+new Emacs process. To try out some of the examples in this section,
+highlight that region and evaluate the region by giving the command
+@kbd{M-x eval-region}. You will be able to see the results of your
+customizations in that Emacs session only (@pxref{Lisp
+Eval,,,xemacs,XEmacs User's Manual}).
 
 @comment  node-name,  next,  previous,  up
 @menu
@@ -43,7 +43,7 @@ define a particular behavior. You can customize the key @kbd{C-n} to
 move to the previous line by binding it to @b{previous-line} and
 @kbd{C-p} to move to the next line by binding it to @b{next-line}. To
 bind keys to globally run commands you need to use the following syntax
-in your @b{.emacs} file:
+in your @b{init.el} file:
 
 @cindex binding keys
 @example
@@ -52,7 +52,7 @@ in your @b{.emacs} file:
 @noindent
   Here, @code{global-set-key} is a function which will bind the
 @dfn{keys} to the specified @dfn{cmd}. For example, if you type the
-following in your @b{.emacs} file:
+following in your @b{init.el} file:
 
 @example
 (global-set-key "\C-p" 'next-line)
@@ -69,14 +69,14 @@ which means disable a command or turn off a feature. If you want to
 enable a command or turn on a particular feature use @samp{t}
 which stands for @samp{true}.  For example, if you do not wish @kbd{C-x
 C-c} to @samp{Exit Emacs} you can type the following expression in your
-@file{.emacs} file:
+@file{init.el} file:
 
 @example
 (global-set-key "\C-x\C-c" nil)
 @end example
 
 @noindent
-You might want to have this statement in your @file{.emacs} file because
+You might want to have this statement in your @file{init.el} file because
 its easy to hit this command by mistake and it could be annoying to exit
 Emacs unintentionally. There is a @b{Exit Emacs} option in the @b{File
 menu} which you might want to use instead. To make a particular key
@@ -174,7 +174,7 @@ add-menu-item: (@var{menu-name} @var{item-name} @var{function} @var{enabled-p}
 This function will add a menu item to a menu, creating the menu first if
 necessary. If the named item already exists, the menu will remain
 unchanged. For example, if you add the following example to your
-@file{.emacs} file or evaluate it (@pxref{Customization Basics}),
+@file{init.el} file or evaluate it (@pxref{Customization Basics}),
 
 @example
 (add-menu-item '("Edit") "Replace String" replace-string t "Clear")
index de40787..e7ab517 100644 (file)
@@ -6,12 +6,12 @@
 @cindex font-lock-mode
 
 You can modify the behavior of Emacs in minor ways permanently by
-putting your changes in your @file{.emacs} file. This file contains Lisp
+putting your changes in your @file{init.el} file. This file contains Lisp
 function call expressions. Each of these expressions will consist of a
 function name followed by arguments, all surrounded by parentheses. For
 example, to turn on the auto-fill-mode (i.e. break lines automatically
 when they become too long) , put the following  line in your
-@file{.emacs} file: 
+@file{init.el} file: 
 
 @example
 (add-hook 'text-mode-hook 
@@ -35,7 +35,7 @@ example above.
 
 Similarly, to enable the "font-lock mode" which displays your program in
 different fonts and colors(@pxref{Modes}), put the following in your
-@file{.emacs} file. The comments above the statement explain what the
+@file{init.el} file. The comments above the statement explain what the
 statements do.
 
 @example
@@ -64,7 +64,7 @@ functions, comments or other keywords  should be displayed in :
 
 @noindent
 For other customizations regarding the font-lock face, look at the file
-@file{/usr/local/lib/xemacs-19.11/etc/sample.emacs}. 
+@file{/usr/local/lib/xemacs-VERSION/etc/sample.init.el}. 
 
 
 
@@ -72,7 +72,7 @@ For other customizations regarding the font-lock face, look at the file
 @menu
 * Setting Variables::           Customizing Emacs variables
 * Init File::                   Some examples of Lisp expressions in
-                                .emacs file
+                                init.el file
 @end menu
 
 @node Setting Variables, Init File, Other Customizations, Other Customizations
@@ -132,7 +132,7 @@ Type "nil" and hit @key{RET}.  Now if you again use @kbd{M-x describe
 variable} , you will see that the new value of case-fold-search will be
 "nil" and your searches will be case-sensitive. This will be effective
 only for that Emacs session. If you want to change the value of a
-variable permanently put the following statement in your @file{.emacs}
+variable permanently put the following statement in your @file{init.el}
 file :
 
 @example
@@ -141,7 +141,7 @@ file :
 
 @noindent
 This statement will make searches case-sensitive only in the current
-buffer which is the @file{.emacs} file. This will not be very useful. To
+buffer which is the @file{init.el} file. This will not be very useful. To
 make searches case-sensitive globally in all buffers, use:
 
 @example
@@ -204,8 +204,8 @@ these options.
 @cindex init file examples
 
    For customizing Emacs, you need to put Lisp expressions in your
-@file{.emacs} file. The following are some useful Lisp expressions. If
-you find any of them useful, just type them in your @file{.emacs} file:
+@file{init.el} file. The following are some useful Lisp expressions. If
+you find any of them useful, just type them in your @file{init.el} file:
 
 @itemize @bullet
 @item 
@@ -290,7 +290,7 @@ This expression will make searches case sensitive:
 @noindent
 If we use "setq" instead of "setq-default" then searches will be
 case-sensitive only in the current buffer's local value. In this case the
-buffer would be the @file{.emacs} file. Since this would not be too
+buffer would be the @file{init.el} file. Since this would not be too
 helpful and we want to have case-sensitive searches in all buffers, we
 have to use "setq-default".
 
@@ -370,7 +370,7 @@ the modeline:
 @item
 If you don't want the text to be highlighted when you use commands for
 marking regions so as to use the @dfn{kill} and @dfn{yank} commands
-later, you can use the following expression in your @file{.emacs} file:
+later, you can use the following expression in your @file{init.el} file:
 
 @vindex zmacs-regions
 @example
@@ -410,7 +410,7 @@ To get rid of the menu, use :
 
 @item
 If you want an extensive menu-bar use the following expression in your
-@file{.emacs} file.
+@file{init.el} file.
 
 @example
 (load "big-menubar")
@@ -419,14 +419,14 @@ If you want an extensive menu-bar use the following expression in your
 @noindent
 If you want to write your own menus, you can look at some of the
 examples in
-@file{/usr/local/lib/xemacs-20.0/lisp/packages/big-menubar.el} file.
+@file{/usr/local/lib/xemacs-VERSION/lisp/packages/big-menubar.el} file.
 
 @end itemize
 
-   For more information on initializing your @file{.emacs} file,
+   For more information on initializing your @file{init.el} file,
 @xref{Init File,,,xemacs,XEmacs User's Manual}. You should also look at
-@file{/usr/local/lib/xemacs-20.0/etc/sample.emacs}, which is a sample
-@file{.emacs} file. It contains some of the commonly desired
+@file{/usr/local/lib/xemacs-VERSION/etc/sample.init.el}, which is a sample
+@file{init.el} file. It contains some of the commonly desired
 customizations in Emacs. 
 
 
index 3009e75..69df93f 100644 (file)
@@ -122,7 +122,7 @@ information.
 @item asm-mode
 @cindex asm-mode
 Use asm-mode for editing files of assembler code. Look at the file 
-@file{ /usr/local/lib/xemacs-19.11/lisp/modes/asm.el} for more
+@file{ /usr/local/lib/xemacs-VERSION/lisp/modes/asm.el} for more
 information. 
 
 @end table
@@ -169,8 +169,8 @@ menu item from the @b{Options} menu on the menu-bar at the
 top. If you wish to have this mode enabled permanently, choose 
 @b{Save Options} from the @b{Options} menu. @xref{Options Menu}, for
 more information on the Options menu.  You can also add statements in
-your @file{.emacs} file. For each major mode in which you wish to
-enable this minor mode, you need a statement in your @file{.emacs}
+your @file{init.el} file. For each major mode in which you wish to
+enable this minor mode, you need a statement in your @file{init.el}
 file. The following example shows how to enable the font-lock mode when
 the major mode is c-mode. 
 
index 2826aef..99be6d5 100644 (file)
@@ -186,7 +186,7 @@ Other Customizations
 
 * Setting Variables::           Customizing Emacs variables
 * Init File::                   Some examples of Lisp expressions in
-                                .emacs file
+                                init.el file
 
 Selecting and Moving Text
 
index d642ec0..c2fa3ab 100644 (file)
@@ -383,11 +383,11 @@ M-x find-file-other-window (bound to keys: C-x 4 f, C-x 4 C-f)
 @end example 
 
 @item Syntax Highlighting
-You can customize your @code{.emacs} file to include the font-lock mode
+You can customize your @code{init.el} file to include the font-lock mode
 so that when you select this item, the comments will be displayed in one
 face, strings in another, reserved words in another, and so
 on. @xref{Customization,,,xemacs,XEmacs User's Manual}, for more
-information on customizing @code{.emacs} file.  After selecting this
+information on customizing @code{init.el} file.  After selecting this
 item, you will find your code a lot easier to read. When @b{Fonts} is
 selected, different parts of the program will appear in different
 Fonts. When @b{Colors} is selected, then the program will be displayed
@@ -433,7 +433,7 @@ available will be selecting that buffer.
 
 @item Save Options
 Selecting this item will save the current settings of your Options 
-menu to your @code{.emacs} file so that the next time you start XEmacs,
+menu to your @code{init.el} file so that the next time you start XEmacs,
 you won't need to select the options again.
 @end table
 
index 7889e30..bcb19fa 100644 (file)
@@ -3,7 +3,7 @@
 @setfilename ../info/standards.info
 @settitle GNU Coding Standards
 @c This date is automagically updated when you save this file:
-@set lastupdate June 24, 1999
+@set lastupdate February 21, 2001
 @c %**end of header
 
 @ifinfo
@@ -17,6 +17,12 @@ END-INFO-DIR-ENTRY
 @c @setchapternewpage odd
 @setchapternewpage off
 
+@c Put everything in one index (arbitrarily chosen to be the concept index).
+@syncodeindex fn cp
+@syncodeindex ky cp
+@syncodeindex pg cp
+@syncodeindex vr cp
+
 @c This is used by a cross ref in make-stds.texi
 @set CODESTD  1
 @iftex
@@ -28,7 +34,7 @@ END-INFO-DIR-ENTRY
 
 @ifinfo
 GNU Coding Standards
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
 
 Permission is granted to make and distribute verbatim copies of
 this manual provided the copyright notice and this permission notice
@@ -59,7 +65,7 @@ by the Free Software Foundation.
 @page
 
 @vskip 0pt plus 1filll
-Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
 
 Permission is granted to make and distribute verbatim copies of
 this manual provided the copyright notice and this permission notice
@@ -92,6 +98,7 @@ Last updated @value{lastupdate}.
 * Documentation::           Documenting Programs
 * Managing Releases::       The Release Process
 * References::              References to Non-Free Software or Documentation
+* Index::
 @end menu
 
 @node Preface
@@ -106,7 +113,7 @@ even if you write in another programming language.  The rules often
 state reasons for writing in a certain way.
 
 Corrections or suggestions for this document should be sent to
-@email{gnu@@gnu.org}.  If you make a suggestion, please include a
+@email{bug-standards@@gnu.org}.  If you make a suggestion, please include a
 suggested new wording for it; our time is limited.  We prefer a context
 diff to the @file{standards.texi} or @file{make-stds.texi} files, but if
 you don't have those files, please mail your suggestion anyway.
@@ -114,19 +121,34 @@ you don't have those files, please mail your suggestion anyway.
 This release of the GNU Coding Standards was last updated
 @value{lastupdate}.
 
+@cindex where to obtain @code{standards.texi}
+@cindex downloading this manual
+If you did not obtain this file directly from the GNU project and
+recently, please check for a newer version.  You can ftp the GNU Coding
+Standards from any GNU FTP host in the directory
+@file{/pub/gnu/standards/}.  The GNU Coding Standards are available
+there in several different formats: @file{standards.text},
+@file{standards.texi}, @file{standards.info}, and @file{standards.dvi}.
+The GNU Coding Standards are also available on the GNU World Wide Web
+server: @uref{http://www.gnu.org/prep/standards_toc.html}.
+
 @node Legal Issues
 @chapter Keeping Free Software Free
+@cindex legal aspects
 
 This @value{CHAPTER} discusses how you can make sure that GNU software
-remains unencumbered.
+avoids legal difficulties, and other related issues.
 
 @menu
 * Reading Non-Free Code::       Referring to Proprietary Programs
 * Contributions::               Accepting Contributions
+* Trademarks::                  How We Deal with Trademark Issues
 @end menu
 
 @node Reading Non-Free Code
 @section Referring to Proprietary Programs
+@cindex proprietary programs
+@cindex avoiding proprietary code
 
 Don't in any circumstances refer to Unix source code for or during
 your work on GNU!  (Or to any other proprietary programs.)
@@ -158,9 +180,10 @@ Or turn some parts of the program into independently usable libraries.
 Or use a simple garbage collector instead of tracking precisely when
 to free memory, or use a new GNU facility such as obstacks.
 
-
 @node Contributions
 @section Accepting Contributions
+@cindex legal papers
+@cindex accepting contributions
 
 If the program you are working on is copyrighted by the Free Software
 Foundation, then when someone else sends you a piece of code to add to
@@ -203,38 +226,122 @@ We have more detailed advice for maintainers of programs; if you have
 reached the stage of actually maintaining a program for GNU (whether
 released or not), please ask us for a copy.
 
+@node Trademarks
+@section Trademarks
+@cindex trademarks
+
+Please do not include any trademark acknowledgements in GNU software
+packages or documentation.
+
+Trademark acknowledgements are the statements that such-and-such is a
+trademark of so-and-so.  The GNU Project has no objection to the basic
+idea of trademarks, but these acknowledgements feel like kowtowing, so
+we don't use them.  There is no legal requirement for them.
+
+What is legally required, as regards other people's trademarks, is to
+avoid using them in ways which a reader might read as naming or labeling
+our own programs or activities.  For example, since ``Objective C'' is
+(or at least was) a trademark, we made sure to say that we provide a
+``compiler for the Objective C language'' rather than an ``Objective C
+compiler''.  The latter is meant to be short for the former, but it does
+not explicitly state the relationship, so it could be misinterpreted as
+using ``Objective C'' as a label for the compiler rather than for the
+language.
+
 @node Design Advice
 @chapter General Program Design
+@cindex program design
 
 This @value{CHAPTER} discusses some of the issues you should take into
 account when designing your program.
 
+@c                         Standard or ANSI C
+@c
+@c In 1989 the American National Standards Institute (ANSI) standardized
+@c C   as  standard  X3.159-1989.    In  December   of  that   year  the
+@c International Standards Organization ISO  adopted the ANSI C standard
+@c making  minor changes.   In 1990  ANSI then  re-adopted  ISO standard
+@c C. This version of C is known as either ANSI C or Standard C.
+
+@c A major revision of the C Standard appeared in 1999.
+
 @menu
+* Source Language::             Which languges to use.
 * Compatibility::               Compatibility with other implementations
 * Using Extensions::            Using non-standard features
-* ANSI C::                      Using ANSI C features
-* Source Language::             Using languages other than C
+* Standard C::                  Using Standard C features
 @end menu
 
+@node Source Language
+@section Which Languages to Use
+@cindex programming languges
+
+When you want to use a language that gets compiled and runs at high
+speed, the best language to use is C.  Using another language is like
+using a non-standard feature: it will cause trouble for users.  Even if
+GCC supports the other language, users may find it inconvenient to have
+to install the compiler for that other language in order to build your
+program.  For example, if you write your program in C++, people will
+have to install the GNU C++ compiler in order to compile your program.
+
+C has one other advantage over C++ and other compiled languages: more
+people know C, so more people will find it easy to read and modify the
+program if it is written in C.
+
+So in general it is much better to use C, rather than the
+comparable alternatives.
+
+But there are two exceptions to that conclusion:
+
+@itemize @bullet
+@item
+It is no problem to use another language to write a tool specifically
+intended for use with that language.  That is because the only people
+who want to build the tool will be those who have installed the other
+language anyway.
+
+@item
+If an application is of interest only to a narrow part of the community,
+then the question of which language it is written in has less effect on
+other people, so you may as well please yourself.
+@end itemize
+
+Many programs are designed to be extensible: they include an interpreter
+for a language that is higher level than C.  Often much of the program
+is written in that language, too.  The Emacs editor pioneered this
+technique.
+
+@cindex GUILE
+The standard extensibility interpreter for GNU software is GUILE, which
+implements the language Scheme (an especially clean and simple dialect
+of Lisp).  @uref{http://www.gnu.org/software/guile/}.  We don't reject
+programs written in other ``scripting languages'' such as Perl and
+Python, but using GUILE is very important for the overall consistency of
+the GNU system.
+
 @node Compatibility
 @section Compatibility with Other Implementations
+@cindex compatibility with C and @sc{posix} standards
+@cindex @sc{posix} compatibility
 
 With occasional exceptions, utility programs and libraries for GNU
 should be upward compatible with those in Berkeley Unix, and upward
-compatible with @sc{ansi} C if @sc{ansi} C specifies their behavior, and
-upward compatible with @sc{posix} if @sc{posix} specifies their
-behavior.
+compatible with Standard C if Standard C specifies their
+behavior, and upward compatible with @sc{posix} if @sc{posix} specifies
+their behavior.
 
 When these standards conflict, it is useful to offer compatibility
 modes for each of them.
 
-@sc{ansi} C and @sc{posix} prohibit many kinds of extensions.  Feel free
-to make the extensions anyway, and include a @samp{--ansi},
+@cindex options for compatibility
+Standard C and @sc{posix} prohibit many kinds of extensions.  Feel
+free to make the extensions anyway, and include a @samp{--ansi},
 @samp{--posix}, or @samp{--compatible} option to turn them off.
 However, if the extension has a significant chance of breaking any real
-programs or scripts, then it is not really upward compatible.  Try to
-redesign its interface.
+programs or scripts, then it is not really upward compatible.  So you
+should try to redesign its interface to make it upward compatible.
 
+@cindex @code{POSIXLY_CORRECT}, environment variable
 Many GNU programs suppress extensions that conflict with @sc{posix} if the
 environment variable @code{POSIXLY_CORRECT} is defined (even if it is
 defined with a null value).  Please make your program recognize this
@@ -246,10 +353,12 @@ completely with something totally different and better.  (For example,
 @code{vi} is replaced with Emacs.)  But it is nice to offer a compatible
 feature as well.  (There is a free @code{vi} clone, so we offer it.)
 
-Additional useful features not in Berkeley Unix are welcome.
+Additional useful features are welcome regardless of whether
+there is any precedent for them.
 
 @node Using Extensions
 @section Using Non-standard Features
+@cindex non-standard extensions
 
 Many GNU facilities that already exist support a number of convenient
 extensions over the comparable Unix facilities.  Whether to use these
@@ -270,36 +379,33 @@ straightforwardly do without them, but to use the extensions if they
 are a big improvement.
 
 An exception to this rule are the large, established programs (such as
-Emacs) which run on a great variety of systems.  Such programs would
-be broken by use of GNU extensions.
+Emacs) which run on a great variety of systems.  Using GNU extensions in
+such programs would make many users unhappy, so we don't do that.
 
-Another exception is for programs that are used as part of
-compilation: anything that must be compiled with other compilers in
-order to bootstrap the GNU compilation facilities.  If these require
-the GNU compiler, then no one can compile them without having them
-installed already.  That would be no good.
+Another exception is for programs that are used as part of compilation:
+anything that must be compiled with other compilers in order to
+bootstrap the GNU compilation facilities.  If these require the GNU
+compiler, then no one can compile them without having them installed
+already.  That would be extremely troublesome in certain cases.
 
-@node ANSI C
-@section @sc{ansi} C and pre-@sc{ansi} C
+@node Standard C
+@section Standard C and Pre-Standard C
+@cindex @sc{ansi} C standard
 
-Do not ever use the ``trigraph'' feature of @sc{ansi} C.
+1989 Standard C is widespread enough now that it is ok to use its
+features in new programs.  There is one exception: do not ever use the
+``trigraph'' feature of Standard C.
 
-@sc{ansi} C is widespread enough now that it is ok to write new programs
-that use @sc{ansi} C features (and therefore will not work in
-non-@sc{ansi} compilers).  And if a program is already written in
-@sc{ansi} C, there's no need to convert it to support non-@sc{ansi}
-compilers.
+1999 Standard C is not widespread yet, so please do not require its
+features in programs.  It is ok to use its features if they are present.
 
-If you don't know non-@sc{ansi} C, there's no need to learn it; just
-write in @sc{ansi} C.
+However, it is easy to support pre-standard compilers in most programs,
+so if you know how to do that, feel free.  If a program you are
+maintaining has such support, you should try to keep it working.
 
-However, it is easy to support non-@sc{ansi} compilers in most programs,
-so you might still consider doing so when you write a program.  And if a
-program you are maintaining has such support, you should try to keep it
-working.
-
-To support pre-@sc{ansi} C, instead of writing function definitions in
-@sc{ansi} prototype form,
+@cindex function prototypes
+To support pre-standard C, instead of writing function definitions in
+standard prototype form,
 
 @example
 int
@@ -308,7 +414,7 @@ foo (int x, int y)
 @end example
 
 @noindent
-write the definition in pre-@sc{ansi} style like this,
+write the definition in pre-standard style like this,
 
 @example
 int
@@ -325,9 +431,9 @@ int foo (int, int);
 @end example
 
 You need such a declaration anyway, in a header file, to get the benefit
-of @sc{ansi} C prototypes in all the files where the function is called.
-And once you have the declaration, you normally lose nothing by writing
-the function definition in the pre-@sc{ansi} style.
+of prototypes in all the files where the function is called.  And once
+you have the declaration, you normally lose nothing by writing the
+function definition in the pre-standard style.
 
 This technique does not work for integer types narrower than @code{int}.
 If you think of an argument as being of a type narrower than @code{int},
@@ -338,72 +444,52 @@ example, if a function argument needs to hold the system type
 @code{dev_t}, you run into trouble, because @code{dev_t} is shorter than
 @code{int} on some machines; but you cannot use @code{int} instead,
 because @code{dev_t} is wider than @code{int} on some machines.  There
-is no type you can safely use on all machines in a non-@sc{ansi}
-definition.  The only way to support non-@sc{ansi} C and pass such an
+is no type you can safely use on all machines in a non-standard
+definition.  The only way to support non-standard C and pass such an
 argument is to check the width of @code{dev_t} using Autoconf and choose
 the argument type accordingly.  This may not be worth the trouble.
 
-@node Source Language
-@section Using Languages Other Than C
-
-Using a language other than C is like using a non-standard feature: it
-will cause trouble for users.  Even if GCC supports the other language,
-users may find it inconvenient to have to install the compiler for that
-other language in order to build your program.  For example, if you
-write your program in C++, people will have to install the C++ compiler
-in order to compile your program.  Thus, it is better if you write in C.
+In order to support pre-standard compilers that do not recognize
+prototypes, you may want to use a preprocessor macro like this:
 
-But there are three situations when there is no disadvantage in using
-some other language:
-
-@itemize @bullet
-@item
-It is okay to use another language if your program contains an
-interpreter for that language.
-
-For example, if your program links with GUILE, it is ok to write part of
-the program in Scheme or another language supported by GUILE.
-
-@item
-It is okay to use another language in a tool specifically intended for
-use with that language.
-
-This is okay because the only people who want to build the tool will be
-those who have installed the other language anyway.
-
-@item
-If an application is of interest to a narrow community, then perhaps
-it's not important if the application is inconvenient to install.
-@end itemize
-
-C has one other advantage over C++ and other compiled languages: more
-people know C, so more people will find it easy to read and modify the
-program if it is written in C.
+@example
+/* Declare the prototype for a general external function.  */
+#if defined (__STDC__) || defined (WINDOWSNT)
+#define P_(proto) proto
+#else
+#define P_(proto) ()
+#endif
+@end example
 
 @node Program Behavior
 @chapter Program Behavior for All Programs
 
-This @value{CHAPTER} describes how to write robust software. It also
-describes general standards for error messages, the command line interface,
-and how libraries should behave.
+This @value{CHAPTER} describes conventions for writing robust
+software.  It also describes general standards for error messages, the
+command line interface, and how libraries should behave.
 
 @menu
 * Semantics::                   Writing robust programs
 * Libraries::                   Library behavior
 * Errors::                      Formatting error messages
-* User Interfaces::             Standards for command line interfaces
-* Option Table::                Table of long options.
+* User Interfaces::             Standards about interfaces generally
+* Graphical Interfaces::        Standards for graphical interfaces
+* Command-Line Interfaces::     Standards for command line interfaces
+* Option Table::                Table of long options
 * Memory Usage::                When and how to care about memory needs
+* File Usage::                  Which files to use, and where
 @end menu
 
 @node Semantics
 @section Writing Robust Programs
 
+@cindex arbitrary limits on data
 Avoid arbitrary limits on the length or number of @emph{any} data
 structure, including file names, lines, files, and symbols, by allocating
 all data structures dynamically.  In most Unix utilities, ``long lines
 are silently truncated''.  This is not acceptable in a GNU utility.
 
+@cindex @code{NUL} characters
 Utilities reading files should not drop NUL characters, or any other
 nonprinting characters @emph{including those with codes above 0177}.
 The only sensible exceptions would be utilities specifically intended
@@ -413,6 +499,7 @@ Whenever possible, try to make programs work properly with
 sequences of bytes that represent multibyte characters, using encodings
 such as UTF-8 and others.
 
+@cindex error messages
 Check every system call for an error return, unless you know you wish to
 ignore errors.  Include the system error text (from @code{perror} or
 equivalent) in @emph{every} error message resulting from a failing
@@ -420,6 +507,8 @@ system call, as well as the name of the file if any and the name of the
 utility.  Just ``cannot open foo.c'' or ``stat failed'' is not
 sufficient.
 
+@cindex @code{malloc} return value
+@cindex memory allocation failure
 Check every call to @code{malloc} or @code{realloc} to see if it
 returned zero.  Check @code{realloc} even if you are making the block
 smaller; in a system that rounds block sizes to a power of 2,
@@ -441,6 +530,7 @@ user), it is better to abort the command and return to the command
 reader loop.  This allows the user to kill other processes to free up
 virtual memory, and then try the command again.
 
+@cindex command-line arguments, decoding
 Use @code{getopt_long} to decode arguments, unless the argument syntax
 makes this unreasonable.
 
@@ -455,6 +545,7 @@ are less likely to work compatibly.  If you need to find all the files
 in a directory, use @code{readdir} or some other high-level interface.
 These are supported compatibly by GNU.
 
+@cindex signal handling
 The preferred signal handling facilities are the BSD variant of
 @code{signal}, and the @sc{posix} @code{sigaction} function; the
 alternative USG @code{signal} interface is an inferior design.
@@ -466,6 +557,7 @@ systems running GNU libc version 1, you should include
 behavior.  It is up to you whether to support systems where
 @code{signal} has only the USG behavior, or give up on them.
 
+@cindex impossible conditions
 In error checks that detect ``impossible'' conditions, just abort.
 There is usually no point in printing any message.  These checks
 indicate the existence of bugs.  Whoever wants to fix the bugs will have
@@ -480,12 +572,28 @@ bits (0 through 255).  A single run of the program might have 256
 errors; if you try to return 256 as the exit status, the parent process
 will see 0 as the status, and it will appear that the program succeeded.
 
+@cindex temporary files
+@cindex @code{TMPDIR} environment variable
 If you make temporary files, check the @code{TMPDIR} environment
 variable; if that variable is defined, use the specified directory
 instead of @file{/tmp}.
 
+In addition, be aware that there is a possible security problem when
+creating temporary files in world-writable directories.  In C, you can
+avoid this problem by creating temporary files in this manner:
+
+@example
+fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0600);
+@end example
+
+@noindent
+or by using the @code{mkstemps} function from libiberty.
+
+In bash, use @code{set -C} to avoid this problem.
+
 @node Libraries
 @section Library Behavior
+@cindex libraries
 
 Try to make library functions reentrant.  If they need to do dynamic
 storage allocation, at least try to avoid any nonreentrancy aside from
@@ -505,16 +613,18 @@ together, so that no reasonable program could use one without the
 other; then they can both go in the same file.
 
 External symbols that are not documented entry points for the user
-should have names beginning with @samp{_}.  They should also contain
-the chosen name prefix for the library, to prevent collisions with
-other libraries.  These can go in the same files with user entry
-points if you like.
+should have names beginning with @samp{_}.  The @samp{_} should be
+followed by the chosen name prefix for the library, to prevent
+collisions with other libraries.  These can go in the same files with
+user entry points if you like.
 
 Static functions and variables can be used as you like and need not
 fit any naming convention.
 
 @node Errors
 @section Formatting Error Messages
+@cindex formatting error messages
+@cindex error messages, formatting
 
 Error messages from compilers should look like this:
 
@@ -574,8 +684,10 @@ usage messages, should start with a capital letter.  But they should not
 end with a period.
 
 @node User Interfaces
-@section Standards for Command Line Interfaces
+@section Standards for Interfaces Generally
 
+@cindex program name and its behavior
+@cindex behavior, dependent on program's name
 Please don't make the behavior of a utility depend on the name used
 to invoke it.  It is useful sometimes to make a link to a utility
 with a different name, and that should not change what it does.
@@ -583,6 +695,7 @@ with a different name, and that should not change what it does.
 Instead, use a run time option or a compilation switch or both
 to select among the alternate behaviors.
 
+@cindex output device and program's behavior
 Likewise, please don't make the behavior of the program depend on the
 type of output device it is used with.  Device independence is an
 important principle of the system's design; do not compromise it merely
@@ -604,6 +717,34 @@ output device type.  For example, we provide a @code{dir} program much
 like @code{ls} except that its default output format is always
 multi-column format.
 
+@node Graphical Interfaces
+@section Standards for Graphical Interfaces
+@cindex graphical user interface
+
+@cindex gtk
+When you write a program that provides a graphical user interface,
+please make it work with X Windows and the GTK toolkit unless the
+functionality specifically requires some alternative (for example,
+``displaying jpeg images while in console mode'').
+
+In addition, please provide a command-line interface to control the
+functionality.  (In many cases, the graphical user interface can be a
+separate program which invokes the command-line program.)  This is
+so that the same jobs can be done from scripts.
+
+@cindex corba
+@cindex gnome
+Please also consider providing a CORBA interface (for use from GNOME), a
+library interface (for use from C), and perhaps a keyboard-driven
+console interface (for use by users from console mode).  Once you are
+doing the work to provide the functionality and the graphical interface,
+these won't be much extra work.
+
+@node Command-Line Interfaces
+@section Standards for Command Line Interfaces
+@cindex command-line interface
+
+@findex getopt
 It is a good idea to follow the @sc{posix} guidelines for the
 command-line options of a program.  The easiest way to do this is to use
 @code{getopt} to parse them.  Note that the GNU version of @code{getopt}
@@ -611,6 +752,7 @@ will normally permit options anywhere among the arguments unless the
 special argument @samp{--} is used.  This is not what @sc{posix}
 specifies; it is a GNU extension.
 
+@cindex long-named options
 Please define long-named options that are equivalent to the
 single-letter Unix-style options.  We hope to make GNU more user
 friendly this way.  This is easy to do with the GNU function
@@ -630,16 +772,20 @@ file name as an ordinary argument for compatibility, try to provide an
 option as another way to specify it.  This will lead to more consistency
 among GNU utilities, and fewer idiosyncracies for users to remember.
 
+@cindex standard command-line options
 All programs should support two standard options: @samp{--version}
 and @samp{--help}.
 
 @table @code
+@cindex @samp{--version} option
 @item --version
 This option should direct the program to print information about its name,
 version, origin and legal status, all on standard output, and then exit
 successfully.  Other options and arguments should be ignored once this
 is seen, and the program should not perform its normal function.
 
+@cindex canonical name of a program
+@cindex program's canonical name
 The first line is meant to be easy for a program to parse; the version
 number proper starts after the last space.  In addition, it contains
 the canonical name for this program, in this format:
@@ -712,12 +858,15 @@ versions' changes.  You don't have to mention the name of the program in
 these notices, if that is inconvenient, since it appeared in the first
 line.
 
+@cindex @samp{--help} option
 @item --help
 This option should output brief documentation for how to invoke the
 program, on standard output, then exit successfully.  Other options and
 arguments should be ignored once this is seen, and the program should
 not perform its normal function.
 
+@cindex address for bug reports
+@cindex bug reports
 Near the end of the @samp{--help} option's output there should be a line
 that says where to mail bug reports.  It should have this format:
 
@@ -728,11 +877,13 @@ Report bugs to @var{mailing-address}.
 
 @node Option Table
 @section Table of Long Options
+@cindex long option names
+@cindex table of long options
 
 Here is a table of long options used by GNU programs.  It is surely
 incomplete, but we aim to list all the options that a new program might
 want to be compatible with.  If you use names not already in the table,
-please send @email{gnu@@gnu.org} a list of them, with their
+please send @email{bug-standards@@gnu.org} a list of them, with their
 meanings, so we can update the table.
 
 @c Please leave newlines between items in this table; it's much easier
@@ -1104,6 +1255,9 @@ Used to ask for brief usage information.
 @item hide-control-chars
 @samp{-q} in @code{ls}.
 
+@item html
+In @code{makeinfo}, output HTML.  
+
 @item idle
 @samp{-u} in @code{who}.
 
@@ -1164,6 +1318,10 @@ Used to ask for brief usage information.
 @item info
 @samp{-i}, @samp{-l}, and @samp{-m} in Finger.
 
+@item init-file
+In some programs, specify the name of the file to read as the user's
+init file.
+
 @item initial
 @samp{-i} in @code{expand}.
 
@@ -1182,6 +1340,9 @@ Used to ask for brief usage information.
 @item intermix-type
 @samp{-p} in @code{shar}.
 
+@item iso-8601
+Used in @code{date}
+
 @item jobs
 @samp{-j} in Make.
 
@@ -1835,8 +1996,9 @@ Print the version number.
 
 @node Memory Usage
 @section Memory Usage
+@cindex memory usage
 
-If it typically uses just a few meg of memory, don't bother making any
+If a program typically uses just a few meg of memory, don't bother making any
 effort to reduce memory usage.  For example, if it is impractical for
 other reasons to operate on files more than a few meg long, it is
 reasonable to read entire input files into core to operate on them.
@@ -1852,6 +2014,23 @@ files that are bigger than will fit in core all at once.
 If your program creates complicated data structures, just make them in
 core and give a fatal error if @code{malloc} returns zero.
 
+@node File Usage
+@section File Usage
+@cindex file usage
+
+Programs should be prepared to operate when @file{/usr} and @file{/etc}
+are read-only file systems.  Thus, if the program manages log files,
+lock files, backup files, score files, or any other files which are
+modified for internal purposes, these files should not be stored in
+@file{/usr} or @file{/etc}.
+
+There are two exceptions.  @file{/etc} is used to store system
+configuration information; it is reasonable for a program to modify
+files in @file{/etc} when its job is to update the system configuration.
+Also, if the user explicitly asks to modify one file in a directory, it
+is reasonable for the program to store other files in the same
+directory.
+
 @node Writing C
 @chapter Making The Best Use of C
 
@@ -1872,7 +2051,10 @@ when writing GNU software.
 
 @node Formatting
 @section Formatting Your Source Code
+@cindex formatting source code
 
+@cindex open brace
+@cindex braces, in C source
 It is important to put the open-brace that starts the body of a C
 function in column zero, and avoid putting any other open-brace or
 open-parenthesis or open-bracket in column zero.  Several tools look
@@ -1894,7 +2076,8 @@ concat (s1, s2)        /* Name starts in column zero here */
 @end example
 
 @noindent
-or, if you want to use @sc{ansi} C, format the definition like this:
+or, if you want to use Standard C syntax, format the definition like
+this:
 
 @example
 static char *
@@ -1904,7 +2087,7 @@ concat (char *s1, char *s2)
 @}
 @end example
 
-In @sc{ansi} C, if the arguments don't fit nicely on one line,
+In Standard C, if the arguments don't fit nicely on one line,
 split it like this:
 
 @example
@@ -1914,7 +2097,25 @@ lots_of_args (int an_integer, long a_long, short a_short,
 @dots{}
 @end example
 
-For the body of the function, we prefer code formatted like this:
+The rest of this section gives our recommendations for other aspects of
+C formatting style, which is also the default style of the @code{indent}
+program in version 1.2 and newer.  It corresponds to the options
+
+@smallexample
+-nbad -bap -nbc -bbo -bl -bli2 -bls -ncdb -nce -cp1 -cs -di2
+-ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -pcs -psl -nsc -nsob
+@end smallexample
+
+We don't think of these recommendations as requirements, because it
+causes no problems for users if two different programs have different
+formatting styles.
+
+But whatever style you use, please use it consistently, since a mixture
+of styles within one program tends to look ugly.  If you are
+contributing changes to an existing program, please follow the style of
+that program.
+
+For the body of the function, our recommended style looks like this:
 
 @example
 if (x < foo (y, z))
@@ -1930,12 +2131,14 @@ else
   @}
 @end example
 
+@cindex spaces before open-paren
 We find it easier to read a program when it has spaces before the
 open-parentheses and after the commas.  Especially after the commas.
 
 When you split an expression into multiple lines, split it
 before an operator, not after one.  Here is the right way:
 
+@cindex expressions, splitting
 @example
 if (foo_this_is_long && bar > win (x, y, z)
     && remaining_condition)
@@ -1960,14 +2163,15 @@ mode = ((inmode[j] == VOIDmode
 
 Insert extra parentheses so that Emacs will indent the code properly.
 For example, the following indentation looks nice if you do it by hand,
-but Emacs would mess it up:
 
 @example
 v = rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000
     + rup->ru_stime.tv_sec*1000 + rup->ru_stime.tv_usec/1000;
 @end example
 
-But adding a set of parentheses solves the problem:
+@noindent
+but Emacs would alter it.  Adding a set of parentheses produces
+something that looks equally nice, and which Emacs will preserve:
 
 @example
 v = (rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000
@@ -1984,14 +2188,16 @@ do
 while (a > 0);
 @end example
 
+@cindex formfeed
+@cindex control-L
 Please use formfeed characters (control-L) to divide the program into
 pages at logical places (but not within a function).  It does not matter
 just how long the pages are, since they do not have to fit on a printed
 page.  The formfeeds should appear alone on lines by themselves.
 
-
 @node Comments
 @section Commenting Your Work
+@cindex commenting
 
 Every program should start with a comment saying briefly what it is for.
 Example: @samp{fmt - filter for simple filling of text}.
@@ -2043,6 +2249,8 @@ There should be a comment on each static variable as well, like this:
 int truncate_lines;
 @end example
 
+@cindex conditionals, comments for
+@cindex @code{#endif}, commenting
 Every @samp{#endif} should have a comment, except in the case of short
 conditionals (just a few lines) that are not nested.  The comment should
 state the condition of the conditional that is ending, @emph{including
@@ -2084,9 +2292,23 @@ but, by contrast, write the comments this way for a @samp{#ifndef}:
 
 @node Syntactic Conventions
 @section Clean Use of C Constructs
-
-Please explicitly declare all arguments to functions.
-Don't omit them just because they are @code{int}s.
+@cindex syntactic conventions
+
+@cindex implicit @code{int}
+@cindex function argument, declaring
+Please explicitly declare the types of all objects.  For example, you
+should explicitly declare all arguments to functions, and you should
+declare functions to return @code{int} rather than omitting the
+@code{int}.
+
+@cindex compiler warnings
+@cindex @samp{-Wall} compiler option
+Some programmers like to use the GCC @samp{-Wall} option, and change the
+code whenever it issues a warning.  If you want to do this, then do.
+Other programmers prefer not to use @samp{-Wall}, because it gives
+warnings for valid and legitimate code which they do not want to change.
+If you want to do this, then do.  The compiler should be your servant,
+not your master.
 
 Declarations of external functions and functions to appear later in the
 source file should all go in one place near the beginning of the file
@@ -2094,6 +2316,7 @@ source file should all go in one place near the beginning of the file
 should go in a header file.  Don't put @code{extern} declarations inside
 functions.
 
+@cindex temporary variables
 It used to be common practice to use the same local variables (with
 names like @code{tem}) over and over for different values within one
 function.  Instead of doing this, it is better declare a separate local
@@ -2105,6 +2328,7 @@ all its uses.  This makes the program even cleaner.
 
 Don't use local variables or parameters that shadow global identifiers.
 
+@cindex multiple variables in a line
 Don't declare multiple variables in one declaration that spans lines.
 Start a new declaration on each line, instead.  For example, instead
 of this:
@@ -2205,6 +2429,7 @@ if (foo == 0)
   fatal ("virtual memory exhausted");
 @end example
 
+@pindex lint
 Don't make the program ugly to placate @code{lint}.  Please don't insert any
 casts to @code{void}.  Zero without a cast is perfectly fine as a null
 pointer constant, except when calling a varargs function.
@@ -2212,6 +2437,7 @@ pointer constant, except when calling a varargs function.
 @node Names
 @section Naming Variables and Functions
 
+@cindex names of variables and functions
 The names of global variables and functions in a program serve as
 comments of a sort.  So don't choose terse names---instead, look for
 names that give useful information about the meaning of the variable or
@@ -2249,30 +2475,41 @@ When you want to define names with constant integer values, use
 @code{enum} rather than @samp{#define}.  GDB knows about enumeration
 constants.
 
-Use file names of 14 characters or less, to avoid creating gratuitous
-problems on older System V systems.  You can use the program
-@code{doschk} to test for this.  @code{doschk} also tests for potential
-name conflicts if the files were loaded onto an MS-DOS file
-system---something you may or may not care about.
+@cindex file-name limitations
+@pindex doschk
+You might want to make sure that none of the file names would conflict
+the files were loaded onto an MS-DOS file system which shortens the
+names.  You can use the program @code{doschk} to test for this.
+
+Some GNU programs were designed to limit themselves to file names of 14
+characters or less, to avoid file name conflicts if they are read into
+older System V systems.  Please preserve this feature in the existing
+GNU programs that have it, but there is no need to do this in new GNU
+programs.  @code{doschk} also reports file names longer than 14
+characters.
 
 @node System Portability
 @section Portability between System Types
+@cindex portability, between system types
 
 In the Unix world, ``portability'' refers to porting to different Unix
 versions.  For a GNU program, this kind of portability is desirable, but
 not paramount.
 
 The primary purpose of GNU software is to run on top of the GNU kernel,
-compiled with the GNU C compiler, on various types of @sc{cpu}.  The
-amount and kinds of variation among GNU systems on different @sc{cpu}s
-will be comparable to the variation among Linux-based GNU systems or
-among BSD systems today.  So the kinds of portability that are absolutely
-necessary are quite limited.
-
-But many users do run GNU software on non-GNU Unix or Unix-like systems.
-So supporting a variety of Unix-like systems is desirable, although not
-paramount.
-
+compiled with the GNU C compiler, on various types of @sc{cpu}.  So the
+kinds of portability that are absolutely necessary are quite limited.
+But it is important to support Linux-based GNU systems, since they
+are the form of GNU that is popular.
+
+Beyond that, it is good to support the other free operating systems
+(*BSD), and it is nice to support other Unix-like systems if you want
+to.  Supporting a variety of Unix-like systems is desirable, although
+not paramount.  It is usually not too hard, so you may as well do it.
+But you don't have to consider it an obligation, if it does turn out to
+be hard.
+
+@pindex autoconf
 The easiest way to achieve portability to most Unix-like systems is to
 use Autoconf.  It's unlikely that your program needs to know more
 information about the host platform than Autoconf can provide, simply
@@ -2282,15 +2519,30 @@ written.
 Avoid using the format of semi-internal data bases (e.g., directories)
 when there is a higher-level alternative (@code{readdir}).
 
+@cindex non-@sc{posix} systems, and portability
 As for systems that are not like Unix, such as MSDOS, Windows, the
 Macintosh, VMS, and MVS, supporting them is often a lot of work.  When
 that is the case, it is better to spend your time adding features that
 will be useful on GNU and GNU/Linux, rather than on supporting other
 incompatible systems.
 
+It is a good idea to define the ``feature test macro''
+@code{_GNU_SOURCE} when compiling your C files.  When you compile on GNU
+or GNU/Linux, this will enable the declarations of GNU library extension
+functions, and that will usually give you a compiler error message if
+you define the same function names in some other way in your program.
+(You don't have to actually @emph{use} these functions, if you prefer
+to make the program more portable to other systems.)
+
+But whether or not you use these GNU extensions, you should avoid
+using their names for any other meanings.  Doing so would make it hard
+to move your code into other GNU programs.
+
 @node CPU Portability
 @section Portability between @sc{cpu}s
 
+@cindex data types, and portability
+@cindex portability, and data types
 Even GNU systems will differ because of differences among @sc{cpu}
 types---for example, difference in byte ordering and alignment
 requirements.  It is absolutely essential to handle these differences.
@@ -2298,6 +2550,25 @@ However, don't make any effort to cater to the possibility that an
 @code{int} will be less than 32 bits.  We don't support 16-bit machines
 in GNU.
 
+Similarly, don't make any effort to cater to the possibility that
+@code{long} will be smaller than predefined types like @code{size_t}.
+For example, the following code is ok:
+
+@example
+printf ("size = %lu\n", (unsigned long) sizeof array);
+printf ("diff = %ld\n", (long) (pointer2 - pointer1));
+@end example
+
+1989 Standard C requires this to work, and we know of only one
+counterexample: 64-bit programs on Microsoft Windows IA-64.  We will
+leave it to those who want to port GNU programs to that environment
+to figure out how to do it.
+
+Predefined file-size types like @code{off_t} are an exception: they are
+longer than @code{long} on many platforms, so code like the above won't
+work with them.  One way to print an @code{off_t} value portably is to
+print its digits yourself, one by one.
+
 Don't assume that the address of an @code{int} object is also the
 address of its least-significant byte.  This is false on big-endian
 machines.  Thus, don't make the following mistake:
@@ -2312,9 +2583,9 @@ while ((c = getchar()) != EOF)
 When calling functions, you need not worry about the difference between
 pointers of various types, or between pointers and integers.  On most
 machines, there's no difference anyway.  As for the few machines where
-there is a difference, all of them support @sc{ansi} C, so you can use
-prototypes (conditionalized to be active only in @sc{ansi} C) to make
-the code work on those systems.
+there is a difference, all of them support Standard C prototypes, so you can
+use prototypes (perhaps conditionalized to be active only in Standard C)
+to make the code work on those systems.
 
 In certain cases, it is ok to pass integer and pointer arguments
 indiscriminately to the same function, and use no prototype on any
@@ -2333,37 +2604,49 @@ error (s, a1, a2, a3)
 
 @noindent
 In practice, this works on all machines, since a pointer is generally
-the widest possible kind of argument, and it is much simpler than any
+the widest possible kind of argument; it is much simpler than any
 ``correct'' alternative.  Be sure @emph{not} to use a prototype for such
 functions.
 
-However, avoid casting pointers to integers unless you really need to.
-Outside of special situations, such casts greatly reduce portability,
-and in most programs they are easy to avoid.  In the cases where casting
-pointers to integers is essential---such as, a Lisp interpreter which
-stores type information as well as an address in one word---it is ok to
-do it, but you'll have to make explicit provisions to handle different
-word sizes.
+If you have decided to use Standard C, then you can instead define
+@code{error} using @file{stdarg.h}, and pass the arguments along to
+@code{vfprintf}.
+
+@cindex casting pointers to integers
+Avoid casting pointers to integers if you can.  Such casts greatly
+reduce portability, and in most programs they are easy to avoid.  In the
+cases where casting pointers to integers is essential---such as, a Lisp
+interpreter which stores type information as well as an address in one
+word---you'll have to make explicit provisions to handle different word
+sizes.  You will also need to make provision for systems in which the
+normal range of addresses you can get from @code{malloc} starts far away
+from zero.
 
 @node System Functions
 @section Calling System Functions
+@cindex library functions, and portability
+@cindex portability, and library functions
 
-C implementations differ substantially.  @sc{ansi} C reduces but does not
-eliminate the incompatibilities; meanwhile, many users wish to compile
-GNU software with pre-@sc{ansi} compilers.  This chapter gives
-recommendations for how to use the more or less standard C library
-functions to avoid unnecessary loss of portability.
+C implementations differ substantially.  Standard C reduces but does
+not eliminate the incompatibilities; meanwhile, many GNU packages still
+support pre-standard compilers because this is not hard to do.  This
+chapter gives recommendations for how to use the more-or-less standard C
+library functions to avoid unnecessary loss of portability.
 
 @itemize @bullet
 @item
-Don't use the value of @code{sprintf}.  It returns the number of
+Don't use the return value of @code{sprintf}.  It returns the number of
 characters written on some systems, but not on all systems.
 
 @item
+Be aware that @code{vfprintf} is not always available.
+
+@item
 @code{main} should be declared to return type @code{int}.  It should
 terminate either by calling @code{exit} or by returning the integer
 status code; make sure it cannot ever return an undefined value.
 
+@cindex declaration for system functions
 @item
 Don't declare system functions explicitly.
 
@@ -2380,7 +2663,7 @@ actual conflicts.
 
 @item
 If you must declare a system function, don't specify the argument types.
-Use an old-style declaration, not an @sc{ansi} prototype.  The more you
+Use an old-style declaration, not a Standard C prototype.  The more you
 specify about the function, the more likely a conflict.
 
 @item
@@ -2402,6 +2685,7 @@ exceptional systems (mostly 64-bit machines), you can use
 @code{realloc}---or put these declarations in configuration files
 specific to those systems.
 
+@cindex string library functions
 @item
 The string functions require special treatment.  Some Unix systems have
 a header file @file{string.h}; others have @file{strings.h}.  Neither
@@ -2412,7 +2696,7 @@ figure out which file to include, or don't include either file.
 If you don't include either strings file, you can't get declarations for
 the string functions from the header file in the usual way.
 
-That causes less of a problem than you might think.  The newer @sc{ansi}
+That causes less of a problem than you might think.  The newer standard
 string functions should be avoided anyway because many systems still
 don't support them.  The string functions you can use are these:
 
@@ -2442,7 +2726,7 @@ names, but neither pair works on all systems.
 
 You should pick a single pair of names and use it throughout your
 program.  (Nowadays, it is better to choose @code{strchr} and
-@code{strrchr} for new programs, since those are the standard @sc{ansi}
+@code{strrchr} for new programs, since those are the standard
 names.)  Declare both of those names as functions returning @code{char
 *}.  On systems which don't support those names, define them as macros
 in terms of the other pair.  For example, here is what to put at the
@@ -2468,7 +2752,9 @@ One way to get them properly defined is to use Autoconf.
 
 @node Internationalization
 @section Internationalization
+@cindex internationalization
 
+@pindex gettext
 GNU has a library called GNU gettext that makes it easy to translate the
 messages in a program into various languages.  You should use this
 library in every program.  Use English for the messages as they appear
@@ -2495,6 +2781,7 @@ translations for this package from the translations for other packages.
 Normally, the text domain name should be the same as the name of the
 package---for example, @samp{fileutils} for the GNU file utilities.
 
+@cindex message text, and internationalization
 To enable gettext to work well, avoid writing code that makes
 assumptions about the structure of words or sentences.  When you want
 the precise text of a sentence to vary depending on the data, use two or
@@ -2566,6 +2853,7 @@ printf (f->tried_implicit
 
 @node Mmap
 @section Mmap
+@findex mmap
 
 Don't assume that @code{mmap} either works on all files or fails
 for all files.  It may work on some files and fail on others.
@@ -2582,11 +2870,20 @@ all these kinds of files.
 
 @node Documentation
 @chapter Documenting Programs
+@cindex documentation
+
+A GNU program should ideally come with full free documentation, adequate
+for both reference and tutorial purposes.  If the package can be
+programmed or extended, the documentation should cover programming or
+extending it, as well as just using it.
 
 @menu
 * GNU Manuals::                 Writing proper manuals.
+* Doc Strings and Manuals::     Compiling doc strings doesn't make a manual.
 * Manual Structure Details::    Specific structure conventions.
 * License for Manuals::         Writing the distribution terms for a manual.
+* Manual Credits::              Giving credit to documentation contributors.
+* Printed Manuals::             Mentioning the printed manual.
 * NEWS File::                   NEWS files supplement manuals.
 * Change Logs::                 Recording Changes
 * Man Pages::                   Man pages are secondary.
@@ -2597,13 +2894,18 @@ all these kinds of files.
 @node GNU Manuals
 @section GNU Manuals
 
-The preferred way to document part of the GNU system is to write a
-manual in the Texinfo formatting language.  This makes it possible to
-produce a good quality formatted book, using @TeX{}, and to generate an
-Info file.  It is also possible to generate HTML output from Texinfo
-source.  See the Texinfo manual, either the hardcopy, or the on-line
-version available through @code{info} or the Emacs Info subsystem
-(@kbd{C-h i}).
+The preferred document format for the GNU system is the Texinfo
+formatting language.  Every GNU package should (ideally) have
+documentation in Texinfo both for reference and for learners.  Texinfo
+makes it possible to produce a good quality formatted book, using
+@TeX{}, and to generate an Info file.  It is also possible to generate
+HTML output from Texinfo source.  See the Texinfo manual, either the
+hardcopy, or the on-line version available through @code{info} or the
+Emacs Info subsystem (@kbd{C-h i}).
+
+Nowadays some other formats such as Docbook and Sgmltexi can be
+converted automatically into Texinfo.  It is ok to produce the Texinfo
+documentation by conversion this way, as long as it gives good results.
 
 Programmers often find it most natural to structure the documentation
 following the structure of the implementation, which they know.  But
@@ -2632,9 +2934,9 @@ have one manual for ``comparison of files'' which covers both of those
 programs, as well as @code{cmp}.  By documenting these programs
 together, we can make the whole subject clearer.
 
-The manual which discusses a program should document all of the
-program's command-line options and all of its commands.  It should give
-examples of their use.  But don't organize the manual as a list of
+The manual which discusses a program should certainly document all of
+the program's command-line options and all of its commands.  It should
+give examples of their use.  But don't organize the manual as a list of
 features.  Instead, organize it logically, by subtopics.  Address the
 questions that a user will ask when thinking about the job that the
 program does.
@@ -2659,10 +2961,19 @@ are purely tutorial and cover the basics of the subject.  These provide
 the framework for a beginner to understand the rest of the manual.  The
 Bison manual provides a good example of how to do this.
 
+To serve as a reference, a manual should have an Index that list all the
+functions, variables, options, and important concepts that are part of
+the program.  One combined Index should do for a short manual, but
+sometimes for a complex package it is better to use multiple indices.
+The Texinfo manual includes advice on preparing good index entries, see
+@ref{Index Entries, , Making Index Entries, texinfo, The GNU Texinfo
+Manual}, and see @ref{Indexing Commands, , Defining the Entries of an
+Index, texinfo, The GNU Texinfo manual}.
+
 Don't use Unix man pages as a model for how to write GNU documentation;
 most of them are terse, badly structured, and give inadequate
-explanation of the underlying concepts.  (There are, of course
-exceptions.)  Also Unix man pages use a particular format which is
+explanation of the underlying concepts.  (There are, of course, some
+exceptions.)  Also, Unix man pages use a particular format which is
 different from what we use in GNU manuals.
 
 Please include an email address in the manual for where to report
@@ -2674,10 +2985,38 @@ documentation; use ``file name'' (two words) instead.  We use the term
 
 Please do not use the term ``illegal'' to refer to erroneous input to a
 computer program.  Please use ``invalid'' for this, and reserve the term
-``illegal'' for violations of law.
+``illegal'' for activities punishable by law.
+
+@node Doc Strings and Manuals
+@section Doc Strings and Manuals
+
+Some programming systems, such as Emacs, provide a documentation string
+for each function, command or variable.  You may be tempted to write a
+reference manual by compiling the documentation strings and writing a
+little additional text to go around them---but you must not do it.  That
+approach is a fundamental mistake.  The text of well-written
+documentation strings will be entirely wrong for a manual.
+
+A documentation string needs to stand alone---when it appears on the
+screen, there will be no other text to introduce or explain it.
+Meanwhile, it can be rather informal in style.
+
+The text describing a function or variable in a manual must not stand
+alone; it appears in the context of a section or subsection.  Other text
+at the beginning of the section should explain some of the concepts, and
+should often make some general points that apply to several functions or
+variables.  The previous descriptions of functions and variables in the
+section will also have given information about the topic.  A description
+written to stand alone would repeat some of that information; this
+redundance looks bad.  Meanwhile, the informality that is acceptable in
+a documentation string is totally unacceptable in a manual.
+
+The only good way to use documentation strings in writing a good manual
+is to use them as a source of information for writing good text.
 
 @node Manual Structure Details
 @section Manual Structure Details
+@cindex manual structure
 
 The title page of the manual should state the version of the programs or
 packages documented in the manual.  The Top node of the manual should
@@ -2697,26 +3036,57 @@ Alternatively, put a menu item in some menu whose item name fits one of
 the above patterns.  This identifies the node which that item points to
 as the node for this purpose, regardless of the node's actual name.
 
-There will be automatic features for specifying a program name and
-quickly reading just this part of its manual.
+The @samp{--usage} feature of the Info reader looks for such a node
+or menu item in order to find the relevant text, so it is essential
+for every Texinfo file to have one.
 
 If one manual describes several programs, it should have such a node for
-each program described.
+each program described in the manual.
 
 @node License for Manuals
 @section License for Manuals
+@cindex license for manuals
 
-If the manual contains a copy of the GNU GPL or GNU LGPL, or if it
-contains chapters that make political or personal statements, please
-copy the distribution terms of the GNU Emacs Manual, and adapt it by
-modifying appropriately the list of special chapters that may not be
-modified or deleted.
+Please use the GNU Free Documentation License for all GNU manuals that
+are more than a few pages long.  Likewise for a collection of short
+documents---you only need one copy of the GNU FDL for the whole
+collection.  For a single short document, you can use a very permissive
+non-copyleft license, to avoid taking up space with a long license.
 
-If the manual does not contain any such chapters, then imitate the
-simpler distribution terms of the Texinfo manual.
+See @uref{http://www.gnu.org/copyleft/fdl-howto.html} for more explanation
+of how to employ the GFDL.
+
+Note that it is not obligatory to include a copy of the GNU GPL or GNU
+LGPL in a manual whose license is neither the GPL nor the LGPL.  It can
+be a good idea to include the program's license in a large manual; in a
+short manual, whose size would be increased considerably by including
+the program's license, it is probably better not to include it.
+
+@node Manual Credits
+@section Manual Credits
+@cindex credits for manuals
+
+Please credit the principal human writers of the manual as the authors,
+on the title page of the manual.  If a company sponsored the work, thank
+the company in a suitable place in the manual, but do not cite the
+company as an author.
+
+@node Printed Manuals
+@section Printed Manuals
+
+The FSF publishes some GNU manuals in printed form.  To encourage sales
+of these manuals, the on-line versions of the manual should mention at
+the very start that the printed manual is available and should point at
+information for getting it---for instance, with a link to the page
+@url{http://www.gnu.org/order/order.html}.  This should not be included
+in the printed manual, though, because there it is redundant.
+
+It is also useful to explain in the on-line forms of the manual how the
+user can print out the manual from the sources.
 
 @node NEWS File
 @section The NEWS File
+@cindex @file{NEWS} file
 
 In addition to its manual, the package should have a file named
 @file{NEWS} which contains a list of user-visible changes worth
@@ -2731,6 +3101,7 @@ user to that file.
 
 @node Change Logs
 @section Change Logs
+@cindex change logs
 
 Keep a change log to describe all the changes made to program source
 files.  The purpose of this is so that people investigating bugs in the
@@ -2745,6 +3116,7 @@ history of how the conflicting concepts arose and who they came from.
 * Style of Change Logs::        
 * Simple Changes::              
 * Conditional Changes::         
+* Indicating the Part Changed::
 @end menu
 
 @node Change Log Concepts
@@ -2785,10 +3157,16 @@ Then describe the changes you made to that function or variable.
 
 @node Style of Change Logs
 @subsection Style of Change Logs
+@cindex change logs, style
 
-Here are some examples of change log entries:
+Here are some simple examples of change log entries, starting with the
+header line that says who made the change and when, followed by
+descriptions of specific changes.  (These examples are drawn from Emacs
+and GCC.)
 
 @example
+1998-08-17  Richard Stallman  <rms@@gnu.org>
+
 * register.el (insert-register): Return nil.
 (jump-to-register): Likewise.
 
@@ -2819,6 +3197,15 @@ entries represent parts of the same change, so that they work together,
 then don't put blank lines between them.  Then you can omit the file
 name and the asterisk when successive entries are in the same file.
 
+Break long lists of function names by closing continued lines with
+@samp{)}, rather than @samp{,}, and opening the continuation with
+@samp{(} as in this example:
+
+@example
+* keyboard.c (menu_bar_items, tool_bar_items)
+(Fexecute_extended_command): Deal with `keymap' property.
+@end example
+
 @node Simple Changes
 @subsection Simple Changes
 
@@ -2826,9 +3213,10 @@ Certain simple kinds of changes don't need much detail in the change
 log.
 
 When you change the calling sequence of a function in a simple fashion,
-and you change all the callers of the function, there is no need to make
-individual entries for all the callers that you changed.  Just write in
-the entry for the function being called, ``All callers changed.''
+and you change all the callers of the function to use the new calling
+sequence, there is no need to make individual entries for all the
+callers that you changed.  Just write in the entry for the function
+being called, ``All callers changed''---like this:
 
 @example
 * keyboard.c (Fcommand_execute): New arg SPECIAL.
@@ -2848,6 +3236,8 @@ documentation says with the way the program actually works.
 
 @node Conditional Changes
 @subsection Conditional Changes
+@cindex conditional changes, and change logs
+@cindex change logs, conditional changes
 
 C programs often contain compile-time @code{#if} conditionals.  Many
 changes are conditional; sometimes you add a new definition which is
@@ -2887,8 +3277,23 @@ a certain macro is @emph{not} defined:
 (gethostname) [!HAVE_SOCKETS]: Replace with winsock version.
 @end example
 
+@node Indicating the Part Changed
+@subsection Indicating the Part Changed
+
+Indicate the part of a function which changed by using angle brackets
+enclosing an indication of what the changed part does.  Here is an entry
+for a change in the part of the function @code{sh-while-getopts} that
+deals with @code{sh} commands:
+
+@example
+* progmodes/sh-script.el (sh-while-getopts) <sh>: Handle case that
+user-specified option string is empty.
+@end example
+
+
 @node Man Pages
 @section Man Pages
+@cindex man pages
 
 In the GNU project, man pages are secondary.  It is not necessary or
 expected for every GNU program to have a man page, but some of them do.
@@ -2935,6 +3340,7 @@ with the FSF about the individual case.
 
 @node Managing Releases
 @chapter The Release Process
+@cindex releasing
 
 Making a release is more than just bundling up your source files in a
 tar file and putting it up for FTP.  You should set up your software so
@@ -2952,7 +3358,9 @@ all GNU software.
 
 @node Configuration
 @section How Configuration Should Work
+@cindex program configuration
 
+@pindex configure
 Each GNU distribution should come with a shell script named
 @code{configure}.  This script is given arguments which describe the
 kind of machine and system you want to compile the program for.
@@ -3020,13 +3428,14 @@ The @code{configure} script needs to be able to decode all plausible
 alternatives for how to describe a machine.  Thus, @samp{sun3-sunos4.1}
 would be a valid alias.  For many programs, @samp{vax-dec-ultrix} would
 be an alias for @samp{vax-dec-bsd}, simply because the differences
-between Ultrix and BSD are rarely noticeable, but a few programs
+between Ultrix and @sc{bsd} are rarely noticeable, but a few programs
 might need to distinguish them.
 @c Real 4.4BSD now runs on some Suns.
 
 There is a shell script called @file{config.sub} that you can use
 as a subroutine to validate system types and canonicalize aliases.
 
+@cindex optional features, configure-time
 Other options are permitted to specify in more detail the software
 or hardware present on the machine, and include or exclude optional
 parts of the package:
@@ -3062,17 +3471,6 @@ and
 Do not use a @samp{--with} option to specify the file name to use to
 find certain files.  That is outside the scope of what @samp{--with}
 options are for.
-
-@item --nfp
-The target machine has no floating point processor.
-
-@item --gas
-The target machine assembler is GAS, the GNU assembler.
-This is obsolete; users should use @samp{--with-gnu-as} instead.
-
-@item --x
-The target machine has the X Window System installed.
-This is obsolete; users should use @samp{--with-x} instead.
 @end table
 
 All @code{configure} scripts should accept all of these ``detail''
@@ -3088,27 +3486,36 @@ you might think of.  That is deliberate.  We want to limit the possible
 configuration options in GNU software.  We do not want GNU programs to
 have idiosyncratic configuration options.
 
-Packages that perform part of the compilation process may support cross-compilation.
-In such a case, the host and target machines for the program may be
-different.  The @code{configure} script should normally treat the
-specified type of system as both the host and the target, thus producing
-a program which works for the same type of machine that it runs on.
+Packages that perform part of the compilation process may support
+cross-compilation.  In such a case, the host and target machines for the
+program may be different.
 
-The way to build a cross-compiler, cross-assembler, or what have you, is
-to specify the option @samp{--host=@var{hosttype}} when running
-@code{configure}.  This specifies the host system without changing the
-type of target system.  The syntax for @var{hosttype} is the same as
-described above.
+The @code{configure} script should normally treat the specified type of
+system as both the host and the target, thus producing a program which
+works for the same type of machine that it runs on.
 
-Bootstrapping a cross-compiler requires compiling it on a machine other
-than the host it will run on.  Compilation packages accept a
-configuration option @samp{--build=@var{hosttype}} for specifying the
-configuration on which you will compile them, in case that is different
-from the host.
+To configure a cross-compiler, cross-assembler, or what have you, you
+should specify a target different from the host, using the configure
+option @samp{--target=@var{targettype}}.  The syntax for
+@var{targettype} is the same as for the host type.  So the command would
+look like this:
+
+@example
+./configure @var{hosttype} --target=@var{targettype}
+@end example
 
 Programs for which cross-operation is not meaningful need not accept the
-@samp{--host} option, because configuring an entire operating system for
-cross-operation is not a meaningful thing.
+@samp{--target} option, because configuring an entire operating system for
+cross-operation is not a meaningful operation.
+
+Bootstrapping a cross-compiler requires compiling it on a machine other
+than the host it will run on.  Compilation packages accept a
+configuration option @samp{--build=@var{buildtype}} for specifying the
+configuration on which you will compile them, but the configure script
+should normally guess the build machine type (using
+@file{config.guess}), so this option is probably not necessary.  The
+host and target types normally default from the build type, so in
+bootstrapping a cross-compiler you must specify them both explicitly.
 
 Some programs have ways of configuring themselves automatically.  If
 your program is set up to do this, your @code{configure} script can simply
@@ -3123,6 +3530,7 @@ ignore most of its arguments.
 
 @node Releases
 @section Making Releases
+@cindex packaging
 
 Package the distribution of @code{Foo version 69.96} up in a gzipped tar
 file with the name @file{foo-69.96.tar.gz}.  It should unpack into a
@@ -3135,6 +3543,7 @@ files} and @dfn{non-source files}.  Source files are written by humans
 and never changed automatically; non-source files are produced from
 source files by programs under the control of the Makefile.
 
+@cindex @file{README} file
 The distribution should contain a file named @file{README} which gives
 the name of the package, and a general description of what it does.  It
 is also good to explain the purpose of each of the first-level
@@ -3193,6 +3602,7 @@ characters both before and after the period.  Thus,
 are truncated to @file{foobarha.c} and @file{foobarha.o}, which are
 distinct.
 
+@cindex @file{texinfo.tex}, in a distribution
 Include in your distribution a copy of the @file{texinfo.tex} you used
 to test print any @file{*.texinfo} or @file{*.texi} files.
 
@@ -3204,6 +3614,7 @@ other files to get.
 
 @node References
 @chapter References to Non-Free Software and Documentation
+@cindex references to non-free material
 
 A GNU program should not recommend use of any non-free program.  We
 can't stop some people from writing proprietary programs, or stop other
@@ -3227,6 +3638,17 @@ we are serious about the need for free documentation, we must not
 undermine our position by recommending use of documentation that isn't
 free.
 
+@node Index
+@unnumbered Index
+@printindex cp
+
 @contents
 
 @bye
+Local variables:
+update-date-leading-regexp: "@c This date is automagically updated when you save this file:\n@set lastupdate "
+update-date-trailing-regexp: ""
+eval: (load "/gd/gnuorg/update-date.el")
+eval: (add-hook 'write-file-hooks 'update-date)
+compile-command: "make just-standards"
+End:
index 690aa76..9d63f48 100644 (file)
@@ -7,7 +7,7 @@
 @finalout
 @titlepage
 @title XEmacs FAQ
-@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2001/01/18 13:35:02 $
+@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2001/03/08 08:19:10 $
 @sp 1
 @author Tony Rossini <rossini@@biostat.washington.edu>
 @author Ben Wing <ben@@xemacs.org>
@@ -67,7 +67,7 @@ The canonical version of the FAQ is the texinfo document
 If you do not have makeinfo installed, you may @uref{xemacs-faq.info,
 download the faq} in info format, and install it in @file{<XEmacs
 library directory>/info/}. For example in
-@file{/usr/local/lib/xemacs-20.4/info/}.
+@file{/usr/local/lib/xemacs-21.4/info/}.
 
 @end itemize
 
@@ -127,8 +127,8 @@ Internationalization:
 * Q1.3.7::      How about Cyrillic Modes?
 
 Getting Started:
-* Q1.4.1::      What is a @file{.emacs} and is there a sample one?
-* Q1.4.2::      Can I use the same @file{.emacs} with the other Emacs?
+* Q1.4.1::      What is an @file{init.el} or @file{.emacs} and is there a sample one?
+* Q1.4.2::      Can I use the same @file{init.el}/@file{.emacs} with the other Emacs?
 * Q1.4.3::      Any good XEmacs tutorials around?
 * Q1.4.4::      May I see an example of a useful XEmacs Lisp function?
 * Q1.4.5::      And how do I bind it to a key?
@@ -201,7 +201,7 @@ X Window System & Resources:
 * Q3.1.8::      @samp{-iconic} doesn't work.
 
 Textual Fonts & Colors:
-* Q3.2.1::      How can I set color options from @file{.emacs}?
+* Q3.2.1::      How can I set color options from @file{init.el}/@file{.emacs}?
 * Q3.2.2::      How do I set the text, menu and modeline fonts?
 * Q3.2.3::      How can I set the colors when highlighting a region?
 * Q3.2.4::      How can I limit color map usage?
@@ -227,7 +227,7 @@ The Keyboard:
 * Q3.5.5::      Scrolling one line at a time.
 * Q3.5.6::      How to map @kbd{Help} key alone on Sun type4 keyboard?
 * Q3.5.7::      How can you type in special characters in XEmacs?
-* Q3.5.8::      Why does @code{(global-set-key [delete-forward] 'delete-char)} complain?
+* Q3.5.8::      [This question intentionally left blank]
 * Q3.5.9::      How do I make the Delete key delete forward?
 * Q3.5.10::     Can I turn on @dfn{sticky} modifier keys?
 * Q3.5.11::     How do I map the arrow keys?
@@ -258,7 +258,7 @@ Scrollbars:
 * Q3.9.1::      How can I disable the scrollbar?
 * Q3.9.2::      How can one use resources to change scrollbar colors?
 * Q3.9.3::      Moving the scrollbar can move the point; can I disable this?
-* Q3.9.4::      How can I get automatic horizontal scrolling?
+* Q3.9.4::      How can I turn off automatic horizontal scrolling in specific modes?
 
 Text Selections:
 * Q3.10.1::     How can I turn off or change highlighted selections?
@@ -323,14 +323,14 @@ The Miscellaneous Stuff
 * Q5.0.1::      How can I do source code highlighting using font-lock?
 * Q5.0.2::      I do not like cc-mode.  How do I use the old c-mode?
 * Q5.0.3::      How do I get @samp{More} Syntax Highlighting on by default?
-* Q5.0.4::      How can I enable auto-indent?
+* Q5.0.4::      How can I enable auto-indent and/or Filladapt?
 * Q5.0.5::      How can I get XEmacs to come up in text/auto-fill mode by default?
 * Q5.0.6::      How do I start up a second shell buffer?
 * Q5.0.7::      Telnet from shell filters too much.
 * Q5.0.8::      Why does edt emulation not work?
 * Q5.0.9::      How can I emulate VI and use it as my default mode?
 * Q5.0.10::     [This question intentionally left blank]
-* Q5.0.11::     How do I turn on filladapt for all buffers?
+* Q5.0.11::     [This question intentionally left blank]
 * Q5.0.12::     How do I disable gnuserv from opening a new frame?
 * Q5.0.13::     How do I start gnuserv so that each subsequent XEmacs is a client?
 * Q5.0.14::     Strange things are happening in Shell Mode.
@@ -362,7 +362,7 @@ Sound:
 
 Miscellaneous:
 * Q5.3.1::      How do you make XEmacs indent CL if-clauses correctly?
-* Q5.3.2::      Fontifying hangs when editing a postscript file.
+* Q5.3.2::      [This question intentionally left blank]
 * Q5.3.3::      How can I print WYSIWYG a font-locked buffer?
 * Q5.3.4::      Getting @kbd{M-x lpr} to work with postscript printer.
 * Q5.3.5::      How do I specify the paths that XEmacs uses for finding files?
@@ -379,8 +379,8 @@ XEmacs on MS Windows
 General Info:
 * Q6.0.1::      What is the status of the XEmacs port to Windows?
 * Q6.0.2::      What flavors of MS Windows are supported?
-* Q6.0.3::      Are binary kits available?
-* Q6.0.4::      Does XEmacs on MS Windows require an X server to run?
+* Q6.0.3::      Are binaries available?
+* Q6.0.4::      Can I build XEmacs on MS Windows with support for X or Cygwin?
 
 Building XEmacs on MS Windows:
 * Q6.1.1::      I decided to run with X.  Where do I get an X server?
@@ -393,7 +393,7 @@ Building XEmacs on MS Windows:
 Customization and User Interface:
 * Q6.2.1::      How will the port cope with differences in the Windows user interface?
 * Q6.2.2::      How do I change fonts in XEmacs on MS Windows?
-* Q6.2.3::      Where do I put my @file{.emacs} file?
+* Q6.2.3::      Where do I put my @file{init.el}/@file{.emacs} file?
 
 Miscellaneous:
 * Q6.3.1::      Will XEmacs rename all the win32-* symbols to w32-*?
@@ -478,8 +478,8 @@ Internationalization:
 * Q1.3.7::      How about Cyrillic Modes?
 
 Getting Started:
-* Q1.4.1::      What is a @file{.emacs} and is there a sample one?
-* Q1.4.2::      Can I use the same @file{.emacs} with the other Emacs?
+* Q1.4.1::      What is an @file{init.el} or @file{.emacs} and is there a sample one?
+* Q1.4.2::      Can I use the same @file{init.el}/@file{.emacs} with the other Emacs?
 * Q1.4.3::      Any good XEmacs tutorials around?
 * Q1.4.4::      May I see an example of a useful XEmacs Lisp function?
 * Q1.4.5::      And how do I bind it to a key?
@@ -491,11 +491,17 @@ Getting Started:
 @unnumberedsubsec Q1.0.1: What is XEmacs?
 
 
-An alternative to GNU Emacs, originally based on an early alpha version
-of FSF's version 19, and has diverged quite a bit since then.  XEmacs
-was known as Lucid Emacs through version 19.10.  Almost all features of
-GNU Emacs are supported in XEmacs.  The maintainers of XEmacs actively
-track changes to GNU Emacs while also working to add new features.
+XEmacs is a highly customizable open source text editor and application
+development system.  It is protected under the GNU Public License and
+related to other versions of Emacs, in particular GNU Emacs.  Its
+emphasis is on modern graphical user interface support and an open
+software development model, similar to Linux.  XEmacs has an active
+development community numbering in the hundreds, and runs on Windows 95
+and NT, Linux and nearly every other version of Unix in
+existence.  Support for XEmacs has been supplied by Sun Microsystems,
+University of Illinois, Lucid, ETL/Electrotechnical Laboratory, Amdahl
+Corporation, BeOpen, and others, as well as the unpaid time of a great
+number of individual developers.
 
 @node Q1.0.2, Q1.0.3, Q1.0.1, Introduction
 @unnumberedsubsec Q1.0.2: What is the current version of XEmacs?
@@ -538,7 +544,7 @@ The XEmacs maintainers are generally more receptive to suggestions than
 the GNU Emacs maintainers.
 
 @item
-Many more bundled packages than GNU Emacs
+Many more bundled packages than GNU Emacs.
 
 @item
 Binaries are available for many common operating systems.
@@ -554,7 +560,7 @@ Better Motif compliance.
 
 @item
 Some internationalization support (including full MULE support, if
-compiled with it.)
+compiled with it).
 
 @item
 Variable-width fonts.
@@ -585,8 +591,6 @@ The ability to embed arbitrary graphics in a buffer.
 @item
 Completely compatible (at the C level) with the Xt-based toolkits.
 
-@item
-First production Web Browser supporting Style Sheets.
 @end itemize
 
 @node Q1.0.5, Q1.0.6, Q1.0.4, Introduction
@@ -606,7 +610,7 @@ that often result.  Mail your questions to @email{xemacs-beta@@xemacs.org} and
 @unnumberedsubsec Q1.0.6: Where can I get help?
 
 Probably the easiest way, if everything is installed, is to use Info, by
-pressing @kbd{C-h i}, or selecting @code{Manuals->Info} from the
+pressing @kbd{C-h i}, or looking for an Info item on the
 Help Menu.  @kbd{M-x apropos} can be used to look for particular commands.
 
 For items not found in the manual, try reading this FAQ
@@ -630,7 +634,7 @@ xemacs-request address.  Send a message with a subject of
 @node Q1.0.7, Q1.0.8, Q1.0.6, Introduction
 @unnumberedsubsec Q1.0.7: Where are the mailing lists archived?
 
-The archives can be found at @uref{http://www.xemacs.org/Lists/Archive}
+The archives can be found at @uref{http://list-archive.xemacs.org}
 
 @node Q1.0.8, Q1.0.9, Q1.0.7, Introduction
 @unnumberedsubsec Q1.0.8: How do you pronounce XEmacs?
@@ -650,41 +654,6 @@ Screen snapshots are available in the WWW version of the FAQ.
 
 Yes, @xref{MS Windows}.
 
-@comment Thanks to efforts of many people, coordinated by
-@comment @email{davidh@@wr.com.au, David Hobley} and @email{marcpa@@cam.org, Marc
-@comment Paquette}, beta versions of XEmacs now run on 32-bit Windows platforms
-@comment (NT and 95).  The current betas require having an X server to run
-@comment XEmacs; however, a native NT/95 port is in alpha, thanks to
-@comment @email{jhar@@tardis.ed.ac.uk, Jonathan Harris}.
-@comment
-@comment Although some features are still unimplemented, XEmacs 21.0 will support
-@comment MS-Windows.
-@comment
-@comment The NT development is now coordinated by a mailing list at
-@comment @email{xemacs-nt@@xemacs.org}.
-@comment
-@comment If you are willing to contribute or want to follow the progress, mail to
-@comment @iftex
-@comment @*
-@comment @end iftex
-@comment @email{xemacs-nt-request@@xemacs.org} to subscribe.
-@comment
-@comment Furthermore, Altrasoft is seeking corporate and government sponsors to
-@comment help fund a fully native port of XEmacs to Windows 95 and NT using
-@comment full-time, senior-level staff working under a professionally managed
-@comment project structure.  See @uref{http://www.altrasoft.com/, the Altrasoft
-@comment web site} for more details
-@comment or contact Altrasoft directly at 1-888-ALTSOFT.
-@comment
-@comment
-@comment The closest existing port is @dfn{Win-Emacs}, which is based on Lucid
-@comment Emacs 19.6.  Available from @uref{http://www.pearlsoft.com/}.
-@comment
-@comment There's a port of GNU Emacs (not XEmacs) at
-@comment @example
-@comment @uref{http://www.cs.washington.edu/homes/voelker/ntemacs.html}.
-@comment @end example
-
 @node Q1.0.11, Q1.0.12, Q1.0.10, Introduction
 @unnumberedsubsec Q1.0.11: Is there a port of XEmacs to the Macintosh?
 @c changed
@@ -786,7 +755,7 @@ always hope :)
 @unnumberedsubsec Q1.2.1: Who wrote XEmacs?
 
 XEmacs is the result of the time and effort of many people.  The
-developers responsible for the 19.16/20.x releases are:
+developers responsible for recent releases are:
 
 @itemize @bullet
 @item @email{martin@@xemacs.org, Martin Buchholz}
@@ -795,10 +764,12 @@ developers responsible for the 19.16/20.x releases are:
 @end html
 
 
-@item @email{steve@@xemacs.org, Steve Baur}
+@item @email{turnbull@@sk.tsukuba.ac.jp, Steven Turnbull}
 
+
+@item @email{ben@@xemacs.org, Ben Wing}
 @html
-<br><img src="steve.gif" alt="Portrait of Steve Baur"><br>
+<br><img src="wing.gif" alt="Portrait of Ben Wing"><br>
 @end html
 
 
@@ -810,36 +781,36 @@ developers responsible for the 19.16/20.x releases are:
 
 @end itemize
 
-The developers responsible for the 19.14 release are:
+The developers responsible for older releases were:
 
 @itemize @bullet
-@item @email{cthomp@@xemacs.org, Chuck Thompson}
+@item @email{steve@@xemacs.org, Steve Baur}
+
 @html
-<br><img src="cthomp.jpeg" alt="Portrait of Chuck Thompson"><br>
+<br><img src="steve.gif" alt="Portrait of Steve Baur"><br>
 @end html
 
-Chuck was Mr. XEmacs from 19.11 through 19.14, and is responsible
-for XEmacs becoming a widely distributed program over the Internet.
-
-@item @email{ben@@xemacs.org, Ben Wing}
+@item @email{cthomp@@xemacs.org, Chuck Thompson}
 @html
-<br><img src="wing.gif" alt="Portrait of Ben Wing"><br>
+<br><img src="cthomp.jpeg" alt="Portrait of Chuck Thompson"><br>
 @end html
 
-@end itemize
-
-
-@itemize @bullet
 @item @email{jwz@@jwz.org, Jamie Zawinski}
 @html
 <br><img src="jwz.gif" alt="Portrait of Jamie Zawinski"><br>
 @end html
 
-Jamie Zawinski was Mr. Lucid Emacs from 19.0 through 19.10, the last
-release actually named Lucid Emacs.  Richard Mlynarik was crucial to
-most of those releases.
-
 @item @email{mly@@adoc.xerox.com, Richard Mlynarik}
+
+Steve Baur was the primary maintainer for 19.15 through 21.0.
+
+Chuck Thompson and Ben Wing were the maintainers for 19.11 through 19.14
+and heavy code contributors for 19.8 through 19.10.
+
+Jamie Zawinski was the maintainer for 19.0 through 19.10 (the entire
+history of Lucid Emacs).  Richard Mlynarik was a heavy code contributor
+to 19.6 through 19.8.
+
 @end itemize
 
 Along with many other contributors, partially enumerated in the
@@ -1089,24 +1060,40 @@ XEmacs) is @uref{http://sunsite.oit.unc.edu/sergei/Software/Software.html}
 
 @node Q1.4.1, Q1.4.2, Q1.3.7, Introduction
 @unnumberedsec 1.4: Getting Started, Backing up & Recovery
-@unnumberedsubsec Q1.4.1: What is a @file{.emacs} and is there a sample one?
-
-The @file{.emacs} file is used to customize XEmacs to your tastes.  No
-two are alike, nor are they expected to be alike, but that's the point.
-The XEmacs distribution contains an excellent starter example in the etc
-directory called @file{sample.emacs}.  Copy this file from there to your
-home directory and rename it @file{.emacs}.  Then edit it to suit.
-
-Starting with 19.14, you may bring the @file{sample.emacs} into an
-XEmacs buffer by selecting @samp{Help->Sample .emacs} from the menubar.
-To determine the location of the @file{etc} directory type the command
+@unnumberedsubsec Q1.4.1: What is an @file{init.el} or @file{.emacs} and is there a sample one?
+
+The @file{init.el} or @file{.emacs} file is used to customize XEmacs to
+your tastes.  Starting in 21.4, the preferred location for the init file
+is @file{~/.xemacs/init.el}; in previous versions, it was
+@file{~/.emacs}.  21.4 still accepts the old location, but the first
+time you run it, it will ask to migrate your file to the new location.
+If you answer yes, the file will be moved, and a "compatibility"
+@file{.emacs} file will be placed in the old location so that you can
+still run older versions of XEmacs, and versions of GNU Emacs, which
+expect the old location.  The @file{.emacs} file present is just a stub
+that loads the real file in @file{~/.xemacs/init.el}.
+
+No two init files are alike, nor are they expected to be alike, but
+that's the point.  The XEmacs distribution contains an excellent starter
+example in the @file{etc/} directory called @file{sample.init.el}
+(starting in 21.4) or @file{sample.emacs} in older versions.  Copy this
+file from there to @file{~/.xemacs/init.el} (starting in 21.4) or
+@file{~/.emacs} in older versions, where @samp{~} means your home
+directory, of course.  Then edit it to suit.
+
+You may bring the @file{sample.init.el} or @file{sample.emacs} file into
+an XEmacs buffer from the menubar. (The menu entry for it is always
+under the @samp{Help} menu, but its location under that has changed in
+various versions.  Recently, look under the @samp{Samples} submenu.)  To
+determine the location of the @file{etc/} directory type the command
 @kbd{C-h v data-directory @key{RET}}.
 
 @node Q1.4.2, Q1.4.3, Q1.4.1, Introduction
-@unnumberedsubsec Q1.4.2: Can I use the same @file{.emacs} with the other Emacs?
+@unnumberedsubsec Q1.4.2: Can I use the same @file{init.el}/@file{.emacs} with the other Emacs?
 
-Yes.  The sample @file{.emacs} included in the XEmacs distribution will
-show you how to handle different versions and flavors of Emacs.
+Yes.  The sample @file{init.el}/@file{.emacs} included in the XEmacs
+distribution will show you how to handle different versions and flavors
+of Emacs.
 
 @node Q1.4.3, Q1.4.4, Q1.4.2, Introduction
 @unnumberedsubsec Q1.4.3: Any good tutorials around?
@@ -1543,7 +1530,7 @@ written on disk using a special unexec() function. This function is
 obviously heavily system dependent. And on some systems, it leads to an
 executable which, although valid, cannot be stripped without damage. If
 memory serves, this is especially the case for AIX binaries. On other
-architecture it might work OK.
+architectures it might work OK.
 
 The Right Way to strip the emacs binary is to strip temacs prior to
 dumping xemacs. This will always work, although you can do that only if
@@ -1628,8 +1615,8 @@ to edit those files, you will be informed that a more recent auto-save
 file exists.  You can use @kbd{M-x recover-file} to retrieve the
 auto-saved version of the file.
 
-Starting with 19.14, you may use the command @kbd{M-x recover-session}
-after a crash to pick up where you left off.
+You can use the command @kbd{M-x recover-session} after a crash to pick
+up where you left off.
 
 Now, XEmacs is not perfect, and there may occasionally be times, or
 particular sequences of actions, that cause it to crash.  If you can
@@ -1713,10 +1700,11 @@ Issue the command @kbd{M-x eval-current-buffer}.
 Reproduce the error.
 @end enumerate
 
-Depending on the version of XEmacs, you may either select Edit->Show
-Messages (19.13 and earlier) or Help->Recent Keystrokes/Messages (19.14
-and later) from the menubar to see the most recent messages.  This
-command is bound to @kbd{C-h l} by default.
+Depending on the version of XEmacs, you may either select View->Show
+Message Log (recent versions), Edit->Show Messages (some earlier
+versions) or Help->Recent Keystrokes/Messages (other earlier versions)
+from the menubar to see the most recent messages.  This command is bound
+to @kbd{C-h l} by default.
 
 @node Q2.1.3, Q2.1.4, Q2.1.2, Installation
 @unnumberedsubsec Q2.1.3: Translation Table Syntax messages at Startup
@@ -1864,8 +1852,8 @@ XEmacs startup, which says @samp{Color Red3} not defined.
 
 The OpenWindows 3.0 server is incredibly buggy.  Your best bet is to
 replace it with one from the generic MIT X11 release.  You might also
-try disabling parts of your @file{.emacs}, like enabling background
-pixmaps.
+try disabling parts of your @file{init.el}/@file{.emacs}, like those
+that enable background pixmaps.
 
 @node Q2.1.10, Q2.1.11, Q2.1.9, Installation
 @unnumberedsubsec Q2.1.10: Warnings from incorrect key modifiers.
@@ -2171,9 +2159,8 @@ authors, or to comp.os.linux.development.system).  Again, you'll have to
 use the narrowing-down process described above.
 
 @item
-If you compiled 19.14 with @samp{--debug} (or by default in later
-versions), you will get a Lisp backtrace output when XEmacs crashes, so
-you'll have something useful.
+You will get a Lisp backtrace output when XEmacs crashes, so you'll have
+something useful.
 
 @end enumerate
 
@@ -2244,8 +2231,8 @@ under which it is running.  The solution is to add:
 (set-time-zone-rule "MET")
 @end lisp
 
-to your @file{.emacs} or the @file{site-start.el} file if you can.
-Replace @code{MET} with your local timezone.
+to your @file{init.el}/@file{.emacs} or the @file{site-start.el} file if
+you can.  Replace @code{MET} with your local timezone.
 
 @node Q2.1.20, Q2.1.21, Q2.1.19, Installation
 @unnumberedsubsec Q2.1.20: @samp{Symbol's function definition is void: hkey-help-show.}
@@ -2347,7 +2334,7 @@ This is part 3 of the XEmacs Frequently Asked Questions list.  This
 section is devoted to Customization and screen settings.
 
 @menu
-Customization---Emacs Lisp and @file{.emacs}:
+Customization---Emacs Lisp and @file{init.el}/@file{.emacs}:
 * Q3.0.1::      What version of Emacs am I running?
 * Q3.0.2::      How do I evaluate Elisp expressions?
 * Q3.0.3::      @code{(setq tab-width 6)} behaves oddly.
@@ -2369,7 +2356,7 @@ X Window System & Resources:
 * Q3.1.8::      @samp{-iconic} doesn't work.
 
 Textual Fonts & Colors:
-* Q3.2.1::      How can I set color options from @file{.emacs}?
+* Q3.2.1::      How can I set color options from @file{init.el}/@file{.emacs}?
 * Q3.2.2::      How do I set the text, menu and modeline fonts?
 * Q3.2.3::      How can I set the colors when highlighting a region?
 * Q3.2.4::      How can I limit color map usage?
@@ -2395,7 +2382,7 @@ The Modeline:
 * Q3.5.5::      Scrolling one line at a time.
 * Q3.5.6::      How to map @kbd{Help} key alone on Sun type4 keyboard?
 * Q3.5.7::      How can you type in special characters in XEmacs?
-* Q3.5.8::      Why does @code{(global-set-key [delete-forward] 'delete-char)} complain?
+* Q3.5.8::      [This question intentionally left blank]
 * Q3.5.9::      How do I make the Delete key delete forward?
 * Q3.5.10::     Can I turn on @dfn{sticky} modifier keys?
 * Q3.5.11::     How do I map the arrow keys?
@@ -2426,7 +2413,7 @@ Scrollbars:
 * Q3.9.1::      How can I disable the scrollbar?
 * Q3.9.2::      How can one use resources to change scrollbar colors?
 * Q3.9.3::      Moving the scrollbar can move the point; can I disable this?
-* Q3.9.4::      How can I get automatic horizontal scrolling?
+* Q3.9.4::      How can I turn off automatic horizontal scrolling in specific modes?
 
 Text Selections:
 * Q3.10.1::     How can I turn off or change highlighted selections?
@@ -2437,16 +2424,17 @@ Text Selections:
 @end menu
 
 @node Q3.0.1, Q3.0.2, Customization, Customization
-@unnumberedsec 3.0: Customization -- Emacs Lisp and .emacs
+@unnumberedsec 3.0: Customization -- Emacs Lisp and @file{init.el}/@file{.emacs}
 @unnumberedsubsec Q3.0.1: What version of Emacs am I running?
 
-How can @file{.emacs} determine which of the family of Emacsen I am
-using?
+How can @file{init.el}/@file{.emacs} determine which of the family of
+Emacsen I am using?
 
 To determine if you are currently running GNU Emacs 18, GNU Emacs 19,
 XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the
-example given in @file{etc/sample.emacs}.  There are other nifty things
-in there as well!
+example given in @file{etc/sample.init.el} (@file{etc/sample.emacs} in
+XEmacs versions prior to 21.4).  There are other nifty things in there
+as well!
 
 For all new code, all you really need to do is:
 
@@ -2462,16 +2450,14 @@ with @kbd{C-j} after the expression.  How do I do it from another
 buffer?
 
 Press @kbd{M-:} (the default binding of @code{eval-expression}), and
-enter the expression to the minibuffer.  In XEmacs prior to 19.15
-@code{eval-expression} used to be a disabled command by default.  If
-this is the case, upgrade your XEmacs.
+enter the expression to the minibuffer.
 
 @node Q3.0.3, Q3.0.4, Q3.0.2, Customization
 @unnumberedsubsec Q3.0.3: @code{(setq tab-width 6)} behaves oddly.
 
-If you put @code{(setq tab-width 6)} in your @file{.emacs} file it does
-not work!  Is there a reason for this?  If you do it at the EVAL prompt
-it works fine!! How strange.
+If you put @code{(setq tab-width 6)} in your
+@file{init.el}/@file{.emacs} file it does not work!  Is there a reason
+for this?  If you do it at the EVAL prompt it works fine!! How strange.
 
 Use @code{setq-default} instead, since @code{tab-width} is
 all-buffer-local.
@@ -2545,8 +2531,6 @@ buffer.
 @node Q3.0.7, Q3.0.8, Q3.0.6, Customization
 @unnumberedsubsec Q3.0.7: Font selections in don't get saved after @code{Save Options}.
 
-For XEmacs 19.14 and previous:
-
 @email{mannj@@ll.mit.edu, John Mann} writes:
 
 @quotation
@@ -2556,9 +2540,7 @@ are only applied to the @emph{current} frame and do @emph{not} get saved
 when you save options.
 @end quotation
 
-For XEmacs 19.15 and later:
-
-Implement the above as well as set the following in your @file{.emacs}
+Also, set the following in your @file{init.el}/@file{.emacs}:
 
 @lisp
 (setq options-save-faces t)
@@ -2645,7 +2627,7 @@ in:
 I'd like the icon to just say @samp{XEmacs}, and not include the name of
 the current file in it.
 
-Add the following line to your @file{.emacs}:
+Add the following line to your @file{init.el}/@file{.emacs}:
 
 @lisp
 (setq frame-icon-title-format "XEmacs")
@@ -2657,7 +2639,7 @@ Add the following line to your @file{.emacs}:
 I'd like to have the window title area display the full directory/name
 of the current buffer file and not just the name.
 
-Add the following line to your @file{.emacs}:
+Add the following line to your @file{init.el}/@file{.emacs}:
 
 @lisp
 (setq frame-title-format "%S: %f")
@@ -2741,10 +2723,10 @@ bugs...
 
 @node Q3.2.1, Q3.2.2, Q3.1.8, Customization
 @unnumberedsec 3.2: Textual Fonts & Colors
-@unnumberedsubsec Q3.2.1: How can I set color options from @file{.emacs}?
+@unnumberedsubsec Q3.2.1: How can I set color options from @file{init.el}/@file{.emacs}?
 
-How can I set the most commonly used color options from my @file{.emacs}
-instead of from my @file{.Xdefaults}?
+How can I set the most commonly used color options from my
+@file{init.el}/@file{.emacs} instead of from my @file{.Xdefaults}?
 
 Like this:
 
@@ -2807,7 +2789,7 @@ Emacs.zmacs-region.attributeForeground: firebrick
 Emacs.zmacs-region.attributeBackground: lightseagreen
 @end example
 
-or in your @file{.emacs}:
+or in your @file{init.el}/@file{.emacs}:
 
 @lisp
 (set-face-background 'zmacs-region "red")
@@ -2818,22 +2800,17 @@ or in your @file{.emacs}:
 @unnumberedsubsec Q3.2.4: How can I limit color map usage?
 
 I'm using Netscape (or another color grabber like XEmacs);
-is there anyway to limit the number of available colors in the color map?
+is there any way to limit the number of available colors in the color map?
 
-XEmacs 19.13 didn't have such a mechanism (unlike netscape, or other
-color-hogs).  One solution is to start XEmacs prior to netscape, since
-this will prevent Netscape from grabbing all colors (but Netscape will
-complain).  You can use the flags for Netscape, like -mono, -ncols <#>
-or -install (for mono, limiting to <#> colors, or for using a private
-color map).  Since Netscape will take the entire colormap and never
-release it, the only reasonable way to run it is with @samp{-install}.
+Answer: No, but you can start Netscape before XEmacs, and it will use
+the closest available color if the colormap is full.  You can also limit
+the number of colors Netscape uses, using the flags -mono, -ncols <#> or
+-install (for mono, limiting to <#> colors, or for using a private color
+map).
 
 If you have the money, another solution would be to use a truecolor or
 direct color video.
 
-Starting with XEmacs 19.14, XEmacs uses the closest available color if
-the colormap is full, so it's O.K. now to start Netscape first.
-
 @node Q3.2.5, Q3.2.6, Q3.2.4, Customization
 @unnumberedsubsec Q3.2.5: My tty supports color, but XEmacs doesn't use them.
 
@@ -2882,15 +2859,15 @@ and so on.  You can also do this interactively via @kbd{M-x edit-faces}.
 (set-specifier has-modeline-p nil)
 @end lisp
 
-Starting with XEmacs 19.14 the modeline responds to mouse clicks, so if
-you haven't liked or used the modeline in the past, you might want to
-try the new version out.
-
+@c Starting with XEmacs 19.14 the modeline responds to mouse clicks, so if
+@c you haven't liked or used the modeline in the past, you might want to
+@c try the new version out.
+@c 
 @node Q3.3.2, Q3.3.3, Q3.3.1, Customization
 @unnumberedsubsec Q3.3.2: How do you have XEmacs display the line number in the modeline?
 
-Add the following line to your @file{.emacs} file to display the
-line number:
+Add the following line to your @file{init.el}/@file{.emacs} file to
+display the line number:
 
 @lisp
 (line-number-mode 1)
@@ -2906,20 +2883,20 @@ Or select from the @code{Options} menu
 @iftex
 @*
 @end iftex
-@code{Customize->Emacs->Editing->Basics->Line Number Mode}
+@code{Advanced (Customize)->Emacs->Editing->Basics->Line Number Mode}
 and/or
 @iftex
 @*
 @end iftex
-@code{Customize->Emacs->Editing->Basics->Column Number Mode}
+@code{Advanced (Customize)->Emacs->Editing->Basics->Column Number Mode}
 
 Or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}.
 
 @node Q3.3.3, Q3.3.4, Q3.3.2, Customization
 @unnumberedsubsec Q3.3.3: How do I get XEmacs to put the time of day on the modeline?
 
-Add the following line to your @file{.emacs} file to display the
-time:
+Add the following line to your @file{init.el}/@file{.emacs} file to
+display the time:
 
 @lisp
 (display-time)
@@ -2934,28 +2911,28 @@ With AUC TeX, fast typing is hard because the current chapter, section
 etc. are given in the modeline.  How can I turn this off?
 
 It's not AUC TeX, it comes from @code{func-menu} in @file{func-menu.el}.
-Add this code to your @file{.emacs} to turn it off:
-
-@lisp
-(setq fume-display-in-modeline-p nil)
-@end lisp
-
-Or just add a hook to @code{TeX-mode-hook} to turn it off only for TeX
-mode:
-
-@lisp
-(add-hook 'TeX-mode-hook
-          '(lambda () (setq fume-display-in-modeline-p nil)))
-@end lisp
 
+@c Add this code to your @file{init.el}/@file{.emacs} to turn it off:
+@c 
+@c @lisp
+@c (setq fume-display-in-modeline-p nil)
+@c @end lisp
+@c 
+@c Or just add a hook to @code{TeX-mode-hook} to turn it off only for TeX
+@c mode:
+@c 
+@c @lisp
+@c (add-hook 'TeX-mode-hook
+@c           '(lambda () (setq fume-display-in-modeline-p nil)))
+@c @end lisp
+@c 
 @email{dhughes@@origin-at.co.uk, David Hughes} writes:
 
 @quotation
-If you have 19.14 or later, try this instead; you'll still get the
-function name displayed in the modeline, but it won't attempt to keep
-track when you modify the file. To refresh when it gets out of synch,
-you simply need click on the @samp{Rescan Buffer} option in the
-function-menu.
+Try this; you'll still get the function name displayed in the modeline,
+but it won't attempt to keep track when you modify the file. To refresh
+when it gets out of synch, you simply need click on the @samp{Rescan
+Buffer} option in the function-menu.
 
 @lisp
 (setq-default fume-auto-rescan-buffer-p nil)
@@ -2974,20 +2951,20 @@ You can use something like the following:
 @end lisp
 
 Then, when editing a Lisp file (i.e. when in Lisp mode), the modeline
-colors change from the default set in your @file{.emacs}.  The change
-will only be made in the buffer you just entered (which contains the
-Lisp file you are editing) and will not affect the modeline colors
-anywhere else.
+colors change from the default set in your @file{init.el}/@file{.emacs}.
+The change will only be made in the buffer you just entered (which
+contains the Lisp file you are editing) and will not affect the modeline
+colors anywhere else.
 
 Notes:
 
 @itemize @bullet
 
-@item
-The hook is the mode name plus @code{-hook}.  eg. c-mode-hook,
-c++-mode-hook, emacs-lisp-mode-hook (used for your @file{.emacs} or a
-@file{xx.el} file), lisp-interaction-mode-hook (the @samp{*scratch*}
-buffer), text-mode-hook, etc.
+@item The hook is the mode name plus @code{-hook}.  eg. c-mode-hook,
+c++-mode-hook, emacs-lisp-mode-hook (used for your
+@file{init.el}/@file{.emacs} or a @file{xx.el} file),
+lisp-interaction-mode-hook (the @samp{*scratch*} buffer),
+text-mode-hook, etc.
 
 @item
 Be sure to use @code{add-hook}, not @code{(setq c-mode-hook xxxx)},
@@ -3001,29 +2978,26 @@ eg. @code{(set-face-font 'modeline "*bold-r-normal*140-100-100*"
 current mode.
 @end itemize
 
-This works in 19.15 as well, but there are additional modeline faces,
-@code{modeline-buffer-id}, @code{modeline-mousable}, and
-@code{modeline-mousable-minor-mode}, which you may want to customize.
+There are additional modeline faces, @code{modeline-buffer-id},
+@code{modeline-mousable}, and @code{modeline-mousable-minor-mode}, which
+you may want to customize.
 
 @node Q3.4.1, Q3.4.2, Q3.3.5, Customization
 @unnumberedsec 3.4: Multiple Device Support
 @unnumberedsubsec Q3.4.1: How do I open a frame on another screen of my multi-headed display?
 
-The support for this was revamped for 19.14.  Use the command
-@kbd{M-x make-frame-on-display}.  This command is also on the File menu
-in the menubar.
+Use the command @kbd{M-x make-frame-on-display}.  This command is also
+on the File menu in the menubar.
 
-XEmacs 19.14 and later also have the command @code{make-frame-on-tty}
-which will establish a connection to any tty-like device.  Opening the
-TTY devices should be left to @code{gnuclient}, though.
+The command @code{make-frame-on-tty} also exists, which will establish a
+connection to any tty-like device.  Opening the TTY devices should be
+left to @code{gnuclient}, though.
 
 @node Q3.4.2, Q3.5.1, Q3.4.1, Customization
 @unnumberedsubsec Q3.4.2: Can I really connect to a running XEmacs after calling up over a modem?  How?
 
-If you're not running at least XEmacs 19.14, you can't.  Otherwise check
-out the @code{gnuattach} program supplied with XEmacs.  Starting with
-XEmacs 20.3, @code{gnuattach} and @code{gnudoit} functionality is
-provided by @code{gnuclient}.
+Yes.  Use @code{gnuclient -nw}. (Prior to 20.3, use the @code{gnuattach}
+program supplied with XEmacs instead.)
 
 Also @xref{Q5.0.12}.
 
@@ -3071,7 +3045,7 @@ question 3.5.3 (@pxref{Q3.5.3}).
 @node Q3.5.2, Q3.5.3, Q3.5.1, Customization
 @unnumberedsubsec Q3.5.2: How can I stop down-arrow from adding empty lines to the bottom of my buffers?
 
-Add the following line to your @file{.emacs} file:
+Add the following line to your @file{init.el}/@file{.emacs} file:
 
 @lisp
 (setq next-line-add-newlines nil)
@@ -3108,23 +3082,18 @@ can not bind a key to a function that you're also passing arguments to.
 I cannot manage to globally bind my @kbd{Delete} key to something other
 than the default.  How does one do this?
 
+Answer: The problem is that many modes explicitly bind @kbd{Delete}.  To
+get around this, try the following:
+
 @lisp
 (defun foo ()
   (interactive)
   (message "You hit DELETE"))
 
-(global-set-key 'delete 'foo)
+(define-key key-translation-map 'delete 'redirected-delete)
+(global-set-key 'redirected-delete 'foo)
 @end lisp
 
-However, some modes explicitly bind @kbd{Delete}, so you would need to
-add a hook that does @code{local-set-key} for them.  If what you want to
-do is make the Backspace and Delete keys work more PC/Motif-like, then
-take a look at the @file{delbs.el} package.
-
-New in XEmacs 19.14 is a variable called @code{key-translation-map}
-which makes it easier to bind @kbd{Delete}.  @file{delbs.el} is a
-good example of how to do this correctly.
-
 Also @xref{Q3.5.10}.
 
 @node Q3.5.5, Q3.5.6, Q3.5.4, Customization
@@ -3159,7 +3128,7 @@ keys (i.e. @kbd{C-n} and @kbd{C-p}):
 
 Starting with XEmacs-20.3 you can also change this with Customize.
 Select from the @code{Options} menu
-@code{Customize->Emacs->Environment->Windows->Scroll Step...} or type
+@code{Advanced (Customize)->Emacs->Environment->Windows->Scroll Step...} or type
 @kbd{M-x customize @key{RET} windows @key{RET}}.
 
 @node Q3.5.6, Q3.5.7, Q3.5.5, Customization
@@ -3171,7 +3140,7 @@ The following works in GNU Emacs 19:
 (global-set-key [help] 'help-command);; Help
 @end lisp
 
-The following works in XEmacs 19.15 with the addition of shift:
+The following works in XEmacs with the addition of shift:
 
 @lisp
 (global-set-key [(shift help)] 'help-command);; Help
@@ -3198,9 +3167,8 @@ the null binding @code{OpenWindows.KeyboardCommand.Help:}.
 One way is to use the package @code{x-compose}.  Then you can use
 sequences like @kbd{Compose " a} to get Ã¤, etc.
 
-Another way is to use the @code{iso-insert} package, provided in XEmacs
-19.15 and later. Then you can use sequences like @kbd{C-x 8 " a} to get
-ä, etc.
+Another way is to use the @code{iso-insert} package. Then you can use
+sequences like @kbd{C-x 8 " a} to get Ã¤, etc.
 
 @email{glynn@@sensei.co.uk, Glynn Clements} writes:
 
@@ -3243,28 +3211,9 @@ Running @samp{xmodmap -pk} will list all of the defined keysyms.
 @end quotation
 
 @node Q3.5.8, Q3.5.9, Q3.5.7, Customization
-@unnumberedsubsec Q3.5.8: Why does @code{(global-set-key [delete-forward] 'delete-char)} complain?
-
-Why does @code{(define-key global-map [ delete-forward ] 'delete-char)}
-complain of not being able to bind an unknown key?
-
-Try this instead:
-
-@lisp
-(define-key global-map [delete_forward] 'delete-char)
-@end lisp
+@unnumberedsubsec Q3.5.8: [This question intentionally left blank]
 
-and it will work.
-
-What you are seeing above is a bug due to code that is trying to check
-for GNU Emacs syntax like:
-
-(define-key global-map [C-M-a] 'delete-char)
-
-which otherwise would cause no errors but would not result in the
-expected behavior.
-
-This bug has been fixed in 19.14.
+Obsolete question, left blank to avoid renumbering.
 
 @node Q3.5.9, Q3.5.10, Q3.5.8, Customization
 @unnumberedsubsec Q3.5.9: How do I make the Delete key delete forward?
@@ -3282,7 +3231,7 @@ set things up, and @code{delbs-disable-delete-forward} to revert to
 Starting with XEmacs-20.3 better solution is to set variable
 @code{delete-key-deletes-forward} to t.  You can also change this with
 Customize. Select from the @code{Options} menu
-@code{Customize->Emacs->Editing->Basics->Delete Key Deletes Forward} or
+@code{Advanced (Customize)->Emacs->Editing->Basics->Delete Key Deletes Forward} or
 type @kbd{M-x customize @key{RET} editing-basics @key{RET}}.
 
 Also @xref{Q3.5.4}.
@@ -3349,7 +3298,7 @@ For a 2 pixel bar cursor, use:
 
 Starting with XEmacs-20.3 you can also change these with Customize.
 Select from the @code{Options} menu
-@code{Customize->Emacs->Environment->Display->Bar Cursor...} or type
+@code{Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...} or type
 @kbd{M-x customize @key{RET} display @key{RET}}.
 
 You can use a color to make it stand out better:
@@ -3365,16 +3314,15 @@ Emacs*cursorColor:      Red
 (setq bar-cursor nil)
 @end lisp
 
-Starting with XEmacs-20.3 you can also change this with Customize.
+Starting with XEmacs 20.3 you can also change this with Customize.
 Select from the @code{Options} menu
-@code{Customize->Emacs->Environment->Display->Bar Cursor...} or type
+@code{Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...} or type
 @kbd{M-x customize @key{RET} display @key{RET}}.
 
 @node Q3.6.3, Q3.7.1, Q3.6.2, Customization
 @unnumberedsubsec Q3.6.3: Can I make the cursor blink?
 
-If you are running a version of XEmacs older than 19.14, no.  Otherwise
-you can do the following:
+Yes, like this:
 
 @lisp
 (blink-cursor-mode)
@@ -3456,7 +3404,7 @@ do I disable this?
 Examine the function @code{mouse-yank}, by typing @kbd{C-h f mouse-yank
 @key{RET}}.
 
-To get XEmacs to paste at the text cursor, add this your @file{.emacs}:
+To get XEmacs to paste at the text cursor, add this your @file{init.el}/@file{.emacs}:
 
 @lisp
 (setq mouse-yank-at-point t)
@@ -3464,7 +3412,7 @@ To get XEmacs to paste at the text cursor, add this your @file{.emacs}:
 
 Starting with XEmacs-20.2 you can also change this with Customize.
 Select from the @code{Options} menu
-@code{Customize->Emacs->Editing->Mouse->Yank At Point...} or type
+@code{Advanced (Customize)->Emacs->Editing->Mouse->Yank At Point...} or type
 @kbd{M-x customize @key{RET} mouse @key{RET}}.
 
 @node Q3.7.7, Q3.7.8, Q3.7.6, Customization
@@ -3487,7 +3435,7 @@ rectangular regions:
 
 Starting with XEmacs-20.2 you can also change this with Customize.
 Select from the @code{Options} menu
-@code{Customize->Emacs->Editing->Mouse->Track Rectangle...} or type
+@code{Advanced (Customize)->Emacs->Editing->Mouse->Track Rectangle...} or type
 @kbd{M-x customize @key{RET} mouse @key{RET}}.
 
 
@@ -3509,15 +3457,15 @@ delay for a second if you let it.
 @unnumberedsec 3.8: The Menubar and Toolbar
 @unnumberedsubsec Q3.8.1: How do I get rid of the menu (or menubar)?
 
-If you are running XEmacs 19.13 and earlier, add this command to your
-@file{.emacs}.
-
-@lisp
-(set-menubar nil)
-@end lisp
-
-Starting with XEmacs 19.14 the preferred method is:
-
+@c If you are running XEmacs 19.13 or earlier, add this command to your
+@c @file{init.el}/@file{.emacs}.
+@c 
+@c @lisp
+@c (set-menubar nil)
+@c @end lisp
+@c 
+@c Starting with XEmacs 19.14 the preferred method is:
+@c 
 @lisp
 (set-specifier menubar-visible-p nil)
 @end lisp
@@ -3525,7 +3473,7 @@ Starting with XEmacs 19.14 the preferred method is:
 @node Q3.8.2, Q3.8.3, Q3.8.1, Customization
 @unnumberedsubsec Q3.8.2: Can I customize the basic menubar?
 
-For an extensive menubar, add this line to your @file{.emacs}:
+For an extensive menubar, add this line to your @file{init.el}/@file{.emacs}:
 
 @lisp
 (load "big-menubar")
@@ -3539,7 +3487,7 @@ directory.
 @node Q3.8.3, Q3.8.4, Q3.8.2, Customization
 @unnumberedsubsec Q3.8.3: How do I control how many buffers are listed in the menu @code{Buffers List}?
 
-Add the following to your @file{.emacs} (suit to fit):
+Add the following to your @file{init.el}/@file{.emacs} (suit to fit):
 
 @lisp
 (setq buffers-menu-max-size 20)
@@ -3549,7 +3497,7 @@ For no limit, use an argument of @samp{nil}.
 
 Starting with XEmacs-20.3 you can also change this with Customize.
 Select from the @code{Options} menu
-@code{Customize->Emacs->Environment->Menu->Buffers Menu->Max Size...} or
+@code{Advanced (Customize)->Emacs->Environment->Menu->Buffers Menu->Max Size...} or
 type @kbd{M-x customize @key{RET} buffers-menu @key{RET}}.
 
 @node Q3.8.4, Q3.8.5, Q3.8.3, Customization
@@ -3630,12 +3578,12 @@ turn the scrollbars off only in a single buffer:
 @lisp
 (set-specifier scrollbar-width 0 (current-buffer))
 @end lisp
-
-In XEmacs versions prior to 19.14, you had to use the hairier construct:
-
-@lisp
-(set-specifier scrollbar-width (cons (selected-frame) 0))
-@end lisp
+@c 
+@c In XEmacs versions prior to 19.14, you had to use the hairier construct:
+@c 
+@c @lisp
+@c (set-specifier scrollbar-width (cons (selected-frame) 0))
+@c @end lisp
 
 @node Q3.9.2, Q3.9.3, Q3.9.1, Customization
 @unnumberedsubsec Q3.9.2: How can one use resources to change scrollbar colors?
@@ -3671,17 +3619,9 @@ hand corner.
 This cannot be changed.
 
 @node Q3.9.4, Q3.10.1, Q3.9.3, Customization
-@unnumberedsubsec Q3.9.4: How can I get automatic horizontal scrolling?
+@unnumberedsubsec Q3.9.4: How can I turn off automatic horizontal scrolling in specific modes?
 
-By the same token, how can I turn it off in specific modes?
-
-To do this, add to your @file{.emacs} file:
-
-@lisp
-(require 'auto-show)
-@end lisp
-
-Then do @code{(setq truncate-lines t)} in the mode-hooks for any modes
+Do @code{(setq truncate-lines t)} in the mode-hooks for any modes
 in which you want lines truncated.
 
 More precisely: If @code{truncate-lines} is nil, horizontal scrollbars
@@ -3696,8 +3636,6 @@ do
 then horizontal scrollbars will not appear in truncated buffers unless
 the package specifically asked for them.
 
-Automatic horizontal scrolling is now standard, starting with 19.14.
-
 @node Q3.10.1, Q3.10.2, Q3.9.4, Customization
 @unnumberedsec 3.10: Text Selections
 @unnumberedsubsec Q3.10.1: How can I turn off or change highlighted selections?
@@ -3705,14 +3643,14 @@ Automatic horizontal scrolling is now standard, starting with 19.14.
 The @code{zmacs} mode allows for what some might call gratuitous
 highlighting for selected regions (either by setting mark or by using
 the mouse).  This is the default behavior.  To turn off, add the
-following line to your @file{.emacs} file:
+following line to your @file{init.el}/@file{.emacs} file:
 
 @lisp
 (setq zmacs-regions nil)
 @end lisp
 
 Starting with XEmacs-20.2 you can also change this with Customize. Select
-from the @code{Options} menu @code{Customize->Emacs->Editing->Basics->Zmacs
+from the @code{Options} menu @code{Advanced (Customize)->Emacs->Editing->Basics->Zmacs
 Regions} or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}.
 
 To change the face for selection, look at @code{Options->Customize} on
@@ -3729,7 +3667,7 @@ is what happens when you select a region (with the mouse or keyboard)
 and you press a key to replace the selected region by the key you typed.
 Usually backspace kills the selected region.
 
-To get this behavior, add the following lines to your @file{.emacs}:
+To get this behavior, add the following lines to your @file{init.el}/@file{.emacs}:
 
 @lisp
 (cond
@@ -3749,7 +3687,7 @@ more portable.
 I do not like my text highlighted while I am doing isearch as I am not
 able to see what's underneath.  How do I turn it off?
 
-Put the following in your @file{.emacs}:
+Put the following in your @file{init.el}/@file{.emacs}:
 
 @lisp
 (setq isearch-highlight nil)
@@ -4084,8 +4022,8 @@ control VM's behavior.
 
 Enter vm-vars, @code{forward-search} for toolbar, find the variables
 that control the toolbar placement, appearance, existence, copy to your
-@file{.emacs} or @file{.vm} and modify according to the detailed
-instructions.
+@file{init.el}/@file{.emacs} or @file{.vm} and modify according to the
+detailed instructions.
 
 The above also applies to all the various features of VM: search for
 some keywords, maybe the first you conjure isn't appropriate, find the
@@ -4684,14 +4622,14 @@ Major & Minor Modes:
 * Q5.0.1::      How can I do source code highlighting using font-lock?
 * Q5.0.2::      I do not like cc-mode.  How do I use the old c-mode?
 * Q5.0.3::      How do I get @samp{More} Syntax Highlighting on by default?
-* Q5.0.4::      How can I enable auto-indent?
+* Q5.0.4::      How can I enable auto-indent and/or Filladapt?
 * Q5.0.5::      How can I get XEmacs to come up in text/auto-fill mode by default?
 * Q5.0.6::      How do I start up a second shell buffer?
 * Q5.0.7::      Telnet from shell filters too much.
 * Q5.0.8::      Why does edt emulation not work?
 * Q5.0.9::      How can I emulate VI and use it as my default mode?
 * Q5.0.10::     [This question intentionally left blank]
-* Q5.0.11::     How do I turn on filladapt for all buffers?
+* Q5.0.11::     [This question intentionally left blank]
 * Q5.0.12::     How do I disable gnuserv from opening a new frame?
 * Q5.0.13::     How do I start gnuserv so that each subsequent XEmacs is a client?
 * Q5.0.14::     Strange things are happening in Shell Mode.
@@ -4723,7 +4661,7 @@ Sound:
 
 Miscellaneous:
 * Q5.3.1::      How do you make XEmacs indent CL if-clauses correctly?
-* Q5.3.2::      Fontifying hangs when editing a postscript file.
+* Q5.3.2::      [This question intentionally left blank]
 * Q5.3.3::      How can I print WYSIWYG a font-locked buffer?
 * Q5.3.4::      Getting @kbd{M-x lpr} to work with postscript printer.
 * Q5.3.5::      How do I specify the paths that XEmacs uses for finding files?
@@ -4741,16 +4679,20 @@ Miscellaneous:
 @unnumberedsubsec Q5.0.1: How can I do source code highlighting using font-lock?
 
 For most modes, font-lock is already set up and just needs to be turned
-on.  This can be done by @kbd{M-x font-lock-mode}, or by having XEmacs
-automatically start it by adding lines like:
+on.  This can be done by adding the line:
 
 @lisp
-(add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock)
-(add-hook 'dired-mode-hook      'turn-on-font-lock)
+(require 'font-lock)
 @end lisp
 
-to your @file{.emacs}.  See the file @file{etc/sample.emacs} for more
-examples.
+to your @file{init.el}/@file{.emacs}. (You can turn it on for the
+current buffer and session only by @kbd{M-x font-lock-mode}.) See the
+file @file{etc/sample.init.el} (@file{etc/sample.emacs} in XEmacs
+versions prior to 21.4) for more information.
+
+@c the old way:
+@c     (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock)
+@c     (add-hook 'dired-mode-hook      'turn-on-font-lock)
 
 See also @code{Syntax Highlighting} from the @code{Options} menu.
 Remember to save options.
@@ -4763,7 +4705,7 @@ much more powerful than the old c-mode.  If you're having trouble
 getting your old offsets to work, try using @code{c-set-offset} instead.
 You might also consider using the package @code{cc-compat}.
 
-But, if you still insist, add the following lines to your @file{.emacs}:
+But, if you still insist, add the following lines to your @file{init.el}/@file{.emacs}:
 
 @lisp
 (fmakunbound 'c-mode)
@@ -4781,47 +4723,56 @@ c++-mode.
 @node Q5.0.3, Q5.0.4, Q5.0.2, Miscellaneous
 @unnumberedsubsec Q5.0.3: How do I get @samp{More} Syntax Highlighting on by default?
 
-Use the following code in your @file{.emacs}:
+Use the following code in your @file{init.el}/@file{.emacs}:
 
 @lisp
 (setq-default font-lock-maximum-decoration t)
 @end lisp
 
-In versions of XEmacs prior to 19.14, you had to use a kludgy solution
-like this:
-
-@lisp
-(setq c-font-lock-keywords c-font-lock-keywords-2
-      c++-font-lock-keywords c++-font-lock-keywords-2
-      lisp-font-lock-keywords lisp-font-lock-keywords-2)
-@end lisp
-
-It will work for C, C++ and Lisp.
-
+@c In versions of XEmacs prior to 19.14, you had to use a kludgy solution
+@c like this:
+@c 
+@c @lisp
+@c (setq c-font-lock-keywords c-font-lock-keywords-2
+@c       c++-font-lock-keywords c++-font-lock-keywords-2
+@c       lisp-font-lock-keywords lisp-font-lock-keywords-2)
+@c @end lisp
+@c 
+@c It will work for C, C++ and Lisp.
+@c 
 See also @code{Syntax Highlighting} from the @code{Options} menu.
 Remember to save options.
 
 @node Q5.0.4, Q5.0.5, Q5.0.3, Miscellaneous
-@unnumberedsubsec Q5.0.4: How can I enable auto-indent?
+@unnumberedsubsec Q5.0.4: How can I enable auto-indent and/or Filladapt?
 
-Put the following line in your @file{.emacs}:
+Put the following line in your @file{init.el}/@file{.emacs}:
 
 @lisp
 (setq indent-line-function 'indent-relative-maybe)
 @end lisp
 
 If you want to get fancy, try the @code{filladapt} package available
-standard with XEmacs.  Put this into your @file{.emacs}:
+standard with XEmacs.  Put this into your @file{init.el}/@file{.emacs}:
 
 @lisp
 (require 'filladapt)
-(add-hook 'text-mode-hook    'turn-on-filladapt-mode)
-;;; and others ...
+(setq-default filladapt-mode t)
+(add-hook 'c-mode-hook 'turn-off-filladapt-mode)
+@end lisp
+
+This will enable Filladapt for all modes except C mode, where it doesn't
+work well.  To turn Filladapt on only in particular major modes, remove
+the @code{(setq-default ...)} line and use
+@code{turn-on-filladapt-mode}, like this:
+
+@lisp
+(add-hook 'text-mode-hook 'turn-on-filladapt-mode)
 @end lisp
 
 You can customize filling and adaptive filling with Customize.
 Select from the @code{Options} menu
-@code{Customize->Emacs->->Editing->Fill->Fill...}
+@code{Advanced (Customize)->Emacs->Editing->Fill->Fill...}
 or type @kbd{M-x customize @key{RET} fill @key{RET}}.
 
 Note that well-behaving text-lookalike modes will run
@@ -4833,7 +4784,7 @@ Please note that the @code{fa-extras} package is no longer useful.
 @node Q5.0.5, Q5.0.6, Q5.0.4, Miscellaneous
 @unnumberedsubsec Q5.0.5: How can I get XEmacs to come up in text/auto-fill mode by default?
 
-Try the following lisp in your @file{.emacs}:
+Try the following lisp in your @file{init.el}/@file{.emacs}:
 
 @lisp
 (setq default-major-mode 'text-mode)
@@ -4911,7 +4862,7 @@ if you have @code{ssh} installed.
 
 We don't know, but you can use tpu-edt emulation instead, which works
 fine and is a little fancier than the standard edt emulation.  To do
-this, add the following line to your @file{.emacs}:
+this, add the following line to your @file{init.el}/@file{.emacs}:
 
 @lisp
 (tpu-edt)
@@ -4928,7 +4879,7 @@ add this as well:
 @unnumberedsubsec Q5.0.9: How can I emulate VI and use it as my default mode?
 
 Our recommended VI emulator is viper. To make viper-mode the default,
-add this to your @file{.emacs}:
+add this to your @file{init.el}/@file{.emacs}:
 
 @lisp
 (viper-mode)
@@ -4937,7 +4888,7 @@ add this to your @file{.emacs}:
 @email{kifer@@CS.SunySB.EDU, Michael Kifer} writes:
 
 @quotation
-This should be added as close to the top of @file{.emacs} as you can get
+This should be added as close to the top of @file{init.el}/@file{.emacs} as you can get
 it, otherwise some minor modes may not get viper-ized.
 @end quotation
 
@@ -4947,22 +4898,9 @@ it, otherwise some minor modes may not get viper-ized.
 Obsolete question, left blank to avoid renumbering
 
 @node Q5.0.11, Q5.0.12, Q5.0.10, Miscellaneous
-@unnumberedsubsec Q5.0.11: How do I turn on filladapt for all buffers?
-
-Filladapt is a minor mode and minor modes are traditionally off by
-default.  The following added to your @file{.emacs} will turn it on for
-all buffers:
-
-@lisp
-(setq-default filladapt-mode t)
-@end lisp
+@unnumberedsubsec Q5.0.11: [This question intentionally left blank]
 
-Use @code{turn-on-filladapt-mode} to turn Filladapt on in particular
-major modes, like this:
-
-@lisp
-(add-hook 'text-mode-hook 'turn-on-filladapt-mode)
-@end lisp
+Obsolete question, left blank to avoid renumbering
 
 @node Q5.0.12, Q5.0.13, Q5.0.11, Miscellaneous
 @unnumberedsubsec Q5.0.12: How do I disable gnuserv from opening a new frame?
@@ -4975,23 +4913,22 @@ created. For example, you could put
 (setq gnuserv-frame (selected-frame))
 @end lisp
 
-early on in your @file{.emacs}, to ensure that the first frame created
+early on in your @file{init.el}/@file{.emacs}, to ensure that the first frame created
 is the one used for your gnuserv buffers.
 
-Starting in 19.15, there is an option to set the gnuserv target to
-the current frame.  See
-@code{Options->"Other Window" Location->Make current frame gnuserv target}
+There is an option to set the gnuserv target to the current frame.  See
+@code{Options->Display->"Other Window" Location->Make Current Frame Gnuserv Target}
 
 Starting with XEmacs-20.3 you can also change this with Customize.
 Select from the @code{Options} menu
-@code{Customize->Emacs->Environment->Gnuserv->Gnuserv Frame...} or type
-@kbd{M-x customize @key{RET} gnuserv @key{RET}}.
+@code{Advanced (Customize)->Emacs->Environment->Gnuserv->Gnuserv Frame...}
+or type @kbd{M-x customize @key{RET} gnuserv @key{RET}}.
 
 
 @node Q5.0.13, Q5.0.14, Q5.0.12, Miscellaneous
 @unnumberedsubsec Q5.0.13: How do I start gnuserv so that each subsequent XEmacs is a client?
 
-Put the following in your @file{.emacs} file to start the server:
+Put the following in your @file{init.el}/@file{.emacs} file to start the server:
 
 @lisp
 (gnuserv-start)
@@ -5046,7 +4983,7 @@ This can be had from @uref{http://www.python.org/emacs/}.
 @code{auto-show-mode} controls whether or not a horizontal scrollbar
 magically appears when a line is too long to be displayed.  This is
 enabled by default.  To turn it off, put the following in your
-@file{.emacs}:
+@file{init.el}/@file{.emacs}:
 
 @lisp
 (setq auto-show-mode nil)
@@ -5056,7 +4993,8 @@ enabled by default.  To turn it off, put the following in your
 @node Q5.0.17, Q5.0.18, Q5.0.16, Miscellaneous
 @unnumberedsubsec Q5.0.17: How can I get two instances of info?
 
-You can't.  The @code{info} package does not provide for multiple info buffers.
+Before 21.4, you can't.  The @code{info} package does not provide for
+multiple info buffers.  In 21.4, this should be fixed. #### how?
 
 @node Q5.0.18, Q5.0.19, Q5.0.17, Miscellaneous
 @unnumberedsubsec Q5.0.18: [This question intentionally left blank]
@@ -5432,7 +5370,7 @@ Instead of @samp{FILE}, use the image file name
 @iftex
 @*
 @end iftex
-@file{/usr/local/lib/xemacs-20.2/etc/recycle.xpm}).
+@file{/usr/local/lib/xemacs-21.4/etc/recycle.xpm}).
 
 You can turn this to a function (that optionally prompts you for a file
 name), and inserts the glyph at @code{(point)} instead of
@@ -5474,18 +5412,18 @@ is:
 an easy way to find out where it spends time?
 @c New
 
-z@email{hniksic@@xemacs.org, Hrvoje Niksic} writes:
+@email{hniksic@@xemacs.org, Hrvoje Niksic} writes:
 @quotation
-Under XEmacs 20.4 and later  you can use @kbd{M-x profile-key-sequence}, press a key
-(say @key{RET} in the Gnus Group buffer), and get the results using
-@kbd{M-x profile-results}.  It should give you an idea of where the time
-is being spent.
+Under XEmacs 20.4 and later you can use @kbd{M-x profile-key-sequence},
+press a key (say @key{RET} in the Gnus Group buffer), and get the
+results using @kbd{M-x profile-results}.  It should give you an idea of
+where the time is being spent.
 @end quotation
 
 @node Q5.2.1, Q5.2.2, Q5.1.11, Miscellaneous
 @unnumberedsubsec Q5.2.1: How do I turn off the sound?
 
-Add the following line to your @file{.emacs}:
+Add the following line to your @file{init.el}/@file{.emacs}:
 
 @lisp
 (setq bell-volume 0)
@@ -5495,9 +5433,9 @@ Add the following line to your @file{.emacs}:
 That will make your XEmacs totally silent---even the default ding sound
 (TTY beep on TTY-s) will be gone.
 
-Starting with XEmacs-20.2 you can also change these with Customize.
+Starting with XEmacs 20.2 you can also change these with Customize.
 Select from the @code{Options} menu
-@code{Customize->Emacs->Environment->Sound->Sound...} or type
+@code{Advanced (Customize)->Emacs->Environment->Sound->Sound...} or type
 @kbd{M-x customize @key{RET} sound @key{RET}}.
 
 
@@ -5505,15 +5443,15 @@ Select from the @code{Options} menu
 @unnumberedsubsec Q5.2.2: How do I get funky sounds instead of a boring beep?
 
 Make sure your XEmacs was compiled with sound support, and then put this
-in your @file{.emacs}:
+in your @file{init.el}/@file{.emacs}:
 
 @lisp
 (load-default-sounds)
 @end lisp
 
-The sound support in XEmacs 19.14 was greatly improved over previous
-versions.
-
+@c The sound support in XEmacs 19.14 was greatly improved over previous
+@c versions.
+@c 
 @node Q5.2.3, Q5.2.4, Q5.2.2, Miscellaneous
 @unnumberedsubsec Q5.2.3: What's NAS, how do I get it?
 
@@ -5546,7 +5484,7 @@ I'd like XEmacs to indent all the clauses of a Common Lisp @code{if} the
 same amount instead of indenting the 3rd clause differently from the
 first two.
 
-One way is to add, to @file{.emacs}:
+One way is to add, to @file{init.el}/@file{.emacs}:
 
 @lisp
 (put 'if 'lisp-indent-function nil)
@@ -5576,24 +5514,9 @@ than previous versions.  This may prove useful if you need to customize
 any indent-functions.
 
 @node Q5.3.2, Q5.3.3, Q5.3.1, Miscellaneous
-@unnumberedsubsec Q5.3.2: Fontifying hang when editing a postscript file.
-
-When I try to edit a postscript file it gets stuck saying:
-@samp{fontifying 'filename' (regexps....)} and it just sits there.  If I
-press @kbd{C-c} in the window where XEmacs was started, it suddenly
-becomes alive again.
-
-This was caused by a bug in the Postscript font-lock regular
-expressions.  It was fixed in 19.13.  For earlier versions of XEmacs,
-have a look at your @file{.emacs} file.  You will probably have a line
-like:
+@unnumberedsubsec Q5.3.2: [This question intentionally left blank]
 
-@lisp
-(add-hook 'postscript-mode-hook 'turn-on-font-lock)
-@end lisp
-
-Take it out, restart XEmacs, and it won't try to fontify your postscript
-files anymore.
+Obsolete question, left blank to avoid renumbering.
 
 @node Q5.3.3, Q5.3.4, Q5.3.2, Miscellaneous
 @unnumberedsubsec Q5.3.3: How can I print WYSIWYG a font-locked buffer?
@@ -5612,7 +5535,7 @@ My printer is a Postscript printer and @code{lpr} only works for
 Postscript files, so how do I get @kbd{M-x lpr-region} and @kbd{M-x
 lpr-buffer} to work?
 
-Put something like this in your @file{.emacs}:
+Put something like this in your @file{init.el}/@file{.emacs}:
 
 @lisp
 (setq lpr-command "a2ps")
@@ -5922,7 +5845,7 @@ General Info
 * Q6.0.1::      What is the status of the XEmacs port to Windows?
 * Q6.0.2::      What flavors of MS Windows are supported?
 * Q6.0.3::      Where are the XEmacs on MS Windows binaries?
-* Q6.0.4::      Does XEmacs on MS Windows require an X server to run?
+* Q6.0.4::      Can I build XEmacs on MS Windows with support for X or Cygwin?
 
 Building XEmacs on MS Windows
 * Q6.1.1::      I decided to run with X.  Where do I get an X server?
@@ -5935,7 +5858,7 @@ Building XEmacs on MS Windows
 Customization and User Interface
 * Q6.2.1::      How will the port cope with differences in the Windows user interface?
 * Q6.2.2::      How do I change fonts in XEmacs on MS Windows?
-* Q6.2.3::      Where do I put my @file{.emacs} file?
+* Q6.2.3::      Where do I put my @file{init.el}/@file{.emacs} file?
 
 Miscellaneous
 * Q6.3.1::      Will XEmacs rename all the win32-* symbols to w32-*?
@@ -5955,70 +5878,63 @@ Is XEmacs really getting ported to MS Windows?  What is the status of the port?
 
 Yes, a group of volunteers actively works on making XEmacs code base
 cleanly compile and run on MS Windows operating systems.  The mailing
-list at @email{xemacs-nt@@xemacs.org} is dedicated to that effort (please use
-the -request address to subscribe).
+list at @email{xemacs-nt@@xemacs.org} is dedicated to that effort
+(please use the -request address to subscribe).
 
-At this time, XEmacs on MS Windows is usable, but lacks some of the
-features of XEmacs on UNIX and UNIX-like systems.  Notably,
-internationalization does not work.
+At this time, XEmacs on MS Windows is stable and full-featured.
+However, the internationalization (Mule) support does not work --
+although this is being actively worked on.
 
 @node Q6.0.2, Q6.0.3, Q6.0.1, MS Windows
 @unnumberedsubsec Q6.0.2: What flavors of MS Windows are supported?  The list name implies NT only.
 
-The list name is misleading, as XEmacs will support both Windows 95,
-Windows 98 and Windows NT.  The MS Windows-specific code is based on
-Microsoft Win32 API, and will not work on MS Windows 3.x or on MS-DOS.
+The list name is misleading, as XEmacs will support Windows 95, Windows
+98, Windows NT, Windows 2000, Windows ME, Windows XP, and all newer
+versions of Windows.  The MS Windows-specific code is based on Microsoft
+Win32 API, and will not work on MS Windows 3.x or on MS-DOS.
 
 
 @node Q6.0.3, Q6.0.4, Q6.0.2, MS Windows
-@unnumberedsubsec Q6.0.3: Are binary kits available?
+@unnumberedsubsec Q6.0.3: Are binaries available?
 
-Binary kits are available at
-@uref{ftp://ftp.xemacs.org/pub/xemacs/binary-kits/win32/} for the
-"plain" MS Windows version.
+Binaries are available at
+@uref{ftp://ftp.xemacs.org/pub/xemacs/binaries/win32/} for the native MS
+Windows version.
 
 @node Q6.0.4, Q6.1.1, Q6.0.3, MS Windows
-@unnumberedsubsec Q6.0.4: Does XEmacs on MS Windows require an X server to run?
+@unnumberedsubsec Q6.0.4: Can I build XEmacs on MS Windows with support for X or Cygwin?
 
-Short answer: No.
+Yes.  XEmacs can be built in several ways in the MS Windows environment.
 
-Long answer: XEmacs can be built in several ways in the MS Windows
-environment, some of them requiring an X server and some not.
+The standard way is what we call the "native" port.  It uses the Win32
+API and has no connection with X whatsoever -- it does not require X
+libraries to build, nor does it require an X server to run.  The native
+port is the most reliable version and provides the best graphical
+support.  Almost all development is geared towards this version, and
+there is little reason not to use it.
 
-One is what we call the "X" port---it requires X libraries to build
-and an X server to run.  Internally it uses the Xt event loop and
-makes use of X toolkits.  Its look is quite un-Windowsy, but it works
-reliably and supports all of the graphical features of Unix XEmacs.
-
-The other is what we call the "native" port.  It uses the Win32 API
-and does not require X libraries to build, nor does it require an X to
-run.  In fact, it has no connection with X whatsoever.  At this time,
-the native port obsoletes the X port, providing almost all of its
-features, including support for menus, scrollbars, toolbars, embedded
-images and background pixmaps, frame pointers, etc.  Most of the
-future work will be based on the native port.
+You can also build XEmacs "X" port---it requires X libraries to build
+and an X server to run.  Internally it uses the Xt event loop and makes
+use of X toolkits.  Its look is quite un-Windowsy, and it is not well
+maintained, but it is being kept around for the time being because it
+has a long history.
 
 There is also a third special case, the Cygwin port.  It takes
 advantage of Cygnus emulation library under Win32, which enables it to
 reuse much of the Unix XEmacs code base, such as processes and network
 support, or internal select() mechanisms.
 
-Cygwin port supports all display types---TTY, X & MS gui, and can be
-built with support for all three.  If you build with ms gui support
+Cygwin port supports all display types---TTY, X & MS GUI, and can be
+built with support for all three.  If you build with MS GUI support
 then the Cygwin version uses the majority of the msw code, which is
 mostly related to display.  If you want to build with X support you
-need X libraries.  If you want to build with tty support you need
-ncurses.  MS gui requires no additional libraries.
-
-Some of the advantages of the Cygwin version are that it:
-
-@itemize @bullet
+need X libraries.  If you want to build with TTY support you need
+ncurses.  MS GUI requires no additional libraries.
 
-@item integrates well with Cygwin environment for existing Cygwin users;
-@item uses configure so building with different features is very easy;
-@item has process support in X & tty.
-
-@end itemize
+The advantages of the Cygwin version are that it integrates well with
+Cygwin environment for existing Cygwin users; uses configure so building
+with different features is very easy; and has process support in X &
+tty.
 
 The disadvantage is that it requires several Unix utilities and the
 whole Cygwin environment, whereas the native port requires only a
@@ -6077,18 +5993,18 @@ Some problems to watch out for:
 
 @itemize @bullet
 @item
-make sure HOME is set. This controls where you @file{.emacs} file comes
-from;
+make sure HOME is set. This controls where you
+@file{init.el}/@file{.emacs} file comes from;
 
 @item
 CYGWIN needs to be set to tty for process support work. e.g. CYGWIN=tty;
 (use CYGWIN32=tty under b19 and older.)
 
 @item
-picking up some other grep or other unix like tools can kill configure;
+picking up some other grep or other UNIX-like tools can kill configure;
 
 @item
-static heap too small, adjust src/sheap-adjust.h to a more positive
+static heap too small, adjust @file{src/sheap-adjust.h} to a more positive
 number;
 
 @item
@@ -6189,10 +6105,14 @@ manually. For example:
 
 
 @node Q6.2.3, Q6.3.1, Q6.2.2, MS Windows
-@unnumberedsubsec Q6.2.3: Where do I put my @file{.emacs} file?
+@unnumberedsubsec Q6.2.3: Where do I put my @file{init.el}/@file{.emacs} file?
 
-If the HOME environment variable is set, @file{.emacs} will be looked for
-there.  Else the directory defaults to `c:\'.
+@file{init.el} is the name of the init file starting with 21.4, and is
+located in the subdirectory @file{.xemacs/} of your home directory.  In
+prior versions, the init file is called @file{.emacs} and is located in
+your home directory.  Your home directory under Windows is determined by
+the HOME environment variable.  If this is not set, it defaults to
+`C:\'.
 
 @node Q6.3.1, Q6.3.2, Q6.2.3, MS Windows
 @unnumberedsec 6.3: Miscellaneous
@@ -6212,9 +6132,12 @@ Thus all the XEmacs variables and functions directly related to Win32
 are prefixed `mswindows-'.  The user-variables shared with NT Emacs
 will be provided as compatibility aliases.
 
-Architectural note: We believe that there should be a very small
-number of window-systems-specific variables, and will try to provide
-generic interfaces whenever possible.
+Architectural note: We believe that there should be a very small number
+of window-systems-specific variables, and we provide generic interfaces
+whenever possible.  Thus, most of the equivalents of GNU Emacs `w32-*'
+functions and variables (as well as the corresponding `x-*' versions)
+are non-window-system-specific in XEmacs, and the issue of `mswindows-*'
+vs. `w32-*' does not come up much.
 
 
 @node Q6.3.2, Q6.3.3, Q6.3.1, MS Windows
@@ -6320,7 +6243,13 @@ others.
 @node Q6.3.3, Q6.4.1, Q6.3.2, MS Windows
 @unnumberedsubsec Q6.3.3: What is the porting team doing at the moment?
 
+(as of March 2001)
+
 The porting team is continuing work on the MS Windows-specific code.
+Major projects are the development of Mule (internationalization)
+support for Windows and the improvement of the widget support (better
+support for dialog boxes, buttons, edit fields, and similar UI
+elements).
 
 @node Q6.4.1, ,Q6.3.3, MS Windows
 @unnumberedsec 6.3: Troubleshooting
index 5aaeeaf..7ac72f4 100644 (file)
@@ -19,7 +19,7 @@ local needs with safe removal of unnecessary code.
 * Package Terminology:: Understanding different kinds of packages.
 * Installing Packages:: How to install packages.
 * Building Packages::   Building packages from CVS sources.
-* Local.rules File::    This is an important file don't forget to create/edit it.
+* Local.rules File::    This is an important file that you must create.
 * Creating Packages::   The basics.
 * Available Packages::  A brief directory of packaged LISP.
 @end menu
@@ -102,7 +102,7 @@ the @ref{Available Packages} at the time of the XEmacs release.  Packages are
 also listed on the @code{Options} menu under:
 
 @example
-        Options -> Customize -> Emacs -> Packages
+        Options->Customize->Emacs->Packages
 @end example
 
 However, don't select any of these menu picks unless you actually want 
@@ -114,7 +114,7 @@ are installed, using the visual package browser and installer.  You can
 access it via the menus:
 
 @example
-        Options -> Manage Packages -> List & Install
+        Options->Manage Packages->List & Install
 @end example
 
 Or, you can get to it via the keyboard:
@@ -403,7 +403,7 @@ Currently, source packages are only available via anonymous CVS.  See
 
 @table @code
 @item GNU cp
-@item GNU ginstall 
+@item GNU install 
 (or a BSD compatible install program).
 @item GNU make 
 (3.75 or later preferred).
@@ -608,7 +608,7 @@ The first few @code{make} variables defined are @code{VERSION},
 @code{AUTHOR_VERSION}, @code{MAINTAINER}, @code{PACKAGE},
 @code{PKG_TYPE}, @code{REQUIRES}, and @code{CATEGORY}.  All but one were
 described in the description of @file{package-info.in}.  The last is an
-admistrative grouping.  Current categories include @code{comm},
+administrative grouping.  Current categories include @code{comm},
 @code{games}, @code{libs}, @code{mule}, @code{oa}, @code{os},
 @code{prog}, and @code{wp}.  @ref{Available Packages}, for a list of
 categories.
index 80895ce..46a14c1 100644 (file)
@@ -1,3 +1,15 @@
+2001-03-21  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.46 "Urania" is released.
+
+2001-03-01  Andy Piper  <andy@xemacs.org>
+
+       * desktop.cc (find_xemacs_exe_name): support 21.1 and 21.2 series.
+
+       * iniparse.c: remove.
+
+       * inilex.c: remove
+
 2001-02-23  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.45 "Thelxepeia" is released.
 2000-11-12  Andy Piper  <andy@xemacs.org>
 
        * all: port from cygwin setup.
-
-%%% $Id: ChangeLog,v 1.1.2.17 2001/02/08 07:20:42 martinb Exp $
-$Revision: 1.1.2.17 $
index 7ea3eb2..6edc13f 100644 (file)
@@ -40,6 +40,9 @@ INSTALLABLES=setup
 vpath %.c @srcdir@
 vpath %.cc @srcdir@
 vpath %.h @srcdir@
+vpath %.l @srcdir@
+vpath %.y @srcdir@
+vpath %.rc @srcdir@
 #else
 VPATH=@srcdir@
 #endif
@@ -173,10 +176,10 @@ version.c : $(srcdir)/ChangeLog Makefile
        $(WINDRES) --include-dir $(srcdir) -o $@ $<
 
 %.o: %.c
-       $(CC) $(MINGW_CFLAGS) -c -o $@ ${srcdir}/$<
+       $(CC) $(MINGW_CFLAGS) -c -o $@ $<
 
 %.o: %.cc
-       $(CXX) $(MINGW_CXXFLAGS) -c -o $@ ${srcdir}/$<
+       $(CC) $(MINGW_CXXFLAGS) -c -o $@ $<
 
 iniparse.c iniparse.h : iniparse.y
        bison -d -o iniparse.c $(srcdir)/iniparse.y
index 10e195a..eb4a718 100644 (file)
@@ -110,7 +110,11 @@ find_xemacs_exe_path ()
 static char* 
 find_xemacs_exe_name ()
 {
-  if (xemacs_package->type == TY_CYGWIN)
+  /* Hack to support older versions. */
+  if (strncmp (xemacs_package->info[xemacs_package->trust].version,
+              "21.1", 4) == 0)
+    return strdup ("runemacs.exe");
+  else if (xemacs_package->type == TY_CYGWIN)
     return backslash (concat ("xemacs-",
                              xemacs_package->info[xemacs_package->trust].version, 
                              ".exe", 0));
@@ -420,11 +424,7 @@ do_desktop (HINSTANCE h)
   if (xemacs_package != 0 && xemacs_package->type != TY_GENERIC)
     {
       batname = concat (find_xemacs_exe_path (), "\\",
-#if 0
                        find_xemacs_exe_name (), 
-#else
-                       "runemacs.exe",
-#endif
                        0);
       root_desktop = check_desktop ("XEmacs", batname);
       root_menu = check_startmenu ("XEmacs", batname);
diff --git a/netinstall/inilex.c b/netinstall/inilex.c
deleted file mode 100644 (file)
index 9562b21..0000000
+++ /dev/null
@@ -1,1802 +0,0 @@
-/* A lexical scanner generated by flex */
-
-/* Scanner skeleton version:
- * $Header: /usr/CVSroot/XEmacs/xemacs/netinstall/Attic/inilex.c,v 1.1.2.3 2000/12/27 09:35:04 andyp Exp $
- */
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-
-#include <stdio.h>
-
-
-/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
-#ifdef c_plusplus
-#ifndef __cplusplus
-#define __cplusplus
-#endif
-#endif
-
-
-#ifdef __cplusplus
-
-#include <stdlib.h>
-#include <unistd.h>
-
-/* Use prototypes in function declarations. */
-#define YY_USE_PROTOS
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else  /* ! __cplusplus */
-
-#if __STDC__
-
-#define YY_USE_PROTOS
-#define YY_USE_CONST
-
-#endif /* __STDC__ */
-#endif /* ! __cplusplus */
-
-#ifdef __TURBOC__
- #pragma warn -rch
- #pragma warn -use
-#include <io.h>
-#include <stdlib.h>
-#define YY_USE_CONST
-#define YY_USE_PROTOS
-#endif
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-
-#ifdef YY_USE_PROTOS
-#define YY_PROTO(proto) proto
-#else
-#define YY_PROTO(proto) ()
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* Enter a start condition.  This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN yy_start = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state.  The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START ((yy_start - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart( yyin )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#define YY_BUF_SIZE 16384
-
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-
-extern int yyleng;
-extern FILE *yyin, *yyout;
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
-/* The funky do-while in the following #define is used to turn the definition
- * int a single C statement (which needs a semi-colon terminator).  This
- * avoids problems with code like:
- *
- *     if ( condition_holds )
- *             yyless( 5 );
- *     else
- *             do_something_else();
- *
- * Prior to using the do-while the compiler would get upset at the
- * "else" because it interpreted the "if" statement as being all
- * done when it reached the ';' after the yyless() call.
- */
-
-/* Return all but the first 'n' matched characters back to the input stream. */
-
-#define yyless(n) \
-       do \
-               { \
-               /* Undo effects of setting up yytext. */ \
-               *yy_cp = yy_hold_char; \
-               yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
-               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
-               } \
-       while ( 0 )
-
-#define unput(c) yyunput( c, yytext_ptr )
-
-/* The following is because we cannot portably get our hands on size_t
- * (without autoconf's help, which isn't available because we want
- * flex-generated scanners to compile on their own).
- */
-typedef unsigned int yy_size_t;
-
-
-struct yy_buffer_state
-       {
-       FILE *yy_input_file;
-
-       char *yy_ch_buf;                /* input buffer */
-       char *yy_buf_pos;               /* current position in input buffer */
-
-       /* Size of input buffer in bytes, not including room for EOB
-        * characters.
-        */
-       yy_size_t yy_buf_size;
-
-       /* Number of characters read into yy_ch_buf, not including EOB
-        * characters.
-        */
-       int yy_n_chars;
-
-       /* Whether we "own" the buffer - i.e., we know we created it,
-        * and can realloc() it to grow it, and should free() it to
-        * delete it.
-        */
-       int yy_is_our_buffer;
-
-       /* Whether this is an "interactive" input source; if so, and
-        * if we're using stdio for input, then we want to use getc()
-        * instead of fread(), to make sure we stop fetching input after
-        * each newline.
-        */
-       int yy_is_interactive;
-
-       /* Whether we're considered to be at the beginning of a line.
-        * If so, '^' rules will be active on the next match, otherwise
-        * not.
-        */
-       int yy_at_bol;
-
-       /* Whether to try to fill the input buffer when we reach the
-        * end of it.
-        */
-       int yy_fill_buffer;
-
-       int yy_buffer_status;
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
-       /* When an EOF's been seen but there's still some text to process
-        * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-        * shouldn't try reading from the input source any more.  We might
-        * still have a bunch of tokens to match, though, because of
-        * possible backing-up.
-        *
-        * When we actually see the EOF, we change the status to "new"
-        * (via yyrestart()), so that the user can continue scanning by
-        * just pointing yyin at a new input file.
-        */
-#define YY_BUFFER_EOF_PENDING 2
-       };
-
-static YY_BUFFER_STATE yy_current_buffer = 0;
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- */
-#define YY_CURRENT_BUFFER yy_current_buffer
-
-
-/* yy_hold_char holds the character lost when yytext is formed. */
-static char yy_hold_char;
-
-static int yy_n_chars;         /* number of characters read into yy_ch_buf */
-
-
-int yyleng;
-
-/* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 1;                /* whether we need to initialize */
-static int yy_start = 0;       /* start state number */
-
-/* Flag which is used to allow yywrap()'s to do buffer switches
- * instead of setting up a fresh yyin.  A bit of a hack ...
- */
-static int yy_did_buffer_switch_on_eof;
-
-void yyrestart YY_PROTO(( FILE *input_file ));
-
-void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
-void yy_load_buffer_state YY_PROTO(( void ));
-YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
-void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
-void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
-
-YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
-YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *str ));
-YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
-
-static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
-static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
-static void yy_flex_free YY_PROTO(( void * ));
-
-#define yy_new_buffer yy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
-       { \
-       if ( ! yy_current_buffer ) \
-               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-       yy_current_buffer->yy_is_interactive = is_interactive; \
-       }
-
-#define yy_set_bol(at_bol) \
-       { \
-       if ( ! yy_current_buffer ) \
-               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-       yy_current_buffer->yy_at_bol = at_bol; \
-       }
-
-#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
-
-
-#define YY_USES_REJECT
-
-#define yywrap() 1
-#define YY_SKIP_YYWRAP
-typedef unsigned char YY_CHAR;
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
-typedef int yy_state_type;
-extern int yylineno;
-int yylineno = 1;
-extern char *yytext;
-#define yytext_ptr yytext
-
-static yy_state_type yy_get_previous_state YY_PROTO(( void ));
-static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
-static int yy_get_next_buffer YY_PROTO(( void ));
-static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
- */
-#define YY_DO_BEFORE_ACTION \
-       yytext_ptr = yy_bp; \
-       yyleng = (int) (yy_cp - yy_bp); \
-       yy_hold_char = *yy_cp; \
-       *yy_cp = '\0'; \
-       yy_c_buf_p = yy_cp;
-
-#define YY_NUM_RULES 21
-#define YY_END_OF_BUFFER 22
-static yyconst short int yy_acclist[188] =
-    {   0,
-       22,   20,   21,   17,   20,   21,   19,   21,   20,   21,
-       20,   21,   16,   20,   21,   20,   21,   16,   20,   21,
-       16,   20,   21,   16,   20,   21,   16,   20,   21,   16,
-       20,   21,   16,   20,   21,   16,   20,   21,   16,   20,
-       21,   16,   20,   21,   16,   20,   21,   16,   20,   21,
-       17,    1,   18,   16,   16,   16,   16,   16,   16,   16,
-       16,   16,   10,   16,   16,   16,   16,   16,   16,   16,
-       15,   16,   16,   16,   16,   16,   16,   16,   16,   16,
-       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
-       16,   16,   16,   16,   16,   16,   16,   16,   16,   13,
-
-       15,   16,   16,   16,   16,   16,    6,   16,   16,   16,
-       16,   16,   16,    6,   10,   16,   11,   15,   14,   15,
-       12,   15,   16,    9,    8,   16,   16,   16,   16,    9,
-       10,    8,   10,   16,   16,   16,   16,   16,   16,    7,
-       16,   16,   16,   16,    7,   10,   16,    5,   16,   16,
-        4,    5,   10,   16,   16,    4,   10,   16,   16,   16,
-       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
-       16,   16,   16,   16,   16,   16,   16,   16,    3,   16,
-        3,   10,   16,   16,    2,    2,   10
-    } ;
-
-static yyconst short int yy_accept[167] =
-    {   0,
-        1,    1,    1,    2,    4,    7,    9,   11,   13,   16,
-       18,   21,   24,   27,   30,   33,   36,   39,   42,   45,
-       48,   51,   52,   52,   53,   53,   54,   55,   55,   55,
-       55,   55,   55,   56,   57,   58,   59,   60,   61,   62,
-       63,   64,   65,   66,   67,   68,   69,   70,   71,   72,
-       72,   72,   72,   72,   73,   74,   75,   76,   77,   78,
-       79,   80,   81,   82,   83,   84,   85,   86,   86,   86,
-       86,   86,   87,   88,   89,   90,   91,   92,   93,   94,
-       95,   96,   97,   98,   99,  100,  100,  102,  102,  102,
-      103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
-
-      113,  114,  116,  117,  119,  121,  123,  124,  125,  126,
-      127,  128,  129,  130,  132,  134,  135,  136,  137,  138,
-      139,  140,  141,  142,  143,  144,  145,  147,  148,  149,
-      150,  151,  152,  154,  155,  156,  158,  159,  160,  161,
-      162,  163,  164,  165,  166,  167,  168,  169,  170,  171,
-      172,  173,  174,  175,  176,  177,  178,  179,  180,  181,
-      183,  184,  185,  186,  188,  188
-    } ;
-
-static yyconst int yy_ec[256] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
-        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    1,    4,    5,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    6,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7,    7,    7,    8,    1,    1,
-        1,    1,    1,    1,    7,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        9,    1,   10,    1,    7,    1,   11,    7,   12,   13,
-
-       14,    7,    7,    7,   15,    7,    7,   16,   17,   18,
-       19,   20,    7,   21,   22,   23,   24,   25,    7,   26,
-       27,    7,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1
-    } ;
-
-static yyconst int yy_meta[28] =
-    {   0,
-        1,    1,    1,    1,    1,    2,    2,    3,    1,    1,
-        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
-        2,    2,    2,    2,    2,    2,    2
-    } ;
-
-static yyconst short int yy_base[171] =
-    {   0,
-        0,   27,  264,  265,  261,  265,  258,  258,    0,   43,
-      242,  246,   45,  231,  243,  248,   52,   48,   54,   57,
-       61,  253,  250,  265,  250,  265,    0,  242,   61,   62,
-       66,   64,  229,  236,  235,  225,  223,  226,  224,  236,
-      265,   69,   72,   75,   71,   73,   82,   74,  265,   82,
-       86,   90,   83,  220,  220,  219,  216,  218,  224,  215,
-       90,   93,   99,  100,   91,  102,  101,  101,  226,  104,
-      107,  224,  222,  221,  212,  219,  222,  214,  117,  119,
-      124,  118,  125,  220,  126,  217,  265,  216,  215,  208,
-      215,  214,  215,  206,  265,  200,  127,  210,  209,  112,
-
-      131,  265,  132,  265,  265,  265,  200,  265,  265,  119,
-      207,  196,  138,  265,  265,  139,  205,  140,  204,  196,
-      196,  265,  201,  200,  141,  145,  265,  199,  265,  189,
-      184,  265,  265,  144,  142,  265,  190,  181,  152,  147,
-      180,  186,  149,  157,  177,  180,  159,  160,  187,  179,
-      162,  166,  179,  178,  168,  175,  161,  265,  167,  265,
-      172,  170,  265,  265,  265,  187,  190,  175,  117,  192
-    } ;
-
-static yyconst short int yy_def[171] =
-    {   0,
-      165,  165,  165,  165,  165,  165,  166,  167,  168,  169,
-      168,  168,  168,  168,  168,  170,  170,  170,  170,  170,
-      170,  165,  166,  165,  167,  165,  168,  169,  169,  169,
-      169,  169,  168,  168,  168,  168,  168,  168,  168,  170,
-      165,  170,  170,  170,  170,  170,  170,  170,  165,  169,
-      169,  169,  169,  168,  168,  168,  168,  168,  168,  168,
-      170,  170,  170,  170,  170,  170,  170,  169,  169,  169,
-      169,  168,  168,  168,  168,  168,  168,  168,  170,  170,
-      170,  170,  170,  170,  170,  169,  165,  169,  169,  168,
-      168,  168,  168,  168,  165,  168,  170,  170,  170,  170,
-
-      170,  165,  170,  165,  165,  165,  168,  165,  165,  168,
-      168,  168,  170,  165,  165,  170,  170,  170,  168,  168,
-      168,  165,  168,  170,  170,  170,  165,  170,  165,  168,
-      168,  165,  165,  170,  170,  165,  168,  168,  170,  170,
-      168,  168,  170,  170,  168,  168,  170,  170,  168,  168,
-      170,  170,  168,  168,  170,  170,  168,  165,  170,  165,
-      168,  170,  165,  165,    0,  165,  165,  165,  165,  165
-    } ;
-
-static yyconst short int yy_nxt[293] =
-    {   0,
-        4,    5,    6,    7,    8,    9,    9,    4,   10,    4,
-        9,    9,    9,    9,   11,   12,    9,    9,    9,    9,
-        9,   13,   14,    9,   15,    9,    9,    4,    5,    6,
-        7,    8,   16,   16,    4,   10,    4,   16,   16,   16,
-       16,   17,   18,   16,   16,   16,   16,   16,   19,   20,
-       16,   21,   16,   16,   29,   41,   30,   35,   36,   41,
-       43,   41,   31,   37,   41,   32,   44,   45,   41,   42,
-       49,   49,   46,   49,   48,   49,   41,   53,   41,   41,
-       41,   41,   41,   47,   50,   62,   52,   51,   63,   41,
-       61,   49,   49,   64,   67,   49,   65,   41,   41,   49,
-
-       41,   66,   68,   70,   71,   69,   41,   41,   41,   41,
-       49,   83,   79,   49,   80,   84,   49,  116,   28,   41,
-       81,   86,   85,   82,   41,   41,   41,   97,   88,   89,
-       98,   41,   41,   41,   41,   99,  101,  100,   41,   41,
-      103,  120,  113,  121,  117,   41,   41,   41,   41,   41,
-      118,   41,   41,  124,   41,  134,   41,  128,  135,   41,
-      139,  125,  140,  126,   41,  143,   41,   41,  144,   41,
-      147,  148,  155,   41,   41,   41,   27,  164,  152,  163,
-      161,  151,  160,  156,  159,  158,  162,   23,   23,   23,
-       25,   25,   25,   40,   40,  157,  154,  153,  150,  149,
-
-      146,  145,  142,  141,  138,  137,  136,  133,  132,  131,
-      130,  129,  127,  123,  122,  119,  115,  114,  112,  111,
-      110,  109,  108,  107,  106,  105,  104,  102,   96,   95,
-       94,   93,   92,   91,   90,   87,   78,   77,   76,   75,
-       74,   73,   72,   41,   60,   59,   58,   57,   56,   55,
-       54,   49,   26,   24,   22,   41,   39,   38,   34,   33,
-       26,   24,   22,  165,    3,  165,  165,  165,  165,  165,
-      165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
-      165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
-      165,  165
-
-    } ;
-
-static yyconst short int yy_chk[293] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    2,    2,    2,
-        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
-        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
-        2,    2,    2,    2,   10,   18,   10,   13,   13,   17,
-       18,   19,   10,   13,   20,   10,   19,   19,   21,   17,
-       29,   30,   19,   32,   21,   31,   42,   32,   45,   43,
-       46,   48,   44,   20,   29,   43,   31,   30,   44,   47,
-       42,   50,   53,   45,   48,   51,   46,   61,   65,   52,
-
-       62,   47,   50,   52,   53,   51,   63,   64,   67,   66,
-       68,   65,   61,   70,   62,   66,   71,  100,  169,  100,
-       63,   68,   67,   64,   79,   82,   80,   79,   70,   71,
-       80,   81,   83,   85,   97,   81,   83,   82,  101,  103,
-       85,  110,   97,  110,  101,  113,  116,  118,  125,  135,
-      103,  134,  126,  113,  140,  125,  143,  118,  126,  139,
-      134,  116,  135,  116,  144,  139,  147,  148,  140,  151,
-      143,  144,  151,  152,  159,  155,  168,  162,  148,  161,
-      157,  147,  156,  152,  155,  154,  159,  166,  166,  166,
-      167,  167,  167,  170,  170,  153,  150,  149,  146,  145,
-
-      142,  141,  138,  137,  131,  130,  128,  124,  123,  121,
-      120,  119,  117,  112,  111,  107,   99,   98,   96,   94,
-       93,   92,   91,   90,   89,   88,   86,   84,   78,   77,
-       76,   75,   74,   73,   72,   69,   60,   59,   58,   57,
-       56,   55,   54,   40,   39,   38,   37,   36,   35,   34,
-       33,   28,   25,   23,   22,   16,   15,   14,   12,   11,
-        8,    7,    5,    3,  165,  165,  165,  165,  165,  165,
-      165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
-      165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
-      165,  165
-
-    } ;
-
-static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
-static char *yy_full_match;
-static int yy_lp;
-#define REJECT \
-{ \
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
-yy_cp = yy_full_match; /* restore poss. backed-over text */ \
-++yy_lp; \
-goto find_rule; \
-}
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-char *yytext;
-#line 1 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-#define INITIAL 0
-#line 2 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-/*
- * Copyright (c) 2000, Red Hat, Inc.
- *
- *     This program is free software; you can redistribute it and/or modify
- *     it under the terms of the GNU General Public License as published by
- *     the Free Software Foundation; either version 2 of the License, or
- *     (at your option) any later version.
- *
- *     A copy of the GNU General Public License can be found at
- *     http://www.gnu.org/
- *
- * Written by DJ Delorie <dj@cygnus.com>
- *
- */
-
-/* tokenize the setup.ini files.  We parse a string which we've
-   previously downloaded.  The program must call ini_init() to specify
-   that string. */
-
-#include "win32.h"
-#include <string.h>
-#include <stdlib.h>
-
-#include "ini.h"
-#include "iniparse.h"
-
-#define YY_INPUT(buf,result,max_size) { result = ini_getchar(buf, max_size); }
-
-static int ini_getchar(char *buf, int max_size);
-static void ignore_line ();
-
-/*%option debug */
-#define YY_NEVER_INTERACTIVE 1
-#line 546 "lex.yy.c"
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int yywrap YY_PROTO(( void ));
-#else
-extern int yywrap YY_PROTO(( void ));
-#endif
-#endif
-
-#ifndef YY_NO_UNPUT
-static void yyunput YY_PROTO(( int c, char *buf_ptr ));
-#endif
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
-#endif
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-static int yyinput YY_PROTO(( void ));
-#else
-static int input YY_PROTO(( void ));
-#endif
-#endif
-
-#if YY_STACK_USED
-static int yy_start_stack_ptr = 0;
-static int yy_start_stack_depth = 0;
-static int *yy_start_stack = 0;
-#ifndef YY_NO_PUSH_STATE
-static void yy_push_state YY_PROTO(( int new_state ));
-#endif
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state YY_PROTO(( void ));
-#endif
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state YY_PROTO(( void ));
-#endif
-
-#else
-#define YY_NO_PUSH_STATE 1
-#define YY_NO_POP_STATE 1
-#define YY_NO_TOP_STATE 1
-#endif
-
-#ifdef YY_MALLOC_DECL
-YY_MALLOC_DECL
-#else
-#if __STDC__
-#ifndef __cplusplus
-#include <stdlib.h>
-#endif
-#else
-/* Just try to get by without declaring the routines.  This will fail
- * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
- * or sizeof(void*) != sizeof(int).
- */
-#endif
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
-#endif
-
-/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
-       if ( yy_current_buffer->yy_is_interactive ) \
-               { \
-               int c = '*', n; \
-               for ( n = 0; n < max_size && \
-                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
-                       buf[n] = (char) c; \
-               if ( c == '\n' ) \
-                       buf[n++] = (char) c; \
-               if ( c == EOF && ferror( yyin ) ) \
-                       YY_FATAL_ERROR( "input in flex scanner failed" ); \
-               result = n; \
-               } \
-       else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
-                 && ferror( yyin ) ) \
-               YY_FATAL_ERROR( "input in flex scanner failed" );
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-#endif
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL int yylex YY_PROTO(( void ))
-#endif
-
-/* Code executed at the beginning of each rule, after yytext and yyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-#define YY_RULE_SETUP \
-       if ( yyleng > 0 ) \
-               yy_current_buffer->yy_at_bol = \
-                               (yytext[yyleng - 1] == '\n'); \
-       YY_USER_ACTION
-
-YY_DECL
-       {
-       register yy_state_type yy_current_state;
-       register char *yy_cp, *yy_bp;
-       register int yy_act;
-
-#line 42 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-
-
-#line 699 "lex.yy.c"
-
-       if ( yy_init )
-               {
-               yy_init = 0;
-
-#ifdef YY_USER_INIT
-               YY_USER_INIT;
-#endif
-
-               if ( ! yy_start )
-                       yy_start = 1;   /* first start state */
-
-               if ( ! yyin )
-                       yyin = stdin;
-
-               if ( ! yyout )
-                       yyout = stdout;
-
-               if ( ! yy_current_buffer )
-                       yy_current_buffer =
-                               yy_create_buffer( yyin, YY_BUF_SIZE );
-
-               yy_load_buffer_state();
-               }
-
-       while ( 1 )             /* loops until end-of-file is reached */
-               {
-               yy_cp = yy_c_buf_p;
-
-               /* Support of yytext. */
-               *yy_cp = yy_hold_char;
-
-               /* yy_bp points to the position in yy_ch_buf of the start of
-                * the current run.
-                */
-               yy_bp = yy_cp;
-
-               yy_current_state = yy_start;
-               yy_current_state += YY_AT_BOL();
-               yy_state_ptr = yy_state_buf;
-               *yy_state_ptr++ = yy_current_state;
-yy_match:
-               do
-                       {
-                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-                       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-                               {
-                               yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 166 )
-                                       yy_c = yy_meta[(unsigned int) yy_c];
-                               }
-                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-                       *yy_state_ptr++ = yy_current_state;
-                       ++yy_cp;
-                       }
-               while ( yy_base[yy_current_state] != 265 );
-
-yy_find_action:
-               yy_current_state = *--yy_state_ptr;
-               yy_lp = yy_accept[yy_current_state];
-find_rule: /* we branch to this label when backing up */
-               for ( ; ; ) /* until we find what rule we matched */
-                       {
-                       if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
-                               {
-                               yy_act = yy_acclist[yy_lp];
-                                       {
-                                       yy_full_match = yy_cp;
-                                       break;
-                                       }
-                               }
-                       --yy_cp;
-                       yy_current_state = *--yy_state_ptr;
-                       yy_lp = yy_accept[yy_current_state];
-                       }
-
-               YY_DO_BEFORE_ACTION;
-
-               if ( yy_act != YY_END_OF_BUFFER )
-                       {
-                       int yyl;
-                       for ( yyl = 0; yyl < yyleng; ++yyl )
-                               if ( yytext[yyl] == '\n' )
-                                       ++yylineno;
-                       }
-
-do_action:     /* This label is used only to access EOF actions. */
-
-
-               switch ( yy_act )
-       { /* beginning of action switch */
-case 1:
-YY_RULE_SETUP
-#line 44 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-{ yylval = strdup (yytext+1);
-                         yylval[strlen (yylval)-1] = 0;
-                         return STRING; }
-       YY_BREAK
-case 2:
-YY_RULE_SETUP
-#line 48 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-return SETUP_TIMESTAMP;
-       YY_BREAK
-case 3:
-YY_RULE_SETUP
-#line 49 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-return SETUP_VERSION;
-       YY_BREAK
-case 4:
-YY_RULE_SETUP
-#line 50 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-return VERSION;
-       YY_BREAK
-case 5:
-YY_RULE_SETUP
-#line 51 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-return INSTALL;
-       YY_BREAK
-case 6:
-YY_RULE_SETUP
-#line 52 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-return TYPE;
-       YY_BREAK
-case 7:
-YY_RULE_SETUP
-#line 53 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-return SOURCE;
-       YY_BREAK
-case 8:
-YY_RULE_SETUP
-#line 54 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-return SDESC;
-       YY_BREAK
-case 9:
-YY_RULE_SETUP
-#line 55 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-return LDESC;
-       YY_BREAK
-case 10:
-YY_RULE_SETUP
-#line 57 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-ignore_line ();
-       YY_BREAK
-case 11:
-YY_RULE_SETUP
-#line 59 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-return T_CURR;
-       YY_BREAK
-case 12:
-YY_RULE_SETUP
-#line 60 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-return T_TEST;
-       YY_BREAK
-case 13:
-YY_RULE_SETUP
-#line 61 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-return T_TEST;
-       YY_BREAK
-case 14:
-YY_RULE_SETUP
-#line 62 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-return T_PREV;
-       YY_BREAK
-case 15:
-YY_RULE_SETUP
-#line 63 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-return T_UNKNOWN;
-       YY_BREAK
-case 16:
-YY_RULE_SETUP
-#line 65 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-{ yylval = strdup (yytext);
-                         return STRING; }
-       YY_BREAK
-case 17:
-YY_RULE_SETUP
-#line 68 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-/* do nothing */
-       YY_BREAK
-case 18:
-YY_RULE_SETUP
-#line 70 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-/* ignore comments */
-       YY_BREAK
-case 19:
-YY_RULE_SETUP
-#line 72 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-{ return yytext[0]; }
-       YY_BREAK
-case 20:
-YY_RULE_SETUP
-#line 73 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-{ return yytext[0]; }
-       YY_BREAK
-case 21:
-YY_RULE_SETUP
-#line 75 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-ECHO;
-       YY_BREAK
-#line 899 "lex.yy.c"
-                       case YY_STATE_EOF(INITIAL):
-                               yyterminate();
-
-       case YY_END_OF_BUFFER:
-               {
-               /* Amount of text matched not including the EOB char. */
-               int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
-
-               /* Undo the effects of YY_DO_BEFORE_ACTION. */
-               *yy_cp = yy_hold_char;
-
-               if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
-                       {
-                       /* We're scanning a new file or input source.  It's
-                        * possible that this happened because the user
-                        * just pointed yyin at a new source and called
-                        * yylex().  If so, then we have to assure
-                        * consistency between yy_current_buffer and our
-                        * globals.  Here is the right place to do so, because
-                        * this is the first action (other than possibly a
-                        * back-up) that will match for the new input source.
-                        */
-                       yy_n_chars = yy_current_buffer->yy_n_chars;
-                       yy_current_buffer->yy_input_file = yyin;
-                       yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
-                       }
-
-               /* Note that here we test for yy_c_buf_p "<=" to the position
-                * of the first EOB in the buffer, since yy_c_buf_p will
-                * already have been incremented past the NUL character
-                * (since all states make transitions on EOB to the
-                * end-of-buffer state).  Contrast this with the test
-                * in input().
-                */
-               if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
-                       { /* This was really a NUL. */
-                       yy_state_type yy_next_state;
-
-                       yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
-
-                       yy_current_state = yy_get_previous_state();
-
-                       /* Okay, we're now positioned to make the NUL
-                        * transition.  We couldn't have
-                        * yy_get_previous_state() go ahead and do it
-                        * for us because it doesn't know how to deal
-                        * with the possibility of jamming (and we don't
-                        * want to build jamming into it because then it
-                        * will run more slowly).
-                        */
-
-                       yy_next_state = yy_try_NUL_trans( yy_current_state );
-
-                       yy_bp = yytext_ptr + YY_MORE_ADJ;
-
-                       if ( yy_next_state )
-                               {
-                               /* Consume the NUL. */
-                               yy_cp = ++yy_c_buf_p;
-                               yy_current_state = yy_next_state;
-                               goto yy_match;
-                               }
-
-                       else
-                               {
-                               yy_cp = yy_c_buf_p;
-                               goto yy_find_action;
-                               }
-                       }
-
-               else switch ( yy_get_next_buffer() )
-                       {
-                       case EOB_ACT_END_OF_FILE:
-                               {
-                               yy_did_buffer_switch_on_eof = 0;
-
-                               if ( yywrap() )
-                                       {
-                                       /* Note: because we've taken care in
-                                        * yy_get_next_buffer() to have set up
-                                        * yytext, we can now set up
-                                        * yy_c_buf_p so that if some total
-                                        * hoser (like flex itself) wants to
-                                        * call the scanner after we return the
-                                        * YY_NULL, it'll still work - another
-                                        * YY_NULL will get returned.
-                                        */
-                                       yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
-
-                                       yy_act = YY_STATE_EOF(YY_START);
-                                       goto do_action;
-                                       }
-
-                               else
-                                       {
-                                       if ( ! yy_did_buffer_switch_on_eof )
-                                               YY_NEW_FILE;
-                                       }
-                               break;
-                               }
-
-                       case EOB_ACT_CONTINUE_SCAN:
-                               yy_c_buf_p =
-                                       yytext_ptr + yy_amount_of_matched_text;
-
-                               yy_current_state = yy_get_previous_state();
-
-                               yy_cp = yy_c_buf_p;
-                               yy_bp = yytext_ptr + YY_MORE_ADJ;
-                               goto yy_match;
-
-                       case EOB_ACT_LAST_MATCH:
-                               yy_c_buf_p =
-                               &yy_current_buffer->yy_ch_buf[yy_n_chars];
-
-                               yy_current_state = yy_get_previous_state();
-
-                               yy_cp = yy_c_buf_p;
-                               yy_bp = yytext_ptr + YY_MORE_ADJ;
-                               goto yy_find_action;
-                       }
-               break;
-               }
-
-       default:
-               YY_FATAL_ERROR(
-                       "fatal flex scanner internal error--no action found" );
-       } /* end of action switch */
-               } /* end of scanning one token */
-       } /* end of yylex */
-
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- *     EOB_ACT_LAST_MATCH -
- *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- *     EOB_ACT_END_OF_FILE - end of file
- */
-
-static int yy_get_next_buffer()
-       {
-       register char *dest = yy_current_buffer->yy_ch_buf;
-       register char *source = yytext_ptr;
-       register int number_to_move, i;
-       int ret_val;
-
-       if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
-               YY_FATAL_ERROR(
-               "fatal flex scanner internal error--end of buffer missed" );
-
-       if ( yy_current_buffer->yy_fill_buffer == 0 )
-               { /* Don't try to fill the buffer, so this is an EOF. */
-               if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
-                       {
-                       /* We matched a singled characater, the EOB, so
-                        * treat this as a final EOF.
-                        */
-                       return EOB_ACT_END_OF_FILE;
-                       }
-
-               else
-                       {
-                       /* We matched some text prior to the EOB, first
-                        * process it.
-                        */
-                       return EOB_ACT_LAST_MATCH;
-                       }
-               }
-
-       /* Try to read more data. */
-
-       /* First move last chars to start of buffer. */
-       number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
-
-       for ( i = 0; i < number_to_move; ++i )
-               *(dest++) = *(source++);
-
-       if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-               /* don't do the read, it's not guaranteed to return an EOF,
-                * just force an EOF
-                */
-               yy_n_chars = 0;
-
-       else
-               {
-               int num_to_read =
-                       yy_current_buffer->yy_buf_size - number_to_move - 1;
-
-               while ( num_to_read <= 0 )
-                       { /* Not enough room in the buffer - grow it. */
-#ifdef YY_USES_REJECT
-                       YY_FATAL_ERROR(
-"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
-#else
-
-                       /* just a shorter name for the current buffer */
-                       YY_BUFFER_STATE b = yy_current_buffer;
-
-                       int yy_c_buf_p_offset =
-                               (int) (yy_c_buf_p - b->yy_ch_buf);
-
-                       if ( b->yy_is_our_buffer )
-                               {
-                               int new_size = b->yy_buf_size * 2;
-
-                               if ( new_size <= 0 )
-                                       b->yy_buf_size += b->yy_buf_size / 8;
-                               else
-                                       b->yy_buf_size *= 2;
-
-                               b->yy_ch_buf = (char *)
-                                       /* Include room in for 2 EOB chars. */
-                                       yy_flex_realloc( (void *) b->yy_ch_buf,
-                                                        b->yy_buf_size + 2 );
-                               }
-                       else
-                               /* Can't grow it, we don't own it. */
-                               b->yy_ch_buf = 0;
-
-                       if ( ! b->yy_ch_buf )
-                               YY_FATAL_ERROR(
-                               "fatal error - scanner input buffer overflow" );
-
-                       yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
-
-                       num_to_read = yy_current_buffer->yy_buf_size -
-                                               number_to_move - 1;
-#endif
-                       }
-
-               if ( num_to_read > YY_READ_BUF_SIZE )
-                       num_to_read = YY_READ_BUF_SIZE;
-
-               /* Read in more data. */
-               YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
-                       yy_n_chars, num_to_read );
-               }
-
-       if ( yy_n_chars == 0 )
-               {
-               if ( number_to_move == YY_MORE_ADJ )
-                       {
-                       ret_val = EOB_ACT_END_OF_FILE;
-                       yyrestart( yyin );
-                       }
-
-               else
-                       {
-                       ret_val = EOB_ACT_LAST_MATCH;
-                       yy_current_buffer->yy_buffer_status =
-                               YY_BUFFER_EOF_PENDING;
-                       }
-               }
-
-       else
-               ret_val = EOB_ACT_CONTINUE_SCAN;
-
-       yy_n_chars += number_to_move;
-       yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
-       yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
-
-       yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
-
-       return ret_val;
-       }
-
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-static yy_state_type yy_get_previous_state()
-       {
-       register yy_state_type yy_current_state;
-       register char *yy_cp;
-
-       yy_current_state = yy_start;
-       yy_current_state += YY_AT_BOL();
-       yy_state_ptr = yy_state_buf;
-       *yy_state_ptr++ = yy_current_state;
-
-       for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
-               {
-               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-               while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-                       {
-                       yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 166 )
-                               yy_c = yy_meta[(unsigned int) yy_c];
-                       }
-               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-               *yy_state_ptr++ = yy_current_state;
-               }
-
-       return yy_current_state;
-       }
-
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- *     next_state = yy_try_NUL_trans( current_state );
- */
-
-#ifdef YY_USE_PROTOS
-static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
-#else
-static yy_state_type yy_try_NUL_trans( yy_current_state )
-yy_state_type yy_current_state;
-#endif
-       {
-       register int yy_is_jam;
-
-       register YY_CHAR yy_c = 1;
-       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-               {
-               yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 166 )
-                       yy_c = yy_meta[(unsigned int) yy_c];
-               }
-       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       *yy_state_ptr++ = yy_current_state;
-       yy_is_jam = (yy_current_state == 165);
-
-       return yy_is_jam ? 0 : yy_current_state;
-       }
-
-
-#ifndef YY_NO_UNPUT
-#ifdef YY_USE_PROTOS
-static void yyunput( int c, register char *yy_bp )
-#else
-static void yyunput( c, yy_bp )
-int c;
-register char *yy_bp;
-#endif
-       {
-       register char *yy_cp = yy_c_buf_p;
-
-       /* undo effects of setting up yytext */
-       *yy_cp = yy_hold_char;
-
-       if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-               { /* need to shift things up to make room */
-               /* +2 for EOB chars. */
-               register int number_to_move = yy_n_chars + 2;
-               register char *dest = &yy_current_buffer->yy_ch_buf[
-                                       yy_current_buffer->yy_buf_size + 2];
-               register char *source =
-                               &yy_current_buffer->yy_ch_buf[number_to_move];
-
-               while ( source > yy_current_buffer->yy_ch_buf )
-                       *--dest = *--source;
-
-               yy_cp += (int) (dest - source);
-               yy_bp += (int) (dest - source);
-               yy_n_chars = yy_current_buffer->yy_buf_size;
-
-               if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-                       YY_FATAL_ERROR( "flex scanner push-back overflow" );
-               }
-
-       *--yy_cp = (char) c;
-
-       if ( c == '\n' )
-               --yylineno;
-
-       yytext_ptr = yy_bp;
-       yy_hold_char = *yy_cp;
-       yy_c_buf_p = yy_cp;
-       }
-#endif /* ifndef YY_NO_UNPUT */
-
-
-#ifdef __cplusplus
-static int yyinput()
-#else
-static int input()
-#endif
-       {
-       int c;
-
-       *yy_c_buf_p = yy_hold_char;
-
-       if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
-               {
-               /* yy_c_buf_p now points to the character we want to return.
-                * If this occurs *before* the EOB characters, then it's a
-                * valid NUL; if not, then we've hit the end of the buffer.
-                */
-               if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
-                       /* This was really a NUL. */
-                       *yy_c_buf_p = '\0';
-
-               else
-                       { /* need more input */
-                       yytext_ptr = yy_c_buf_p;
-                       ++yy_c_buf_p;
-
-                       switch ( yy_get_next_buffer() )
-                               {
-                               case EOB_ACT_END_OF_FILE:
-                                       {
-                                       if ( yywrap() )
-                                               {
-                                               yy_c_buf_p =
-                                               yytext_ptr + YY_MORE_ADJ;
-                                               return EOF;
-                                               }
-
-                                       if ( ! yy_did_buffer_switch_on_eof )
-                                               YY_NEW_FILE;
-#ifdef __cplusplus
-                                       return yyinput();
-#else
-                                       return input();
-#endif
-                                       }
-
-                               case EOB_ACT_CONTINUE_SCAN:
-                                       yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
-                                       break;
-
-                               case EOB_ACT_LAST_MATCH:
-#ifdef __cplusplus
-                                       YY_FATAL_ERROR(
-                                       "unexpected last match in yyinput()" );
-#else
-                                       YY_FATAL_ERROR(
-                                       "unexpected last match in input()" );
-#endif
-                               }
-                       }
-               }
-
-       c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
-       *yy_c_buf_p = '\0';     /* preserve yytext */
-       yy_hold_char = *++yy_c_buf_p;
-
-       yy_current_buffer->yy_at_bol = (c == '\n');
-       if ( yy_current_buffer->yy_at_bol )
-               ++yylineno;
-
-       return c;
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yyrestart( FILE *input_file )
-#else
-void yyrestart( input_file )
-FILE *input_file;
-#endif
-       {
-       if ( ! yy_current_buffer )
-               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
-
-       yy_init_buffer( yy_current_buffer, input_file );
-       yy_load_buffer_state();
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
-#else
-void yy_switch_to_buffer( new_buffer )
-YY_BUFFER_STATE new_buffer;
-#endif
-       {
-       if ( yy_current_buffer == new_buffer )
-               return;
-
-       if ( yy_current_buffer )
-               {
-               /* Flush out information for old buffer. */
-               *yy_c_buf_p = yy_hold_char;
-               yy_current_buffer->yy_buf_pos = yy_c_buf_p;
-               yy_current_buffer->yy_n_chars = yy_n_chars;
-               }
-
-       yy_current_buffer = new_buffer;
-       yy_load_buffer_state();
-
-       /* We don't actually know whether we did this switch during
-        * EOF (yywrap()) processing, but the only time this flag
-        * is looked at is after yywrap() is called, so it's safe
-        * to go ahead and always set it.
-        */
-       yy_did_buffer_switch_on_eof = 1;
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yy_load_buffer_state( void )
-#else
-void yy_load_buffer_state()
-#endif
-       {
-       yy_n_chars = yy_current_buffer->yy_n_chars;
-       yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
-       yyin = yy_current_buffer->yy_input_file;
-       yy_hold_char = *yy_c_buf_p;
-       }
-
-
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
-#else
-YY_BUFFER_STATE yy_create_buffer( file, size )
-FILE *file;
-int size;
-#endif
-       {
-       YY_BUFFER_STATE b;
-
-       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-       if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-       b->yy_buf_size = size;
-
-       /* yy_ch_buf has to be 2 characters longer than the size given because
-        * we need to put in 2 end-of-buffer characters.
-        */
-       b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
-       if ( ! b->yy_ch_buf )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-       b->yy_is_our_buffer = 1;
-
-       yy_init_buffer( b, file );
-
-       return b;
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yy_delete_buffer( YY_BUFFER_STATE b )
-#else
-void yy_delete_buffer( b )
-YY_BUFFER_STATE b;
-#endif
-       {
-       if ( ! b )
-               return;
-
-       if ( b == yy_current_buffer )
-               yy_current_buffer = (YY_BUFFER_STATE) 0;
-
-       if ( b->yy_is_our_buffer )
-               yy_flex_free( (void *) b->yy_ch_buf );
-
-       yy_flex_free( (void *) b );
-       }
-
-
-#ifndef YY_ALWAYS_INTERACTIVE
-#ifndef YY_NEVER_INTERACTIVE
-extern int isatty YY_PROTO(( int ));
-#endif
-#endif
-
-#ifdef YY_USE_PROTOS
-void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
-#else
-void yy_init_buffer( b, file )
-YY_BUFFER_STATE b;
-FILE *file;
-#endif
-
-
-       {
-       yy_flush_buffer( b );
-
-       b->yy_input_file = file;
-       b->yy_fill_buffer = 1;
-
-#if YY_ALWAYS_INTERACTIVE
-       b->yy_is_interactive = 1;
-#else
-#if YY_NEVER_INTERACTIVE
-       b->yy_is_interactive = 0;
-#else
-       b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-#endif
-#endif
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yy_flush_buffer( YY_BUFFER_STATE b )
-#else
-void yy_flush_buffer( b )
-YY_BUFFER_STATE b;
-#endif
-
-       {
-       b->yy_n_chars = 0;
-
-       /* We always need two end-of-buffer characters.  The first causes
-        * a transition to the end-of-buffer state.  The second causes
-        * a jam in that state.
-        */
-       b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-       b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
-       b->yy_buf_pos = &b->yy_ch_buf[0];
-
-       b->yy_at_bol = 1;
-       b->yy_buffer_status = YY_BUFFER_NEW;
-
-       if ( b == yy_current_buffer )
-               yy_load_buffer_state();
-       }
-
-
-#ifndef YY_NO_SCAN_BUFFER
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
-#else
-YY_BUFFER_STATE yy_scan_buffer( base, size )
-char *base;
-yy_size_t size;
-#endif
-       {
-       YY_BUFFER_STATE b;
-
-       if ( size < 2 ||
-            base[size-2] != YY_END_OF_BUFFER_CHAR ||
-            base[size-1] != YY_END_OF_BUFFER_CHAR )
-               /* They forgot to leave room for the EOB's. */
-               return 0;
-
-       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-       if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
-
-       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
-       b->yy_buf_pos = b->yy_ch_buf = base;
-       b->yy_is_our_buffer = 0;
-       b->yy_input_file = 0;
-       b->yy_n_chars = b->yy_buf_size;
-       b->yy_is_interactive = 0;
-       b->yy_at_bol = 1;
-       b->yy_fill_buffer = 0;
-       b->yy_buffer_status = YY_BUFFER_NEW;
-
-       yy_switch_to_buffer( b );
-
-       return b;
-       }
-#endif
-
-
-#ifndef YY_NO_SCAN_STRING
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_string( yyconst char *str )
-#else
-YY_BUFFER_STATE yy_scan_string( str )
-yyconst char *str;
-#endif
-       {
-       int len;
-       for ( len = 0; str[len]; ++len )
-               ;
-
-       return yy_scan_bytes( str, len );
-       }
-#endif
-
-
-#ifndef YY_NO_SCAN_BYTES
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
-#else
-YY_BUFFER_STATE yy_scan_bytes( bytes, len )
-yyconst char *bytes;
-int len;
-#endif
-       {
-       YY_BUFFER_STATE b;
-       char *buf;
-       yy_size_t n;
-       int i;
-
-       /* Get memory for full buffer, including space for trailing EOB's. */
-       n = len + 2;
-       buf = (char *) yy_flex_alloc( n );
-       if ( ! buf )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-
-       for ( i = 0; i < len; ++i )
-               buf[i] = bytes[i];
-
-       buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
-
-       b = yy_scan_buffer( buf, n );
-       if ( ! b )
-               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
-
-       /* It's okay to grow etc. this buffer, and we should throw it
-        * away when we're done.
-        */
-       b->yy_is_our_buffer = 1;
-
-       return b;
-       }
-#endif
-
-
-#ifndef YY_NO_PUSH_STATE
-#ifdef YY_USE_PROTOS
-static void yy_push_state( int new_state )
-#else
-static void yy_push_state( new_state )
-int new_state;
-#endif
-       {
-       if ( yy_start_stack_ptr >= yy_start_stack_depth )
-               {
-               yy_size_t new_size;
-
-               yy_start_stack_depth += YY_START_STACK_INCR;
-               new_size = yy_start_stack_depth * sizeof( int );
-
-               if ( ! yy_start_stack )
-                       yy_start_stack = (int *) yy_flex_alloc( new_size );
-
-               else
-                       yy_start_stack = (int *) yy_flex_realloc(
-                                       (void *) yy_start_stack, new_size );
-
-               if ( ! yy_start_stack )
-                       YY_FATAL_ERROR(
-                       "out of memory expanding start-condition stack" );
-               }
-
-       yy_start_stack[yy_start_stack_ptr++] = YY_START;
-
-       BEGIN(new_state);
-       }
-#endif
-
-
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state()
-       {
-       if ( --yy_start_stack_ptr < 0 )
-               YY_FATAL_ERROR( "start-condition stack underflow" );
-
-       BEGIN(yy_start_stack[yy_start_stack_ptr]);
-       }
-#endif
-
-
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state()
-       {
-       return yy_start_stack[yy_start_stack_ptr - 1];
-       }
-#endif
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-#ifdef YY_USE_PROTOS
-static void yy_fatal_error( yyconst char msg[] )
-#else
-static void yy_fatal_error( msg )
-char msg[];
-#endif
-       {
-       (void) fprintf( stderr, "%s\n", msg );
-       exit( YY_EXIT_FAILURE );
-       }
-
-
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
-       do \
-               { \
-               /* Undo effects of setting up yytext. */ \
-               yytext[yyleng] = yy_hold_char; \
-               yy_c_buf_p = yytext + n - YY_MORE_ADJ; \
-               yy_hold_char = *yy_c_buf_p; \
-               *yy_c_buf_p = '\0'; \
-               yyleng = n; \
-               } \
-       while ( 0 )
-
-
-/* Internal utility routines. */
-
-#ifndef yytext_ptr
-#ifdef YY_USE_PROTOS
-static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
-#else
-static void yy_flex_strncpy( s1, s2, n )
-char *s1;
-yyconst char *s2;
-int n;
-#endif
-       {
-       register int i;
-       for ( i = 0; i < n; ++i )
-               s1[i] = s2[i];
-       }
-#endif
-
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_alloc( yy_size_t size )
-#else
-static void *yy_flex_alloc( size )
-yy_size_t size;
-#endif
-       {
-       return (void *) malloc( size );
-       }
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_realloc( void *ptr, yy_size_t size )
-#else
-static void *yy_flex_realloc( ptr, size )
-void *ptr;
-yy_size_t size;
-#endif
-       {
-       /* The cast to (char *) in the following accommodates both
-        * implementations that use char* generic pointers, and those
-        * that use void* generic pointers.  It works with the latter
-        * because both ANSI C and C++ allow castless assignment from
-        * any pointer type to void*, and deal with argument conversions
-        * as though doing an assignment.
-        */
-       return (void *) realloc( (char *) ptr, size );
-       }
-
-#ifdef YY_USE_PROTOS
-static void yy_flex_free( void *ptr )
-#else
-static void yy_flex_free( ptr )
-void *ptr;
-#endif
-       {
-       free( ptr );
-       }
-
-#if YY_MAIN
-int main()
-       {
-       yylex();
-       return 0;
-       }
-#endif
-#line 75 "/windows/build/xemacs/xemacs/netinstall/inilex.l"
-
-
-static char *input_string = 0;
-static char *end_input_string;
-
-void
-ini_init(char *string)
-{
-  input_string = string;
-  end_input_string = input_string + strlen(input_string);
-}
-
-static int
-ini_getchar(char *buf, int max_size)
-{
-  if (input_string)
-    {
-      int avail = end_input_string - input_string;
-      if (avail == 0)
-       {
-         input_string = end_input_string = 0;
-         return 0;
-       }
-      if (avail > max_size)
-       avail = max_size;
-      memcpy(buf, input_string, avail);
-      input_string += avail;
-      return avail;
-    }
-  else
-    return 0;
-}
-
-static void
-ignore_line ()
-{
-  char c;
-  while (c = input ())
-    {
-      if (c == EOF)
-       return;
-      if (c == '\n')
-       return;
-    }
-}
diff --git a/netinstall/iniparse.c b/netinstall/iniparse.c
deleted file mode 100644 (file)
index 7c30c67..0000000
+++ /dev/null
@@ -1,1068 +0,0 @@
-
-/*  A Bison parser, made from /windows/build/xemacs/xemacs/netinstall/iniparse.y
-    by GNU Bison version 1.28  */
-
-#define YYBISON 1  /* Identify Bison output.  */
-
-#define        STRING  257
-#define        SETUP_TIMESTAMP 258
-#define        SETUP_VERSION   259
-#define        VERSION 260
-#define        INSTALL 261
-#define        SOURCE  262
-#define        SDESC   263
-#define        LDESC   264
-#define        TYPE    265
-#define        T_PREV  266
-#define        T_CURR  267
-#define        T_TEST  268
-#define        T_UNKNOWN       269
-
-#line 1 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-
-/*
- * Copyright (c) 2000, Red Hat, Inc.
- *
- *     This program is free software; you can redistribute it and/or modify
- *     it under the terms of the GNU General Public License as published by
- *     the Free Software Foundation; either version 2 of the License, or
- *     (at your option) any later version.
- *
- *     A copy of the GNU General Public License can be found at
- *     http://www.gnu.org/
- *
- * Written by DJ Delorie <dj@cygnus.com>
- *
- */
-
-/* Parse the setup.ini files.  inilex.l provides the tokens for this. */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "win32.h"
-
-#include "ini.h"
-#include "iniparse.h"
-
-#include "port.h"
-
-#define YYERROR_VERBOSE 1
-/*#define YYDEBUG 1*/
-
-static Package *cp;
-static int trust;
-extern unsigned int setup_timestamp;
-extern char *setup_version;
-extern int yylineno;
-extern int CDECL yyerror (char *s, ...);
-
-#define cpt (cp->info+trust)
-
-#ifndef YYSTYPE
-#define YYSTYPE int
-#endif
-#include <stdio.h>
-
-#ifndef __cplusplus
-#ifndef __STDC__
-#define const
-#endif
-#endif
-
-
-
-#define        YYFINAL         47
-#define        YYFLAG          -32768
-#define        YYNTBASE        18
-
-#define YYTRANSLATE(x) ((unsigned)(x) <= 269 ? yytranslate[x] : 27)
-
-static const char yytranslate[] = {     0,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,    16,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,    17,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
-     7,     8,     9,    10,    11,    12,    13,    14,    15
-};
-
-#if YYDEBUG != 0
-static const short yyprhs[] = {     0,
-     0,     3,     6,     7,    11,    15,    17,    18,    22,    25,
-    26,    27,    33,    37,    39,    42,    45,    48,    52,    56,
-    59,    61,    63,    65,    67,    68
-};
-
-static const short yyrhs[] = {    19,
-    22,     0,    20,    19,     0,     0,     4,     3,    16,     0,
-     5,     3,    16,     0,    16,     0,     0,     1,    21,    16,
-     0,    23,    22,     0,     0,     0,    17,     3,    16,    24,
-    25,     0,    26,    16,    25,     0,    26,     0,     6,     3,
-     0,     9,     3,     0,    10,     3,     0,     7,     3,     3,
-     0,     8,     3,     3,     0,    11,     3,     0,    12,     0,
-    13,     0,    14,     0,    15,     0,     0,     1,    16,     0
-};
-
-#endif
-
-#if YYDEBUG != 0
-static const short yyrline[] = { 0,
-    50,    54,    55,    59,    60,    61,    62,    63,    66,    67,
-    71,    73,    76,    77,    81,    82,    83,    84,    86,    88,
-    94,    95,    96,    97,    98,    99
-};
-#endif
-
-
-#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-
-static const char * const yytname[] = {   "$","error","$undefined.","STRING",
-"SETUP_TIMESTAMP","SETUP_VERSION","VERSION","INSTALL","SOURCE","SDESC","LDESC",
-"TYPE","T_PREV","T_CURR","T_TEST","T_UNKNOWN","'\\n'","'@'","whole_file","setup_headers",
-"setup_header","@1","packages","package","@2","lines","simple_line", NULL
-};
-#endif
-
-static const short yyr1[] = {     0,
-    18,    19,    19,    20,    20,    20,    21,    20,    22,    22,
-    24,    23,    25,    25,    26,    26,    26,    26,    26,    26,
-    26,    26,    26,    26,    26,    26
-};
-
-static const short yyr2[] = {     0,
-     2,     2,     0,     3,     3,     1,     0,     3,     2,     0,
-     0,     5,     3,     1,     2,     2,     2,     3,     3,     2,
-     1,     1,     1,     1,     0,     2
-};
-
-static const short yydefact[] = {     0,
-     7,     0,     0,     6,    10,     0,     0,     0,     0,     0,
-     1,    10,     2,     8,     4,     5,     0,     9,    11,     0,
-     0,     0,     0,     0,     0,     0,     0,    21,    22,    23,
-    24,    12,    14,    26,    15,     0,     0,    16,    17,    20,
-     0,    18,    19,    13,     0,     0,     0
-};
-
-static const short yydefgoto[] = {    45,
-     5,     6,     7,    11,    12,    20,    32,    33
-};
-
-static const short yypact[] = {    18,
--32768,    -1,     1,-32768,   -14,    18,   -11,     4,     5,    21,
--32768,   -14,-32768,-32768,-32768,-32768,     9,-32768,-32768,     0,
-    10,    24,    25,    26,    27,    28,    29,-32768,-32768,-32768,
--32768,-32768,    17,-32768,-32768,    33,    34,-32768,-32768,-32768,
-     0,-32768,-32768,-32768,    38,    39,-32768
-};
-
-static const short yypgoto[] = {-32768,
-    35,-32768,-32768,    30,-32768,-32768,     2,-32768
-};
-
-
-#define        YYLAST          43
-
-
-static const short yytable[] = {   -25,
-    21,     8,    10,     9,    14,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,   -25,   -25,    -3,     1,    15,
-    16,     2,     3,    17,    19,    34,    35,    36,    37,    38,
-    39,    40,    41,     4,    -3,    42,    43,    46,    47,     0,
-    13,    18,    44
-};
-
-static const short yycheck[] = {     0,
-     1,     3,    17,     3,    16,     6,     7,     8,     9,    10,
-    11,    12,    13,    14,    15,    16,    17,     0,     1,    16,
-    16,     4,     5,     3,    16,    16,     3,     3,     3,     3,
-     3,     3,    16,    16,    17,     3,     3,     0,     0,    -1,
-     6,    12,    41
-};
-/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/usr/share/bison.simple"
-/* This file comes from bison-1.28.  */
-
-/* Skeleton output parser for bison,
-   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
-
-/* This is the parser code that is written into each bison parser
-  when the %semantic_parser declaration is not specified in the grammar.
-  It was written by Richard Stallman by simplifying the hairy parser
-  used when %semantic_parser is specified.  */
-
-#ifndef YYSTACK_USE_ALLOCA
-#ifdef alloca
-#define YYSTACK_USE_ALLOCA
-#else /* alloca not defined */
-#ifdef __GNUC__
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
-#else /* not GNU C.  */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
-#define YYSTACK_USE_ALLOCA
-#include <alloca.h>
-#else /* not sparc */
-/* We think this test detects Watcom and Microsoft C.  */
-/* This used to test MSDOS, but that is a bad idea
-   since that symbol is in the user namespace.  */
-#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
-#if 0 /* No need for malloc.h, which pollutes the namespace;
-        instead, just don't use alloca.  */
-#include <malloc.h>
-#endif
-#else /* not MSDOS, or __TURBOC__ */
-#if defined(_AIX)
-/* I don't know what this was needed for, but it pollutes the namespace.
-   So I turned it off.   rms, 2 May 1997.  */
-/* #include <malloc.h>  */
- #pragma alloca
-#define YYSTACK_USE_ALLOCA
-#else /* not MSDOS, or __TURBOC__, or _AIX */
-#if 0
-#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
-                and on HPUX 10.  Eventually we can turn this on.  */
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
-#endif /* __hpux */
-#endif
-#endif /* not _AIX */
-#endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc */
-#endif /* not GNU C */
-#endif /* alloca not defined */
-#endif /* YYSTACK_USE_ALLOCA not defined */
-
-#ifdef YYSTACK_USE_ALLOCA
-#define YYSTACK_ALLOC alloca
-#else
-#define YYSTACK_ALLOC malloc
-#endif
-
-/* Note: there must be only one dollar sign in this file.
-   It is replaced by the list of actions, each action
-   as one case of the switch.  */
-
-#define yyerrok                (yyerrstatus = 0)
-#define yyclearin      (yychar = YYEMPTY)
-#define YYEMPTY                -2
-#define YYEOF          0
-#define YYACCEPT       goto yyacceptlab
-#define YYABORT        goto yyabortlab
-#define YYERROR                goto yyerrlab1
-/* Like YYERROR except do call yyerror.
-   This remains here temporarily to ease the
-   transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
-#define YYFAIL         goto yyerrlab
-#define YYRECOVERING()  (!!yyerrstatus)
-#define YYBACKUP(token, value) \
-do                                                             \
-  if (yychar == YYEMPTY && yylen == 1)                         \
-    { yychar = (token), yylval = (value);                      \
-      yychar1 = YYTRANSLATE (yychar);                          \
-      YYPOPSTACK;                                              \
-      goto yybackup;                                           \
-    }                                                          \
-  else                                                         \
-    { yyerror ("syntax error: cannot back up"); YYERROR; }     \
-while (0)
-
-#define YYTERROR       1
-#define YYERRCODE      256
-
-#ifndef YYPURE
-#define YYLEX          yylex()
-#endif
-
-#ifdef YYPURE
-#ifdef YYLSP_NEEDED
-#ifdef YYLEX_PARAM
-#define YYLEX          yylex(&yylval, &yylloc, YYLEX_PARAM)
-#else
-#define YYLEX          yylex(&yylval, &yylloc)
-#endif
-#else /* not YYLSP_NEEDED */
-#ifdef YYLEX_PARAM
-#define YYLEX          yylex(&yylval, YYLEX_PARAM)
-#else
-#define YYLEX          yylex(&yylval)
-#endif
-#endif /* not YYLSP_NEEDED */
-#endif
-
-/* If nonreentrant, generate the variables here */
-
-#ifndef YYPURE
-
-int    yychar;                 /*  the lookahead symbol                */
-YYSTYPE        yylval;                 /*  the semantic value of the           */
-                               /*  lookahead symbol                    */
-
-#ifdef YYLSP_NEEDED
-YYLTYPE yylloc;                        /*  location data for the lookahead     */
-                               /*  symbol                              */
-#endif
-
-int yynerrs;                   /*  number of parse errors so far       */
-#endif  /* not YYPURE */
-
-#if YYDEBUG != 0
-int yydebug;                   /*  nonzero means print parse trace     */
-/* Since this is uninitialized, it does not stop multiple parsers
-   from coexisting.  */
-#endif
-
-/*  YYINITDEPTH indicates the initial size of the parser's stacks      */
-
-#ifndef        YYINITDEPTH
-#define YYINITDEPTH 200
-#endif
-
-/*  YYMAXDEPTH is the maximum size the stacks can grow to
-    (effective only if the built-in stack extension method is used).  */
-
-#if YYMAXDEPTH == 0
-#undef YYMAXDEPTH
-#endif
-
-#ifndef YYMAXDEPTH
-#define YYMAXDEPTH 10000
-#endif
-\f
-/* Define __yy_memcpy.  Note that the size argument
-   should be passed with type unsigned int, because that is what the non-GCC
-   definitions require.  With GCC, __builtin_memcpy takes an arg
-   of type size_t, but it can handle unsigned int.  */
-
-#if __GNUC__ > 1               /* GNU C and GNU C++ define this.  */
-#define __yy_memcpy(TO,FROM,COUNT)     __builtin_memcpy(TO,FROM,COUNT)
-#else                          /* not GNU C or C++ */
-#ifndef __cplusplus
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (to, from, count)
-     char *to;
-     char *from;
-     unsigned int count;
-{
-  register char *f = from;
-  register char *t = to;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#else /* __cplusplus */
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (char *to, char *from, unsigned int count)
-{
-  register char *t = to;
-  register char *f = from;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#endif
-#endif
-\f
-#line 217 "/usr/share/bison.simple"
-
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
-   into yyparse.  The argument should have type void *.
-   It should actually point to an object.
-   Grammar actions can access the variable by casting it
-   to the proper pointer type.  */
-
-#ifdef YYPARSE_PARAM
-#ifdef __cplusplus
-#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL
-#else /* not __cplusplus */
-#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-#endif /* not __cplusplus */
-#else /* not YYPARSE_PARAM */
-#define YYPARSE_PARAM_ARG
-#define YYPARSE_PARAM_DECL
-#endif /* not YYPARSE_PARAM */
-
-/* Prevent warning if -Wstrict-prototypes.  */
-#ifdef __GNUC__
-#ifdef YYPARSE_PARAM
-int yyparse (void *);
-#else
-int yyparse (void);
-#endif
-#endif
-
-int
-yyparse(YYPARSE_PARAM_ARG)
-     YYPARSE_PARAM_DECL
-{
-  register int yystate;
-  register int yyn;
-  register short *yyssp;
-  register YYSTYPE *yyvsp;
-  int yyerrstatus;     /*  number of tokens to shift before error messages enabled */
-  int yychar1 = 0;             /*  lookahead token as an internal (translated) token number */
-
-  short        yyssa[YYINITDEPTH];     /*  the state stack                     */
-  YYSTYPE yyvsa[YYINITDEPTH];  /*  the semantic value stack            */
-
-  short *yyss = yyssa;         /*  refer to the stacks thru separate pointers */
-  YYSTYPE *yyvs = yyvsa;       /*  to allow yyoverflow to reallocate them elsewhere */
-
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylsa[YYINITDEPTH];  /*  the location stack                  */
-  YYLTYPE *yyls = yylsa;
-  YYLTYPE *yylsp;
-
-#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
-#else
-#define YYPOPSTACK   (yyvsp--, yyssp--)
-#endif
-
-  int yystacksize = YYINITDEPTH;
-  int yyfree_stacks = 0;
-
-#ifdef YYPURE
-  int yychar;
-  YYSTYPE yylval;
-  int yynerrs;
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylloc;
-#endif
-#endif
-
-  YYSTYPE yyval;               /*  the variable used to return         */
-                               /*  semantic values from the action     */
-                               /*  routines                            */
-
-  int yylen;
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Starting parse\n");
-#endif
-
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
-  yychar = YYEMPTY;            /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-
-  yyssp = yyss - 1;
-  yyvsp = yyvs;
-#ifdef YYLSP_NEEDED
-  yylsp = yyls;
-#endif
-
-/* Push a new state, which is found in  yystate  .  */
-/* In all cases, when you get here, the value and location stacks
-   have just been pushed. so pushing a state here evens the stacks.  */
-yynewstate:
-
-  *++yyssp = yystate;
-
-  if (yyssp >= yyss + yystacksize - 1)
-    {
-      /* Give user a chance to reallocate the stack */
-      /* Use copies of these so that the &'s don't force the real ones into memory. */
-      YYSTYPE *yyvs1 = yyvs;
-      short *yyss1 = yyss;
-#ifdef YYLSP_NEEDED
-      YYLTYPE *yyls1 = yyls;
-#endif
-
-      /* Get the current used size of the three stacks, in elements.  */
-      int size = yyssp - yyss + 1;
-
-#ifdef yyoverflow
-      /* Each stack pointer address is followed by the size of
-        the data in use in that stack, in bytes.  */
-#ifdef YYLSP_NEEDED
-      /* This used to be a conditional around just the two extra args,
-        but that might be undefined if yyoverflow is a macro.  */
-      yyoverflow("parser stack overflow",
-                &yyss1, size * sizeof (*yyssp),
-                &yyvs1, size * sizeof (*yyvsp),
-                &yyls1, size * sizeof (*yylsp),
-                &yystacksize);
-#else
-      yyoverflow("parser stack overflow",
-                &yyss1, size * sizeof (*yyssp),
-                &yyvs1, size * sizeof (*yyvsp),
-                &yystacksize);
-#endif
-
-      yyss = yyss1; yyvs = yyvs1;
-#ifdef YYLSP_NEEDED
-      yyls = yyls1;
-#endif
-#else /* no yyoverflow */
-      /* Extend the stack our own way.  */
-      if (yystacksize >= YYMAXDEPTH)
-       {
-         yyerror("parser stack overflow");
-         if (yyfree_stacks)
-           {
-             free (yyss);
-             free (yyvs);
-#ifdef YYLSP_NEEDED
-             free (yyls);
-#endif
-           }
-         return 2;
-       }
-      yystacksize *= 2;
-      if (yystacksize > YYMAXDEPTH)
-       yystacksize = YYMAXDEPTH;
-#ifndef YYSTACK_USE_ALLOCA
-      yyfree_stacks = 1;
-#endif
-      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
-      __yy_memcpy ((char *)yyss, (char *)yyss1,
-                  size * (unsigned int) sizeof (*yyssp));
-      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
-      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
-                  size * (unsigned int) sizeof (*yyvsp));
-#ifdef YYLSP_NEEDED
-      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1,
-                  size * (unsigned int) sizeof (*yylsp));
-#endif
-#endif /* no yyoverflow */
-
-      yyssp = yyss + size - 1;
-      yyvsp = yyvs + size - 1;
-#ifdef YYLSP_NEEDED
-      yylsp = yyls + size - 1;
-#endif
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-#endif
-
-      if (yyssp >= yyss + yystacksize - 1)
-       YYABORT;
-    }
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Entering state %d\n", yystate);
-#endif
-
-  goto yybackup;
- yybackup:
-
-/* Do appropriate processing given the current state.  */
-/* Read a lookahead token if we need one and don't already have one.  */
-/* yyresume: */
-
-  /* First try to decide what to do without reference to lookahead token.  */
-
-  yyn = yypact[yystate];
-  if (yyn == YYFLAG)
-    goto yydefault;
-
-  /* Not known => get a lookahead token if don't already have one.  */
-
-  /* yychar is either YYEMPTY or YYEOF
-     or a valid token in external form.  */
-
-  if (yychar == YYEMPTY)
-    {
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Reading a token: ");
-#endif
-      yychar = YYLEX;
-    }
-
-  /* Convert token to internal form (in yychar1) for indexing tables with */
-
-  if (yychar <= 0)             /* This means end of input. */
-    {
-      yychar1 = 0;
-      yychar = YYEOF;          /* Don't call YYLEX any more */
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Now at end of input.\n");
-#endif
-    }
-  else
-    {
-      yychar1 = YYTRANSLATE(yychar);
-
-#if YYDEBUG != 0
-      if (yydebug)
-       {
-         fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-         /* Give the individual parser a way to print the precise meaning
-            of a token, for further debugging info.  */
-#ifdef YYPRINT
-         YYPRINT (stderr, yychar, yylval);
-#endif
-         fprintf (stderr, ")\n");
-       }
-#endif
-    }
-
-  yyn += yychar1;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
-    goto yydefault;
-
-  yyn = yytable[yyn];
-
-  /* yyn is what to do for this token type in this state.
-     Negative => reduce, -yyn is rule number.
-     Positive => shift, yyn is new state.
-       New state is final state => don't bother to shift,
-       just return success.
-     0, or most negative number => error.  */
-
-  if (yyn < 0)
-    {
-      if (yyn == YYFLAG)
-       goto yyerrlab;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-  else if (yyn == 0)
-    goto yyerrlab;
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-  /* Shift the lookahead token.  */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
-#endif
-
-  /* Discard the token being shifted unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
-
-  *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
-
-  /* count tokens shifted since error; after three, turn off error status.  */
-  if (yyerrstatus) yyerrstatus--;
-
-  yystate = yyn;
-  goto yynewstate;
-
-/* Do the default action for the current state.  */
-yydefault:
-
-  yyn = yydefact[yystate];
-  if (yyn == 0)
-    goto yyerrlab;
-
-/* Do a reduction.  yyn is the number of a rule to reduce with.  */
-yyreduce:
-  yylen = yyr2[yyn];
-  if (yylen > 0)
-    yyval = yyvsp[1-yylen]; /* implement default value of the action */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      int i;
-
-      fprintf (stderr, "Reducing via rule %d (line %d), ",
-              yyn, yyrline[yyn]);
-
-      /* Print the symbols being reduced, and their result.  */
-      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
-       fprintf (stderr, "%s ", yytname[yyrhs[i]]);
-      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
-    }
-#endif
-
-
-  switch (yyn) {
-
-case 4:
-#line 59 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-{ setup_timestamp = strtoul (yyvsp[-1], 0, 0); ;
-    break;}
-case 5:
-#line 60 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-{ setup_version = strdup (yyvsp[-1]); ;
-    break;}
-case 7:
-#line 62 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-{ yyerror ("unrecognized line in setup.ini headers (do you have the latest setup?)"); ;
-    break;}
-case 11:
-#line 71 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-{ new_package(yyvsp[-1]); ;
-    break;}
-case 15:
-#line 81 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-{ cpt->version = yyvsp[0]; ;
-    break;}
-case 16:
-#line 82 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-{ cp->sdesc = yyvsp[0]; ;
-    break;}
-case 17:
-#line 83 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-{ cp->ldesc = yyvsp[0]; ;
-    break;}
-case 18:
-#line 84 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-{ cpt->install = yyvsp[-1];
-                                 cpt->install_size = atoi(yyvsp[0]); ;
-    break;}
-case 19:
-#line 86 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-{ cpt->source = yyvsp[-1];
-                                 cpt->source_size = atoi(yyvsp[0]); ;
-    break;}
-case 20:
-#line 88 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-{ if (!strcmp (yyvsp[0], "cygwin"))
-                                       cp->type = TY_CYGWIN;
-                                 else if (!strcmp (yyvsp[0], "native"))
-                                       cp->type = TY_NATIVE;
-                                 else 
-                                       cp->type = TY_GENERIC; ;
-    break;}
-case 21:
-#line 94 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-{ trust = TRUST_PREV; ;
-    break;}
-case 22:
-#line 95 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-{ trust = TRUST_CURR; ;
-    break;}
-case 23:
-#line 96 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-{ trust = TRUST_TEST; ;
-    break;}
-case 24:
-#line 97 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-{ trust = TRUST_UNKNOWN; ;
-    break;}
-case 26:
-#line 99 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-{ yylineno --;
-               yyerror ("unrecognized line in package %s (do you have the latest setup?)", cp->name);
-               yylineno ++;
-             ;
-    break;}
-}
-   /* the action file gets copied in in place of this dollarsign */
-#line 543 "/usr/share/bison.simple"
-\f
-  yyvsp -= yylen;
-  yyssp -= yylen;
-#ifdef YYLSP_NEEDED
-  yylsp -= yylen;
-#endif
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "state stack now");
-      while (ssp1 != yyssp)
-       fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
-
-  *++yyvsp = yyval;
-
-#ifdef YYLSP_NEEDED
-  yylsp++;
-  if (yylen == 0)
-    {
-      yylsp->first_line = yylloc.first_line;
-      yylsp->first_column = yylloc.first_column;
-      yylsp->last_line = (yylsp-1)->last_line;
-      yylsp->last_column = (yylsp-1)->last_column;
-      yylsp->text = 0;
-    }
-  else
-    {
-      yylsp->last_line = (yylsp+yylen-1)->last_line;
-      yylsp->last_column = (yylsp+yylen-1)->last_column;
-    }
-#endif
-
-  /* Now "shift" the result of the reduction.
-     Determine what state that goes to,
-     based on the state we popped back to
-     and the rule number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
-  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTBASE];
-
-  goto yynewstate;
-
-yyerrlab:   /* here on detecting error */
-
-  if (! yyerrstatus)
-    /* If not already recovering from an error, report this error.  */
-    {
-      ++yynerrs;
-
-#ifdef YYERROR_VERBOSE
-      yyn = yypact[yystate];
-
-      if (yyn > YYFLAG && yyn < YYLAST)
-       {
-         int size = 0;
-         char *msg;
-         int x, count;
-
-         count = 0;
-         /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
-         for (x = (yyn < 0 ? -yyn : 0);
-              x < (sizeof(yytname) / sizeof(char *)); x++)
-           if (yycheck[x + yyn] == x)
-             size += strlen(yytname[x]) + 15, count++;
-         msg = (char *) malloc(size + 15);
-         if (msg != 0)
-           {
-             strcpy(msg, "parse error");
-
-             if (count < 5)
-               {
-                 count = 0;
-                 for (x = (yyn < 0 ? -yyn : 0);
-                      x < (sizeof(yytname) / sizeof(char *)); x++)
-                   if (yycheck[x + yyn] == x)
-                     {
-                       strcat(msg, count == 0 ? ", expecting `" : " or `");
-                       strcat(msg, yytname[x]);
-                       strcat(msg, "'");
-                       count++;
-                     }
-               }
-             yyerror(msg);
-             free(msg);
-           }
-         else
-           yyerror ("parse error; also virtual memory exceeded");
-       }
-      else
-#endif /* YYERROR_VERBOSE */
-       yyerror("parse error");
-    }
-
-  goto yyerrlab1;
-yyerrlab1:   /* here on error raised explicitly by an action */
-
-  if (yyerrstatus == 3)
-    {
-      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
-
-      /* return failure if at end of input */
-      if (yychar == YYEOF)
-       YYABORT;
-
-#if YYDEBUG != 0
-      if (yydebug)
-       fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
-#endif
-
-      yychar = YYEMPTY;
-    }
-
-  /* Else will try to reuse lookahead token
-     after shifting the error token.  */
-
-  yyerrstatus = 3;             /* Each real token shifted decrements this */
-
-  goto yyerrhandle;
-
-yyerrdefault:  /* current state does not do anything special for the error token. */
-
-#if 0
-  /* This is wrong; only states that explicitly want error tokens
-     should shift them.  */
-  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
-  if (yyn) goto yydefault;
-#endif
-
-yyerrpop:   /* pop the current state because it cannot handle the error token */
-
-  if (yyssp == yyss) YYABORT;
-  yyvsp--;
-  yystate = *--yyssp;
-#ifdef YYLSP_NEEDED
-  yylsp--;
-#endif
-
-#if YYDEBUG != 0
-  if (yydebug)
-    {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "Error: state stack now");
-      while (ssp1 != yyssp)
-       fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
-#endif
-
-yyerrhandle:
-
-  yyn = yypact[yystate];
-  if (yyn == YYFLAG)
-    goto yyerrdefault;
-
-  yyn += YYTERROR;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
-    goto yyerrdefault;
-
-  yyn = yytable[yyn];
-  if (yyn < 0)
-    {
-      if (yyn == YYFLAG)
-       goto yyerrpop;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-  else if (yyn == 0)
-    goto yyerrpop;
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting error token, ");
-#endif
-
-  *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
-
-  yystate = yyn;
-  goto yynewstate;
-
- yyacceptlab:
-  /* YYACCEPT comes here.  */
-  if (yyfree_stacks)
-    {
-      free (yyss);
-      free (yyvs);
-#ifdef YYLSP_NEEDED
-      free (yyls);
-#endif
-    }
-  return 0;
-
- yyabortlab:
-  /* YYABORT comes here.  */
-  if (yyfree_stacks)
-    {
-      free (yyss);
-      free (yyvs);
-#ifdef YYLSP_NEEDED
-      free (yyls);
-#endif
-    }
-  return 1;
-}
-#line 105 "/windows/build/xemacs/xemacs/netinstall/iniparse.y"
-
-
-Package *package = 0;
-Package *xemacs_package = 0;
-int npackages = 0;
-static int maxpackages = 0;
-
-Package *
-new_package (char *name)
-{
-  if (package == 0)
-    maxpackages = npackages = 0;
-  if (npackages >= maxpackages)
-    {
-      maxpackages += 10;
-      if (package)
-       package = (Package *) realloc (package, maxpackages * sizeof (Package));
-      else
-       package = (Package *) malloc (maxpackages * sizeof (Package));
-    }
-  cp = package + npackages;
-  npackages ++;
-
-  memset (cp, 0, sizeof (Package));
-  cp->name = name;
-
-  trust = TRUST_CURR;
-
-  return cp;
-}
index a6a523d..030b038 100644 (file)
@@ -449,7 +449,7 @@ IDB_RTARROW             BITMAP  DISCARDABLE     "choose-rtarrow.bmp"
 IDB_CHECK_YES           BITMAP  DISCARDABLE     "check-yes.bmp"\r
 IDB_CHECK_NO            BITMAP  DISCARDABLE     "check-no.bmp"\r
 IDB_CHECK_NA            BITMAP  DISCARDABLE     "check-na.bmp"\r
-GNU                     BITMAP  DISCARDABLE     "gnu.bmp"\r
+GNU                 BITMAP  DISCARDABLE     "gnu.bmp"\r
 IDB_GNU                 BITMAP  DISCARDABLE     "gnu.bmp"\r
 \r
 /////////////////////////////////////////////////////////////////////////////\r
@@ -478,7 +478,7 @@ BEGIN
     IDS_ERR_OPEN_READ       "Can't open %s for reading: %s"\r
     IDS_ROOT_ABSOLUTE       "The install directory must be absolute, with both a drive letter and leading slash, like C:\\Cygwin"\r
     IDS_DOWNLOAD_COMPLETE   "Download Complete"\r
-    IDS_CVSID               "\n%%% $Id: res.rc,v 1.1.2.5 2001/02/02 19:47:47 andyp Exp $\n"\r
+    IDS_CVSID               "\n%%% $Id: res.rc,v 1.1.2.6 2001/03/09 04:13:05 wmperry Exp $\n"\r
     IDS_NOLOGFILE           "Cannot open log file %s for writing"\r
     IDS_UNINSTALL_COMPLETE  "Uninstalls complete."\r
     IDS_WININET             "Unable to find or load the Internet Explorer 5 DLLs"\r
index ca87cd7..80b62f8 100644 (file)
@@ -1,3 +1,21 @@
+2001-03-21  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.46 "Urania" is released.
+
+2001-03-06  Ben Wing  <ben@xemacs.org>
+
+       * xemacs.mak (DEPEND):
+       Correct line that runs perl to do correct quoting regardless of
+       whether nmake is run from bash.
+
+2001-03-02  Ben Wing  <ben@xemacs.org>
+
+       * config.h: Sadly, we need to disable another warning (C4116,
+       unnamed type definition in parentheses: A structure, union, or
+       enumerated type with no name was defined in a parenthetical
+       expression. The type definition is meaningless.), due to Martin's
+       latest definition of ALIGNOF.
+
 2001-02-23  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.45 "Thelxepeia" is released.
index 8d8dae2..78f8e6c 100644 (file)
@@ -610,6 +610,10 @@ on various systems. */
 
 /* 'expression' : signed/unsigned mismatch */
 #pragma warning ( disable : 4018 )
+/* unnamed type definition in parentheses
+  (Martin added a pedantically correct definition of ALIGNOF, which
+  generates temporary anonymous structures, and MSVC complains) */
+#pragma warning ( disable : 4116 )
 
 #endif /* compiler understands #pragma warning*/
 
index 1415865..3268522 100644 (file)
@@ -18,6 +18,13 @@ HAVE_MS_WINDOWS=1
 HAVE_X_WINDOWS=0
 X11_DIR=
 
+# GTK support. Do NOT set this to 1; as of xemacs-21.2-b44
+# gtk-xemacs is not supported on MSWindows (mingw or msvc).
+# Yes, we know that gtk has been ported to native MSWindows
+# but XEmacs is not yet ready to use that port.
+HAVE_GTK=0
+GTK_DIR=
+
 ############################################################################
 
 # Set this to enable XPM support (virtually mandatory), and specify
index f081407..e7ddf7a 100644 (file)
@@ -307,10 +307,23 @@ DEPEND=0
 # #### here, it doesn't seem to matter if we double ^'s!
 # results are the same with all single ^ and all double ^^!
 # see comment below.
-! if [perl -p -e "s/^\x23if defined(.+)/!if defined$$1/; s/^\x23e/!e/;" \
+# #### Yuuuuuuuuuuck!!!  Cygwin is too smart for its own good.  If we are
+# being run from within Cygwin, a Cygwin Perl seems to require twice as
+# much backslash quoting.  This does not happen, of course, with a non-
+# Cygwin Perl, so in that circumstance, you'd be screwed and would have
+# to fix this Makefile to not have a special Cygwin case.
+! if defined(_)
+!  if [perl -p -e "s/^\\x23if defined(.+)/!if defined$$1/; s/^\\x23e/!e/;" \
+       -e "s/([\\s=^])([\\w\\d\\.\\-^]+\\.[ch^])/$$1$(SRC:\=\\\\)\\\\$$2/g;" \
+       -e "s/^(.+)\\.o:(.+)/$(OUTDIR:\=\\\\)\\\\$$1.obj:$$2 $(NT:\=\\\\)\\\\config.inc/;" \
+       < $(SRC)\depend > $(OUTDIR)\depend.tmp]
+!  endif
+! else
+!  if [perl -p -e "s/^\x23if defined(.+)/!if defined$$1/; s/^\x23e/!e/;" \
        -e "s/([\s=^])([\w\d\.\-^]+\.[ch^])/$$1$(SRC:\=\\)\\$$2/g;" \
        -e "s/^(.+)\.o:(.+)/$(OUTDIR:\=\\)\\$$1.obj:$$2 $(NT:\=\\)\\config.inc/;" \
        < $(SRC)\depend > $(OUTDIR)\depend.tmp]
+!  endif
 ! endif
 ! include "$(OUTDIR)\depend.tmp"
 !else
index 9977ef6..a889023 100644 (file)
        (Vcharset_thai_tis620): Likewise.
        (Vcharset_katakana_jisx0201): Likewise.
 
+2001-03-21  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.46 "Urania" is released.
+
+2001-03-20  Dan Holmsand  <dan@eyebee.com>
+
+       * realpath.c (xrealpath): Make file-truename work with symlinks to
+       /cygdrive paths on cygwin. Always lowercase drive-letters on
+       native windows.
+       (cygwin_readlink): Don't try to find canonical filename unless
+       file exists.
+
+2001-03-15  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * ChangeLog: Log GTK merge.
+
+       * dumper.c:
+       * select-x.c:
+       * specifier.c:
+       * symeval.h:
+       Revert gratuitous whitespace changes from GTK merge.
+
+       * emacs.c: Document end of complex #ifdef @ l. 1495.
+
+
+2001-03-12  Andy Piper  <andy@xemacs.org>
+
+       * mingw32.h: unfortunately cygnus changed mingw32 -> mingw so we
+       have to do likewise.
+
+2001-03-12  Andy Piper  <andy@xemacs.org>
+
+       * sysdep.c: we only support mingw now.
+
+2001-03-09  Andy Piper  <andy@xemacs.org>
+
+       * unexcw.c (copy_executable_and_dump_data_section): making approx
+       overrun a warning only.
+
+2001-03-10  William M. Perry  <wmperry@aventail.com>
+
+       * faces.c (complex_vars_of_faces): Rewrote the font mucking to
+       satisfy Stephen's identical-after-cpp plea.
+
+2001-03-02  Ben Wing  <ben@xemacs.org>
+
+       * cmds.c:
+       * cmds.c (Fforward_char):
+       * syntax.c:
+       * window.c:
+
+       Augment documentation of the most common motion commands to make
+       note of the shifted-motion support.
+       
+2001-03-02  Ben Wing  <ben@xemacs.org>
+
+       * nt.c (mswindows_fstat):
+       * nt.c (mswindows_stat):
+       * search.c (boyer_moore):
+       Fix compile warnings under Windows.
+       
+       * sysdep.c (sys_readdir):
+       Fix buggy filename-conversion code under Mule.
+
+2001-03-09  William M. Perry  <wmperry@aventail.com>
+
+       * Makefile.in.in:
+       * config.h.in:
+       * console.c:
+       * console.h:
+       * device.c:
+       * device.h:
+       * dragdrop.c:
+       * emacs.c:
+       * event-stream.c:
+       * events.c:
+       * events.h:
+       * faces.c:
+       * frame.h:
+       * general-slots.h:
+       * glyphs.c:
+       * gutter.c:
+       * inline.c:
+       * lisp.h:
+       * lrecord.h:
+       * make-src-depend:
+       * redisplay-output.c:
+       * redisplay.c:
+       * symsinit.h:
+       * sysfile.h:
+       * toolbar.c:
+       * window.c:
+       The Great GTK Merge.
+
+       * ChangeLog.GTK:
+       * console-gtk.c:
+       * console-gtk.h:
+       * device-gtk.c:
+       * emacs-marshals.c:
+       * emacs-widget-accessors.c:
+       * event-gtk.c:
+       * frame-gtk.c:
+       * gccache-gtk.c:
+       * gccache-gtk.h:
+       * glade.c:
+       * glyphs-gtk.c:
+       * glyphs-gtk.h:
+       * gtk-glue.c:
+       * gtk-xemacs.c:
+       * gtk-xemacs.h:
+       * gui-gtk.c:
+       * gui-gtk.h:
+       * menubar-gtk.c:
+       * native-gtk-toolbar.c:
+       * objects-gtk.c:
+       * objects-gtk.h:
+       * redisplay-gtk.c:
+       * scrollbar-gtk.c:
+       * scrollbar-gtk.h:
+       * select-gtk.c:
+       * toolbar-gtk.c:
+       * ui-byhand.c:
+       * ui-gtk.c:
+       * ui-gtk.h:
+       The Great GTK Merge: new files.
+
+2001-02-26  Ben Wing  <ben@xemacs.org>
+
+       Reapplied Lstream change.
+
+2001-02-26  Ben Wing  <ben@xemacs.org>
+
+       Undid the last change, since it is more controversial than I
+       thought.  It should be back in at some point soon.
+       
+2001-02-25  Ben Wing  <ben@xemacs.org>
+
+       * buffer.c:
+       * callproc.c (Fold_call_process_internal):
+       * event-msw.c (ntpipe_slurp_reader):
+       * event-msw.c (ntpipe_shove_writer):
+       * event-msw.c (winsock_reader):
+       * event-msw.c (winsock_writer):
+       * file-coding.c:
+       * file-coding.c (detect_eol_type):
+       * file-coding.c (detect_coding_type):
+       * file-coding.c (determine_real_coding_system):
+       * file-coding.c (Fdetect_coding_region):
+       * file-coding.c (decoding_reader):
+       * file-coding.c (decoding_writer):
+       * file-coding.c (mule_decode):
+       * file-coding.c (Fdecode_coding_region):
+       * file-coding.c (encoding_reader):
+       * file-coding.c (encoding_writer):
+       * file-coding.c (mule_encode):
+       * file-coding.c (Fencode_coding_region):
+       * file-coding.c (detect_coding_sjis):
+       * file-coding.c (decode_coding_sjis):
+       * file-coding.c (encode_coding_sjis):
+       * file-coding.c (detect_coding_big5):
+       * file-coding.c (decode_coding_big5):
+       * file-coding.c (encode_coding_big5):
+       * file-coding.c (detect_coding_ucs4):
+       * file-coding.c (decode_coding_ucs4):
+       * file-coding.c (encode_coding_ucs4):
+       * file-coding.c (detect_coding_utf8):
+       * file-coding.c (decode_coding_utf8):
+       * file-coding.c (encode_coding_utf8):
+       * file-coding.c (detect_coding_iso2022):
+       * file-coding.c (decode_coding_iso2022):
+       * file-coding.c (encode_coding_iso2022):
+       * file-coding.c (decode_coding_no_conversion):
+       * file-coding.c (encode_coding_no_conversion):
+       * glyphs-x.c (write_lisp_string_to_temp_file):
+       * gpmevent.c (tty_get_foreign_selection):
+       * lisp.h:
+       * lstream.c:
+       * lstream.c (Lstream_flush_out):
+       * lstream.c (Lstream_adding):
+       * lstream.c (Lstream_write_1):
+       * lstream.c (Lstream_write):
+       * lstream.c (Lstream_raw_read):
+       * lstream.c (Lstream_read_more):
+       * lstream.c (Lstream_read):
+       * lstream.c (Lstream_unread):
+       * lstream.c (Lstream_fputc):
+       * lstream.c (stdio_reader):
+       * lstream.c (stdio_writer):
+       * lstream.c (filedesc_reader):
+       * lstream.c (filedesc_writer):
+       * lstream.c (lisp_string_reader):
+       * lstream.c (struct fixed_buffer_stream):
+       * lstream.c (make_fixed_buffer_input_stream):
+       * lstream.c (make_fixed_buffer_output_stream):
+       * lstream.c (fixed_buffer_reader):
+       * lstream.c (fixed_buffer_writer):
+       * lstream.c (struct resizing_buffer_stream):
+       * lstream.c (resizing_buffer_writer):
+       * lstream.c (dynarr_writer):
+       * lstream.c (lisp_buffer_reader):
+       * lstream.c (lisp_buffer_writer):
+       * lstream.h:
+       * lstream.h (lstream_implementation):
+       * lstream.h (struct lstream):
+       * md5.c (Fmd5):
+       * process-nt.c (nt_send_process):
+       * process-unix.c (unix_send_process):
+       
+       Correct Lstream lossage due to mixing of signed and unsigned
+       quantities.  All Lstream uses of size_t and ssize_t are now a
+       single signed data type Lstream_data_count.  This fixes problems
+       under Windows with sending large quantities of data to a process,
+       and may well fix other subtle bugs.
+
 2001-02-23  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.45 "Thelxepeia" is released.
index 0b2c9cf..4e86817 100644 (file)
@@ -390,7 +390,7 @@ ${libsrc}DOC: ${EXE_TARGET} update-elc.stamp
        $(RM) ${libsrc}DOC; \
        ${DUMPENV} ./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/make-docfile.el -- \
                -o ${libsrc}DOC -d ${srcdir} -i ${libsrc}../site-packages \
-               ${obj_src} ${mallocdocsrc} ${rallocdocsrc}
+               ${obj_src} ${mallocdocsrc} ${rallocdocsrc} ${extra_doc_files}
 
 dump_elcs: dump-elcs
 
@@ -700,6 +700,14 @@ hpplay.o: ${srcdir}/hpplay.c
        $(CC) -c -Demacs $(sound_cflags) $(cflags) ${srcdir}/hpplay.c
 #endif /* HAVE_NATIVE_SOUND */
 
+#if defined(HAVE_GLADE_GLADE_H) || defined(HAVE_GLADE_H)
+glade_files=glade.c
+#endif
+
+#ifdef HAVE_GTK
+extra_doc_files=emacs-widget-accessors.c ui-byhand.c $(glade_files)
+#endif
+
 xemacs_res.o: ${srcdir}/../nt/xemacs.rc
        windres --include-dir ${srcdir}/../nt -i ${srcdir}/../nt/xemacs.rc -o $@
 
index 6cbfb9c..8097874 100644 (file)
@@ -1926,7 +1926,7 @@ dfc_convert_to_external_format (dfc_conversion_type source_type,
 
       while (1)
         {
-          ssize_t size_in_bytes;
+          Lstream_data_count size_in_bytes;
          char tempbuf[1024]; /* some random amount */
 
          size_in_bytes = Lstream_read (reader, tempbuf, sizeof (tempbuf));
@@ -2074,7 +2074,7 @@ dfc_convert_to_internal_format (dfc_conversion_type source_type,
 
       while (1)
         {
-          ssize_t size_in_bytes;
+          Lstream_data_count size_in_bytes;
          char tempbuf[1024]; /* some random amount */
 
          size_in_bytes = Lstream_read (reader, tempbuf, sizeof (tempbuf));
index e5766ba..0ee95f0 100644 (file)
@@ -482,7 +482,7 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you
        nread = 0;
        while (nread < bufsize - 1024)
          {
-           ssize_t this_read
+           Lstream_data_count this_read
              = Lstream_read (XLSTREAM (instream), bufptr + nread,
                              bufsize - nread);
 
index df7ad59..ec8d39e 100644 (file)
@@ -51,6 +51,11 @@ Move point right COUNT characters (left if COUNT is negative).
 On attempt to pass end of buffer, stop and signal `end-of-buffer'.
 On attempt to pass beginning of buffer, stop and signal `beginning-of-buffer'.
 On reaching end of buffer, stop and signal error.
+
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
 */
        (count, buffer))
 {
@@ -96,6 +101,11 @@ DEFUN ("backward-char", Fbackward_char, 0, 2, "_p", /*
 Move point left COUNT characters (right if COUNT is negative).
 On attempt to pass end of buffer, stop and signal `end-of-buffer'.
 On attempt to pass beginning of buffer, stop and signal `beginning-of-buffer'.
+
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
 */
        (count, buffer))
 {
@@ -118,6 +128,11 @@ that is COUNT - number of lines moved; if backward, COUNT + number moved.
 With positive COUNT, a non-empty line at the end counts as one line
   successfully moved (for the return value).
 If BUFFER is nil, the current buffer is assumed.
+
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
 */
        (count, buffer))
 {
@@ -179,6 +194,11 @@ Move point to beginning of current line.
 With argument COUNT not nil or 1, move forward COUNT - 1 lines first.
 If scan reaches end of buffer, stop there without error.
 If BUFFER is nil, the current buffer is assumed.
+
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
 */
        (count, buffer))
 {
@@ -216,6 +236,11 @@ Move point to end of current line.
 With argument COUNT not nil or 1, move forward COUNT - 1 lines first.
 If scan reaches end of buffer, stop there without error.
 If BUFFER is nil, the current buffer is assumed.
+
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
 */
        (count, buffer))
 {
index d3fbd1d..ec25013 100644 (file)
@@ -165,8 +165,16 @@ void *alloca ();
 #endif
 #endif /* HAVE_X_WINDOWS */
 
+/* Defines for building Gtk applications */
+#undef HAVE_GNOME
+#undef HAVE_GTK
+#undef HAVE_GDK_IMLIB_INIT
+#undef HAVE_GLADE_GLADE_H
+#undef HAVE_GLADE_H
+#undef LIBGLADE_XML_TXTDOMAIN
+
 /* Define HAVE_WINDOW_SYSTEM if any windowing system is available. */
-#if defined (HAVE_X_WINDOWS) || defined(HAVE_MS_WINDOWS) /* || defined (HAVE_NEXTSTEP) */
+#if defined (HAVE_GTK) || defined (HAVE_X_WINDOWS) || defined(HAVE_MS_WINDOWS) /* || defined (HAVE_NEXTSTEP) */
 #define HAVE_WINDOW_SYSTEM
 #endif
 
index 0d4b8be..5b8e670 100644 (file)
@@ -244,6 +244,11 @@ select_console_1 (Lisp_Object console)
     Vwindow_system = Qx;
   else
 #endif
+#ifdef HAVE_GTK
+  if (CONSOLE_GTK_P (XCONSOLE (console)))
+    Vwindow_system = Qgtk;
+  else
+#endif
 #ifdef HAVE_MS_WINDOWS
   if (CONSOLE_MSWINDOWS_P (XCONSOLE (console)))
     Vwindow_system = Qmswindows;
index cf2ab25..e2c090f 100644 (file)
@@ -505,6 +505,12 @@ error_check_console_type (struct console *con, Lisp_Object sym)
    too many places where the abstraction is broken.  Need to
    fix. */
 
+#ifdef HAVE_GTK
+#define CONSOLE_TYPESYM_GTK_P(typesym) EQ (typesym, Qgtk)
+#else
+#define CONSOLE_TYPESYM_GTK_P(typesym) 0
+#endif
+
 #ifdef HAVE_X_WINDOWS
 #define CONSOLE_TYPESYM_X_P(typesym) EQ (typesym, Qx)
 #else
@@ -523,12 +529,16 @@ error_check_console_type (struct console *con, Lisp_Object sym)
 #define CONSOLE_TYPESYM_STREAM_P(typesym) EQ (typesym, Qstream)
 
 #define CONSOLE_TYPESYM_WIN_P(typesym) \
-  (CONSOLE_TYPESYM_X_P (typesym) || CONSOLE_TYPESYM_MSWINDOWS_P (typesym))
+  (CONSOLE_TYPESYM_GTK_P (typesym) || CONSOLE_TYPESYM_X_P (typesym) || CONSOLE_TYPESYM_MSWINDOWS_P (typesym))
 
 #define CONSOLE_X_P(con) CONSOLE_TYPESYM_X_P (CONSOLE_TYPE (con))
 #define CHECK_X_CONSOLE(z) CHECK_CONSOLE_TYPE (z, x)
 #define CONCHECK_X_CONSOLE(z) CONCHECK_CONSOLE_TYPE (z, x)
 
+#define CONSOLE_GTK_P(con) CONSOLE_TYPESYM_GTK_P (CONSOLE_TYPE (con))
+#define CHECK_GTK_CONSOLE(z) CHECK_CONSOLE_TYPE (z, gtk)
+#define CONCHECK_GTK_CONSOLE(z) CONCHECK_CONSOLE_TYPE (z, gtk)
+
 #define CONSOLE_TTY_P(con) CONSOLE_TYPESYM_TTY_P (CONSOLE_TYPE (con))
 #define CHECK_TTY_CONSOLE(z) CHECK_CONSOLE_TYPE (z, tty)
 #define CONCHECK_TTY_CONSOLE(z) CONCHECK_CONSOLE_TYPE (z, tty)
index 973c233..6e45ae8 100644 (file)
@@ -45,6 +45,23 @@ frame-tty.o: $(LISP_H) char-1byte.h char-lb.h char-ucs.h character.h chartab.h c
 objects-tty.o: $(LISP_H) char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-tty.h console.h database.h device.h elhash.h insdel.h mule-charset.h objects-tty.h objects.h specifier.h syssignal.h systty.h
 redisplay-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-tty.h console.h database.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-tty.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
 #endif
+#if defined(HAVE_GTK)
+console-gtk.o: $(LISP_H) char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h database.h elhash.h mule-charset.h process.h redisplay.h
+device-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h database.h device.h elhash.h events.h faces.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h
+dialog-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console-gtk.h console.h database.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+event-gtk.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console-gtk.h console-tty.h console.h database.h device.h dragdrop.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gtk-xemacs.h gui.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
+frame-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h database.h device.h dragdrop.h elhash.h events.h extents.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h sysdll.h systime.h toolbar.h ui-gtk.h window.h winslots.h
+gccache-gtk.o: $(LISP_H) gccache-gtk.h hash.h
+glyphs-gtk.o: $(LISP_H) bitmaps.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h database.h device.h elhash.h faces.h file-coding.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui-gtk.h gui.h imgproc.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h sysfile.h toolbar.h ui-gtk.h window.h winslots.h
+gui-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h database.h device.h elhash.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+menubar-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console-gtk.h console.h database.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h systime.h toolbar.h ui-gtk.h window.h winslots.h
+objects-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h database.h device.h elhash.h insdel.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h specifier.h
+redisplay-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h database.h debug.h device.h elhash.h faces.h file-coding.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gui.h gutter.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-ccl.h mule-charset.h multibyte.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h
+scrollbar-gtk.o: $(LISP_H) char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h database.h device.h elhash.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui-gtk.h gui.h mule-charset.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+select-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h database.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h select.h specifier.h systime.h toolbar.h window.h winslots.h
+toolbar-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h database.h device.h elhash.h faces.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+ui-gtk.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h database.h device.h elhash.h emacs-marshals.c emacs-widget-accessors.c events.h faces.h glade.c glyphs-gtk.h glyphs.h gtk-glue.c gui-gtk.h gui.h hash.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdll.h systime.h ui-byhand.c ui-gtk.h window.h winslots.h
+#endif
 #if defined(HAVE_DATABASE)
 database.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h database.h elhash.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h sysfile.h
 #endif
@@ -98,6 +115,8 @@ ecrt0.o: config.h
 editfns.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console.h database.h device.h elhash.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syspwd.h systime.h toolbar.h window.h winslots.h
 eldap.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h database.h eldap.h elhash.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h sysdep.h
 elhash.o: $(LISP_H) bytecode.h elhash.h
+emacs-marshals.o: hash.h
+emacs-widget-accessors.o: 
 emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console.h database.h device.h dumper.h elhash.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h nt.h paths.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h syswindows.h toolbar.h window.h winslots.h
 emodules.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h database.h device.h elhash.h emodules.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h toolbar.h window.h winslots.h
 esd.o: $(LISP_H) miscplay.h
@@ -105,7 +124,7 @@ eval.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h char-1byt
 event-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h Emacs.ad.h EmacsFrame.h blocktype.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-tty.h console-x.h console.h database.h device.h dragdrop.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h
 event-stream.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console.h database.h device.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h lstream.h macros.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h menubar.h mule-charset.h multibyte.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h
 event-unixoid.o: $(LISP_H) char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-stream.h console-tty.h console.h database.h device.h elhash.h events.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h process.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h
-events.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-tty.h console-x.h console.h database.h device.h elhash.h events-mod.h events.h extents.h frame.h frameslots.h glyphs.h gui.h keymap.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
+events.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console-tty.h console-x.h console.h database.h device.h elhash.h events-mod.h events.h extents.h frame.h frameslots.h glyphs.h gui.h keymap.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
 extents.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h database.h debug.h device.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h keymap.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h process.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 faces.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h database.h device.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 file-coding.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h database.h elhash.h file-coding.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-ccl.h mule-charset.h multibyte.h opaque.h
@@ -120,11 +139,14 @@ free-hook.o: $(LISP_H) hash.h
 general.o: $(LISP_H)
 getloadavg.o: $(LISP_H) sysfile.h
 gif_io.o: config.h gifrlib.h sysfile.h
+glade.o: bytecode.h
 glyphs-eimage.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h database.h device.h elhash.h faces.h file-coding.h frame.h frameslots.h gifrlib.h glyphs.h gui.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h toolbar.h window.h winslots.h
 glyphs-widget.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h database.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h opaque.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 glyphs.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h database.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 gmalloc.o: config.h getpagesize.h
 gpmevent.o: $(LISP_H) char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console-tty.h console.h database.h device.h elhash.h events-mod.h events.h gpmevent.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h process.h sysdep.h sysproc.h syssignal.h systime.h systty.h
+gtk-glue.o: 
+gtk-xemacs.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h database.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gtk-xemacs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 gui.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h database.h elhash.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h
 gutter.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h database.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 hash.o: $(LISP_H) hash.h
@@ -132,7 +154,7 @@ hftctl.o: $(LISP_H)
 hpplay.o: $(LISP_H) nativesound.h
 imgproc.o: $(LISP_H) imgproc.h
 indent.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h database.h device.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-msw.h console.h database.h device.h eldap.h elhash.h events.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h keymap.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h opaque.h postgresql.h process.h rangetab.h redisplay.h scrollbar.h specifier.h syntax.h syscommctrl.h systime.h syswindows.h toolbar.h tooltalk.h window.h winslots.h xintrinsic.h
+inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console-msw.h console.h database.h device.h eldap.h elhash.h events.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h keymap.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h opaque.h postgresql.h process.h rangetab.h redisplay.h scrollbar.h specifier.h syntax.h syscommctrl.h sysdll.h systime.h syswindows.h toolbar.h tooltalk.h ui-gtk.h window.h winslots.h xintrinsic.h
 input-method-motif.o: $(LISP_H) EmacsFrame.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-x.h console.h database.h device.h elhash.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h
 input-method-xlib.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-x.h console.h database.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
 insdel.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h database.h device.h elhash.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
@@ -152,6 +174,7 @@ menubar.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-u
 minibuf.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console-stream.h console.h database.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
 miscplay.o: $(LISP_H) miscplay.h sysfile.h syssignal.h
 nas.o: $(LISP_H) sysdep.h syssignal.h
+native-gtk-toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-gtk.h console.h database.h device.h elhash.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 nt.o: $(LISP_H) ndir.h nt.h ntheap.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h syswindows.h
 ntheap.o: $(LISP_H) ntheap.h syswindows.h
 ntplay.o: $(LISP_H) nativesound.h nt.h sysfile.h syswindows.h
@@ -197,6 +220,7 @@ text-coding.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h ch
 toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h database.h device.h elhash.h frame.h frameslots.h glyphs.h gui.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 tooltalk.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h database.h elhash.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h process.h syssignal.h tooltalk.h
 tparam.o: config.h
+ui-byhand.o: gui.h
 undo.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h database.h elhash.h extents.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h
 unexaix.o: $(LISP_H) getpagesize.h
 unexalpha.o: config.h
index 16c10a6..6c36f9f 100644 (file)
@@ -549,6 +549,9 @@ have no effect.
      device-independence violations occur in faces.el. */
   int first_x_device = NILP (Vdefault_x_device) && EQ (type, Qx);
 #endif
+#ifdef HAVE_GTK
+  int first_gtk_device = NILP (Vdefault_gtk_device) && EQ (type, Qgtk);
+#endif
 
   GCPRO3 (device, console, name);
 
@@ -598,6 +601,10 @@ have no effect.
   if (first_x_device)
     init_global_resources (d);
 #endif
+#ifdef HAVE_GTK
+  if (first_gtk_device)
+    init_global_resources (d);
+#endif
   init_device_resources (d);
 
   MAYBE_DEVMETH (d, finish_init_device, (d, props));
@@ -758,7 +765,8 @@ delete_device_internal (struct device *d, int force,
 
     /* #### This should probably be a device method but it is time for
        19.14 to go out the door. */
-#ifdef HAVE_X_WINDOWS
+    /* #### BILL!!! Should this deal with HAVE_MSWINDOWS as well? */
+#if defined (HAVE_X_WINDOWS) || defined (HAVE_GTK)
     /* Next delete all frames which have the popup property to avoid
        deleting a child after its parent. */
     DEVICE_FRAME_LOOP (frmcons, d)
index 3395e05..1ef2b12 100644 (file)
@@ -320,6 +320,10 @@ error_check_device_type (struct device *d, Lisp_Object sym)
 #define CHECK_X_DEVICE(z) CHECK_DEVICE_TYPE (z, x)
 #define CONCHECK_X_DEVICE(z) CONCHECK_DEVICE_TYPE (z, x)
 
+#define DEVICE_GTK_P(dev) CONSOLE_TYPESYM_GTK_P (DEVICE_TYPE (dev))
+#define CHECK_GTK_DEVICE(z) CHECK_DEVICE_TYPE (z, gtk)
+#define CONCHECK_GTK_DEVICE(z) CONCHECK_DEVICE_TYPE (z, gtk)
+
 #define DEVICE_MSWINDOWS_P(dev) CONSOLE_TYPESYM_MSWINDOWS_P (DEVICE_TYPE (dev))
 #define CHECK_MSWINDOWS_DEVICE(z) CHECK_DEVICE_TYPE (z, mswindows)
 #define CONCHECK_MSWINDOWS_DEVICE(z) CONCHECK_DEVICE_TYPE (z, mswindows)
@@ -341,7 +345,7 @@ EXFUN (Fmake_device, 3);
 EXFUN (Fselected_device, 1);
 
 extern Lisp_Object Qcreate_device_hook, Qdelete_device_hook, Qgrayscale;
-extern Lisp_Object Qinit_post_tty_win, Qmono, Vdefault_x_device;
+extern Lisp_Object Qinit_post_tty_win, Qmono, Vdefault_x_device, Vdefault_gtk_device;
 extern Lisp_Object Vdevice_class_list;
 
 int valid_device_class_p (Lisp_Object class);
index 713355d..752f82a 100644 (file)
@@ -139,4 +139,7 @@ Each element is the feature symbol of the protocol.
 #ifdef HAVE_OFFIX_DND
   Vdragdrop_protocols = Fcons ( intern ("offix") , Vdragdrop_protocols );
 #endif
+#ifdef HAVE_GTK
+  Vdragdrop_protocols = Fcons ( Qgtk , Vdragdrop_protocols );
+#endif
 }
diff --git a/src/dump-id.h b/src/dump-id.h
new file mode 100644 (file)
index 0000000..e69de29
index 570da5b..f11da82 100644 (file)
@@ -401,9 +401,9 @@ pdump_backtrace (void)
       else
        {
          stderr_out ("  - %s (%d, %d)\n",
-                     LHEADER_IMPLEMENTATION (backtrace[i].obj)->name,
-                     backtrace[i].position,
-                     backtrace[i].offset);
+                  LHEADER_IMPLEMENTATION (backtrace[i].obj)->name,
+                  backtrace[i].position,
+                  backtrace[i].offset);
        }
     }
 }
index 5bf3476..f1462fe 100644 (file)
@@ -440,7 +440,7 @@ make_standard_lisp_hash_table (enum hash_table_test test,
                               double rehash_threshold,
                               enum hash_table_weakness weakness)
 {
-  hash_table_hash_function_t hash_function = 0;
+  hash_table_hash_function_t hash_function =  0;
   hash_table_test_function_t test_function = 0;
 
   switch (test)
index 7833a85..4d5f183 100644 (file)
@@ -1114,6 +1114,13 @@ main_1 (int argc, char **argv, char **envp, int restart)
        display_use = "x";
 
 #endif /* HAVE_X_WINDOWS */
+#ifdef HAVE_GTK
+      {
+       char *dpy = getenv ("DISPLAY");
+       if (dpy && dpy[0])
+         display_use = "gtk";
+      }
+#endif
 #ifdef HAVE_MS_WINDOWS
       if (strcmp(display_use, "x") != 0)
        display_use = "mswindows";
@@ -1264,6 +1271,9 @@ main_1 (int argc, char **argv, char **envp, int restart)
 #ifdef HAVE_X_WINDOWS
       syms_of_event_Xt ();
 #endif
+#ifdef HAVE_GTK
+      syms_of_event_gtk ();
+#endif
 #ifdef HAVE_DRAGNDROP
       syms_of_dragdrop ();
 #endif
@@ -1339,6 +1349,26 @@ main_1 (int argc, char **argv, char **envp, int restart)
       syms_of_objects_tty ();
 #endif
 
+#ifdef HAVE_GTK
+      syms_of_device_gtk ();
+      syms_of_frame_gtk ();
+      syms_of_glyphs_gtk ();
+      syms_of_objects_gtk ();
+      syms_of_ui_gtk ();
+      syms_of_select_gtk ();
+#ifdef HAVE_DIALOGS
+      syms_of_dialog_gtk ();
+#endif
+#ifdef HAVE_MENUBARS
+      syms_of_menubar_gtk ();
+#endif
+      syms_of_select_gtk ();
+      
+#if defined (HAVE_MENUBARS) || defined(HAVE_SCROLLBARS) || defined(HAVE_DIALOGS) || defined(HAVE_TOOLBARS)
+      syms_of_gui_gtk ();
+#endif
+#endif /* HAVE_GTK */
+
 #ifdef HAVE_X_WINDOWS
 #ifdef HAVE_BALLOON_HELP
       syms_of_balloon_x ();
@@ -1471,6 +1501,28 @@ main_1 (int argc, char **argv, char **envp, int restart)
       console_type_create_redisplay_tty ();
 #endif
 
+#ifdef HAVE_GTK
+      console_type_create_gtk ();
+      console_type_create_select_gtk ();
+      console_type_create_device_gtk ();
+      console_type_create_frame_gtk ();
+      console_type_create_objects_gtk ();
+      console_type_create_glyphs_gtk ();
+      console_type_create_redisplay_gtk ();
+#ifdef HAVE_MENUBARS
+      console_type_create_menubar_gtk ();
+#endif
+#ifdef HAVE_SCROLLBARS
+      console_type_create_scrollbar_gtk ();
+#endif
+#ifdef HAVE_TOOLBARS
+      console_type_create_toolbar_gtk ();
+#endif
+#ifdef HAVE_DIALOGS
+      console_type_create_dialog_gtk ();
+#endif
+#endif /* HAVE_GTK */
+
 #ifdef HAVE_X_WINDOWS
       console_type_create_x ();
       console_type_create_device_x ();
@@ -1573,6 +1625,9 @@ main_1 (int argc, char **argv, char **envp, int restart)
 #ifdef HAVE_MS_WINDOWS
       image_instantiator_format_create_glyphs_mswindows ();
 #endif /* HAVE_MSWINDOWS_WINDOWS */
+#ifdef HAVE_GTK
+      image_instantiator_format_create_glyphs_gtk ();
+#endif
 
       /* Now initialize the lstream types and associated symbols.
         Other than the first function below, the functions may
@@ -1775,6 +1830,28 @@ main_1 (int argc, char **argv, char **envp, int restart)
       vars_of_objects_tty ();
 #endif
 
+#ifdef HAVE_GTK
+      vars_of_device_gtk ();
+#ifdef HAVE_DIALOGS
+      vars_of_dialog_gtk ();
+#endif
+      vars_of_event_gtk ();
+      vars_of_frame_gtk ();
+      vars_of_glyphs_gtk ();
+      vars_of_ui_gtk ();
+#ifdef HAVE_MENUBARS
+      vars_of_menubar_gtk ();
+#endif
+      vars_of_objects_gtk ();
+      vars_of_select_gtk ();
+#ifdef HAVE_SCROLLBARS
+      vars_of_scrollbar_gtk ();
+#endif
+#if defined (HAVE_MENUBARS) || defined (HAVE_SCROLLBARS) || defined (HAVE_DIALOGS) || defined (HAVE_TOOLBARS)
+      vars_of_gui_gtk ();
+#endif
+#endif /* HAVE_GTK */
+
 #ifdef HAVE_X_WINDOWS
 #ifdef HAVE_BALLOON_HELP
       vars_of_balloon_x ();
@@ -1798,6 +1875,7 @@ main_1 (int argc, char **argv, char **envp, int restart)
 #endif
 #endif /* HAVE_X_WINDOWS */
 
+
 #ifdef HAVE_MS_WINDOWS
       vars_of_device_mswindows ();
       vars_of_console_mswindows ();
@@ -1918,6 +1996,9 @@ main_1 (int argc, char **argv, char **envp, int restart)
       /* These rely on the glyphs just created in the previous function,
         and call Fadd_spec_to_specifier(), which relies on various
         variables initialized above. */
+#ifdef HAVE_GTK
+      complex_vars_of_glyphs_gtk ();
+#endif
 #ifdef HAVE_X_WINDOWS
       complex_vars_of_glyphs_x ();
 #endif
@@ -2004,6 +2085,9 @@ main_1 (int argc, char **argv, char **envp, int restart)
 #ifdef HAVE_MS_WINDOWS
       reinit_console_type_create_mswindows ();
 #endif
+#ifdef HAVE_GTK
+      reinit_console_type_create_gtk ();
+#endif
 
       reinit_specifier_type_create ();
       reinit_specifier_type_create_image ();
@@ -2044,6 +2128,9 @@ main_1 (int argc, char **argv, char **envp, int restart)
 #ifdef HAVE_X_WINDOWS
       reinit_vars_of_event_Xt ();
 #endif
+#ifdef HAVE_GTK
+      reinit_vars_of_event_gtk ();
+#endif
 #if defined(HAVE_TTY) && (defined (DEBUG_TTY_EVENT_STREAM) || !defined (HAVE_X_WINDOWS))
       reinit_vars_of_event_tty ();
 #endif
@@ -2074,6 +2161,10 @@ main_1 (int argc, char **argv, char **envp, int restart)
       reinit_vars_of_frame_mswindows ();
 #endif
 
+#ifdef HAVE_GTK
+      reinit_vars_of_menubar_gtk ();
+#endif
+
 #ifdef HAVE_X_WINDOWS
       reinit_vars_of_device_x ();
 #ifdef HAVE_SCROLLBARS
index f098d73..fec746e 100644 (file)
@@ -366,8 +366,9 @@ get_ntpipe_input_stream_waitable (Lstream *stream)
   return s->thread_data->hev_caller;
 }
 
-static ssize_t
-ntpipe_slurp_reader (Lstream *stream, unsigned char *data, size_t size)
+static Lstream_data_count
+ntpipe_slurp_reader (Lstream *stream, unsigned char *data,
+                    Lstream_data_count size)
 {
   /* This function must be called from the main thread only */
   struct ntpipe_slurp_stream_shared_data* s =
@@ -580,8 +581,9 @@ get_ntpipe_output_stream_param (Lstream *stream)
 }
 #endif
 
-static ssize_t
-ntpipe_shove_writer (Lstream *stream, const unsigned char *data, size_t size)
+static Lstream_data_count
+ntpipe_shove_writer (Lstream *stream, const unsigned char *data,
+                    Lstream_data_count size)
 {
   struct ntpipe_shove_stream* s = NTPIPE_SHOVE_STREAM_DATA(stream);
 
@@ -697,8 +699,8 @@ winsock_initiate_read (struct winsock_stream *str)
     str->eof_p = 1;
 }
 
-static ssize_t
-winsock_reader (Lstream *stream, unsigned char *data, size_t size)
+static Lstream_data_count
+winsock_reader (Lstream *stream, unsigned char *data, Lstream_data_count size)
 {
   struct winsock_stream *str = WINSOCK_STREAM_DATA (stream);
 
@@ -732,7 +734,7 @@ winsock_reader (Lstream *stream, unsigned char *data, size_t size)
     return -1;
 
   /* Return as much of buffer as we have */
-  size = min (size, (size_t) (str->bufsize - str->bufpos));
+  size = min (size, (Lstream_data_count) (str->bufsize - str->bufpos));
   memcpy (data, (void*)((BYTE*)str->buffer + str->bufpos), size);
   str->bufpos += size;
 
@@ -743,8 +745,9 @@ winsock_reader (Lstream *stream, unsigned char *data, size_t size)
   return size;
 }
 
-static ssize_t
-winsock_writer (Lstream *stream, const unsigned char *data, size_t size)
+static Lstream_data_count
+winsock_writer (Lstream *stream, const unsigned char *data,
+               Lstream_data_count size)
 {
   struct winsock_stream *str = WINSOCK_STREAM_DATA (stream);
 
index 847ab65..8bd273f 100644 (file)
@@ -4810,6 +4810,11 @@ init_event_stream (void)
        init_event_Xt_late ();
       else
 #endif
+#ifdef HAVE_GTK
+      if (!strcmp (display_use, "gtk"))
+       init_event_gtk_late ();
+      else
+#endif
 #ifdef HAVE_MS_WINDOWS
       if (!strcmp (display_use, "mswindows"))
        init_event_mswindows_late ();
index af1888b..4027f13 100644 (file)
@@ -30,6 +30,7 @@ Boston, MA 02111-1307, USA.  */
 #include "console-tty.h" /* for stuff in character_to_event */
 #include "device.h"
 #include "console-x.h" /* for x_event_name prototype */
+#include "console-gtk.h" /* for gtk_event_name prototype */
 #include "extents.h"   /* Just for the EXTENTP abort check... */
 #include "events.h"
 #include "frame.h"
@@ -268,6 +269,12 @@ event_equal (Lisp_Object obj1, Lisp_Object obj2, int depth)
       {
        struct console *con = XCONSOLE (CDFW_CONSOLE (e1->channel));
 
+#ifdef HAVE_GTK
+       if (CONSOLE_GTK_P (con))
+         return (!memcmp (&e1->event.magic.underlying_gdk_event,
+                          &e2->event.magic.underlying_gdk_event,
+                          sizeof (GdkEvent)));
+#endif
 #ifdef HAVE_X_WINDOWS
        if (CONSOLE_X_P (con))
          return (e1->event.magic.underlying_x_event.xany.serial ==
@@ -338,6 +345,10 @@ event_hash (Lisp_Object obj, int depth)
     case magic_event:
       {
        struct console *con = XCONSOLE (CDFW_CONSOLE (EVENT_CHANNEL (e)));
+#ifdef HAVE_GTK
+       if (CONSOLE_GTK_P (con))
+         return HASH2 (hash, e->event.magic.underlying_gdk_event.type);
+#endif
 #ifdef HAVE_X_WINDOWS
        if (CONSOLE_X_P (con))
          return HASH2 (hash, e->event.magic.underlying_x_event.xany.serial);
@@ -1269,6 +1280,13 @@ format_event_object (char *buf, Lisp_Event *event, int brief)
       {
         const char *name = NULL;
 
+#ifdef HAVE_GTK
+       {
+         Lisp_Object console = CDFW_CONSOLE (EVENT_CHANNEL (event));
+         if (CONSOLE_GTK_P (XCONSOLE (console)))
+           name = gtk_event_name (event->event.magic.underlying_gdk_event.type);
+       }
+#endif
 #ifdef HAVE_X_WINDOWS
        {
          Lisp_Object console = CDFW_CONSOLE (EVENT_CHANNEL (event));
index 3dcab79..a6ce474 100644 (file)
@@ -422,11 +422,18 @@ struct magic_eval_data
 # include <X11/Xlib.h>
 #endif
 
+#ifdef HAVE_GTK
+#include <gdk/gdk.h>
+#endif
+
 union magic_data
 {
 #ifdef HAVE_TTY
   char             underlying_tty_event;
 #endif
+#ifdef HAVE_GTK
+  GdkEvent         underlying_gdk_event;
+#endif
 #ifdef HAVE_X_WINDOWS
   XEvent           underlying_x_event;
 #endif
index ffab20d..ab8648e 100644 (file)
@@ -1942,6 +1942,10 @@ complex_vars_of_faces (void)
   {
     Lisp_Object fg_fb = Qnil, bg_fb = Qnil;
 
+#ifdef HAVE_GTK
+    fg_fb = acons (list1 (Qgtk), build_string ("black"), fg_fb);
+    bg_fb = acons (list1 (Qgtk), build_string ("white"), bg_fb);
+#endif
 #ifdef HAVE_X_WINDOWS
     fg_fb = acons (list1 (Qx), build_string ("black"), fg_fb);
     bg_fb = acons (list1 (Qx), build_string ("white"), bg_fb);
@@ -1964,7 +1968,15 @@ complex_vars_of_faces (void)
      support is compiled in. */
   {
     Lisp_Object inst_list = Qnil;
-#ifdef HAVE_X_WINDOWS
+
+#if defined(HAVE_X_WINDOWS) || defined(HAVE_GTK)
+    /* This is kind of ugly because stephen wanted this to be CPP
+    ** identical to the old version, at least for the initial
+    ** checkin
+    **
+    ** WMP March 9, 2001
+    */
+    
     /* The same gory list from x-faces.el.
        (#### Perhaps we should remove the stuff from x-faces.el
        and only depend on this stuff here?  That should work.)
@@ -1989,11 +2001,20 @@ complex_vars_of_faces (void)
     };
     const char **fontptr;
 
+#ifdef HAVE_X_WINDOWS
     for (fontptr = fonts + countof(fonts) - 1; fontptr >= fonts; fontptr--)
       inst_list = Fcons (Fcons (list1 (Qx), build_string (*fontptr)),
                         inst_list);
 #endif /* HAVE_X_WINDOWS */
 
+#ifdef HAVE_GTK
+    for (fontptr = fonts + countof(fonts) - 1; fontptr >= fonts; fontptr--)
+      inst_list = Fcons (Fcons (list1 (Qgtk), build_string (*fontptr)),
+                        inst_list);
+#endif /* HAVE_GTK */
+#endif /* HAVE_X_WINDOWS || HAVE_GTK */
+
+
 #ifdef HAVE_TTY
     inst_list = Fcons (Fcons (list1 (Qtty), build_string ("normal")),
                       inst_list);
@@ -2001,16 +2022,16 @@ complex_vars_of_faces (void)
 #ifdef HAVE_MS_WINDOWS
     /* Fixedsys does not exist for printers */
     inst_list = Fcons (Fcons (list1 (Qmsprinter),
-                      build_string ("Courier:Regular:10::Western")), inst_list);
+                             build_string ("Courier:Regular:10::Western")), inst_list);
     inst_list = Fcons (Fcons (list1 (Qmsprinter),
-                      build_string ("Courier New:Regular:10::Western")), inst_list);
+                             build_string ("Courier New:Regular:10::Western")), inst_list);
 
     inst_list = Fcons (Fcons (list1 (Qmswindows),
-                      build_string ("Fixedsys:Regular:9::Western")), inst_list);
+                             build_string ("Fixedsys:Regular:9::Western")), inst_list);
     inst_list = Fcons (Fcons (list1 (Qmswindows),
-                      build_string ("Courier:Regular:10::Western")), inst_list);
+                             build_string ("Courier:Regular:10::Western")), inst_list);
     inst_list = Fcons (Fcons (list1 (Qmswindows),
-                      build_string ("Courier New:Regular:10::Western")), inst_list);
+                             build_string ("Courier New:Regular:10::Western")), inst_list);
 #endif /* HAVE_MS_WINDOWS */
     set_specifier_fallback (Fget (Vdefault_face, Qfont, Qnil), inst_list);
   }
@@ -2039,6 +2060,13 @@ complex_vars_of_faces (void)
   {
     Lisp_Object fg_fb = Qnil, bg_fb = Qnil;
 
+#ifdef HAVE_GTK
+    /* We need to put something in there, or error checking gets
+       #%!@#ed up before the styles are set, which override the
+       fallbacks. */
+    fg_fb = acons (list1 (Qgtk), build_string ("black"), fg_fb);
+    bg_fb = acons (list1 (Qgtk), build_string ("Gray80"), bg_fb);
+#endif
 #ifdef HAVE_X_WINDOWS
     fg_fb = acons (list1 (Qx), build_string ("black"), fg_fb);
     bg_fb = acons (list1 (Qx), build_string ("Gray80"), bg_fb);
index 8cacbdc..ac530b2 100644 (file)
@@ -176,47 +176,47 @@ EXFUN (Fcopy_coding_system, 2);
 #ifdef MULE
 struct detection_state;
 static int detect_coding_sjis (struct detection_state *st,
-                              const Extbyte *src, size_t n);
+                              const Extbyte *src, Lstream_data_count n);
 static void decode_coding_sjis (Lstream *decoding, const Extbyte *src,
-                               unsigned_char_dynarr *dst, size_t n);
+                               unsigned_char_dynarr *dst, Lstream_data_count n);
 static void encode_coding_sjis (Lstream *encoding, const Bufbyte *src,
-                               unsigned_char_dynarr *dst, size_t n);
+                               unsigned_char_dynarr *dst, Lstream_data_count n);
 static int detect_coding_big5 (struct detection_state *st,
-                              const Extbyte *src, size_t n);
+                              const Extbyte *src, Lstream_data_count n);
 static void decode_coding_big5 (Lstream *decoding, const Extbyte *src,
-                               unsigned_char_dynarr *dst, size_t n);
+                               unsigned_char_dynarr *dst, Lstream_data_count n);
 static void encode_coding_big5 (Lstream *encoding, const Bufbyte *src,
-                               unsigned_char_dynarr *dst, size_t n);
+                               unsigned_char_dynarr *dst, Lstream_data_count n);
 static int detect_coding_ucs4 (struct detection_state *st,
-                              const Extbyte *src, size_t n);
+                              const Extbyte *src, Lstream_data_count n);
 static void decode_coding_ucs4 (Lstream *decoding, const Extbyte *src,
-                               unsigned_char_dynarr *dst, size_t n);
+                               unsigned_char_dynarr *dst, Lstream_data_count n);
 static void encode_coding_ucs4 (Lstream *encoding, const Bufbyte *src,
-                               unsigned_char_dynarr *dst, size_t n);
+                               unsigned_char_dynarr *dst, Lstream_data_count n);
 static int detect_coding_utf8 (struct detection_state *st,
-                              const Extbyte *src, size_t n);
+                              const Extbyte *src, Lstream_data_count n);
 static void decode_coding_utf8 (Lstream *decoding, const Extbyte *src,
-                               unsigned_char_dynarr *dst, size_t n);
+                               unsigned_char_dynarr *dst, Lstream_data_count n);
 static void encode_coding_utf8 (Lstream *encoding, const Bufbyte *src,
-                               unsigned_char_dynarr *dst, size_t n);
+                               unsigned_char_dynarr *dst, Lstream_data_count n);
 static int postprocess_iso2022_mask (int mask);
 static void reset_iso2022 (Lisp_Object coding_system,
                           struct iso2022_decoder *iso);
 static int detect_coding_iso2022 (struct detection_state *st,
-                                 const Extbyte *src, size_t n);
+                                 const Extbyte *src, Lstream_data_count n);
 static void decode_coding_iso2022 (Lstream *decoding, const Extbyte *src,
-                                  unsigned_char_dynarr *dst, size_t n);
+                                  unsigned_char_dynarr *dst, Lstream_data_count n);
 static void encode_coding_iso2022 (Lstream *encoding, const Bufbyte *src,
-                                  unsigned_char_dynarr *dst, size_t n);
+                                  unsigned_char_dynarr *dst, Lstream_data_count n);
 #endif /* MULE */
 static void decode_coding_no_conversion (Lstream *decoding, const Extbyte *src,
-                                        unsigned_char_dynarr *dst, size_t n);
+                                        unsigned_char_dynarr *dst, Lstream_data_count n);
 static void encode_coding_no_conversion (Lstream *encoding, const Bufbyte *src,
-                                        unsigned_char_dynarr *dst, size_t n);
+                                        unsigned_char_dynarr *dst, Lstream_data_count n);
 static void mule_decode (Lstream *decoding, const Extbyte *src,
-                        unsigned_char_dynarr *dst, size_t n);
+                        unsigned_char_dynarr *dst, Lstream_data_count n);
 static void mule_encode (Lstream *encoding, const Bufbyte *src,
-                        unsigned_char_dynarr *dst, size_t n);
+                        unsigned_char_dynarr *dst, Lstream_data_count n);
 
 typedef struct codesys_prop codesys_prop;
 struct codesys_prop
@@ -1632,7 +1632,7 @@ mask_has_at_most_one_bit_p (int mask)
 
 static eol_type_t
 detect_eol_type (struct detection_state *st, const Extbyte *src,
-                size_t n)
+                Lstream_data_count n)
 {
   while (n--)
     {
@@ -1675,7 +1675,7 @@ detect_eol_type (struct detection_state *st, const Extbyte *src,
 
 static int
 detect_coding_type (struct detection_state *st, const Extbyte *src,
-                   size_t n, int just_do_eol)
+                   Lstream_data_count n, int just_do_eol)
 {
   if (st->eol_type == EOL_AUTODETECT)
     st->eol_type = detect_eol_type (st, src, n);
@@ -1806,7 +1806,7 @@ determine_real_coding_system (Lstream *stream, Lisp_Object *codesys_in_out,
       Extbyte buf[4096];
       Lisp_Object coding_system = Qnil;
       Extbyte *p;
-      ssize_t nread = Lstream_read (stream, buf, sizeof (buf));
+      Lstream_data_count nread = Lstream_read (stream, buf, sizeof (buf));
       Extbyte *scan_end;
 
       /* Look for initial "-*-"; mode line prefix */
@@ -1940,7 +1940,7 @@ type.  Optional arg BUFFER defaults to the current buffer.
   while (1)
     {
       Extbyte random_buffer[4096];
-      ssize_t nread = Lstream_read (istr, random_buffer, sizeof (random_buffer));
+      Lstream_data_count nread = Lstream_read (istr, random_buffer, sizeof (random_buffer));
 
       if (!nread)
        break;
@@ -2164,10 +2164,10 @@ struct decoding_stream
   struct detection_state decst;
 };
 
-static ssize_t decoding_reader (Lstream *stream,
-                               unsigned char *data, size_t size);
-static ssize_t decoding_writer (Lstream *stream,
-                               const unsigned char *data, size_t size);
+static Lstream_data_count decoding_reader (Lstream *stream,
+                               unsigned char *data, Lstream_data_count size);
+static Lstream_data_count decoding_writer (Lstream *stream,
+                               const unsigned char *data, Lstream_data_count size);
 static int decoding_rewinder   (Lstream *stream);
 static int decoding_seekable_p (Lstream *stream);
 static int decoding_flusher    (Lstream *stream);
@@ -2199,12 +2199,12 @@ decoding_marker (Lisp_Object stream)
 /* Read SIZE bytes of data and store it into DATA.  We are a decoding stream
    so we read data from the other end, decode it, and store it into DATA. */
 
-static ssize_t
-decoding_reader (Lstream *stream, unsigned char *data, size_t size)
+static Lstream_data_count
+decoding_reader (Lstream *stream, unsigned char *data, Lstream_data_count size)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (stream);
   unsigned char *orig_data = data;
-  ssize_t read_size;
+  Lstream_data_count read_size;
   int error_occurred = 0;
 
   /* We need to interface to mule_decode(), which expects to take some
@@ -2220,7 +2220,7 @@ decoding_reader (Lstream *stream, unsigned char *data, size_t size)
         most SIZE bytes, and delete the data from the runoff. */
       if (Dynarr_length (str->runoff) > 0)
        {
-         size_t chunk = min (size, (size_t) Dynarr_length (str->runoff));
+         Lstream_data_count chunk = min (size, (Lstream_data_count) Dynarr_length (str->runoff));
          memcpy (data, Dynarr_atp (str->runoff, 0), chunk);
          Dynarr_delete_many (str->runoff, 0, chunk);
          data += chunk;
@@ -2261,11 +2261,11 @@ decoding_reader (Lstream *stream, unsigned char *data, size_t size)
     return data - orig_data;
 }
 
-static ssize_t
-decoding_writer (Lstream *stream, const unsigned char *data, size_t size)
+static Lstream_data_count
+decoding_writer (Lstream *stream, const unsigned char *data, Lstream_data_count size)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (stream);
-  ssize_t retval;
+  Lstream_data_count retval;
 
   /* Decode all our data into the runoff, and then attempt to write
      it all out to the other end.  Remove whatever chunk we succeeded
@@ -2423,7 +2423,7 @@ make_decoding_output_stream (Lstream *stream, Lisp_Object codesys)
 
 static void
 mule_decode (Lstream *decoding, const Extbyte *src,
-            unsigned_char_dynarr *dst, size_t n)
+            unsigned_char_dynarr *dst, Lstream_data_count n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
 
@@ -2545,7 +2545,7 @@ BUFFER defaults to the current buffer if unspecified.
       char tempbuf[1024]; /* some random amount */
       Bufpos newpos, even_newer_pos;
       Bufpos oldpos = lisp_buffer_stream_startpos (istr);
-      ssize_t size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
+      Lstream_data_count size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
 
       if (!size_in_bytes)
        break;
@@ -2630,9 +2630,9 @@ struct encoding_stream
 #endif /* MULE */
 };
 
-static ssize_t encoding_reader (Lstream *stream, unsigned char *data, size_t size);
-static ssize_t encoding_writer (Lstream *stream, const unsigned char *data,
-                               size_t size);
+static Lstream_data_count encoding_reader (Lstream *stream, unsigned char *data, Lstream_data_count size);
+static Lstream_data_count encoding_writer (Lstream *stream, const unsigned char *data,
+                               Lstream_data_count size);
 static int encoding_rewinder   (Lstream *stream);
 static int encoding_seekable_p (Lstream *stream);
 static int encoding_flusher    (Lstream *stream);
@@ -2664,12 +2664,12 @@ encoding_marker (Lisp_Object stream)
 /* Read SIZE bytes of data and store it into DATA.  We are a encoding stream
    so we read data from the other end, encode it, and store it into DATA. */
 
-static ssize_t
-encoding_reader (Lstream *stream, unsigned char *data, size_t size)
+static Lstream_data_count
+encoding_reader (Lstream *stream, unsigned char *data, Lstream_data_count size)
 {
   struct encoding_stream *str = ENCODING_STREAM_DATA (stream);
   unsigned char *orig_data = data;
-  ssize_t read_size;
+  Lstream_data_count read_size;
   int error_occurred = 0;
 
   /* We need to interface to mule_encode(), which expects to take some
@@ -2726,11 +2726,11 @@ encoding_reader (Lstream *stream, unsigned char *data, size_t size)
     return data - orig_data;
 }
 
-static ssize_t
-encoding_writer (Lstream *stream, const unsigned char *data, size_t size)
+static Lstream_data_count
+encoding_writer (Lstream *stream, const unsigned char *data, Lstream_data_count size)
 {
   struct encoding_stream *str = ENCODING_STREAM_DATA (stream);
-  ssize_t retval;
+  Lstream_data_count retval;
 
   /* Encode all our data into the runoff, and then attempt to write
      it all out to the other end.  Remove whatever chunk we succeeded
@@ -2874,7 +2874,7 @@ make_encoding_output_stream (Lstream *stream, Lisp_Object codesys)
 
 static void
 mule_encode (Lstream *encoding, const Bufbyte *src,
-            unsigned_char_dynarr *dst, size_t n)
+            unsigned_char_dynarr *dst, Lstream_data_count n)
 {
   struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
 
@@ -2960,7 +2960,7 @@ text.  BUFFER defaults to the current buffer if unspecified.
       char tempbuf[1024]; /* some random amount */
       Bufpos newpos, even_newer_pos;
       Bufpos oldpos = lisp_buffer_stream_startpos (istr);
-      ssize_t size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
+      Lstream_data_count size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
 
       if (!size_in_bytes)
        break;
@@ -3023,7 +3023,7 @@ text.  BUFFER defaults to the current buffer if unspecified.
   ((c) >= 0xA1 && (c) <= 0xDF)
 
 static int
-detect_coding_sjis (struct detection_state *st, const Extbyte *src, size_t n)
+detect_coding_sjis (struct detection_state *st, const Extbyte *src, Lstream_data_count n)
 {
   while (n--)
     {
@@ -3046,7 +3046,7 @@ detect_coding_sjis (struct detection_state *st, const Extbyte *src, size_t n)
 
 static void
 decode_coding_sjis (Lstream *decoding, const Extbyte *src,
-                   unsigned_char_dynarr *dst, size_t n)
+                   unsigned_char_dynarr *dst, Lstream_data_count n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
   unsigned int flags  = str->flags;
@@ -3113,7 +3113,7 @@ decode_coding_sjis (Lstream *decoding, const Extbyte *src,
 
 static void
 encode_coding_sjis (Lstream *encoding, const Bufbyte *src,
-                   unsigned_char_dynarr *dst, size_t n)
+                   unsigned_char_dynarr *dst, Lstream_data_count n)
 {
   struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
   unsigned int flags  = str->flags;
@@ -3391,7 +3391,7 @@ Return the corresponding character code in SHIFT-JIS as a cons of two bytes.
 } while (0)
 
 static int
-detect_coding_big5 (struct detection_state *st, const Extbyte *src, size_t n)
+detect_coding_big5 (struct detection_state *st, const Extbyte *src, Lstream_data_count n)
 {
   while (n--)
     {
@@ -3415,7 +3415,7 @@ detect_coding_big5 (struct detection_state *st, const Extbyte *src, size_t n)
 
 static void
 decode_coding_big5 (Lstream *decoding, const Extbyte *src,
-                   unsigned_char_dynarr *dst, size_t n)
+                   unsigned_char_dynarr *dst, Lstream_data_count n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
   unsigned int flags  = str->flags;
@@ -3464,7 +3464,7 @@ decode_coding_big5 (Lstream *decoding, const Extbyte *src,
 
 static void
 encode_coding_big5 (Lstream *encoding, const Bufbyte *src,
-                   unsigned_char_dynarr *dst, size_t n)
+                   unsigned_char_dynarr *dst, Lstream_data_count n)
 {
 #ifndef UTF2000
   unsigned char c;
@@ -3739,7 +3739,7 @@ encode_ucs4 (Lisp_Object charset,
 #endif
 
 static int
-detect_coding_ucs4 (struct detection_state *st, const Extbyte *src, size_t n)
+detect_coding_ucs4 (struct detection_state *st, const Extbyte *src, Lstream_data_count n)
 {
   while (n--)
     {
@@ -3764,7 +3764,7 @@ detect_coding_ucs4 (struct detection_state *st, const Extbyte *src, size_t n)
 
 static void
 decode_coding_ucs4 (Lstream *decoding, const Extbyte *src,
-                   unsigned_char_dynarr *dst, size_t n)
+                   unsigned_char_dynarr *dst, Lstream_data_count n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
   unsigned int flags = str->flags;
@@ -3800,7 +3800,7 @@ decode_coding_ucs4 (Lstream *decoding, const Extbyte *src,
 
 static void
 encode_coding_ucs4 (Lstream *encoding, const Bufbyte *src,
-                   unsigned_char_dynarr *dst, size_t n)
+                   unsigned_char_dynarr *dst, Lstream_data_count n)
 {
 #ifndef UTF2000
   struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
@@ -3940,7 +3940,7 @@ encode_coding_ucs4 (Lstream *encoding, const Bufbyte *src,
 /************************************************************************/
 
 static int
-detect_coding_utf8 (struct detection_state *st, const Extbyte *src, size_t n)
+detect_coding_utf8 (struct detection_state *st, const Extbyte *src, Lstream_data_count n)
 {
   while (n--)
     {
@@ -3975,7 +3975,7 @@ detect_coding_utf8 (struct detection_state *st, const Extbyte *src, size_t n)
 
 static void
 decode_coding_utf8 (Lstream *decoding, const Extbyte *src,
-                   unsigned_char_dynarr *dst, size_t n)
+                   unsigned_char_dynarr *dst, Lstream_data_count n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
   unsigned int flags  = str->flags;
@@ -4091,7 +4091,7 @@ encode_utf8 (Lisp_Object charset,
 
 static void
 encode_coding_utf8 (Lstream *encoding, const Bufbyte *src,
-                   unsigned_char_dynarr *dst, size_t n)
+                   unsigned_char_dynarr *dst, Lstream_data_count n)
 {
   struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
   unsigned int flags  = str->flags;
@@ -4912,7 +4912,7 @@ parse_iso2022_esc (Lisp_Object codesys, struct iso2022_decoder *iso,
 }
 
 static int
-detect_coding_iso2022 (struct detection_state *st, const Extbyte *src, size_t n)
+detect_coding_iso2022 (struct detection_state *st, const Extbyte *src, Lstream_data_count n)
 {
   int mask;
 
@@ -5103,7 +5103,7 @@ ensure_correct_direction (int direction, Lisp_Coding_System *codesys,
 
 static void
 decode_coding_iso2022 (Lstream *decoding, const Extbyte *src,
-                      unsigned_char_dynarr *dst, size_t n)
+                      unsigned_char_dynarr *dst, Lstream_data_count n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
   unsigned int flags  = str->flags;
@@ -5448,7 +5448,7 @@ ensure_shift_out (struct encoding_stream *str, unsigned_char_dynarr *dst)
 
 static void
 encode_coding_iso2022 (Lstream *encoding, const Bufbyte *src,
-                      unsigned_char_dynarr *dst, size_t n)
+                      unsigned_char_dynarr *dst, Lstream_data_count n)
 {
   unsigned char charmask, c;
   unsigned char char_boundary;
@@ -5975,7 +5975,7 @@ encode_coding_iso2022 (Lstream *encoding, const Bufbyte *src,
    interpreted as being in any particular decoding. */
 static void
 decode_coding_no_conversion (Lstream *decoding, const Extbyte *src,
-                            unsigned_char_dynarr *dst, size_t n)
+                            unsigned_char_dynarr *dst, Lstream_data_count n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
   unsigned int flags  = str->flags;
@@ -5999,7 +5999,7 @@ decode_coding_no_conversion (Lstream *decoding, const Extbyte *src,
 
 static void
 encode_coding_no_conversion (Lstream *encoding, const Bufbyte *src,
-                            unsigned_char_dynarr *dst, size_t n)
+                            unsigned_char_dynarr *dst, Lstream_data_count n)
 {
   unsigned char c;
   struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
index 692e49e..e73a205 100644 (file)
@@ -2994,7 +2994,7 @@ positions), even in Mule. (Fixing this is very difficult.)
        occurs inside of the filedesc stream. */
     while (1)
       {
-       ssize_t this_len;
+       Lstream_data_count this_len;
        Charcount cc_inserted;
 
        QUIT;
index 9a80e8e..377965f 100644 (file)
@@ -336,6 +336,10 @@ error_check_frame_type (struct frame * f, Lisp_Object sym)
 #define CHECK_X_FRAME(z) CHECK_FRAME_TYPE (z, x)
 #define CONCHECK_X_FRAME(z) CONCHECK_FRAME_TYPE (z, x)
 
+#define FRAME_GTK_P(frm) CONSOLE_TYPESYM_GTK_P (FRAME_TYPE (frm))
+#define CHECK_GTK_FRAME(z) CHECK_FRAME_TYPE (z, gtk)
+#define CONCHECK_GTK_FRAME(z) CONCHECK_FRAME_TYPE (z, gtk)
+
 #define FRAME_TTY_P(frm) CONSOLE_TYPESYM_TTY_P (FRAME_TYPE (frm))
 #define CHECK_TTY_FRAME(z) CHECK_FRAME_TYPE (z, tty)
 #define CONCHECK_TTY_FRAME(z) CONCHECK_FRAME_TYPE (z, tty)
index fac3a82..78bcf49 100644 (file)
@@ -118,6 +118,7 @@ SYMBOL (Qgap_overhead);
 SYMBOL (Qgeneric);
 SYMBOL (Qgeometry);
 SYMBOL (Qglobal);
+SYMBOL (Qgtk);
 SYMBOL (Qgutter);
 SYMBOL (Qheight);
 SYMBOL_KEYWORD (Q_height);
index 8c29839..b45832d 100644 (file)
@@ -703,7 +703,7 @@ write_lisp_string_to_temp_file (Lisp_Object string, char *filename_out)
   /* Get the data while doing the conversion */
   while (1)
     {
-      ssize_t size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
+      Lstream_data_count size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
       if (!size_in_bytes)
        break;
       /* It does seem the flushes are necessary... */
index 6e436ba..892f02e 100644 (file)
@@ -46,7 +46,7 @@ Boston, MA 02111-1307, USA.  */
 #include "specifier.h"
 #include "window.h"
 
-#ifdef HAVE_XPM
+#if defined (HAVE_XPM) && !defined (HAVE_GTK)
 #include <X11/xpm.h>
 #endif
 
@@ -2811,6 +2811,14 @@ xface_possible_dest_types (void)
  *                             XPM                                    *
  **********************************************************************/
 
+#ifdef HAVE_GTK
+/* Gtk has to be gratuitously different, eh? */
+Lisp_Object
+pixmap_to_lisp_data (Lisp_Object name, int ok_if_data_invalid)
+{
+  return (make_string_from_file (name));
+}
+#else
 Lisp_Object
 pixmap_to_lisp_data (Lisp_Object name, int ok_if_data_invalid)
 {
@@ -2892,6 +2900,7 @@ pixmap_to_lisp_data (Lisp_Object name, int ok_if_data_invalid)
 
   return Qnil; /* not reached */
 }
+#endif /* !HAVE_GTK */
 
 static void
 check_valid_xpm_color_symbols (Lisp_Object data)
index 20c45ec..d42c9ae 100644 (file)
@@ -272,8 +272,8 @@ tty_get_foreign_selection (Lisp_Object selection_symbol, Lisp_Object target_type
        while (1)
        {
                Bufbyte tempbuf[1024]; /* some random amount */
-               ssize_t i;
-               ssize_t size_in_bytes =
+               Lstream_data_count i;
+               Lstream_data_count size_in_bytes =
                  Lstream_read (XLSTREAM (terminal_stream),
                                tempbuf, sizeof (tempbuf));
 
index c250589..0cb9b94 100644 (file)
@@ -1393,6 +1393,9 @@ See `default-gutter-height' for more information.
 #ifdef HAVE_TTY
   fb = Fcons (Fcons (list1 (Qtty), Qautodetect), fb);
 #endif
+#ifdef HAVE_GTK
+  fb = Fcons (Fcons (list1 (Qgtk), Qautodetect), fb);
+#endif
 #ifdef HAVE_X_WINDOWS
   fb = Fcons (Fcons (list1 (Qx), Qautodetect), fb);
 #endif
@@ -1410,6 +1413,9 @@ See `default-gutter-height' for more information.
 #ifdef HAVE_X_WINDOWS
   fb = Fcons (Fcons (list1 (Qx), Qautodetect), fb);
 #endif
+#ifdef HAVE_GTK
+  fb = Fcons (Fcons (list1 (Qgtk), Qautodetect), fb);
+#endif
 #ifdef HAVE_MS_WINDOWS
   fb = Fcons (Fcons (list1 (Qmsprinter), Qautodetect), fb);
   fb = Fcons (Fcons (list1 (Qmswindows), Qautodetect), fb);
index 3db3be5..1995900 100644 (file)
@@ -90,6 +90,11 @@ Boston, MA 02111-1307, USA.  */
 #include "console-msw.h"
 #endif
 
+#ifdef HAVE_GTK
+#include "console-gtk.h"
+#include "ui-gtk.h"
+#endif
+
 #ifdef FILE_CODING
 #include "file-coding.h"
 #endif
index f6faa07..30470d8 100644 (file)
@@ -41,7 +41,7 @@ Boston, MA 02111-1307, USA.  */
  bits are the Lisp object.  Some people call such Lisp_Objects "immediate".
 
  The object is obtained by masking off the type bits.
- Bit 1 is used as a value bit by splitting the Lisp integer type
+     Bit 1 is used as a value bit by splitting the Lisp integer type
  into two subtypes, Lisp_Type_Int_Even and Lisp_Type_Int_Odd.
  By this trickery we get 31 bits for integers instead of 30.
 
@@ -49,7 +49,7 @@ Boston, MA 02111-1307, USA.  */
  a pointer to a structure containing the object.  The pointer is
  obtained by masking off the type and mark bits.
 
- All pointer-based types are coalesced under a single type called
+     All pointer-based types are coalesced under a single type called
  Lisp_Type_Record.  The type bits for this type are required by the
  implementation to be 00, just like the least significant bits of
  word-aligned struct pointers on 32-bit hardware.  This requires that
index 82accac..fedcf2b 100644 (file)
@@ -267,7 +267,11 @@ void assert_failed (const char *, int, const char *);
 
 /* EMACS_INT is the underlying integral type into which a Lisp_Object must fit.
    In particular, it must be large enough to contain a pointer.
-   config.h can override this, e.g. to use `long long' for bigger lisp ints. */
+   config.h can override this, e.g. to use `long long' for bigger lisp ints.
+
+   #### In point of fact, it would NOT be a good idea for config.h to mess
+   with EMACS_INT.  A lot of code makes the basic assumption that EMACS_INT
+   is the size of a pointer. */
 
 #ifndef SIZEOF_EMACS_INT
 # define SIZEOF_EMACS_INT SIZEOF_VOID_P
@@ -354,7 +358,7 @@ typedef UChar UChar_ASCII;
 typedef int Emchar;
 
 /* Different ways of referring to a position in a buffer.  We use
-   the typedefs in preference to 'int' to make it clearer what
+   the typedefs in preference to 'EMACS_INT' to make it clearer what
    sort of position is being used.  See extents.c for a description
    of the different positions.  We put them here instead of in
    buffer.h (where they rightfully belong) to avoid syntax errors
@@ -3254,6 +3258,7 @@ extern Lisp_Object Qvariable_documentation, Qvariable_domain;
 extern Lisp_Object Qvoid_function, Qvoid_variable;
 extern Lisp_Object Qwindow_live_p, Qwrong_number_of_arguments;
 extern Lisp_Object Qwrong_type_argument, Qyes_or_no_p;
+extern Lisp_Object Qgtk;
 
 #define SYMBOL(fou) extern Lisp_Object fou
 #define SYMBOL_KEYWORD(la_cle_est_fou) extern Lisp_Object la_cle_est_fou
index f26ffa2..8f9b6d0 100644 (file)
@@ -192,6 +192,9 @@ enum lrecord_type
   lrecord_type_devmode,
   lrecord_type_mswindows_dialog_id,
   lrecord_type_case_table,
+  lrecord_type_emacs_ffi,
+  lrecord_type_emacs_gtk_object,
+  lrecord_type_emacs_gtk_boxed,
   lrecord_type_free, /* only used for "free" lrecords */
   lrecord_type_undefined, /* only used for debugging */
   lrecord_type_last_built_in_type /* must be last */
index d413800..5002e3b 100644 (file)
@@ -95,17 +95,19 @@ int Lstream_fgetc (Lstream *stream)
 void Lstream_fungetc (Lstream *stream, int c)
        Function equivalents of the above macros.
 
-ssize_t Lstream_read (Lstream *stream, void *data, size_t size)
+Lstream_data_count Lstream_read (Lstream *stream, void *data,
+                                 Lstream_data_count size)
        Read SIZE bytes of DATA from the stream.  Return the number of
        bytes read.  0 means EOF. -1 means an error occurred and no
        bytes were read.
 
-ssize_t Lstream_write (Lstream *stream, void *data, size_t size)
+Lstream_data_count Lstream_write (Lstream *stream, void *data,
+                                  Lstream_data_count size)
        Write SIZE bytes of DATA to the stream.  Return the number of
        bytes written.  -1 means an error occurred and no bytes were
        written.
 
-void Lstream_unread (Lstream *stream, void *data, size_t size)
+void Lstream_unread (Lstream *stream, void *data, Lstream_data_count size)
        Push back SIZE bytes of DATA onto the input queue.  The
        next call to Lstream_read() with the same size will read the
        same bytes back.  Note that this will be the case even if
@@ -308,11 +310,11 @@ Lstream_reopen (Lstream *lstr)
 int
 Lstream_flush_out (Lstream *lstr)
 {
-  ssize_t num_written;
+  Lstream_data_count num_written;
 
   while (lstr->out_buffer_ind > 0)
     {
-      size_t size = lstr->out_buffer_ind;
+      Lstream_data_count size = lstr->out_buffer_ind;
       if (! (lstr->flags & LSTREAM_FL_IS_OPEN))
        Lstream_internal_error ("lstream not open", lstr);
       if (! (lstr->flags & LSTREAM_FL_WRITE))
@@ -395,10 +397,10 @@ Lstream_flush (Lstream *lstr)
    if it's getting EWOULDBLOCK errors.   We have to keep stocking them
    up until they can be written, so as to avoid losing data. */
 
-static size_t
-Lstream_adding (Lstream *lstr, size_t num, int force)
+static Lstream_data_count
+Lstream_adding (Lstream *lstr, Lstream_data_count num, int force)
 {
-  size_t size = num + lstr->out_buffer_ind;
+  Lstream_data_count size = num + lstr->out_buffer_ind;
 
   if (size <= lstr->out_buffer_size)
     return num;
@@ -420,11 +422,11 @@ Lstream_adding (Lstream *lstr, size_t num, int force)
 
 /* Like Lstream_write(), but does not handle line-buffering correctly. */
 
-static ssize_t
-Lstream_write_1 (Lstream *lstr, const void *data, size_t size)
+static Lstream_data_count
+Lstream_write_1 (Lstream *lstr, const void *data, Lstream_data_count size)
 {
   const unsigned char *p = (const unsigned char *) data;
-  ssize_t off = 0;
+  Lstream_data_count off = 0;
   if (! (lstr->flags & LSTREAM_FL_IS_OPEN))
     Lstream_internal_error ("lstream not open", lstr);
   if (! (lstr->flags & LSTREAM_FL_WRITE))
@@ -435,7 +437,7 @@ Lstream_write_1 (Lstream *lstr, const void *data, size_t size)
     while (1)
       {
        /* Figure out how much we can add to the buffer */
-       size_t chunk = Lstream_adding (lstr, size, 0);
+       Lstream_data_count chunk = Lstream_adding (lstr, size, 0);
        if (chunk == 0)
          {
            if (couldnt_write_last_time)
@@ -480,10 +482,10 @@ Lstream_write_1 (Lstream *lstr, const void *data, size_t size)
    repeatedly call Lstream_putc(), which knows how to handle
    line buffering.  Returns number of bytes written. */
 
-ssize_t
-Lstream_write (Lstream *lstr, const void *data, size_t size)
+Lstream_data_count
+Lstream_write (Lstream *lstr, const void *data, Lstream_data_count size)
 {
-  size_t i;
+  Lstream_data_count i;
   const unsigned char *p = (const unsigned char *) data;
 
   if (size == 0)
@@ -495,7 +497,7 @@ Lstream_write (Lstream *lstr, const void *data, size_t size)
       if (Lstream_putc (lstr, p[i]) < 0)
        break;
     }
-  return i == 0 ? -1 : (ssize_t) i;
+  return i == 0 ? -1 : i;
 }
 
 int
@@ -504,8 +506,9 @@ Lstream_was_blocked_p (Lstream *lstr)
   return lstr->imp->was_blocked_p ? lstr->imp->was_blocked_p (lstr) : 0;
 }
 
-static ssize_t
-Lstream_raw_read (Lstream *lstr, unsigned char *buffer, size_t size)
+static Lstream_data_count
+Lstream_raw_read (Lstream *lstr, unsigned char *buffer,
+                 Lstream_data_count size)
 {
   if (! (lstr->flags & LSTREAM_FL_IS_OPEN))
     Lstream_internal_error ("lstream not open", lstr);
@@ -519,16 +522,18 @@ Lstream_raw_read (Lstream *lstr, unsigned char *buffer, size_t size)
 
 /* Assuming the buffer is empty, fill it up again. */
 
-static ssize_t
+static Lstream_data_count
 Lstream_read_more (Lstream *lstr)
 {
 #if 0
-  ssize_t size_needed = max (1, min (MAX_READ_SIZE, lstr->buffering_size));
+  Lstream_data_count size_needed 
+    = max (1, min (MAX_READ_SIZE, lstr->buffering_size));
 #else
   /* If someone requested a larger buffer size, so be it! */
-  ssize_t size_needed = max (1, lstr->buffering_size);
+  Lstream_data_count size_needed =
+    max (1, lstr->buffering_size);
 #endif
-  ssize_t size_gotten;
+  Lstream_data_count size_gotten;
 
   DO_REALLOC (lstr->in_buffer, lstr->in_buffer_size,
              size_needed, unsigned char);
@@ -538,12 +543,12 @@ Lstream_read_more (Lstream *lstr)
   return size_gotten < 0 ? -1 : size_gotten;
 }
 
-ssize_t
-Lstream_read (Lstream *lstr, void *data, size_t size)
+Lstream_data_count
+Lstream_read (Lstream *lstr, void *data, Lstream_data_count size)
 {
   unsigned char *p = (unsigned char *) data;
-  size_t off = 0;
-  size_t chunk;
+  Lstream_data_count off = 0;
+  Lstream_data_count chunk;
   int error_occurred = 0;
 
   if (size == 0)
@@ -576,7 +581,7 @@ Lstream_read (Lstream *lstr, void *data, size_t size)
       /* If we need some more, try to get some more from the stream's end */
       if (size > 0)
        {
-         ssize_t retval = Lstream_read_more (lstr);
+         Lstream_data_count retval = Lstream_read_more (lstr);
          if (retval < 0)
            error_occurred = 1;
          if (retval <= 0)
@@ -600,7 +605,7 @@ Lstream_read (Lstream *lstr, void *data, size_t size)
          VALIDATE_CHARPTR_BACKWARD (dataend);
          if (dataend + REP_BYTES_BY_FIRST_BYTE (*dataend) != p + off)
            {
-             size_t newoff = dataend - p;
+             Lstream_data_count newoff = dataend - p;
              /* If not, chop the size down to ignore the last char
                 and stash it away for next time. */
              Lstream_unread (lstr, dataend, off - newoff);
@@ -609,11 +614,11 @@ Lstream_read (Lstream *lstr, void *data, size_t size)
        }
     }
 
-  return off == 0 && error_occurred ? -1 : (ssize_t) off;
+  return off == 0 && error_occurred ? -1 : off;
 }
 
 void
-Lstream_unread (Lstream *lstr, const void *data, size_t size)
+Lstream_unread (Lstream *lstr, const void *data, Lstream_data_count size)
 {
   const unsigned char *p = (const unsigned char *) data;
 
@@ -732,7 +737,7 @@ int
 Lstream_fputc (Lstream *lstr, int c)
 {
   unsigned char ch = (unsigned char) c;
-  ssize_t retval = Lstream_write_1 (lstr, &ch, 1);
+  Lstream_data_count retval = Lstream_write_1 (lstr, &ch, 1);
   if (retval >= 0 && lstr->buffering == LSTREAM_LINE_BUFFERED && ch == '\n')
     return Lstream_flush_out (lstr);
   return retval < 0 ? -1 : 0;
@@ -813,21 +818,22 @@ make_stdio_output_stream (FILE *stream, int flags)
    code (it could even be argued that the error might have fixed
    itself, so we should do the fread() again.  */
 
-static ssize_t
-stdio_reader (Lstream *stream, unsigned char *data, size_t size)
+static Lstream_data_count
+stdio_reader (Lstream *stream, unsigned char *data, Lstream_data_count size)
 {
   struct stdio_stream *str = STDIO_STREAM_DATA (stream);
-  size_t val = fread (data, 1, size, str->file);
+  Lstream_data_count val = fread (data, 1, size, str->file);
   if (!val && ferror (str->file))
     return -1;
   return val;
 }
 
-static ssize_t
-stdio_writer (Lstream *stream, const unsigned char *data, size_t size)
+static Lstream_data_count
+stdio_writer (Lstream *stream, const unsigned char *data,
+             Lstream_data_count size)
 {
   struct stdio_stream *str = STDIO_STREAM_DATA (stream);
-  size_t val = fwrite (data, 1, size, str->file);
+  Lstream_data_count val = fwrite (data, 1, size, str->file);
   if (!val && ferror (str->file))
     return -1;
   return val;
@@ -938,13 +944,13 @@ make_filedesc_output_stream (int filedesc, int offset, int count, int flags)
   return make_filedesc_stream_1 (filedesc, offset, count, flags, "w");
 }
 
-static ssize_t
-filedesc_reader (Lstream *stream, unsigned char *data, size_t size)
+static Lstream_data_count
+filedesc_reader (Lstream *stream, unsigned char *data, Lstream_data_count size)
 {
-  ssize_t nread;
+  Lstream_data_count nread;
   struct filedesc_stream *str = FILEDESC_STREAM_DATA (stream);
   if (str->end_pos >= 0)
-    size = min (size, (size_t) (str->end_pos - str->current_pos));
+    size = min (size, (Lstream_data_count) (str->end_pos - str->current_pos));
   nread = str->allow_quit ?
     read_allowing_quit (str->fd, data, size) :
     read (str->fd, data, size);
@@ -967,11 +973,12 @@ errno_would_block_p (int val)
   return 0;
 }
 
-static ssize_t
-filedesc_writer (Lstream *stream, const unsigned char *data, size_t size)
+static Lstream_data_count
+filedesc_writer (Lstream *stream, const unsigned char *data,
+                Lstream_data_count size)
 {
   struct filedesc_stream *str = FILEDESC_STREAM_DATA (stream);
-  ssize_t retval;
+  Lstream_data_count retval;
   int need_newline = 0;
 
   /* This function would be simple if it were not for the blasted
@@ -1025,7 +1032,7 @@ filedesc_writer (Lstream *stream, const unsigned char *data, size_t size)
         out for EWOULDBLOCK. */
       if (str->chars_sans_newline >= str->pty_max_bytes)
        {
-         ssize_t retval2 = str->allow_quit ?
+         Lstream_data_count retval2 = str->allow_quit ?
            write_allowing_quit (str->fd, &str->eof_char, 1) :
            write (str->fd, &str->eof_char, 1);
 
@@ -1058,7 +1065,7 @@ filedesc_writer (Lstream *stream, const unsigned char *data, size_t size)
   if (need_newline)
     {
       Bufbyte nl = '\n';
-      ssize_t retval2 = str->allow_quit ?
+      Lstream_data_count retval2 = str->allow_quit ?
        write_allowing_quit (str->fd, &nl, 1) :
        write (str->fd, &nl, 1);
 
@@ -1194,8 +1201,9 @@ make_lisp_string_input_stream (Lisp_Object string, Bytecount offset,
   return obj;
 }
 
-static ssize_t
-lisp_string_reader (Lstream *stream, unsigned char *data, size_t size)
+static Lstream_data_count
+lisp_string_reader (Lstream *stream, unsigned char *data,
+                   Lstream_data_count size)
 {
   struct lisp_string_stream *str = LISP_STRING_STREAM_DATA (stream);
   /* Don't lose if the string shrank past us ... */
@@ -1210,7 +1218,7 @@ lisp_string_reader (Lstream *stream, unsigned char *data, size_t size)
   if (stream->flags & LSTREAM_FL_NO_PARTIAL_CHARS)
     VALIDATE_CHARPTR_BACKWARD (start);
   offset = start - strstart;
-  size = min (size, (size_t) (str->end - offset));
+  size = min (size, (Lstream_data_count) (str->end - offset));
   memcpy (data, start, size);
   str->offset = offset + size;
   return size;
@@ -1253,15 +1261,15 @@ struct fixed_buffer_stream
 {
   const unsigned char *inbuf;
   unsigned char *outbuf;
-  size_t size;
-  size_t offset;
+  Lstream_data_count size;
+  Lstream_data_count offset;
 };
 
 DEFINE_LSTREAM_IMPLEMENTATION ("fixed-buffer", lstream_fixed_buffer,
                               sizeof (struct fixed_buffer_stream));
 
 Lisp_Object
-make_fixed_buffer_input_stream (const void *buf, size_t size)
+make_fixed_buffer_input_stream (const void *buf, Lstream_data_count size)
 {
   Lisp_Object obj;
   Lstream *lstr = Lstream_new (lstream_fixed_buffer, "r");
@@ -1273,7 +1281,7 @@ make_fixed_buffer_input_stream (const void *buf, size_t size)
 }
 
 Lisp_Object
-make_fixed_buffer_output_stream (void *buf, size_t size)
+make_fixed_buffer_output_stream (void *buf, Lstream_data_count size)
 {
   Lisp_Object obj;
   Lstream *lstr = Lstream_new (lstream_fixed_buffer, "w");
@@ -1284,8 +1292,9 @@ make_fixed_buffer_output_stream (void *buf, size_t size)
   return obj;
 }
 
-static ssize_t
-fixed_buffer_reader (Lstream *stream, unsigned char *data, size_t size)
+static Lstream_data_count
+fixed_buffer_reader (Lstream *stream, unsigned char *data,
+                    Lstream_data_count size)
 {
   struct fixed_buffer_stream *str = FIXED_BUFFER_STREAM_DATA (stream);
   size = min (size, str->size - str->offset);
@@ -1294,8 +1303,9 @@ fixed_buffer_reader (Lstream *stream, unsigned char *data, size_t size)
   return size;
 }
 
-static ssize_t
-fixed_buffer_writer (Lstream *stream, const unsigned char *data, size_t size)
+static Lstream_data_count
+fixed_buffer_writer (Lstream *stream, const unsigned char *data,
+                    Lstream_data_count size)
 {
   struct fixed_buffer_stream *str = FIXED_BUFFER_STREAM_DATA (stream);
   if (str->offset == str->size)
@@ -1340,7 +1350,7 @@ fixed_buffer_output_stream_ptr (Lstream *stream)
 struct resizing_buffer_stream
 {
   unsigned char *buf;
-  size_t allocked;
+  Lstream_data_count allocked;
   int max_stored;
   int stored;
 };
@@ -1356,8 +1366,9 @@ make_resizing_buffer_output_stream (void)
   return obj;
 }
 
-static ssize_t
-resizing_buffer_writer (Lstream *stream, const unsigned char *data, size_t size)
+static Lstream_data_count
+resizing_buffer_writer (Lstream *stream, const unsigned char *data,
+                       Lstream_data_count size)
 {
   struct resizing_buffer_stream *str = RESIZING_BUFFER_STREAM_DATA (stream);
   DO_REALLOC (str->buf, str->allocked, str->stored + size, unsigned char);
@@ -1418,8 +1429,9 @@ make_dynarr_output_stream (unsigned_char_dynarr *dyn)
   return obj;
 }
 
-static ssize_t
-dynarr_writer (Lstream *stream, const unsigned char *data, size_t size)
+static Lstream_data_count
+dynarr_writer (Lstream *stream, const unsigned char *data,
+              Lstream_data_count size)
 {
   struct dynarr_stream *str = DYNARR_STREAM_DATA (stream);
   Dynarr_add_many (str->dyn, data, size);
@@ -1542,8 +1554,9 @@ make_lisp_buffer_output_stream (struct buffer *buf, Bufpos pos, int flags)
   return lstr;
 }
 
-static ssize_t
-lisp_buffer_reader (Lstream *stream, unsigned char *data, size_t size)
+static Lstream_data_count
+lisp_buffer_reader (Lstream *stream, unsigned char *data,
+                   Lstream_data_count size)
 {
   struct lisp_buffer_stream *str = LISP_BUFFER_STREAM_DATA (stream);
   unsigned char *orig_data = data;
@@ -1567,7 +1580,7 @@ lisp_buffer_reader (Lstream *stream, unsigned char *data, size_t size)
                                   BI_BUF_ZV (buf));
     }
 
-  size = min (size, (size_t) (end - start));
+  size = min (size, (Lstream_data_count) (end - start));
   end = start + size;
   /* We cannot return a partial character. */
   VALIDATE_BYTIND_BACKWARD (buf, end);
@@ -1600,8 +1613,9 @@ lisp_buffer_reader (Lstream *stream, unsigned char *data, size_t size)
   return data - orig_data;
 }
 
-static ssize_t
-lisp_buffer_writer (Lstream *stream, const unsigned char *data, size_t size)
+static Lstream_data_count
+lisp_buffer_writer (Lstream *stream, const unsigned char *data,
+                   Lstream_data_count size)
 {
   struct lisp_buffer_stream *str = LISP_BUFFER_STREAM_DATA (stream);
   Bufpos pos;
index 877f66c..b9a6af4 100644 (file)
@@ -42,6 +42,26 @@ DECLARE_LRECORD (lstream, struct lstream);
 #define EOF (-1)
 #endif
 
+/* Typedef specifying a count of bytes in a data block to be written
+   out or read in, using Lstream_read(), Lstream_write(), and related
+   functions.  This MUST BE SIGNED, since it also is used in functions
+   that return the number of bytes actually read to or written from in
+   an operation, and these functions can return -1 to signal error.
+   
+   Note that the standard Unix read() and write() functions define the
+   count going in as a size_t, which is UNSIGNED, and the count going
+   out as an ssize_t, which is SIGNED.  This is a horrible design
+   flaw.  Not only is it highly likely to lead to logic errors when a
+   -1 gets interpreted as a large positive number, but operations are
+   bound to fail in all sorts of horrible ways when a number in the
+   upper-half of the size_t range is passed in -- this number is
+   unrepresentable as an ssize_t, so code that checks to see how many
+   bytes are actually written (which is mandatory if you are dealing
+   with certain types of devices) will get completely screwed up.
+*/
+
+typedef EMACS_INT Lstream_data_count;
+
 typedef enum lstream_buffering
 {
   /* No buffering. */
@@ -75,8 +95,9 @@ typedef enum lstream_buffering
 typedef struct lstream_implementation
 {
   const char *name;
-  size_t size; /* Number of additional bytes to be allocated with this
-                 stream.  Access this data using Lstream_data(). */
+  Lstream_data_count size; /* Number of additional bytes to be
+                             allocated with this stream.  Access this
+                             data using Lstream_data(). */
   /* Read some data from the stream's end and store it into DATA, which
      can hold SIZE bytes.  Return the number of bytes read.  A return
      value of 0 means no bytes can be read at this time.  This may
@@ -95,7 +116,8 @@ typedef struct lstream_implementation
   /* The omniscient mly, blinded by the irresistible thrall of Common
      Lisp, thinks that it is bogus that the types and implementations
      of input and output streams are the same. */
-  ssize_t (*reader) (Lstream *stream, unsigned char *data, size_t size);
+  Lstream_data_count (*reader) (Lstream *stream, unsigned char *data,
+                               Lstream_data_count size);
   /* Send some data to the stream's end.  Data to be sent is in DATA
      and is SIZE bytes.  Return the number of bytes sent.  This
      function can send and return fewer bytes than is passed in; in
@@ -106,7 +128,8 @@ typedef struct lstream_implementation
      data. (This is useful, e.g., of you're dealing with a
      non-blocking file descriptor and are getting EWOULDBLOCK errors.)
      This function can be NULL if the stream is input-only. */
-  ssize_t (*writer) (Lstream *stream, const unsigned char *data, size_t size);
+  Lstream_data_count (*writer) (Lstream *stream, const unsigned char *data,
+                               Lstream_data_count size);
   /* Return non-zero if the last write operation on the stream resulted
      in an attempt to block (EWOULDBLOCK). If this method does not
      exists, the implementation returns 0 */
@@ -147,26 +170,29 @@ struct lstream
   struct lcrecord_header header;
   const Lstream_implementation *imp; /* methods for this stream */
   Lstream_buffering buffering; /* type of buffering in use */
-  size_t buffering_size; /* number of bytes buffered */
+  Lstream_data_count buffering_size; /* number of bytes buffered */
 
   unsigned char *in_buffer; /* holds characters read from stream end */
-  size_t in_buffer_size; /* allocated size of buffer */
-  size_t in_buffer_current; /* number of characters in buffer */
-  size_t in_buffer_ind; /* pointer to next character to take from buffer */
+  Lstream_data_count in_buffer_size; /* allocated size of buffer */
+  Lstream_data_count in_buffer_current; /* number of characters in buffer */
+  Lstream_data_count in_buffer_ind; /* pointer to next character to
+                                      take from buffer */
 
   unsigned char *out_buffer; /* holds characters to write to stream end */
-  size_t out_buffer_size; /* allocated size of buffer */
-  size_t out_buffer_ind; /* pointer to next buffer spot to write a character */
+  Lstream_data_count out_buffer_size; /* allocated size of buffer */
+  Lstream_data_count out_buffer_ind; /* pointer to next buffer spot to
+                                       write a character */
 
   /* The unget buffer is more or less a stack -- things get pushed
      onto the end and read back from the end.  Lstream_read()
      basically reads backwards from the end to get stuff; Lstream_unread()
      similarly has to push the data on backwards. */
   unsigned char *unget_buffer; /* holds characters pushed back onto input */
-  size_t unget_buffer_size; /* allocated size of buffer */
-  size_t unget_buffer_ind; /* pointer to next buffer spot to write a character */
+  Lstream_data_count unget_buffer_size; /* allocated size of buffer */
+  Lstream_data_count unget_buffer_ind; /* pointer to next buffer spot
+                                         to write a character */
 
-  size_t byte_count;
+  Lstream_data_count byte_count;
   int flags;
   max_align_t data[1];
 };
@@ -209,10 +235,12 @@ int Lstream_flush_out (Lstream *lstr);
 int Lstream_fputc (Lstream *lstr, int c);
 int Lstream_fgetc (Lstream *lstr);
 void Lstream_fungetc (Lstream *lstr, int c);
-ssize_t Lstream_read (Lstream *lstr, void *data, size_t size);
-ssize_t Lstream_write (Lstream *lstr, const void *data, size_t size);
+Lstream_data_count Lstream_read (Lstream *lstr, void *data,
+                                Lstream_data_count size);
+Lstream_data_count Lstream_write (Lstream *lstr, const void *data,
+                                 Lstream_data_count size);
 int Lstream_was_blocked_p (Lstream *lstr);
-void Lstream_unread (Lstream *lstr, const void *data, size_t size);
+void Lstream_unread (Lstream *lstr, const void *data, Lstream_data_count size);
 int Lstream_rewind (Lstream *lstr);
 int Lstream_seekable_p (Lstream *lstr);
 int Lstream_close (Lstream *lstr);
@@ -344,8 +372,10 @@ int filedesc_stream_fd (Lstream *stream);
 Lisp_Object make_lisp_string_input_stream (Lisp_Object string,
                                           Bytecount offset,
                                           Bytecount len);
-Lisp_Object make_fixed_buffer_input_stream (const void *buf, size_t size);
-Lisp_Object make_fixed_buffer_output_stream (void *buf, size_t size);
+Lisp_Object make_fixed_buffer_input_stream (const void *buf,
+                                           Lstream_data_count size);
+Lisp_Object make_fixed_buffer_output_stream (void *buf,
+                                            Lstream_data_count size);
 const unsigned char *fixed_buffer_input_stream_ptr (Lstream *stream);
 unsigned char *fixed_buffer_output_stream_ptr (Lstream *stream);
 Lisp_Object make_resizing_buffer_output_stream (void);
index aaa3155..b1bf8d0 100644 (file)
@@ -56,7 +56,7 @@ for my $file (keys %exists) {
   s/[ \t]+//g;
   # Find include dependencies
   for (/^\#include([^\n]+)/gm) {
-    if (m@^\"([A-Za-z0-9._-]+\.h)\"@) {
+    if (m@^\"([A-Za-z0-9._-]+\.[ch])\"@) {
       $uses{$file}{$1} = 1 if exists $exists{$1};
     } elsif (m@<([A-Za-z0-9._-]+\.h)>@) {
       $uses{$file}{$1} = 1 if exists $generated_header{$1};
@@ -119,6 +119,7 @@ sub PrintPatternDeps {
 PrintPatternDeps ('-msw\\.',   "HAVE_MS_WINDOWS");
 PrintPatternDeps ('-x\\.',     "HAVE_X_WINDOWS");
 PrintPatternDeps ('-tty\\.',   "HAVE_TTY");
+PrintPatternDeps ('-gtk\\.',   "HAVE_GTK");
 PrintPatternDeps ('^database', "HAVE_DATABASE");
 PrintPatternDeps ('^mule',     "MULE");
 PrintPatternDeps ('^(?:External|extw-)', "EXTERNAL_WIDGET");
index 901ca58..608ba7b 100644 (file)
--- a/src/md5.c
+++ b/src/md5.c
@@ -579,7 +579,7 @@ file-coding or Mule support.  Otherwise, they are ignored.
   while (1)
     {
       Bufbyte tempbuf[1024];   /* some random amount */
-      ssize_t size_in_bytes =
+      Lstream_data_count size_in_bytes =
        Lstream_read (XLSTREAM (instream), tempbuf, sizeof (tempbuf));
       if (!size_in_bytes)
        break;
index 514dfc9..a1a4083 100644 (file)
@@ -677,35 +677,35 @@ static int stack_idx_of_map_multiple;
                                   r[7] = LOWER_BYTE (SJIS (Y, Z) */
 
 /* Terminate CCL program successfully.  */
-#define CCL_SUCCESS                    \
-do {                                   \
-  ccl->status = CCL_STAT_SUCCESS;      \
+#define CCL_SUCCESS                    \
+  do {                                 \
+    ccl->status = CCL_STAT_SUCCESS;    \
   /* The "if (1)" inhibits the warning \
      "end-of loop code not reached" */ \
   if (1) goto ccl_finish;              \
-} while (0)
+  } while (0)
 
 /* Suspend CCL program because of reading from empty input buffer or
    writing to full output buffer.  When this program is resumed, the
    same I/O command is executed.  */
-#define CCL_SUSPEND(stat)              \
-do {                                   \
-  ic--;                                        \
+#define CCL_SUSPEND(stat)      \
+  do {                         \
+    ic--;                      \
   ccl->status = (stat);                        \
   /* The "if (1)" inhibits the warning \
      "end-of loop code not reached" */ \
   if (1) goto ccl_finish;              \
-} while (0)
+  } while (0)
 
 /* Terminate CCL program because of invalid command.  Should not occur
    in the normal case.  */
-#define CCL_INVALID_CMD                        \
-do {                                   \
-  ccl->status = CCL_STAT_INVALID_CMD;  \
+#define CCL_INVALID_CMD                        \
+  do {                                 \
+    ccl->status = CCL_STAT_INVALID_CMD;        \
   /* The "if (1)" inhibits the warning \
      "end-of loop code not reached" */ \
   if (1) goto ccl_error_handler;       \
-} while (0)
+  } while (0)
 
 /* Encode one character CH to multibyte form and write to the current
    output buffer.  At encoding time, if CH is less than 256, CH is
@@ -1284,57 +1284,57 @@ ccl_driver (struct ccl_program *ccl,
              if (!src)
                CCL_INVALID_CMD;
 
-             if (src >= src_end)
-               {
-                 src++;
-                 goto ccl_read_multibyte_character_suspend;
-               }
-
-             i = *src++;
-             if (i < 0x80)
-               {
-                 /* ASCII */
-                 reg[rrr] = i;
-                 reg[RRR] = LEADING_BYTE_ASCII;
-               }
-             else if (i <= MAX_LEADING_BYTE_OFFICIAL_1)
-               {
-                 if (src >= src_end)
-                   goto ccl_read_multibyte_character_suspend;
-                 reg[RRR] = i;
-                 reg[rrr] = (*src++ & 0x7F);
-               }
-             else if (i <= MAX_LEADING_BYTE_OFFICIAL_2)
-               {
-                 if ((src + 1) >= src_end)
-                   goto ccl_read_multibyte_character_suspend;
-                 reg[RRR] = i;
-                 i = (*src++ & 0x7F);
-                 reg[rrr] = ((i << 7) | (*src & 0x7F));
-                 src++;
-               }
-             else if (i == PRE_LEADING_BYTE_PRIVATE_1)
-               {
-                 if ((src + 1) >= src_end)
-                   goto ccl_read_multibyte_character_suspend;
-                 reg[RRR] = *src++;
-                 reg[rrr] = (*src++ & 0x7F);
-               }
-             else if (i == PRE_LEADING_BYTE_PRIVATE_2)
-               {
-                 if ((src + 2) >= src_end)
+               if (src >= src_end)
+                 {
+                   src++;
                    goto ccl_read_multibyte_character_suspend;
-                 reg[RRR] = *src++;
-                 i = (*src++ & 0x7F);
-                 reg[rrr] = ((i << 7) | (*src & 0x7F));
-                 src++;
-               }
-             else
-               {
-                 /* INVALID CODE.  Return a single byte character.  */
-                 reg[RRR] = LEADING_BYTE_ASCII;
-                 reg[rrr] = i;
-               }
+                 }
+
+               i = *src++;
+               if (i < 0x80)
+                 {
+                   /* ASCII */
+                   reg[rrr] = i;
+                   reg[RRR] = LEADING_BYTE_ASCII;
+                 }
+               else if (i <= MAX_LEADING_BYTE_OFFICIAL_1)
+                 {
+                   if (src >= src_end)
+                     goto ccl_read_multibyte_character_suspend;
+                   reg[RRR] = i;
+                   reg[rrr] = (*src++ & 0x7F);
+                 }
+               else if (i <= MAX_LEADING_BYTE_OFFICIAL_2)
+                 {
+                   if ((src + 1) >= src_end)
+                     goto ccl_read_multibyte_character_suspend;
+                   reg[RRR] = i;
+                   i = (*src++ & 0x7F);
+                   reg[rrr] = ((i << 7) | (*src & 0x7F));
+                   src++;
+                 }
+               else if (i == PRE_LEADING_BYTE_PRIVATE_1)
+                 {
+                   if ((src + 1) >= src_end)
+                     goto ccl_read_multibyte_character_suspend;
+                   reg[RRR] = *src++;
+                   reg[rrr] = (*src++ & 0x7F);
+                 }
+               else if (i == PRE_LEADING_BYTE_PRIVATE_2)
+                 {
+                   if ((src + 2) >= src_end)
+                     goto ccl_read_multibyte_character_suspend;
+                   reg[RRR] = *src++;
+                   i = (*src++ & 0x7F);
+                   reg[rrr] = ((i << 7) | (*src & 0x7F));
+                   src++;
+                 }
+               else
+                 {
+                   /* INVALID CODE.  Return a single byte character.  */
+                   reg[RRR] = LEADING_BYTE_ASCII;
+                   reg[rrr] = i;
+                 }
              break;
 
            ccl_read_multibyte_character_suspend:
index 0824e2a..1afa11a 100644 (file)
--- a/src/nt.c
+++ b/src/nt.c
@@ -1421,7 +1421,7 @@ mswindows_fstat (int desc, struct stat * buf)
     }
   else
     {
-      buf->st_nlink = info.nNumberOfLinks;
+      buf->st_nlink = (short) info.nNumberOfLinks;
       /* Might as well use file index to fake inode values, but this
         is not guaranteed to be unique unless we keep a handle open
         all the time (even then there are situations where it is
@@ -1432,9 +1432,9 @@ mswindows_fstat (int desc, struct stat * buf)
 
   /* MSVC defines _ino_t to be short; other libc's might not.  */
   if (sizeof (buf->st_ino) == 2)
-    buf->st_ino = fake_inode ^ (fake_inode >> 16);
+    buf->st_ino = (unsigned short) (fake_inode ^ (fake_inode >> 16));
   else
-    buf->st_ino = fake_inode;
+    buf->st_ino = (unsigned short) fake_inode;
 
   /* consider files to belong to current user */
   buf->st_uid = 0;
@@ -1618,7 +1618,7 @@ mswindows_stat (const char * path, struct stat * buf)
   buf->st_ino = (unsigned short) (fake_inode ^ (fake_inode >> 16));
 
   /* consider files to belong to current user */
-  buf->st_uid = buf->st_gid = nt_fake_unix_uid;
+  buf->st_uid = buf->st_gid = (short) nt_fake_unix_uid;
 
   /* volume_info is set indirectly by map_win32_filename */
   buf->st_dev = volume_info.serialnum;
index 9f2ad46..21e17c3 100644 (file)
@@ -1051,7 +1051,7 @@ nt_send_process (Lisp_Object proc, struct lstream* lstream)
 
   while (1)
     {
-      ssize_t writeret;
+      Lstream_data_count writeret;
 
       chunklen = Lstream_read (lstream, chunkbuf, 512);
       if (chunklen <= 0)
index d50028e..462fb55 100644 (file)
@@ -1288,7 +1288,7 @@ unix_send_process (Lisp_Object proc, struct lstream* lstream)
 
       while (1)
        {
-         ssize_t writeret;
+         Lstream_data_count writeret;
 
          chunklen = Lstream_read (lstream, chunkbuf, 512);
          if (chunklen <= 0)
@@ -1543,9 +1543,9 @@ unix_kill_child_process (Lisp_Object proc, int signo,
   if (EMACS_KILLPG (pgid, signo) == -1)
     {
       /* It's not an error if our victim is already dead.
-         And we can't rely on the result of killing a zombie, since
-         XPG 4.2 requires that killing a zombie fail with ESRCH,
-         while FIPS 151-2 requires that it succeeds! */
+        And we can't rely on the result of killing a zombie, since
+        XPG 4.2 requires that killing a zombie fail with ESRCH,
+        while FIPS 151-2 requires that it succeeds! */
 #ifdef ESRCH
       if (errno != ESRCH)
 #endif
index 94b4699..c962aac 100644 (file)
@@ -137,7 +137,7 @@ static int
 cygwin_readlink (const char * name, char * buf, int size)
 {
   int n = readlink (name, buf, size);
-  if (n < 0)
+  if (n < 0 && errno == EINVAL)
     {
       /* The file may exist, but isn't a symlink. Try to find the
          right name. */
@@ -208,6 +208,9 @@ xrealpath (const char *path, char resolved_path [])
   if (abslen == 2 || abslen == 3)
     {
       strncpy (new_path, path, abslen);
+      /* Make sure drive letter is lowercased. */
+      if (abslen == 3)
+       *new_path = tolower (*new_path);
       new_path += abslen;
       path += abslen;
     }
@@ -299,7 +302,11 @@ xrealpath (const char *path, char resolved_path [])
       if (n < 0)
        {
          /* EINVAL means the file exists but isn't a symlink. */
-         if (errno != EINVAL)
+#ifdef CYGWIN
+         if (errno != EINVAL && errno != ENOENT)
+#else
+         if (errno != EINVAL) 
+#endif
            return NULL;
        }
       else
@@ -345,10 +352,5 @@ xrealpath (const char *path, char resolved_path [])
   /* Make sure it's null terminated. */
   *new_path = '\0';
 
-#ifdef WIN32_NATIVE
-  if (ABS_LENGTH (resolved_path) == 3)
-    /* Lowercase drive letter. */
-    *resolved_path = tolower (*resolved_path);
-#endif
   return resolved_path;
 }
index 4396a8f..9635a61 100644 (file)
@@ -2153,6 +2153,7 @@ redisplay_update_line (struct window *w, int first_line, int last_line,
      larger impact on their sizing. */
   /* #### See if we can get away with only calling this if
      max_line_len is greater than the window_char_width. */
+  /* #### BILL!!! Should we do this for GTK as well? */
 #if defined(HAVE_SCROLLBARS) && defined(HAVE_X_WINDOWS)
   {
     extern int stupid_vertical_scrollbar_drag_hack;
index 8c2a78c..ae7637a 100644 (file)
@@ -9185,6 +9185,15 @@ init_redisplay (void)
     }
 #endif /* HAVE_X_WINDOWS */
 
+#ifdef HAVE_GTK
+  if (!strcmp (display_use, "gtk"))
+    {
+      Vwindow_system = Qgtk;
+      Vinitial_window_system = Qgtk;
+      return;
+    }
+#endif
+
 #ifdef HAVE_MS_WINDOWS
   if (!strcmp (display_use, "mswindows"))
     {
index ef6c2ac..c027d39 100644 (file)
@@ -133,7 +133,7 @@ Boston, MA 02111-1307, USA.  */
 
 #ifndef NOT_C_CODE
 #include <stdlib.h>
-#include <mingw32/process.h>
+#include <mingw/process.h>
 #define mkdir __mkdir
 #include <dir.h>
 #undef mkdir
index d8cca5c..0f7b793 100644 (file)
@@ -1572,7 +1572,7 @@ boyer_moore (struct buffer *buf, Bufbyte *base_pat, Bytecount len,
      in the pattern.  Others don't matter anyway!  */
   xzero (simple_translate);
   for (i = 0; i < 0400; i++)
-    simple_translate[i] = i;
+    simple_translate[i] = (Bufbyte) i;
   i = 0;
   while (i != infinity)
     {
@@ -1661,7 +1661,7 @@ boyer_moore (struct buffer *buf, Bufbyte *base_pat, Bytecount len,
 
          while ((j = TRANSLATE (inverse_trt, j)) != k)
            {
-             simple_translate[j] = k;
+             simple_translate[j] = (Bufbyte) k;
              BM_tab[j] = dirlen - i;
            }
 #endif
index c9d4813..15918cb 100644 (file)
@@ -454,4 +454,39 @@ void init_redisplay (void);
 void init_sunpro (void);
 void init_win32 (void);
 
+void syms_of_device_gtk (void);
+void syms_of_dialog_gtk (void);
+void syms_of_event_gtk (void);
+void syms_of_frame_gtk (void);
+void syms_of_glyphs_gtk (void);
+void syms_of_gui_gtk (void);
+void syms_of_menubar_gtk (void);
+void syms_of_objects_gtk (void);
+void syms_of_select_gtk (void);
+void syms_of_ui_gtk (void);
+void console_type_create_gtk (void);
+void console_type_create_device_gtk (void);
+void console_type_create_frame_gtk (void);
+void console_type_create_glyphs_gtk (void);
+void console_type_create_menubar_gtk (void);
+void console_type_create_objects_gtk (void);
+void console_type_create_redisplay_gtk (void);
+void console_type_create_scrollbar_gtk (void);
+void console_type_create_toolbar_gtk (void);
+void console_type_create_dialog_gtk (void);
+void image_instantiator_format_create_glyphs_gtk (void);
+void vars_of_device_gtk (void);
+void vars_of_dialog_gtk (void);
+void vars_of_event_gtk (void);
+void vars_of_frame_gtk (void);
+void vars_of_glyphs_gtk (void);
+void vars_of_gui_gtk (void);
+void vars_of_menubar_gtk (void);
+void vars_of_objects_gtk (void);
+void vars_of_scrollbar_gtk (void);
+void vars_of_select_gtk (void);
+void vars_of_ui_gtk (void);
+void complex_vars_of_glyphs_gtk (void);
+void init_event_gtk_late (void);
+
 #endif /* INCLUDED_symsinit_h_ */
index 5bc68dc..f14be73 100644 (file)
@@ -589,6 +589,11 @@ Move point forward COUNT words (backward if COUNT is negative).
 Normally t is returned, but if an edge of the buffer is reached,
 point is left there and nil is returned.
 
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
 COUNT defaults to 1, and BUFFER defaults to the current buffer.
 */
        (count, buffer))
index e327cff..54e1bf2 100644 (file)
@@ -33,7 +33,7 @@ Boston, MA 02111-1307, USA.  */
 
 #ifdef WIN32_NATIVE
 #ifdef MINGW
-#include <mingw32/process.h>
+#include <mingw/process.h>
 #else
 /* <process.h> should not conflict with "process.h", as per ANSI definition.
    This is not true with visual c though. The trick below works with
@@ -2985,23 +2985,22 @@ sys_readdir (DIR *dirp)
   if (rtnval == NULL)           /* End of directory */
     return NULL;
   {
-    Extcount external_len;
-    int ascii_filename_p = 1;
     const Extbyte * const external_name = (const Extbyte *) rtnval->d_name;
-
-    /* Optimize for the common all-ASCII case, computing len en passant */
-    for (external_len = 0; external_name[external_len] ; external_len++)
-      {
-        if (!BYTE_ASCII_P (external_name[external_len]))
-          ascii_filename_p = 0;
-      }
-    if (ascii_filename_p)
+    Extcount external_len = strlen (rtnval->d_name);
+    const Bufbyte *internal_name;
+    Bytecount internal_len;
+    
+    TO_INTERNAL_FORMAT (DATA, (external_name, external_len),
+                       ALLOCA, (internal_name, internal_len),
+                       Qfile_name);
+
+    /* check for common case of ASCII filename */
+    if (internal_len == external_len &&
+       !memcmp (external_name, internal_name, internal_len))
       return rtnval;
 
     { /* Non-ASCII filename */
       static Bufbyte_dynarr *internal_DIRENTRY;
-      const Bufbyte *internal_name;
-      Bytecount internal_len;
       if (!internal_DIRENTRY)
         internal_DIRENTRY = Dynarr_new (Bufbyte);
       else
@@ -3010,9 +3009,6 @@ sys_readdir (DIR *dirp)
       Dynarr_add_many (internal_DIRENTRY, (Bufbyte *) rtnval,
                        offsetof (DIRENTRY, d_name));
 
-      TO_INTERNAL_FORMAT (DATA, (external_name, external_len),
-                         ALLOCA, (internal_name, internal_len),
-                         Qfile_name);
 
       Dynarr_add_many (internal_DIRENTRY, internal_name, internal_len);
       Dynarr_add (internal_DIRENTRY, '\0'); /* NUL-terminate */
index a8f5405..b00e9c4 100644 (file)
@@ -53,6 +53,11 @@ Boston, MA 02111-1307, USA.  */
 #ifndef WIN32_NATIVE
 /* Some configuration files' definitions for the LOAD_AVE_CVT macro
    (like sparc.h's) use macros like FSCALE, defined here. */
+#ifdef HAVE_GTK
+/* I hate GTK */
+#undef MIN
+#undef MAX
+#endif /* HAVE_GTK */
 #include <sys/param.h>
 #endif
 
index 9d20a82..7711b6b 100644 (file)
@@ -1610,6 +1610,9 @@ See `default-toolbar-height' for more information.
 #ifdef HAVE_TTY
   fb = Fcons (Fcons (list1 (Qtty), Qzero), fb);
 #endif
+#ifdef HAVE_GTK
+  fb = Fcons (Fcons (list1 (Qgtk), make_int (DEFAULT_TOOLBAR_HEIGHT)), fb);
+#endif
 #ifdef HAVE_X_WINDOWS
   fb = Fcons (Fcons (list1 (Qx), make_int (DEFAULT_TOOLBAR_HEIGHT)), fb);
 #endif
@@ -1624,6 +1627,9 @@ See `default-toolbar-height' for more information.
 #ifdef HAVE_TTY
   fb = Fcons (Fcons (list1 (Qtty), Qzero), fb);
 #endif
+#ifdef HAVE_GTK
+  fb = Fcons (Fcons (list1 (Qgtk), make_int (DEFAULT_TOOLBAR_WIDTH)), fb);
+#endif
 #ifdef HAVE_X_WINDOWS
   fb = Fcons (Fcons (list1 (Qx), make_int (DEFAULT_TOOLBAR_WIDTH)), fb);
 #endif
@@ -1740,6 +1746,9 @@ See `default-toolbar-height' for more information.
 #ifdef HAVE_X_WINDOWS
   fb = Fcons (Fcons (list1 (Qx), make_int (DEFAULT_TOOLBAR_BORDER_WIDTH)), fb);
 #endif
+#ifdef HAVE_GTK
+  fb = Fcons (Fcons (list1 (Qgtk), make_int (DEFAULT_TOOLBAR_BORDER_WIDTH)), fb);
+#endif
 #ifdef HAVE_MS_WINDOWS
   fb = Fcons (Fcons (list1 (Qmswindows), make_int (MSWINDOWS_DEFAULT_TOOLBAR_BORDER_WIDTH)), fb);
 #endif
index 63190c5..eced85b 100644 (file)
@@ -331,7 +331,7 @@ copy_executable_and_dump_data_section (int a_out, int a_new)
         f_ohdr.dsize + f_ohdr.bsize);
   if (new_data_size < f_ohdr.dsize + f_ohdr.bsize )
     {
-      PERROR("new data size is < approx");
+      printf("warning: new data size is < approx\n");
     }
   f_ohdr.dsize=new_data_size;
   f_ohdr.bsize=BSS_PAD_SIZE;
index ccddef8..8d78ae8 100644 (file)
@@ -4513,6 +4513,11 @@ When calling from a program, supply an integer as argument or nil.
 On attempt to scroll past end of buffer, `end-of-buffer' is signaled.
 On attempt to scroll past beginning of buffer, `beginning-of-buffer' is
 signaled.
+
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
 */
        (count))
 {
@@ -4528,6 +4533,11 @@ When calling from a program, supply a number as argument or nil.
 On attempt to scroll past end of buffer, `end-of-buffer' is signaled.
 On attempt to scroll past beginning of buffer, `beginning-of-buffer' is
 signaled.
+
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
 */
        (count))
 {
@@ -4600,6 +4610,11 @@ showing that buffer, popping the buffer up if necessary.
 DEFUN ("scroll-left", Fscroll_left, 0, 1, "_P", /*
 Scroll selected window display COUNT columns left.
 Default for COUNT is window width minus 2.
+
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
 */
        (count))
 {
@@ -4615,6 +4630,11 @@ Default for COUNT is window width minus 2.
 DEFUN ("scroll-right", Fscroll_right, 0, 1, "_P", /*
 Scroll selected window display COUNT columns right.
 Default for COUNT is window width minus 2.
+
+The characters that are moved over may be added to the current selection
+\(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
 */
        (count))
 {
@@ -6311,6 +6331,9 @@ This is a specifier; use `set-specifier' to change it.
 #ifdef HAVE_TTY
     fb = Fcons (Fcons (list1 (Qtty), make_int (1)), fb);
 #endif
+#ifdef HAVE_GTK
+    fb = Fcons (Fcons (list1 (Qgtk), make_int (3)), fb);
+#endif
 #ifdef HAVE_X_WINDOWS
     fb = Fcons (Fcons (list1 (Qx), make_int (3)), fb);
 #endif
@@ -6345,6 +6368,9 @@ This is a specifier; use `set-specifier' to change it.
        Should not the same value be the fallback under X? - kkm */
     fb = Fcons (Fcons (list1 (Qx), make_int (2)), fb);
 #endif
+#ifdef HAVE_GTK
+    fb = Fcons (Fcons (list1 (Qgtk), Qzero), fb);
+#endif
 #ifdef HAVE_MS_WINDOWS
     fb = Fcons (Fcons (list1 (Qmswindows), Qzero), fb);
 #endif
index c6a3000..57d1848 100644 (file)
@@ -1,3 +1,30 @@
+2001-03-21  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.46 "Urania" is released.
+
+2001-03-09  William M. Perry  <wmperry@aventail.com>
+
+       * gtk/UNIMPLEMENTED:
+       * gtk/event-stream-tests.el:
+       * gtk/gnome-test.el:
+       * gtk/gtk-embedded-test.el:
+       * gtk/gtk-extra-test.el:
+       * gtk/gtk-test.el:
+       * gtk/gtk-test.glade:
+       * gtk/statusbar-test.el:
+       * gtk/toolbar-test.el:
+       * gtk/xemacs-toolbar.el:
+       The Great GTK Merge: new directory and files.
+
+2001-03-02  Ben Wing  <ben@xemacs.org>
+
+       * automated\case-tests.el (string-0-through-32): 
+       (string-127-through-160): Created new strings which contain
+       unprintable characters, and initialize them in a loop.
+       Rewrite all strings using unprintable characters as concat's
+       with the above variables, so that this file can be made ASCII,
+       not binary.
+
 2001-02-23  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.45 "Thelxepeia" is released.
index 2a294d5..5b0f037 100644 (file)
Binary files a/tests/automated/case-tests.el and b/tests/automated/case-tests.el differ
index aec1b7c..7330032 100644 (file)
                     `[progress-gauge :width 5 :pixel-height 16
                                      :descriptor "ok" :value ,x])
     (setq x (+ x 5))
+    (redisplay-frame)
     (sit-for 0.1)))
 
 (set-extent-begin-glyph 
index c6601fc..77efe2a 100644 (file)
@@ -2,8 +2,8 @@
 emacs_is_beta=t
 emacs_major_version=21
 emacs_minor_version=2
-emacs_beta_version=45
-xemacs_codename="Thelxepeia"
+emacs_beta_version=46
+xemacs_codename="Urania"
 infodock_major_version=4
 infodock_minor_version=0
 infodock_build_version=8