Sync up with XEmacs 21.4.17.
authortomo <tomo>
Tue, 12 Jul 2005 08:41:57 +0000 (08:41 +0000)
committertomo <tomo>
Tue, 12 Jul 2005 08:41:57 +0000 (08:41 +0000)
78 files changed:
ChangeLog
Makefile.in.in
configure
configure.in
etc/OXYMORONS
etc/sample.init.el
lib-src/winclient.c
lisp/ChangeLog
lisp/auto-autoloads.el
lisp/bytecomp.el
lisp/dialog-gtk.el
lisp/gtk-widgets.el
lisp/mule/japanese.el
lisp/utf-2000/README.en
lisp/widgets-gtk.el
lwlib/xlwradio.c
netinstall/ChangeLog
netinstall/res.rc
netinstall/resource.h
nt/config.inc.samp
nt/installer/Wise/dirs.py
nt/installer/Wise/display readme.dlg
nt/installer/Wise/libs.dlg
nt/installer/Wise/pre_wise.py
nt/installer/Wise/type.dlg
nt/installer/Wise/version.py
nt/installer/Wise/welcome.dlg
nt/installer/Wise/xemacs.tmpl
src/ChangeLog
src/alloc.c
src/buffer.c
src/chartab.c
src/console-gtk.h
src/console-x.h
src/data.c
src/depend
src/device-gtk.c
src/doprnt.c
src/dumper.c
src/emacs.c
src/event-gtk.c
src/faces.c
src/file-coding.c
src/fns.c
src/font-lock.c
src/frame-gtk.c
src/frame.c
src/gccache-gtk.c
src/glyphs-gtk.c
src/glyphs-gtk.h
src/glyphs.c
src/gtk-glue.c
src/gtk-xemacs.c
src/gutter.c
src/insdel.c
src/lisp.h
src/lread.c
src/menubar-gtk.c
src/mule-charset.c
src/mule-charset.h
src/native-gtk-toolbar.c
src/redisplay-gtk.c
src/redisplay-msw.c
src/redisplay-output.c
src/redisplay-tty.c
src/redisplay-x.c
src/redisplay.c
src/regex.c
src/scrollbar-gtk.c
src/search.c
src/select-x.c
src/symbols.c
src/syntax.c
src/toolbar-gtk.c
src/toolbar-x.c
src/ui-gtk.c
tests/automated/mule-tests.el
tests/automated/regexp-tests.el

index 37a5d1b..db72852 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
        * configure.in: Add new option `--with-utf-2000'; define `UTF2000'
        if it is specified.
 
+2005-02-06  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.17 is released
+
+2005-01-29  Ben Wing  <ben@xemacs.org>
+
+       * configure.in (AC_INIT_NOTICE):
+       * configure.in (XE_COMPUTE_RUNPATH):
+       Copy LDAP fixes from 21.5.
+
+       Port Marcus Crestani's patches of 2004-11-12:
+
+       * Makefile.in.in (install-arch-dep): Fix installation for Cygwin.
+       * configure:
+       * configure.in: Make pdump default for Cygwin.
+
+2005-01-30  Malcolm Purvis  <malcolmp@xemacs.org>
+
+       * Makefile.in.in (dump-elc): Depend on ${PROGNAME} to fix parallel
+       builds.
+
+2004-11-22  Adrian Aichner  <adrian@xemacs.org>
+
+       * etc/TUTORIAL: Typo fixes, courtesy of Andreas Eder
+       <Andreas.Eder@gmx.net>.
+
+2004-05-20  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * configure.in (HAVE_GPM): Die if GPM requested but not found.
+
+2005-01-23  Vin Shelton  <acs@xemacs.org>
+
+       * Makefile.in.in (finder): Force removal of lisp/finder-inf.el.
+
+2005-01-10  Vin Shelton  <acs@xemacs.org>
+
+       * Makefile.in.in (RECURSIVE_MAKE_ARGS): Remove last few.
+
+2004-11-21  Malcolm Purvis  <malcolmp@xemacs.org>
+
+       * INSTALL: A POSIX compatible Make is no longer required for builds.
+       * Makefile.in.in (RECURSIVE_MAKE): Removed.
+       * Makefile.in.in (RECURSIVE_MAKE_ARGS): New.
+       * configure.in (RECURSIVE_MAKE): Removed.
+       * configure.in (RECURSIVE_MAKE_ARGS): New.
+       Always refer to make as $(MAKE) and use $(RECURSIVE_MAKE_ARGS) for
+       other parameters.  This allows -j to work in GNU Make while
+       removing need for POSIX compatible make on all systems.
+
+2004-09-08  Malcolm Purvis  <malcolmp@xemacs.org>
+
+       * INSTALL: A POSIX compatible Make is required for builds.
+       * Makefile.in.in: Enable support for parallel builds.
+
+2004-12-05  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.16 is released
+
+2004-08-12  "Johann 'Myrkraverk' Oskarsson" <myrkraverk@users.sourceforge.net>
+
+       * config.guess: Detect PlayStation 2.
+
+2004-08-10  Jerry James  <james@xemacs.org>
+
+       * etc/SERVICE: Update to latest version from www.gnu.org.
+
+2004-07-06  Steve Youngs  <steve@youngs.au.com>
+
+       * etc/NEWS: Document the major user visible changes to PUI.
+
+2003-07-21  Malcolm Purvis  <malcolmpurvis@optushome.com.au>
+
+       * etc/gtkrc: New file.  This is the GTK equivalent of the
+       app-default file.
+
+2004-03-30  Norbert Koch  <viteno@xemacs.org>
+
+       * PACKAGES: Introduce new packages escreen, xlib, and xwem.
+
+2004-03-23  Malcolm Purvis  <malcolmpurvis@optushome.com.au>
+
+       * configure (GTK_CONFIG): Check GTK version validity only when the
+       right instance of gtk-config is found.
+
+2004-03-20  Adrian Aichner  <adrian@xemacs.org>
+
+       * etc/sample.init.el: Sync typo and copycat fix from 21.5.
+       * etc/sample.init.el ((console-on-window-system-p)): Sync
+       "\C-x\C-c" definition from 21.5.
+
+2004-03-20  Vin Shelton  <acs@xemacs.org>
+
+       * configure.usage (--use-regex-malloc): Correct warning about
+       disabling regex-malloc.
+
+2004-03-04  Malcolm Purvis  <malcolmpurvis@optushome.com.au>
+
+       * configure.in (src/Makefile): No longer include a special linker
+       script for PowerPC Linux.  Thanks to Stefan Bruda for reporting
+       this bug.
+
+2004-02-10  Vin Shelton  <acs@xemacs.org>
+
+       * etc/OXYMORONS: Added Jumbo Shrimp for 21.4.17.
+
+2004-02-03  Vin Shelton  <acs@xemacs.org>
+
+       * configure.in (XE_COMPUTE_RUNPATH): lucid_prefers_motif is a
+       variable, not a command.
+
 2004-02-02  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.15 is released
index 0f4ef8e..a974bfd 100644 (file)
 #include "src/config.h"
 
 #ifdef USE_GNU_MAKE
-RECURSIVE_MAKE=$(MAKE)
+RECURSIVE_MAKE_ARGS=
 #else
 @SET_MAKE@
-RECURSIVE_MAKE=@RECURSIVE_MAKE@
+RECURSIVE_MAKE_ARGS=@RECURSIVE_MAKE_ARGS@
 #endif
 
 SHELL = /bin/sh
@@ -284,11 +284,11 @@ ${srcdir}/lib-src/config.values.in : ${srcdir}/configure
        cd ${srcdir} && $(SHELL) lib-src/config.values.sh
 
 depend ${srcdir}/src/depend:
-       cd ./src && $(RECURSIVE_MAKE) depend
+       cd ./src && $(MAKE) $(RECURSIVE_MAKE_ARGS) depend
 
 ## Build XEmacs and recompile out-of-date and missing .elc files along
 ## the way.
-all-elc all-elcs: autoloads dump-elcs
+all-elc all-elcs: ${PROGNAME} autoloads dump-elcs
        ${blddir}/src/${PROGNAME} -batch -vanilla \
                -l update-elc-2.el -f batch-update-elc-2 lisp
 #ifdef UTF2000
@@ -297,13 +297,13 @@ all-elc all-elcs: autoloads dump-elcs
 #endif
 
 ## Sub-target for all-elc.
-dump-elc dump-elcs: ${GENERATED_HEADERS} FRC.dump-elcs
-       cd ./src && $(RECURSIVE_MAKE) dump-elcs
+dump-elc dump-elcs: ${PROGNAME} ${GENERATED_HEADERS} FRC.dump-elcs
+       cd ./src && $(MAKE) $(RECURSIVE_MAKE_ARGS) dump-elcs
 
 autoloads: lib-src lwlib src lisp/auto-autoloads.el lisp/custom-load.el
 
 FRC.lisp.auto.autoloads.el:
-lisp/auto-autoloads.el:        FRC.lisp.auto.autoloads.el
+lisp/auto-autoloads.el:        ${PROGNAME} FRC.lisp.auto.autoloads.el
        $(RM) lisp/auto-autoloads.el
        ${blddir}/src/${PROGNAME} -batch -no-autoloads \
                -l autoload -f batch-update-directory lisp
@@ -328,19 +328,20 @@ lisp/auto-autoloads.el:   FRC.lisp.auto.autoloads.el
 #endif
 
 FRC.lisp.custom.load.el:
-lisp/custom-load.el: FRC.lisp.custom.load.el lisp/auto-autoloads.el
+lisp/custom-load.el: ${PROGNAME} FRC.lisp.custom.load.el lisp/auto-autoloads.el
        ${blddir}/src/${PROGNAME} -batch -vanilla -l cus-dep \
                -f Custom-make-dependencies lisp
 
 finder: src
        @echo "Building finder database ..."
+       $(RM) lisp/finder-inf.el
        @(cd ./lisp; \
                ${blddir}/src/${PROGNAME} -batch -vanilla \
                -eval '(setq finder-compile-keywords-quiet t)' \
                -l finder -f finder-compile-keywords )
        @echo "Building finder database ...(done)"
 
-lisp/finder-inf.el:
+lisp/finder-inf.el: src
        @echo "Building finder database ..."
        @(cd ./lisp; \
                ${blddir}/src/${PROGNAME} -batch -vanilla \
@@ -375,9 +376,12 @@ FRC.src FRC.lib-src FRC.lwlib FRC.dynodump pkg-src/FRC.tree-x:
 FRC.lisp.finder-inf.el:
 
 ${SUBDIR}: ${SUBDIR_MAKEFILES} ${GENERATED_HEADERS} FRC
-       cd ./$@ && $(RECURSIVE_MAKE) all
+       cd ./$@ && $(MAKE) $(RECURSIVE_MAKE_ARGS) all
 
-Makefile: ${srcdir}/Makefile.in config.status
+## Building modules depends on ellcc, found in lib-src.
+modules/sample modules/ldap modules/zlib modules/base64: lib-src
+
+Makefile: ${srcdir}/Makefile.in.in config.status
        ./config.status
 
 src/Makefile: ${srcdir}/src/Makefile.in.in ${srcdir}/src/depend config.status
@@ -436,7 +440,7 @@ install: all check-features install-arch-dep install-arch-indep
 
 install-arch-dep: mkdir
        for subdir in ${INSTALL_ARCH_DEP_SUBDIR}; do \
-       (cd ./$${subdir} && $(RECURSIVE_MAKE) install prefix=${prefix} \
+       (cd ./$${subdir} && $(MAKE) $(RECURSIVE_MAKE_ARGS) install prefix=${prefix} \
            exec_prefix=${exec_prefix} bindir=${bindir} libdir=${libdir} \
            archlibdir=${archlibdir}) ; done
        if test "`(cd ${archlibdir} && $(pwd))`" != \
@@ -456,11 +460,13 @@ install-arch-dep: mkdir
        ${INSTALL_PROGRAM} src/${PROGNAME} ${bindir}/${PROGNAME}
        -chmod 0755 ${bindir}/${PROGNAME}
 #else
-       ${INSTALL_PROGRAM} src/${PROGNAME} ${bindir}/${PROGNAME}-${version}
-       -chmod 0755 ${bindir}/${PROGNAME}-${version}
 # ifdef CYGWIN
+       ${INSTALL_PROGRAM} src/${PROGNAME} ${bindir}/${PROGNAME}-${version}.exe
+       -chmod 0755 ${bindir}/${PROGNAME}-${version}.exe
        cd ${bindir} && $(RM) ./${PROGNAME} && ${LN_S} ${PROGNAME}-${version}.exe ./${PROGNAME}
 # else
+       ${INSTALL_PROGRAM} src/${PROGNAME} ${bindir}/${PROGNAME}-${version}
+       -chmod 0755 ${bindir}/${PROGNAME}-${version}
        cd ${bindir} && $(RM) ./${PROGNAME} && ${LN_S} ${PROGNAME}-${version} ./${PROGNAME}
 # endif /* CYGWIN */
 #endif /* WIN32_NATIVE */
@@ -570,7 +576,7 @@ mkdir: FRC.mkdir
 #### would be extremely dangerous for anyone to use it.
 ##uninstall:
 ##     (cd ./lib-src;                                  \
-##      $(RECURSIVE_MAKE) uninstall                    \
+##      $(MAKE) $(RECURSIVE_MAKE_ARGS) uninstall                       \
 ##         prefix=${prefix} exec_prefix=${exec_prefix} \
 ##         bindir=${bindir} libdir=${libdir} archlibdir=${archlibdir})
 ##     for dir in ${lispdir} ${etcdir} ; do            \
@@ -604,7 +610,7 @@ FRC.mostlyclean FRC.clean FRC.distclean FRC.realclean FRC.tags:
 ##      target for GCC does not delete `libgcc.a', because recompiling it
 ##      is rarely necessary and takes a lot of time.
 mostlyclean: FRC.mostlyclean
-       for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+       for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done
 
 ## `clean'
 ##      Delete all files from the current directory that are normally
@@ -615,7 +621,7 @@ mostlyclean: FRC.mostlyclean
 
 ##      Delete `.dvi' files here if they are not part of the distribution.
 clean: FRC.clean
-       for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+       for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done
        $(RM) core
 
 ## `distclean'
@@ -631,7 +637,7 @@ top_distclean=\
        $(RM) -r site-packages xemacs-packages mule-packages site-lisp
 
 distclean: FRC.distclean
-       for d in $(SUBDIR_DISTCLEAN); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+       for d in $(SUBDIR_DISTCLEAN); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done
        -${top_distclean}
 
 ## `realclean'
@@ -646,7 +652,7 @@ distclean: FRC.distclean
 ##      anything that needs to exist in order to run `configure' and then
 ##      begin to build the program.
 realclean: FRC.realclean
-       for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+       for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done
        -${top_distclean}
        $(RM) TAGS
 
@@ -655,7 +661,7 @@ realclean: FRC.realclean
 ## the coding standards seem to come from.  It's like distclean, but
 ## it deletes backup and autosave files too.
 extraclean:
-       for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+       for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done
        $(RM) *~ \#*
        -${top_distclean}
 
@@ -677,7 +683,7 @@ SOURCES = ChangeLog GETTING.GNU.SOFTWARE INSTALL Makefile.in PROBLEMS \
 unlock:
        chmod u+w $(SOURCES) cpp/*
        -cd ./elisp && chmod u+w Makefile README *.texi
-       for d in src etc lib-src lisp; do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+       for d in src etc lib-src lisp; do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done
        cd ./lisp/term && chmod u+w README *.el
        cd ./man && chmod u+w *texi* ChangeLog split-man
        cd ./lwlib && chmod u+w *.[ch] Makefile.in.in
@@ -685,7 +691,7 @@ unlock:
 relock:
        chmod u-w $(SOURCES) cpp/*
        -cd ./elisp && chmod u-w Makefile README *.texi
-       for d in src etc lib-src lisp; do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+       for d in src etc lib-src lisp; do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@); done
        cd ./lisp/term && chmod u+w README *.el
        cd ./man && chmod u+w *texi* ChangeLog split-man
        cd ./lwlib && chmod u+w *.[ch] Makefile.in.in
@@ -704,13 +710,13 @@ TAGS tags: FRC.tags
          xargs etags -a -l none -r "/^(def\\(var\\|un\\|alias\\|const\\|macro\\|subst\\|struct\\|face\\|group\\|custom\\|ine-\\(function\\|compiler-macro\\|[a-z-]+alias\\)\\)[        ]+'?\\([^       ]+\\)/\\3/"
 
 check:
-       cd ./src && $(RECURSIVE_MAKE) $@
+       cd ./src && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@
 
 info: FRC.info
-       cd ${srcdir}/man && $(RECURSIVE_MAKE) $@
+       cd ${srcdir}/man && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@
 
 dvi:
-       cd ${srcdir}/man && $(RECURSIVE_MAKE) $@
+       cd ${srcdir}/man && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@
 
 ## Fix up version information in executables (Solaris-only)
 mcs:
index 5398d7d..0027fcd 100755 (executable)
--- a/configure
+++ b/configure
@@ -6,7 +6,7 @@
 #### Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
 #### Copyright (C) 1993-1995 Board of Trustees, University of Illinois.
 #### Copyright (C) 1996, 1997 Sun Microsystems, Inc.
-#### Copyright (C) 1995, 1996 Ben Wing.
+#### Copyright (C) 1995, 1996, 2005 Ben Wing.
 #### Copyright (C) 2000, 2001 Martin Buchholz.
 #### Copyright (C) 1998, 1999 J. Kean Johnston.
 
@@ -1559,7 +1559,7 @@ fi
 
 if test -z "$pdump"; then
   case "$opsys" in
-    linux* )  pdump=yes ;;        darwin )  pdump=yes ;;        *)        pdump=no ;;
+    linux* )  pdump=yes ;;        darwin )  pdump=yes ;;        cygwin* ) pdump=yes ;;        *)        pdump=no ;;
   esac
 fi
 
@@ -2993,7 +2993,6 @@ EOF
 fi
 
 
-test "$machine$opsys" = "powerpclinux" && start_flags="-T $srcdir/src/ppc.ldscript"
 
 if test "$unexec" = "unexaix.o"; then
   if   test "$dynamic" = "no"; then
@@ -3007,12 +3006,12 @@ if test "$unexec" = "unexaix.o"; then
   done
   
 echo $ac_n "checking for terminateAndUnload in -lC""... $ac_c" 1>&6
-echo "configure:3011: checking for terminateAndUnload in -lC" >&5
+echo "configure:3010: 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 3016 "configure"
+#line 3015 "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
@@ -3023,7 +3022,7 @@ int main() {
 terminateAndUnload()
 ; return 0; }
 EOF
-if { (eval echo configure:3027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3131,7 +3130,7 @@ fi
 
 if test "$add_runtime_path" = "yes"; then
       echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6
-echo "configure:3135: checking "for runtime libraries flag"" >&5
+echo "configure:3134: checking "for runtime libraries flag"" >&5
   case "$opsys" in
     sol2 ) dash_r="-R" ;;
     decosf* | linux* | irix*) dash_r="-rpath " ;;
@@ -3153,14 +3152,14 @@ if test "$GCC" = "yes"; then
   done
 fi
         cat > conftest.$ac_ext <<EOF
-#line 3157 "configure"
+#line 3156 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   dash_r="$try_dash_r"
 else
@@ -3261,10 +3260,10 @@ else
 fi
 after_morecore_hook_exists=yes
 echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6
-echo "configure:3265: checking for malloc_set_state" >&5
+echo "configure:3264: checking for malloc_set_state" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3268 "configure"
+#line 3267 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char malloc_set_state(); below.  */
@@ -3287,7 +3286,7 @@ malloc_set_state();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3290: \"$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
@@ -3307,16 +3306,16 @@ doug_lea_malloc=no
 fi
 
 echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6
-echo "configure:3311: checking whether __after_morecore_hook exists" >&5
+echo "configure:3310: checking whether __after_morecore_hook exists" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3313 "configure"
+#line 3312 "configure"
 #include "confdefs.h"
 extern void (* __after_morecore_hook)();
 int main() {
 __after_morecore_hook = 0
 ; return 0; }
 EOF
-if { (eval echo configure:3320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3319: \"$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
@@ -3372,7 +3371,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:3376: checking for $ac_word" >&5
+echo "configure:3375: checking for $ac_word" >&5
 
 if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
@@ -3427,7 +3426,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:3431: checking for a BSD compatible install" >&5
+echo "configure:3430: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 
   IFS="${IFS=  }"; ac_save_IFS="$IFS"; IFS=":"
@@ -3481,7 +3480,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:3485: checking for $ac_word" >&5
+echo "configure:3484: checking for $ac_word" >&5
 
 if test -n "$YACC"; then
   ac_cv_prog_YACC="$YACC" # Let the user override the test.
@@ -3513,15 +3512,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:3517: checking for $ac_hdr" >&5
+echo "configure:3516: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3520 "configure"
+#line 3519 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3525: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3524: \"$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*
@@ -3551,10 +3550,10 @@ fi
 done
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:3555: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:3554: checking for sys/wait.h that is POSIX.1 compatible" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3558 "configure"
+#line 3557 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -3570,7 +3569,7 @@ wait (&s);
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:3574: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3573: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -3594,10 +3593,10 @@ EOF
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3598: checking for ANSI C header files" >&5
+echo "configure:3597: checking for ANSI C header files" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3601 "configure"
+#line 3600 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3605,7 +3604,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:3609: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3608: \"$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*
@@ -3622,7 +3621,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 3626 "configure"
+#line 3625 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -3640,7 +3639,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 3644 "configure"
+#line 3643 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -3658,7 +3657,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 3662 "configure"
+#line 3661 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3669,7 +3668,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:3673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:3672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -3695,10 +3694,10 @@ EOF
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:3699: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:3698: checking whether time.h and sys/time.h may both be included" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3702 "configure"
+#line 3701 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -3707,7 +3706,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:3711: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -3731,10 +3730,10 @@ EOF
 fi
 
 echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
-echo "configure:3735: checking for sys_siglist declaration in signal.h or unistd.h" >&5
+echo "configure:3734: checking for sys_siglist declaration in signal.h or unistd.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3738 "configure"
+#line 3737 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3746,7 +3745,7 @@ int main() {
 char *msg = *(sys_siglist + 1);
 ; return 0; }
 EOF
-if { (eval echo configure:3750: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3749: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_decl_sys_siglist=yes
 else
@@ -3772,9 +3771,9 @@ fi
 
 
 echo $ac_n "checking for utime""... $ac_c" 1>&6
-echo "configure:3776: checking for utime" >&5
+echo "configure:3775: checking for utime" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3778 "configure"
+#line 3777 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utime.h>
@@ -3782,7 +3781,7 @@ int main() {
 struct utimbuf x; x.actime = x.modtime = 0; utime ("/", &x);
 ; return 0; }
 EOF
-if { (eval echo configure:3786: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3785: \"$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
@@ -3801,10 +3800,10 @@ else
       for ac_func in utimes
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3805: checking for $ac_func" >&5
+echo "configure:3804: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3808 "configure"
+#line 3807 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3827,7 +3826,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3831: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3830: \"$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
@@ -3859,10 +3858,10 @@ rm -f conftest*
 
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3863: checking return type of signal handlers" >&5
+echo "configure:3862: checking return type of signal handlers" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3866 "configure"
+#line 3865 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3879,7 +3878,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:3883: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3882: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -3901,10 +3900,10 @@ EOF
 
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3905: checking for size_t" >&5
+echo "configure:3904: checking for size_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3908 "configure"
+#line 3907 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3935,10 +3934,10 @@ EOF
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3939: checking for pid_t" >&5
+echo "configure:3938: checking for pid_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3942 "configure"
+#line 3941 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3969,10 +3968,10 @@ EOF
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3973: checking for uid_t in sys/types.h" >&5
+echo "configure:3972: checking for uid_t in sys/types.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3976 "configure"
+#line 3975 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -4008,10 +4007,10 @@ EOF
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:4012: checking for mode_t" >&5
+echo "configure:4011: checking for mode_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4015 "configure"
+#line 4014 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -4042,10 +4041,10 @@ EOF
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:4046: checking for off_t" >&5
+echo "configure:4045: checking for off_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4049 "configure"
+#line 4048 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -4076,10 +4075,10 @@ EOF
 fi
 
 echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:4080: checking for ssize_t" >&5
+echo "configure:4079: checking for ssize_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4083 "configure"
+#line 4082 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -4111,9 +4110,9 @@ fi
 
 
 echo $ac_n "checking for socklen_t""... $ac_c" 1>&6
-echo "configure:4115: checking for socklen_t" >&5
+echo "configure:4114: checking for socklen_t" >&5
 cat > conftest.$ac_ext <<EOF
-#line 4117 "configure"
+#line 4116 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -4123,7 +4122,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4127: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4126: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 else
@@ -4132,7 +4131,7 @@ else
   rm -rf conftest*
   
 cat > conftest.$ac_ext <<EOF
-#line 4136 "configure"
+#line 4135 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -4142,7 +4141,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4146: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4145: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
 echo "$ac_t""size_t" 1>&6
@@ -4174,9 +4173,9 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking for struct timeval""... $ac_c" 1>&6
-echo "configure:4178: checking for struct timeval" >&5
+echo "configure:4177: checking for struct timeval" >&5
 cat > conftest.$ac_ext <<EOF
-#line 4180 "configure"
+#line 4179 "configure"
 #include "confdefs.h"
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
@@ -4192,7 +4191,7 @@ int main() {
 static struct timeval x; x.tv_sec = x.tv_usec;
 ; return 0; }
 EOF
-if { (eval echo configure:4196: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4195: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
   HAVE_TIMEVAL=yes
@@ -4214,10 +4213,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:4218: checking whether struct tm is in sys/time.h or time.h" >&5
+echo "configure:4217: checking whether struct tm is in sys/time.h or time.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4221 "configure"
+#line 4220 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <time.h>
@@ -4225,7 +4224,7 @@ int main() {
 struct tm *tp; tp->tm_sec;
 ; return 0; }
 EOF
-if { (eval echo configure:4229: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4228: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm=time.h
 else
@@ -4249,10 +4248,10 @@ EOF
 fi
 
 echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
-echo "configure:4253: checking for tm_zone in struct tm" >&5
+echo "configure:4252: checking for tm_zone in struct tm" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4256 "configure"
+#line 4255 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_cv_struct_tm>
@@ -4260,7 +4259,7 @@ int main() {
 struct tm tm; tm.tm_zone;
 ; return 0; }
 EOF
-if { (eval echo configure:4264: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4263: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm_zone=yes
 else
@@ -4283,10 +4282,10 @@ EOF
 
 else
   echo $ac_n "checking for tzname""... $ac_c" 1>&6
-echo "configure:4287: checking for tzname" >&5
+echo "configure:4286: checking for tzname" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4290 "configure"
+#line 4289 "configure"
 #include "confdefs.h"
 #include <time.h>
 #ifndef tzname /* For SGI.  */
@@ -4296,7 +4295,7 @@ int main() {
 atoi(*tzname);
 ; return 0; }
 EOF
-if { (eval echo configure:4300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_var_tzname=yes
 else
@@ -4322,10 +4321,10 @@ fi
 
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:4326: checking for working const" >&5
+echo "configure:4325: checking for working const" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4329 "configure"
+#line 4328 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -4374,7 +4373,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:4378: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4377: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -4399,7 +4398,7 @@ fi
 
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:4403: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:4402: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 
 cat > conftestmake <<\EOF
@@ -4424,12 +4423,12 @@ fi
 
 
 echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:4428: checking whether byte ordering is bigendian" >&5
+echo "configure:4427: 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 4433 "configure"
+#line 4432 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4440,11 +4439,11 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4444: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4443: \"$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 4448 "configure"
+#line 4447 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4455,7 +4454,7 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4459: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4458: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -4472,7 +4471,7 @@ fi
 rm -f conftest*
 if test $ac_cv_c_bigendian = unknown; then
 cat > conftest.$ac_ext <<EOF
-#line 4476 "configure"
+#line 4475 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -4485,7 +4484,7 @@ main () {
   exit (u.c[sizeof (long) - 1] == 1);
 }
 EOF
-if { (eval echo configure:4489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4488: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_c_bigendian=no
 else
@@ -4512,10 +4511,10 @@ fi
 
 
 echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:4516: checking size of short" >&5
+echo "configure:4515: checking size of short" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4519 "configure"
+#line 4518 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4526,7 +4525,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4529: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_short=`cat conftestval`
 else
@@ -4554,10 +4553,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:4558: checking size of int" >&5
+echo "configure:4557: checking size of int" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4561 "configure"
+#line 4560 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4568,7 +4567,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4572: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_int=`cat conftestval`
 else
@@ -4590,10 +4589,10 @@ EOF
 
 
 echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:4594: checking size of long" >&5
+echo "configure:4593: checking size of long" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4597 "configure"
+#line 4596 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4604,7 +4603,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_long=`cat conftestval`
 else
@@ -4626,10 +4625,10 @@ EOF
 
 
 echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:4630: checking size of long long" >&5
+echo "configure:4629: checking size of long long" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4633 "configure"
+#line 4632 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4640,7 +4639,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4644: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4643: \"$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
@@ -4662,10 +4661,10 @@ EOF
 
 
 echo $ac_n "checking size of void *""... $ac_c" 1>&6
-echo "configure:4666: checking size of void *" >&5
+echo "configure:4665: checking size of void *" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4669 "configure"
+#line 4668 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4676,7 +4675,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4679: \"$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
@@ -4700,7 +4699,7 @@ EOF
 
 case $opsys in
   cygwin* ) cat > conftest.$ac_ext <<EOF
-#line 4704 "configure"
+#line 4703 "configure"
 #include "confdefs.h"
 #include <cygwin/types.h>
 EOF
@@ -4725,7 +4724,7 @@ rm -f conftest*
 esac
 
 echo $ac_n "checking for long file names""... $ac_c" 1>&6
-echo "configure:4729: checking for long file names" >&5
+echo "configure:4728: 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:
@@ -4771,10 +4770,10 @@ fi
 
 
 echo $ac_n "checking for sin""... $ac_c" 1>&6
-echo "configure:4775: checking for sin" >&5
+echo "configure:4774: checking for sin" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4778 "configure"
+#line 4777 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char sin(); below.  */
@@ -4797,7 +4796,7 @@ sin();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4800: \"$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
@@ -4815,12 +4814,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-echo "configure:4819: checking for sin in -lm" >&5
+echo "configure:4818: 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 4824 "configure"
+#line 4823 "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
@@ -4831,7 +4830,7 @@ int main() {
 sin()
 ; return 0; }
 EOF
-if { (eval echo configure:4835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4875,14 +4874,14 @@ EOF
 
 
 cat > conftest.$ac_ext <<EOF
-#line 4879 "configure"
+#line 4878 "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:4886: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4885: \"$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
@@ -4899,14 +4898,14 @@ fi
 rm -f conftest*
 
 echo "checking type of mail spool file locking" 1>&6
-echo "configure:4903: checking type of mail spool file locking" >&5
+echo "configure:4902: 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:4907: checking for $ac_func" >&5
+echo "configure:4906: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4910 "configure"
+#line 4909 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4929,7 +4928,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4932: \"$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
@@ -5011,12 +5010,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:5015: checking for cma_open in -lpthreads" >&5
+echo "configure:5014: 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 5020 "configure"
+#line 5019 "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
@@ -5027,7 +5026,7 @@ int main() {
 cma_open()
 ; return 0; }
 EOF
-if { (eval echo configure:5031: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5064,7 +5063,7 @@ esac
 
 
 echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6
-echo "configure:5068: checking whether the -xildoff compiler flag is required" >&5
+echo "configure:5067: 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;
@@ -5076,7 +5075,7 @@ fi
 if test "$opsys" = "sol2"; then
   if test "$os_release" -ge 506; then
     echo $ac_n "checking for \"-z ignore\" linker flag""... $ac_c" 1>&6
-echo "configure:5080: checking for \"-z ignore\" linker flag" >&5
+echo "configure:5079: 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 ;;
@@ -5087,7 +5086,7 @@ fi
 
 
 echo "checking "for specified window system"" 1>&6
-echo "configure:5091: checking "for specified window system"" >&5
+echo "configure:5090: checking "for specified window system"" >&5
 
 
 GNOME_CONFIG=no
@@ -5095,7 +5094,7 @@ GTK_CONFIG=no
 
 if test "$with_gnome" != "no"; then
    echo $ac_n "checking for GNOME configuration script""... $ac_c" 1>&6
-echo "configure:5099: checking for GNOME configuration script" >&5
+echo "configure:5098: checking for GNOME configuration script" >&5
    for possible in gnome-config
    do
       possible_version=`${possible} --version 2> /dev/null`
@@ -5126,40 +5125,40 @@ fi
 
 if test "$with_gtk" != "no";then
    echo $ac_n "checking for GTK configuration script""... $ac_c" 1>&6
-echo "configure:5130: checking for GTK configuration script" >&5
+echo "configure:5129: 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}"
+             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
       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:5152: checking gtk version" >&5
+echo "configure:5151: 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:5157: checking gtk libs" >&5
+echo "configure:5156: 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:5163: checking gtk cflags" >&5
+echo "configure:5162: checking gtk cflags" >&5
       GTK_CFLAGS=`${GTK_CONFIG} --cflags`
       if test "$GCC" = "yes"; then
        GTK_CFLAGS="${GTK_CFLAGS} -Wno-shadow"
@@ -5169,19 +5168,19 @@ echo "configure:5163: checking gtk cflags" >&5
 
       
 echo $ac_n "checking for main in -lgdk_imlib""... $ac_c" 1>&6
-echo "configure:5173: checking for main in -lgdk_imlib" >&5
+echo "configure:5172: 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 5178 "configure"
+#line 5177 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:5185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5203,12 +5202,12 @@ fi
 
       
 echo $ac_n "checking for Imlib_init in -lImlib""... $ac_c" 1>&6
-echo "configure:5207: checking for Imlib_init in -lImlib" >&5
+echo "configure:5206: 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 5212 "configure"
+#line 5211 "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
@@ -5219,7 +5218,7 @@ int main() {
 Imlib_init()
 ; return 0; }
 EOF
-if { (eval echo configure:5223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5242,10 +5241,10 @@ fi
       for ac_func in gdk_imlib_init
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5246: checking for $ac_func" >&5
+echo "configure:5245: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5249 "configure"
+#line 5248 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5268,7 +5267,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5271: \"$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
@@ -5347,15 +5346,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5351: checking for $ac_hdr" >&5
+echo "configure:5350: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5354 "configure"
+#line 5353 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5359: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5358: \"$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*
@@ -5386,19 +5385,19 @@ done
 
       
 echo $ac_n "checking for main in -lxml""... $ac_c" 1>&6
-echo "configure:5390: checking for main in -lxml" >&5
+echo "configure:5389: 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 5395 "configure"
+#line 5394 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:5402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5420,19 +5419,19 @@ fi
 
       
 echo $ac_n "checking for main in -lglade""... $ac_c" 1>&6
-echo "configure:5424: checking for main in -lglade" >&5
+echo "configure:5423: 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 5429 "configure"
+#line 5428 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:5436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5454,19 +5453,19 @@ fi
 
       
 echo $ac_n "checking for main in -lglade-gnome""... $ac_c" 1>&6
-echo "configure:5458: checking for main in -lglade-gnome" >&5
+echo "configure:5457: 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 5463 "configure"
+#line 5462 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:5470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5487,7 +5486,7 @@ fi
 
 
       cat > conftest.$ac_ext <<EOF
-#line 5491 "configure"
+#line 5490 "configure"
 #include "confdefs.h"
 #include <glade/glade-xml.h>
 EOF
@@ -5546,7 +5545,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:5550: checking for X" >&5
+echo "configure:5549: checking for X" >&5
 
 # Check whether --with-x or --without-x was given.
 if test "${with_x+set}" = set; then
@@ -5606,12 +5605,12 @@ if test "$ac_x_includes" = NO; then
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 5610 "configure"
+#line 5609 "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:5615: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5614: \"$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*
@@ -5680,14 +5679,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 5684 "configure"
+#line 5683 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:5691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5690: \"$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.
@@ -5796,17 +5795,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:5800: checking whether -R must be followed by a space" >&5
+echo "configure:5799: 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 5803 "configure"
+#line 5802 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_nospace=yes
 else
@@ -5822,14 +5821,14 @@ rm -f conftest*
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat > conftest.$ac_ext <<EOF
-#line 5826 "configure"
+#line 5825 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_space=yes
 else
@@ -5865,12 +5864,12 @@ ac_cv_lib_dnet_dnet_ntoa=no
 else
 
 echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
-echo "configure:5869: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:5868: 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 5874 "configure"
+#line 5873 "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
@@ -5881,7 +5880,7 @@ int main() {
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:5885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5884: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5905,12 +5904,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:5909: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:5908: 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 5914 "configure"
+#line 5913 "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
@@ -5921,7 +5920,7 @@ int main() {
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:5925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5950,10 +5949,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:5954: checking for gethostbyname" >&5
+echo "configure:5953: checking for gethostbyname" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5957 "configure"
+#line 5956 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname(); below.  */
@@ -5976,7 +5975,7 @@ gethostbyname();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5979: \"$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
@@ -5997,12 +5996,12 @@ fi
     if test $ac_cv_func_gethostbyname = no; then
       
 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:6001: checking for gethostbyname in -lnsl" >&5
+echo "configure:6000: 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 6006 "configure"
+#line 6005 "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
@@ -6013,7 +6012,7 @@ int main() {
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:6017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6016: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6043,10 +6042,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:6047: checking for connect" >&5
+echo "configure:6046: checking for connect" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6050 "configure"
+#line 6049 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect(); below.  */
@@ -6069,7 +6068,7 @@ connect();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_connect=yes"
 else
@@ -6092,12 +6091,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:6096: checking "$xe_msg_checking"" >&5
+echo "configure:6095: 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 6101 "configure"
+#line 6100 "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
@@ -6108,7 +6107,7 @@ int main() {
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:6112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6132,10 +6131,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:6136: checking for remove" >&5
+echo "configure:6135: checking for remove" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6139 "configure"
+#line 6138 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove(); below.  */
@@ -6158,7 +6157,7 @@ remove();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6161: \"$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
@@ -6179,12 +6178,12 @@ fi
     if test $ac_cv_func_remove = no; then
       
 echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:6183: checking for remove in -lposix" >&5
+echo "configure:6182: 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 6188 "configure"
+#line 6187 "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
@@ -6195,7 +6194,7 @@ int main() {
 remove()
 ; return 0; }
 EOF
-if { (eval echo configure:6199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6198: \"$ac_link\") 1>&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,10 +6218,10 @@ fi
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:6223: checking for shmat" >&5
+echo "configure:6222: checking for shmat" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6226 "configure"
+#line 6225 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat(); below.  */
@@ -6245,7 +6244,7 @@ shmat();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6249: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6248: \"$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
@@ -6266,12 +6265,12 @@ fi
     if test $ac_cv_func_shmat = no; then
       
 echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:6270: checking for shmat in -lipc" >&5
+echo "configure:6269: 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 6275 "configure"
+#line 6274 "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
@@ -6282,7 +6281,7 @@ int main() {
 shmat()
 ; return 0; }
 EOF
-if { (eval echo configure:6286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6318,12 +6317,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:6322: checking "$xe_msg_checking"" >&5
+echo "configure:6321: 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 6327 "configure"
+#line 6326 "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
@@ -6334,7 +6333,7 @@ int main() {
 IceConnectionNumber()
 ; return 0; }
 EOF
-if { (eval echo configure:6338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6380,15 +6379,15 @@ EOF
 
     ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6
-echo "configure:6384: checking for Xm/Xm.h" >&5
+echo "configure:6383: checking for Xm/Xm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6387 "configure"
+#line 6386 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6392: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6391: \"$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*
@@ -6405,12 +6404,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:6409: checking for XmStringFree in -lXm" >&5
+echo "configure:6408: 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 6414 "configure"
+#line 6413 "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
@@ -6421,7 +6420,7 @@ int main() {
 XmStringFree()
 ; return 0; }
 EOF
-if { (eval echo configure:6425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6573,7 +6572,7 @@ EOF
 
 
     echo "checking for X defines extracted by xmkmf" 1>&6
-echo "configure:6577: checking for X defines extracted by xmkmf" >&5
+echo "configure:6576: checking for X defines extracted by xmkmf" >&5
   rm -fr conftestdir
   if mkdir conftestdir; then
     cd conftestdir
@@ -6622,15 +6621,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:6626: checking for X11/Intrinsic.h" >&5
+echo "configure:6625: checking for X11/Intrinsic.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6629 "configure"
+#line 6628 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6634: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6633: \"$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*
@@ -6654,12 +6653,12 @@ fi
 
       
 echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
-echo "configure:6658: checking for XOpenDisplay in -lX11" >&5
+echo "configure:6657: 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 6663 "configure"
+#line 6662 "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
@@ -6670,7 +6669,7 @@ int main() {
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:6674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6695,12 +6694,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:6699: checking "$xe_msg_checking"" >&5
+echo "configure:6698: 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 6704 "configure"
+#line 6703 "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
@@ -6711,7 +6710,7 @@ int main() {
 XGetFontProperty()
 ; return 0; }
 EOF
-if { (eval echo configure:6715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6738,12 +6737,12 @@ fi
 
     
 echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6
-echo "configure:6742: checking for XShapeSelectInput in -lXext" >&5
+echo "configure:6741: 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 6747 "configure"
+#line 6746 "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
@@ -6754,7 +6753,7 @@ int main() {
 XShapeSelectInput()
 ; return 0; }
 EOF
-if { (eval echo configure:6758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6757: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6777,12 +6776,12 @@ fi
 
     
 echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6
-echo "configure:6781: checking for XtOpenDisplay in -lXt" >&5
+echo "configure:6780: 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 6786 "configure"
+#line 6785 "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
@@ -6793,7 +6792,7 @@ int main() {
 XtOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:6797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6816,14 +6815,14 @@ fi
 
 
   echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6
-echo "configure:6820: checking the version of X11 being used" >&5
+echo "configure:6819: checking the version of X11 being used" >&5
   cat > conftest.$ac_ext <<EOF
-#line 6822 "configure"
+#line 6821 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
     int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }
 EOF
-if { (eval echo configure:6827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:6826: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ./conftest foobar; x11_release=$?
 else
@@ -6854,10 +6853,10 @@ EOF
   for ac_func in XConvertCase
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6858: checking for $ac_func" >&5
+echo "configure:6857: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6861 "configure"
+#line 6860 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6880,7 +6879,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6884: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6883: \"$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
@@ -6912,15 +6911,15 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6916: checking for $ac_hdr" >&5
+echo "configure:6915: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6919 "configure"
+#line 6918 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6924: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6923: \"$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*
@@ -6953,10 +6952,10 @@ done
     for ac_func in XRegisterIMInstantiateCallback
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6957: checking for $ac_func" >&5
+echo "configure:6956: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6960 "configure"
+#line 6959 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6979,7 +6978,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6983: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6982: \"$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
@@ -7007,9 +7006,9 @@ fi
 done
 
   echo $ac_n "checking for standard XRegisterIMInstantiateCallback prototype""... $ac_c" 1>&6
-echo "configure:7011: checking for standard XRegisterIMInstantiateCallback prototype" >&5
+echo "configure:7010: checking for standard XRegisterIMInstantiateCallback prototype" >&5
   cat > conftest.$ac_ext <<EOF
-#line 7013 "configure"
+#line 7012 "configure"
 #include "confdefs.h"
 
 #define NeedFunctionPrototypes 1
@@ -7021,7 +7020,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:7025: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7024: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 else
@@ -7042,12 +7041,12 @@ rm -f conftest*
 
     test -z "$with_xmu" && { 
 echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6
-echo "configure:7046: checking for XmuReadBitmapDataFromFile in -lXmu" >&5
+echo "configure:7045: 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 7051 "configure"
+#line 7050 "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
@@ -7058,7 +7057,7 @@ int main() {
 XmuReadBitmapDataFromFile()
 ; return 0; }
 EOF
-if { (eval echo configure:7062: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7061: \"$ac_link\") 1>&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,19 +7096,19 @@ EOF
 
       
 echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6
-echo "configure:7101: checking for main in -lXbsd" >&5
+echo "configure:7100: 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 7106 "configure"
+#line 7105 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:7113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7133,7 +7132,7 @@ fi
     if test "$unexec" = "unexaix.o" -a "$x11_release" = "6"; then
         if test "$GCC" = "yes"; then
                   echo $ac_n "checking for name of AIX gcc threads option""... $ac_c" 1>&6
-echo "configure:7137: checking for name of AIX gcc threads option" >&5
+echo "configure:7136: checking for name of AIX gcc threads option" >&5
       case `$CC -v --help 2>&1` in
         *-mthreads*) aix_threads=-mthreads ;;
                   *) aix_threads=-pthread  ;;
@@ -7147,10 +7146,10 @@ echo "configure:7137: checking for name of AIX gcc threads option" >&5
          xe_save_CC="$CC"
          CC="${CC}_r"
          echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:7151: checking size of short" >&5
+echo "configure:7150: checking size of short" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7154 "configure"
+#line 7153 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -7161,7 +7160,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:7165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:7164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_short=`cat conftestval`
 else
@@ -7190,22 +7189,22 @@ EOF
 fi 
 if test "$with_msw" != "no"; then
   echo "checking for MS-Windows" 1>&6
-echo "configure:7194: checking for MS-Windows" >&5
+echo "configure:7193: checking for MS-Windows" >&5
   
 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6
-echo "configure:7197: checking for main in -lgdi32" >&5
+echo "configure:7196: 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 7202 "configure"
+#line 7201 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:7209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7278,12 +7277,12 @@ EOF
  fi
     fi
         cat > conftest.$ac_ext <<EOF
-#line 7282 "configure"
+#line 7281 "configure"
 #include "confdefs.h"
 #include <fcntl.h>
     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }
 EOF
-if { (eval echo configure:7287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:7286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   need_event_unixoid=yes; { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_MSG_SELECT
@@ -7347,15 +7346,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:7351: checking for X11/extensions/shape.h" >&5
+echo "configure:7350: checking for X11/extensions/shape.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7354 "configure"
+#line 7353 "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:7359: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7358: \"$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*
@@ -7407,7 +7406,7 @@ case "$x_libraries" in *X11R4* )
 esac
 
 echo "checking for WM_COMMAND option" 1>&6
-echo "configure:7411: checking for WM_COMMAND option" >&5;
+echo "configure:7410: checking for WM_COMMAND option" >&5;
 if test "$with_wmcommand" != "no"; then
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_WMCOMMAND
@@ -7422,15 +7421,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:7426: checking for X11/Xauth.h" >&5
+echo "configure:7425: checking for X11/Xauth.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7429 "configure"
+#line 7428 "configure"
 #include "confdefs.h"
 #include <X11/Xauth.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7434: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7433: \"$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*
@@ -7453,12 +7452,12 @@ fi
  }
 test -z "$with_xauth" && { 
 echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6
-echo "configure:7457: checking for XauGetAuthByAddr in -lXau" >&5
+echo "configure:7456: 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 7462 "configure"
+#line 7461 "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
@@ -7469,7 +7468,7 @@ int main() {
 XauGetAuthByAddr()
 ; return 0; }
 EOF
-if { (eval echo configure:7473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7514,15 +7513,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:7518: checking for ${dir}tt_c.h" >&5
+echo "configure:7517: checking for ${dir}tt_c.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7521 "configure"
+#line 7520 "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:7526: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7525: \"$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*
@@ -7558,12 +7557,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:7562: checking "$xe_msg_checking"" >&5
+echo "configure:7561: 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 7567 "configure"
+#line 7566 "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
@@ -7574,7 +7573,7 @@ int main() {
 tt_message_create()
 ; return 0; }
 EOF
-if { (eval echo configure:7578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7631,15 +7630,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:7635: checking for Dt/Dt.h" >&5
+echo "configure:7634: checking for Dt/Dt.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7638 "configure"
+#line 7637 "configure"
 #include "confdefs.h"
 #include <Dt/Dt.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7643: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7642: \"$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*
@@ -7662,12 +7661,12 @@ fi
  }
 test -z "$with_cde" && { 
 echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6
-echo "configure:7666: checking for DtDndDragStart in -lDtSvc" >&5
+echo "configure:7665: 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 7671 "configure"
+#line 7670 "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
@@ -7678,7 +7677,7 @@ int main() {
 DtDndDragStart()
 ; return 0; }
 EOF
-if { (eval echo configure:7682: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7751,7 +7750,7 @@ fi
 
 if test "$with_dragndrop" != "no" ; then
   echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6
-echo "configure:7755: checking if drag and drop API is needed" >&5
+echo "configure:7754: 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
@@ -7771,18 +7770,18 @@ EOF
 fi
 
 echo "checking for LDAP" 1>&6
-echo "configure:7775: checking for LDAP" >&5
+echo "configure:7774: 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:7778: checking for ldap.h" >&5
+echo "configure:7777: checking for ldap.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7781 "configure"
+#line 7780 "configure"
 #include "confdefs.h"
 #include <ldap.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7786: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7785: \"$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*
@@ -7805,15 +7804,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:7809: checking for lber.h" >&5
+echo "configure:7808: checking for lber.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7812 "configure"
+#line 7811 "configure"
 #include "confdefs.h"
 #include <lber.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7817: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7816: \"$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*
@@ -7837,12 +7836,12 @@ fi
 if test "$with_ldap" != "no"; then
   
 echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6
-echo "configure:7841: checking for ldap_search in -lldap" >&5
+echo "configure:7840: 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 7846 "configure"
+#line 7845 "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
@@ -7853,7 +7852,7 @@ int main() {
 ldap_search()
 ; return 0; }
 EOF
-if { (eval echo configure:7857: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7867,23 +7866,22 @@ xe_check_libs=""
 
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
   echo "$ac_t""yes" 1>&6
-  with_ldap_nolber=yes
+  with_ldap=yes
 else
   echo "$ac_t""no" 1>&6
-with_ldap_nolber=no
 fi
 
 
-  test "$with_ldap_nolber" = "no" && { 
+    test "$with_ldap" != "yes" && { 
 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:7882: checking "$xe_msg_checking"" >&5
+echo "configure:7880: 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 7887 "configure"
+#line 7885 "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
@@ -7894,7 +7892,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:7898: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7908,23 +7906,22 @@ xe_check_libs=""
 
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
   echo "$ac_t""yes" 1>&6
-  with_ldap_lber=yes
+  with_ldap=yes with_ldap_lber=yes
 else
   echo "$ac_t""no" 1>&6
-with_ldap_lber=no
 fi
 
  }
-  test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" && { 
+  test "$with_ldap" != "yes" && { 
 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:7923: checking "$xe_msg_checking"" >&5
+echo "configure:7920: 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 7928 "configure"
+#line 7925 "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
@@ -7935,7 +7932,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:7939: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7936: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7949,23 +7946,22 @@ xe_check_libs=""
 
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
   echo "$ac_t""yes" 1>&6
-  with_ldap_krb=yes
+  with_ldap=yes with_ldap_lber=yes with_ldap_krb=yes
 else
   echo "$ac_t""no" 1>&6
-with_ldap_krb=no
 fi
 
  }
-  test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" -a "$with_ldap_krb" = "no" && { 
+  test "$with_ldap" != "yes" && { 
 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:7964: checking "$xe_msg_checking"" >&5
+echo "configure:7960: 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 7969 "configure"
+#line 7965 "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
@@ -7976,7 +7972,45 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:7980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7976: \"$ac_link\") 1>&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
+  with_ldap=yes with_ldap_lber=yes with_ldap_krb=yes with_ldap_des=yes
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+ }
+              test "$with_ldap_lber" != "yes" && { 
+echo $ac_n "checking for ber_pvt_opt_on in -llber""... $ac_c" 1>&6
+echo "configure:7998: checking for ber_pvt_opt_on in -llber" >&5
+ac_lib_var=`echo lber'_'ber_pvt_opt_on | sed 'y%./+-%__p_%'`
+
+xe_check_libs=" -llber "
+cat > conftest.$ac_ext <<EOF
+#line 8003 "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 ber_pvt_opt_on();
+
+int main() {
+ber_pvt_opt_on()
+; return 0; }
+EOF
+if { (eval echo configure:8014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7990,14 +8024,12 @@ xe_check_libs=""
 
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
   echo "$ac_t""yes" 1>&6
-  with_ldap_krbdes=yes
+  with_ldap_lber=yes
 else
   echo "$ac_t""no" 1>&6
-with_ldap_krbdes=no
 fi
 
  }
-  test -z "$with_ldap" -a \( "$with_ldap_lber" = "yes" -o "$with_ldap_nolber" = "yes" -o "$with_ldap_krb" = "yes" -o "$with_ldap_krbdes" = "yes" \) && with_ldap=yes
 fi
 if test "$with_ldap" = "yes"; then
   { test "$extra_verbose" = "yes" && cat << \EOF
@@ -8011,26 +8043,23 @@ EOF
   extra_objs="$extra_objs eldap.o" &&  if test "$extra_verbose" = "yes"; then
    echo "    xemacs will be linked with \"eldap.o\""
  fi
-  if test "$with_ldap_nolber" = "yes" ; then
-    LIBS="-lldap $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lldap\" to \$LIBS"; fi
-  else
-    if test "$with_ldap_krb" = "yes" ; then
-      LIBS="-lkrb $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lkrb\" to \$LIBS"; fi
-    fi
-    if test "$with_ldap_krbdes" = "yes" ; then
-      LIBS="-ldes $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-ldes\" to \$LIBS"; fi
-      LIBS="-lkrb $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lkrb\" to \$LIBS"; fi
-    fi
+  if test "$with_ldap_des" = "yes" ; then
+    LIBS="-ldes $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-ldes\" to \$LIBS"; fi
+  fi
+  if test "$with_ldap_krb" = "yes" ; then
+    LIBS="-lkrb $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lkrb\" to \$LIBS"; fi
+  fi
+  if test "$with_ldap_lber" = "yes" ; then
     LIBS="-llber $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-llber\" to \$LIBS"; fi
-    LIBS="-lldap $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lldap\" to \$LIBS"; fi
   fi
+  LIBS="-lldap $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lldap\" to \$LIBS"; fi
   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:8031: checking for $ac_func" >&5
+echo "configure:8060: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8034 "configure"
+#line 8063 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8053,7 +8082,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8086: \"$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
@@ -8084,20 +8113,20 @@ fi
 
 if test "$with_postgresql" != "no"; then
   echo "checking for PostgreSQL" 1>&6
-echo "configure:8088: checking for PostgreSQL" >&5
+echo "configure:8117: 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:8093: checking for ${header_dir}libpq-fe.h" >&5
+echo "configure:8122: checking for ${header_dir}libpq-fe.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8096 "configure"
+#line 8125 "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:8101: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8130: \"$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*
@@ -8121,12 +8150,12 @@ fi
 
   test -n "$libpq_fe_h_file" && { 
 echo $ac_n "checking for PQconnectdb in -lpq""... $ac_c" 1>&6
-echo "configure:8125: checking for PQconnectdb in -lpq" >&5
+echo "configure:8154: 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 8130 "configure"
+#line 8159 "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
@@ -8137,7 +8166,7 @@ int main() {
 PQconnectdb()
 ; return 0; }
 EOF
-if { (eval echo configure:8141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8170,12 +8199,12 @@ EOF
 
     
 echo $ac_n "checking for PQconnectStart in -lpq""... $ac_c" 1>&6
-echo "configure:8174: checking for PQconnectStart in -lpq" >&5
+echo "configure:8203: 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 8179 "configure"
+#line 8208 "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
@@ -8186,7 +8215,7 @@ int main() {
 PQconnectStart()
 ; return 0; }
 EOF
-if { (eval echo configure:8190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8219: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8234,7 +8263,7 @@ fi
 
 if test "$window_system" != "none"; then
   echo "checking for graphics libraries" 1>&6
-echo "configure:8238: checking for graphics libraries" >&5
+echo "configure:8267: checking for graphics libraries" >&5
 
       libpath_xpm=
   incpath_xpm=
@@ -8260,10 +8289,10 @@ echo "configure:8238: checking for graphics libraries" >&5
     CFLAGS=""$incpath_xpm" $CFLAGS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \""$incpath_xpm"\" to \$CFLAGS"; fi
     LDFLAGS=""$libpath_xpm" $LDFLAGS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \""$libpath_xpm"\" to \$LDFLAGS"; fi
     echo $ac_n "checking for Xpm - no older than 3.4f""... $ac_c" 1>&6
-echo "configure:8264: checking for Xpm - no older than 3.4f" >&5
+echo "configure:8293: checking for Xpm - no older than 3.4f" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 8267 "configure"
+#line 8296 "configure"
 #include "confdefs.h"
 #define XPM_NUMBERS
 #include <X11/xpm.h>
@@ -8272,7 +8301,7 @@ echo "configure:8264: checking for Xpm - no older than 3.4f" >&5
       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
       XpmIncludeVersion < 30406 ? 2 : 0 ;}
 EOF
-if { (eval echo configure:8276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:8305: \"$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
@@ -8316,17 +8345,17 @@ EOF
     libs_x="-lXpm $libs_x" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lXpm\" to \$libs_x"; fi
     CFLAGS=""$incpath_xpm" $CFLAGS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \""$incpath_xpm"\" to \$CFLAGS"; fi
     echo $ac_n "checking for \"FOR_MSW\" xpm""... $ac_c" 1>&6
-echo "configure:8320: checking for \"FOR_MSW\" xpm" >&5
+echo "configure:8349: checking for \"FOR_MSW\" xpm" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 8323 "configure"
+#line 8352 "configure"
 #include "confdefs.h"
 
 int main() {
 XpmCreatePixmapFromData()
 ; return 0; }
 EOF
-if { (eval echo configure:8330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   xpm_for_msw=no
 else
@@ -8352,15 +8381,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:8356: checking for compface.h" >&5
+echo "configure:8385: checking for compface.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8359 "configure"
+#line 8388 "configure"
 #include "confdefs.h"
 #include <compface.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8364: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8393: \"$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*
@@ -8383,12 +8412,12 @@ fi
  }
   test -z "$with_xface" && { 
 echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
-echo "configure:8387: checking for UnGenFace in -lcompface" >&5
+echo "configure:8416: 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 8392 "configure"
+#line 8421 "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
@@ -8399,7 +8428,7 @@ int main() {
 UnGenFace()
 ; return 0; }
 EOF
-if { (eval echo configure:8403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8432: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8451,12 +8480,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:8455: checking for inflate in -lc" >&5
+echo "configure:8484: 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 8460 "configure"
+#line 8489 "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
@@ -8467,7 +8496,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:8471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8486,12 +8515,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6
-echo "configure:8490: checking for inflate in -lz" >&5
+echo "configure:8519: 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 8495 "configure"
+#line 8524 "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
@@ -8502,7 +8531,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:8506: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8521,12 +8550,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6
-echo "configure:8525: checking for inflate in -lgz" >&5
+echo "configure:8554: 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 8530 "configure"
+#line 8559 "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
@@ -8537,7 +8566,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:8541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8567,15 +8596,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:8571: checking for jpeglib.h" >&5
+echo "configure:8600: checking for jpeglib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8574 "configure"
+#line 8603 "configure"
 #include "confdefs.h"
 #include <jpeglib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8579: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8608: \"$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*
@@ -8598,12 +8627,12 @@ fi
  }
   test -z "$with_jpeg" && { 
 echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6
-echo "configure:8602: checking for jpeg_destroy_decompress in -ljpeg" >&5
+echo "configure:8631: 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 8607 "configure"
+#line 8636 "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
@@ -8614,7 +8643,7 @@ int main() {
 jpeg_destroy_decompress()
 ; return 0; }
 EOF
-if { (eval echo configure:8618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8650,10 +8679,10 @@ EOF
 
     png_problem=""
   test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6
-echo "configure:8654: checking for pow" >&5
+echo "configure:8683: checking for pow" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8657 "configure"
+#line 8686 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char pow(); below.  */
@@ -8676,7 +8705,7 @@ pow();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8709: \"$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
@@ -8697,15 +8726,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:8701: checking for png.h" >&5
+echo "configure:8730: checking for png.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8704 "configure"
+#line 8733 "configure"
 #include "confdefs.h"
 #include <png.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8709: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8738: \"$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*
@@ -8728,12 +8757,12 @@ fi
  }
   test -z "$with_png" && { 
 echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6
-echo "configure:8732: checking for png_read_image in -lpng" >&5
+echo "configure:8761: 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 8737 "configure"
+#line 8766 "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
@@ -8744,7 +8773,7 @@ int main() {
 png_read_image()
 ; return 0; }
 EOF
-if { (eval echo configure:8748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8767,10 +8796,10 @@ fi
  }
   if test -z "$with_png"; then
     echo $ac_n "checking for workable png version information""... $ac_c" 1>&6
-echo "configure:8771: checking for workable png version information" >&5
+echo "configure:8800: checking for workable png version information" >&5
     xe_check_libs="-lpng -lz"
     cat > conftest.$ac_ext <<EOF
-#line 8774 "configure"
+#line 8803 "configure"
 #include "confdefs.h"
 #include <png.h>
     int main(int c, char **v) {
@@ -8778,7 +8807,7 @@ echo "configure:8771: 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:8782: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:8811: \"$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
@@ -8821,15 +8850,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:8825: checking for tiffio.h" >&5
+echo "configure:8854: checking for tiffio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8828 "configure"
+#line 8857 "configure"
 #include "confdefs.h"
 #include <tiffio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8833: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8862: \"$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*
@@ -8852,12 +8881,12 @@ fi
  }
   test -z "$with_tiff" && { 
 echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6
-echo "configure:8856: checking for TIFFClientOpen in -ltiff" >&5
+echo "configure:8885: 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 8861 "configure"
+#line 8890 "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
@@ -8868,7 +8897,7 @@ int main() {
 TIFFClientOpen()
 ; return 0; }
 EOF
-if { (eval echo configure:8872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8901: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8907,15 +8936,15 @@ 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:8911: checking for compface.h" >&5
+echo "configure:8940: checking for compface.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8914 "configure"
+#line 8943 "configure"
 #include "confdefs.h"
 #include <compface.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8919: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8948: \"$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*
@@ -8938,12 +8967,12 @@ fi
  }
   test -z "$with_xface" && { 
 echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
-echo "configure:8942: checking for UnGenFace in -lcompface" >&5
+echo "configure:8971: 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 8947 "configure"
+#line 8976 "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
@@ -8954,7 +8983,7 @@ int main() {
 UnGenFace()
 ; return 0; }
 EOF
-if { (eval echo configure:8958: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8987: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8993,12 +9022,12 @@ fi
 
 if test "$with_x11" = "yes"; then
   echo "checking for X11 graphics libraries" 1>&6
-echo "configure:8997: checking for X11 graphics libraries" >&5
+echo "configure:9026: checking for X11 graphics libraries" >&5
 fi
 
 if test "$with_x11" = "yes"; then
   echo "checking for the Athena widgets" 1>&6
-echo "configure:9002: checking for the Athena widgets" >&5
+echo "configure:9031: checking for the Athena widgets" >&5
 
     case "$with_athena" in
         "xaw" | "")    athena_variant=Xaw      athena_3d=no  ;;
@@ -9014,12 +9043,12 @@ echo "configure:9002: 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:9018: checking for XawScrollbarSetThumb in -l$athena_variant" >&5
+echo "configure:9047: 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 9023 "configure"
+#line 9052 "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
@@ -9030,7 +9059,7 @@ int main() {
 XawScrollbarSetThumb()
 ; return 0; }
 EOF
-if { (eval echo configure:9034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9063: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9046,12 +9075,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
   echo "$ac_t""yes" 1>&6
           
 echo $ac_n "checking for $athena_3d_function in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:9050: checking for $athena_3d_function in -l$athena_variant" >&5
+echo "configure:9079: checking for $athena_3d_function in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'$athena_3d_function | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<EOF
-#line 9055 "configure"
+#line 9084 "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
@@ -9062,7 +9091,7 @@ int main() {
 $athena_3d_function()
 ; return 0; }
 EOF
-if { (eval echo configure:9066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9093,12 +9122,12 @@ fi
   else
         
 echo $ac_n "checking for $athena_3d_function in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:9097: checking for $athena_3d_function in -l$athena_variant" >&5
+echo "configure:9126: checking for $athena_3d_function in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'$athena_3d_function | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<EOF
-#line 9102 "configure"
+#line 9131 "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
@@ -9109,7 +9138,7 @@ int main() {
 $athena_3d_function()
 ; return 0; }
 EOF
-if { (eval echo configure:9113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9127,12 +9156,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 $athena_3d_function in -lXaw""... $ac_c" 1>&6
-echo "configure:9131: checking for $athena_3d_function in -lXaw" >&5
+echo "configure:9160: checking for $athena_3d_function in -lXaw" >&5
 ac_lib_var=`echo Xaw'_'$athena_3d_function | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXaw "
 cat > conftest.$ac_ext <<EOF
-#line 9136 "configure"
+#line 9165 "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
@@ -9143,7 +9172,7 @@ int main() {
 $athena_3d_function()
 ; return 0; }
 EOF
-if { (eval echo configure:9147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9176: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9174,15 +9203,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:9178: checking for X11/Xaw/ThreeD.h" >&5
+echo "configure:9207: checking for X11/Xaw/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9181 "configure"
+#line 9210 "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:9186: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9215: \"$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*
@@ -9202,15 +9231,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:9206: checking for X11/Xaw/XawInit.h" >&5
+echo "configure:9235: checking for X11/Xaw/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9209 "configure"
+#line 9238 "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:9214: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9243: \"$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*
@@ -9236,15 +9265,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:9240: checking for X11/$athena_variant/XawInit.h" >&5
+echo "configure:9269: checking for X11/$athena_variant/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9243 "configure"
+#line 9272 "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:9248: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9277: \"$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*
@@ -9261,15 +9290,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:9265: checking for X11/$athena_variant/ThreeD.h" >&5
+echo "configure:9294: checking for X11/$athena_variant/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9268 "configure"
+#line 9297 "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:9273: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9302: \"$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*
@@ -9297,15 +9326,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:9301: checking for $athena_variant/XawInit.h" >&5
+echo "configure:9330: checking for $athena_variant/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9304 "configure"
+#line 9333 "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:9309: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9338: \"$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*
@@ -9322,15 +9351,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:9326: checking for $athena_variant/ThreeD.h" >&5
+echo "configure:9355: checking for $athena_variant/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9329 "configure"
+#line 9358 "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:9334: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9363: \"$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*
@@ -9359,15 +9388,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:9363: checking for X11/Xaw3d/XawInit.h" >&5
+echo "configure:9392: checking for X11/Xaw3d/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9366 "configure"
+#line 9395 "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:9371: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9400: \"$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*
@@ -9384,15 +9413,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:9388: checking for X11/Xaw3d/ThreeD.h" >&5
+echo "configure:9417: checking for X11/Xaw3d/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9391 "configure"
+#line 9420 "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:9396: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9425: \"$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*
@@ -9424,15 +9453,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:9428: checking for Xaw3d/XawInit.h" >&5
+echo "configure:9457: checking for Xaw3d/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9431 "configure"
+#line 9460 "configure"
 #include "confdefs.h"
 #include <Xaw3d/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9436: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9465: \"$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*
@@ -9449,15 +9478,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:9453: checking for Xaw3d/ThreeD.h" >&5
+echo "configure:9482: checking for Xaw3d/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9456 "configure"
+#line 9485 "configure"
 #include "confdefs.h"
 #include <Xaw3d/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9461: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9490: \"$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*
@@ -9489,15 +9518,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:9493: checking for X11/Xaw/ThreeD.h" >&5
+echo "configure:9522: checking for X11/Xaw/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9496 "configure"
+#line 9525 "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:9501: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9530: \"$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*
@@ -9536,15 +9565,15 @@ fi
 if test "$with_x11" = "yes"; then
     ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6
-echo "configure:9540: checking for Xm/Xm.h" >&5
+echo "configure:9569: checking for Xm/Xm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9543 "configure"
+#line 9572 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9548: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9577: \"$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*
@@ -9561,12 +9590,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:9565: checking for XmStringFree in -lXm" >&5
+echo "configure:9594: 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 9570 "configure"
+#line 9599 "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
@@ -9577,7 +9606,7 @@ int main() {
 XmStringFree()
 ; return 0; }
 EOF
-if { (eval echo configure:9581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9606,9 +9635,9 @@ fi
 
   if test "$have_motif" = "yes"; then
         echo $ac_n "checking for Lesstif""... $ac_c" 1>&6
-echo "configure:9610: checking for Lesstif" >&5
+echo "configure:9639: checking for Lesstif" >&5
     cat > conftest.$ac_ext <<EOF
-#line 9612 "configure"
+#line 9641 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 #ifdef LESSTIF_VERSION
@@ -9632,8 +9661,8 @@ rm -f conftest*
 fi 
 
 case "$opsys" in
-  *linux* )  lucid_prefers_motif = "no"  ;;
-  * )        lucid_prefers_motif = "yes" ;;
+  *linux* )  lucid_prefers_motif="no"  ;;
+  * )        lucid_prefers_motif="yes" ;;
 esac
 
 case "$with_menubars" in "" | "yes" | "athena" )
@@ -10061,7 +10090,7 @@ fi
 
 if test "$with_mule" = "yes" ; then
   echo "checking for Mule-related features" 1>&6
-echo "configure:10065: checking for Mule-related features" >&5
+echo "configure:10094: checking for Mule-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining MULE
 EOF
@@ -10075,15 +10104,15 @@ EOF
   if test "$with_chise" != "no"; then
     ac_safe=`echo "chise.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for chise.h""... $ac_c" 1>&6
-echo "configure:10079: checking for chise.h" >&5
+echo "configure:10108: checking for chise.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10082 "configure"
+#line 10111 "configure"
 #include "confdefs.h"
 #include <chise.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10087: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10116: \"$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/chise/include"
     ac_safe=`echo "chise.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for chise.h""... $ac_c" 1>&6
-echo "configure:10115: checking for chise.h" >&5
+echo "configure:10144: checking for chise.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10118 "configure"
+#line 10147 "configure"
 #include "confdefs.h"
 #include <chise.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10123: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10152: \"$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*
@@ -10198,15 +10227,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10202: checking for $ac_hdr" >&5
+echo "configure:10231: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10205 "configure"
+#line 10234 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10210: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10239: \"$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*
@@ -10237,12 +10266,12 @@ done
 
   
 echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6
-echo "configure:10241: checking for strerror in -lintl" >&5
+echo "configure:10270: 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 10246 "configure"
+#line 10275 "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
@@ -10253,7 +10282,7 @@ int main() {
 strerror()
 ; return 0; }
 EOF
-if { (eval echo configure:10257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10307,18 +10336,18 @@ EOF
   fi
 
   echo "checking for Mule input methods" 1>&6
-echo "configure:10311: checking for Mule input methods" >&5
+echo "configure:10340: checking for Mule input methods" >&5
         case "$with_xim" in "" | "yes" )
     echo "checking for XIM" 1>&6
-echo "configure:10314: checking for XIM" >&5
+echo "configure:10343: checking for XIM" >&5
     
 echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6
-echo "configure:10317: checking for XOpenIM in -lX11" >&5
+echo "configure:10346: 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 10322 "configure"
+#line 10351 "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
@@ -10329,7 +10358,7 @@ int main() {
 XOpenIM()
 ; return 0; }
 EOF
-if { (eval echo configure:10333: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10362: \"$ac_link\") 1>&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 "$need_motif $have_lesstif" = "yes no"; then
       
 echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6
-echo "configure:10357: checking for XmImMbLookupString in -lXm" >&5
+echo "configure:10386: 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 10362 "configure"
+#line 10391 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10369,7 +10398,7 @@ int main() {
 XmImMbLookupString()
 ; return 0; }
 EOF
-if { (eval echo configure:10373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
     elif test "$have_motif $have_lesstif $with_xim" = "yes no no"; then
       
 echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6
-echo "configure:10396: checking for XmImMbLookupString in -lXm" >&5
+echo "configure:10425: 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 10401 "configure"
+#line 10430 "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
@@ -10408,7 +10437,7 @@ int main() {
 XmImMbLookupString()
 ; return 0; }
 EOF
-if { (eval echo configure:10412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10441: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10473,15 +10502,15 @@ EOF
 
     if test "$with_xfs" = "yes" ; then
     echo "checking for XFontSet" 1>&6
-echo "configure:10477: checking for XFontSet" >&5
+echo "configure:10506: checking for XFontSet" >&5
     
 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6
-echo "configure:10480: checking for XmbDrawString in -lX11" >&5
+echo "configure:10509: 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 10485 "configure"
+#line 10514 "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
@@ -10492,7 +10521,7 @@ int main() {
 XmbDrawString()
 ; return 0; }
 EOF
-if { (eval echo configure:10496: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10532,15 +10561,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:10536: checking for wnn/jllib.h" >&5
+echo "configure:10565: checking for wnn/jllib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10539 "configure"
+#line 10568 "configure"
 #include "confdefs.h"
 #include <wnn/jllib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10544: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10573: \"$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:10567: checking for wnn/commonhd.h" >&5
+echo "configure:10596: checking for wnn/commonhd.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10570 "configure"
+#line 10599 "configure"
 #include "confdefs.h"
 #include <wnn/commonhd.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10575: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10604: \"$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:10600: checking for $ac_func" >&5
+echo "configure:10629: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10603 "configure"
+#line 10632 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -10622,7 +10651,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10626: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10655: \"$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
@@ -10651,12 +10680,12 @@ done
 
     test "$ac_cv_func_crypt" != "yes" && { 
 echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:10655: checking for crypt in -lcrypt" >&5
+echo "configure:10684: 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 10660 "configure"
+#line 10689 "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
@@ -10667,7 +10696,7 @@ int main() {
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:10671: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10700: \"$ac_link\") 1>&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:10706: checking for jl_dic_list_e in -lwnn" >&5
+echo "configure:10735: 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 10711 "configure"
+#line 10740 "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
@@ -10718,7 +10747,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:10722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10751: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10736,12 +10765,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:10740: checking for jl_dic_list_e in -lwnn4" >&5
+echo "configure:10769: 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 10745 "configure"
+#line 10774 "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
@@ -10752,7 +10781,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:10756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10770,12 +10799,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:10774: checking for jl_dic_list_e in -lwnn6" >&5
+echo "configure:10803: 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 10779 "configure"
+#line 10808 "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
@@ -10786,7 +10815,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:10790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10804,12 +10833,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:10808: checking for dic_list_e in -lwnn6_fromsrc" >&5
+echo "configure:10837: 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 10813 "configure"
+#line 10842 "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
@@ -10820,7 +10849,7 @@ int main() {
 dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:10824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10853: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10868,12 +10897,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:10872: checking for jl_fi_dic_list in -l$libwnn" >&5
+echo "configure:10901: 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 10877 "configure"
+#line 10906 "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
@@ -10884,7 +10913,7 @@ int main() {
 jl_fi_dic_list()
 ; return 0; }
 EOF
-if { (eval echo configure:10888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10919,15 +10948,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:10923: checking for canna/jrkanji.h" >&5
+echo "configure:10952: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10926 "configure"
+#line 10955 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10931: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10960: \"$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:10958: checking for canna/jrkanji.h" >&5
+echo "configure:10987: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10961 "configure"
+#line 10990 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10966: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10995: \"$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:10994: checking for canna/RK.h" >&5
+echo "configure:11023: checking for canna/RK.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10997 "configure"
+#line 11026 "configure"
 #include "confdefs.h"
 #include <canna/RK.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11002: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11031: \"$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:11025: checking for RkBgnBun in -lRKC" >&5
+echo "configure:11054: 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 11030 "configure"
+#line 11059 "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
@@ -11037,7 +11066,7 @@ int main() {
 RkBgnBun()
 ; return 0; }
 EOF
-if { (eval echo configure:11041: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11070: \"$ac_link\") 1>&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:11064: checking for jrKanjiControl in -lcanna" >&5
+echo "configure:11093: 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 11069 "configure"
+#line 11098 "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
@@ -11076,7 +11105,7 @@ int main() {
 jrKanjiControl()
 ; return 0; }
 EOF
-if { (eval echo configure:11080: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11109: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11125,12 +11154,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:11129: checking for layout_object_getvalue in -li18n" >&5
+echo "configure:11158: 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 11134 "configure"
+#line 11163 "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
@@ -11141,7 +11170,7 @@ int main() {
 layout_object_getvalue()
 ; return 0; }
 EOF
-if { (eval echo configure:11145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11174: \"$ac_link\") 1>&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:11232: checking for $ac_func" >&5
+echo "configure:11261: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11235 "configure"
+#line 11264 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11254,7 +11283,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11258: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11287: \"$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
 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:11299: checking for $ac_func" >&5
+echo "configure:11328: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11302 "configure"
+#line 11331 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11321,7 +11350,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11325: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11354: \"$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
@@ -11350,10 +11379,10 @@ done
 
 
 echo $ac_n "checking for openpty""... $ac_c" 1>&6
-echo "configure:11354: checking for openpty" >&5
+echo "configure:11383: checking for openpty" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11357 "configure"
+#line 11386 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char openpty(); below.  */
@@ -11376,7 +11405,7 @@ openpty();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11380: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11409: \"$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
@@ -11395,12 +11424,12 @@ else
 
   
 echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6
-echo "configure:11399: checking for openpty in -lutil" >&5
+echo "configure:11428: 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 11404 "configure"
+#line 11433 "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
@@ -11411,7 +11440,7 @@ int main() {
 openpty()
 ; return 0; }
 EOF
-if { (eval echo configure:11415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11446,15 +11475,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11450: checking for $ac_hdr" >&5
+echo "configure:11479: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11453 "configure"
+#line 11482 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11458: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11487: \"$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*
@@ -11490,15 +11519,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:11494: checking for $ac_hdr" >&5
+echo "configure:11523: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11497 "configure"
+#line 11526 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11502: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11531: \"$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*
@@ -11531,10 +11560,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:11535: checking for $ac_func" >&5
+echo "configure:11564: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11538 "configure"
+#line 11567 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11557,7 +11586,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11561: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11590: \"$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
@@ -11588,15 +11617,15 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11592: checking for $ac_hdr" >&5
+echo "configure:11621: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11595 "configure"
+#line 11624 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11600: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11629: \"$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*
@@ -11633,10 +11662,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:11637: checking for $ac_func" >&5
+echo "configure:11666: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11640 "configure"
+#line 11669 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11659,7 +11688,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11663: \"$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*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -11692,15 +11721,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:11696: checking for $ac_hdr" >&5
+echo "configure:11725: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11699 "configure"
+#line 11728 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11704: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11733: \"$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*
@@ -11736,12 +11765,12 @@ else
 
     
 echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6
-echo "configure:11740: checking for kstat_open in -lkstat" >&5
+echo "configure:11769: 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 11745 "configure"
+#line 11774 "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
@@ -11752,7 +11781,7 @@ int main() {
 kstat_open()
 ; return 0; }
 EOF
-if { (eval echo configure:11756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11785: \"$ac_link\") 1>&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:11791: checking for $ac_hdr" >&5
+echo "configure:11820: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11794 "configure"
+#line 11823 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11799: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11828: \"$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*
@@ -11827,12 +11856,12 @@ done
 
     
 echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6
-echo "configure:11831: checking for kvm_read in -lkvm" >&5
+echo "configure:11860: 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 11836 "configure"
+#line 11865 "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
@@ -11843,7 +11872,7 @@ int main() {
 kvm_read()
 ; return 0; }
 EOF
-if { (eval echo configure:11847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11876: \"$ac_link\") 1>&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:11881: checking whether netdb declares h_errno" >&5
+echo "configure:11910: checking whether netdb declares h_errno" >&5
 cat > conftest.$ac_ext <<EOF
-#line 11883 "configure"
+#line 11912 "configure"
 #include "confdefs.h"
 #include <netdb.h>
 int main() {
 return h_errno;
 ; return 0; }
 EOF
-if { (eval echo configure:11890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11919: \"$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:11910: checking for sigsetjmp" >&5
+echo "configure:11939: checking for sigsetjmp" >&5
 cat > conftest.$ac_ext <<EOF
-#line 11912 "configure"
+#line 11941 "configure"
 #include "confdefs.h"
 #include <setjmp.h>
 int main() {
 sigjmp_buf bar; sigsetjmp (bar, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:11919: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11948: \"$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:11939: checking whether localtime caches TZ" >&5
+echo "configure:11968: checking whether localtime caches TZ" >&5
 
 if test "$ac_cv_func_tzset" = "yes"; then
 cat > conftest.$ac_ext <<EOF
-#line 11943 "configure"
+#line 11972 "configure"
 #include "confdefs.h"
 #include <time.h>
 #if STDC_HEADERS
@@ -11974,7 +12003,7 @@ main()
   exit (0);
 }
 EOF
-if { (eval echo configure:11978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12007: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   emacs_cv_localtime_cache=no
 else
@@ -12004,9 +12033,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:12008: checking whether gettimeofday accepts one or two arguments" >&5
+echo "configure:12037: checking whether gettimeofday accepts one or two arguments" >&5
 cat > conftest.$ac_ext <<EOF
-#line 12010 "configure"
+#line 12039 "configure"
 #include "confdefs.h"
 
 #ifdef TIME_WITH_SYS_TIME
@@ -12027,7 +12056,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12031: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12060: \"$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:12053: checking for inline" >&5
+echo "configure:12082: checking for inline" >&5
 
 ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 12058 "configure"
+#line 12087 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:12065: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12094: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -12102,17 +12131,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:12106: checking for working alloca.h" >&5
+echo "configure:12135: checking for working alloca.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12109 "configure"
+#line 12138 "configure"
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
 char *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:12116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12145: \"$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
@@ -12136,10 +12165,10 @@ EOF
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:12140: checking for alloca" >&5
+echo "configure:12169: checking for alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12143 "configure"
+#line 12172 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -12167,7 +12196,7 @@ int main() {
 char *p = (char *) alloca(1);
 ; return 0; }
 EOF
-if { (eval echo configure:12171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12200: \"$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
@@ -12206,10 +12235,10 @@ EOF
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:12210: checking whether alloca needs Cray hooks" >&5
+echo "configure:12239: checking whether alloca needs Cray hooks" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12213 "configure"
+#line 12242 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -12233,10 +12262,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:12237: checking for $ac_func" >&5
+echo "configure:12266: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12240 "configure"
+#line 12269 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -12259,7 +12288,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12263: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -12289,10 +12318,10 @@ done
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:12293: checking stack direction for C alloca" >&5
+echo "configure:12322: checking stack direction for C alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12296 "configure"
+#line 12325 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -12311,7 +12340,7 @@ main ()
   exit (find_stack_direction() < 0);
 }
 EOF
-if { (eval echo configure:12315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12344: \"$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:12345: checking for vfork.h" >&5
+echo "configure:12374: checking for vfork.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12348 "configure"
+#line 12377 "configure"
 #include "confdefs.h"
 #include <vfork.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12353: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12382: \"$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*
@@ -12377,10 +12406,10 @@ else
 fi
 
 echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:12381: checking for working vfork" >&5
+echo "configure:12410: checking for working vfork" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12384 "configure"
+#line 12413 "configure"
 #include "confdefs.h"
 /* Thanks to Paul Eggert for this test.  */
 #include <stdio.h>
@@ -12475,7 +12504,7 @@ main() {
   }
 }
 EOF
-if { (eval echo configure:12479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12508: \"$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:12505: checking for working strcoll" >&5
+echo "configure:12534: checking for working strcoll" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12508 "configure"
+#line 12537 "configure"
 #include "confdefs.h"
 #include <string.h>
 main ()
@@ -12514,7 +12543,7 @@ main ()
        strcoll ("123", "456") >= 0);
 }
 EOF
-if { (eval echo configure:12518: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12547: \"$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:12546: checking for $ac_func" >&5
+echo "configure:12575: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12549 "configure"
+#line 12578 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -12568,7 +12597,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12572: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12601: \"$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:12600: checking whether getpgrp takes no argument" >&5
+echo "configure:12629: checking whether getpgrp takes no argument" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12603 "configure"
+#line 12632 "configure"
 #include "confdefs.h"
 
 /*
@@ -12654,7 +12683,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:12658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12687: \"$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:12685: checking for working mmap" >&5
+echo "configure:12714: checking for working mmap" >&5
 case "$opsys" in ultrix* ) have_mmap=no ;; *)
 cat > conftest.$ac_ext <<EOF
-#line 12688 "configure"
+#line 12717 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <unistd.h>
@@ -12717,7 +12746,7 @@ int main (int argc, char *argv[])
   return 1;
 }
 EOF
-if { (eval echo configure:12721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   have_mmap=yes
 else
@@ -12746,9 +12775,9 @@ test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no
 if test "$rel_alloc $have_mmap" = "default yes"; then
   if test "$doug_lea_malloc" = "yes"; then
         echo $ac_n "checking for M_MMAP_THRESHOLD""... $ac_c" 1>&6
-echo "configure:12750: checking for M_MMAP_THRESHOLD" >&5
+echo "configure:12779: checking for M_MMAP_THRESHOLD" >&5
     cat > conftest.$ac_ext <<EOF
-#line 12752 "configure"
+#line 12781 "configure"
 #include "confdefs.h"
 #include <malloc.h>
 int main() {
@@ -12760,7 +12789,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12764: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12793: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   rel_alloc=no; echo "$ac_t""yes" 1>&6;
 else
@@ -12785,15 +12814,15 @@ EOF
 
 ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for termios.h""... $ac_c" 1>&6
-echo "configure:12789: checking for termios.h" >&5
+echo "configure:12818: checking for termios.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12792 "configure"
+#line 12821 "configure"
 #include "confdefs.h"
 #include <termios.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12797: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12826: \"$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*
@@ -12836,15 +12865,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:12840: checking for termio.h" >&5
+echo "configure:12869: checking for termio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12843 "configure"
+#line 12872 "configure"
 #include "confdefs.h"
 #include <termio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12848: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12877: \"$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:12880: checking for socket" >&5
+echo "configure:12909: checking for socket" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12883 "configure"
+#line 12912 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char socket(); below.  */
@@ -12902,7 +12931,7 @@ socket();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12935: \"$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
@@ -12917,15 +12946,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:12921: checking for netinet/in.h" >&5
+echo "configure:12950: checking for netinet/in.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12924 "configure"
+#line 12953 "configure"
 #include "confdefs.h"
 #include <netinet/in.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12929: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12958: \"$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*
@@ -12942,15 +12971,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:12946: checking for arpa/inet.h" >&5
+echo "configure:12975: checking for arpa/inet.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12949 "configure"
+#line 12978 "configure"
 #include "confdefs.h"
 #include <arpa/inet.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12954: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12983: \"$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*
@@ -12975,9 +13004,9 @@ EOF
 }
 
       echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6
-echo "configure:12979: checking "for sun_len member in struct sockaddr_un"" >&5
+echo "configure:13008: checking "for sun_len member in struct sockaddr_un"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 12981 "configure"
+#line 13010 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -12988,7 +13017,7 @@ int main() {
 static struct sockaddr_un x; x.sun_len = 1;
 ; return 0; }
 EOF
-if { (eval echo configure:12992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13021: \"$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
@@ -13006,9 +13035,9 @@ else
 fi
 rm -f conftest*
       echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6
-echo "configure:13010: checking "for ip_mreq struct in netinet/in.h"" >&5
+echo "configure:13039: checking "for ip_mreq struct in netinet/in.h"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 13012 "configure"
+#line 13041 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -13018,7 +13047,7 @@ int main() {
 static struct ip_mreq x;
 ; return 0; }
 EOF
-if { (eval echo configure:13022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13051: \"$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:13053: checking for msgget" >&5
+echo "configure:13082: checking for msgget" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13056 "configure"
+#line 13085 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char msgget(); below.  */
@@ -13075,7 +13104,7 @@ msgget();
 
 ; return 0; }
 EOF
-if { (eval echo configure:13079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13108: \"$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
@@ -13090,15 +13119,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:13094: checking for sys/ipc.h" >&5
+echo "configure:13123: checking for sys/ipc.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13097 "configure"
+#line 13126 "configure"
 #include "confdefs.h"
 #include <sys/ipc.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13102: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13131: \"$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*
@@ -13115,15 +13144,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:13119: checking for sys/msg.h" >&5
+echo "configure:13148: checking for sys/msg.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13122 "configure"
+#line 13151 "configure"
 #include "confdefs.h"
 #include <sys/msg.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13127: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13156: \"$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:13165: checking for dirent.h" >&5
+echo "configure:13194: checking for dirent.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13168 "configure"
+#line 13197 "configure"
 #include "confdefs.h"
 #include <dirent.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13173: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13202: \"$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*
@@ -13196,15 +13225,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:13200: checking for sys/dir.h" >&5
+echo "configure:13229: checking for sys/dir.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13203 "configure"
+#line 13232 "configure"
 #include "confdefs.h"
 #include <sys/dir.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13208: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13237: \"$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:13241: checking for nlist.h" >&5
+echo "configure:13270: checking for nlist.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13244 "configure"
+#line 13273 "configure"
 #include "confdefs.h"
 #include <nlist.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13249: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13278: \"$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:13279: checking "for sound support"" >&5
+echo "configure:13308: 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:13286: checking for multimedia/audio_device.h" >&5
+echo "configure:13315: checking for multimedia/audio_device.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13289 "configure"
+#line 13318 "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:13294: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13323: \"$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:13350: checking for ALopenport in -laudio" >&5
+echo "configure:13379: 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 13355 "configure"
+#line 13384 "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
@@ -13362,7 +13391,7 @@ int main() {
 ALopenport()
 ; return 0; }
 EOF
-if { (eval echo configure:13366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13395: \"$ac_link\") 1>&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:13397: checking for AOpenAudio in -lAlib" >&5
+echo "configure:13426: 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 13402 "configure"
+#line 13431 "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
@@ -13409,7 +13438,7 @@ int main() {
 AOpenAudio()
 ; return 0; }
 EOF
-if { (eval echo configure:13413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13442: \"$ac_link\") 1>&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:13458: checking for ${dir}/soundcard.h" >&5
+echo "configure:13487: checking for ${dir}/soundcard.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13461 "configure"
+#line 13490 "configure"
 #include "confdefs.h"
 #include <${dir}/soundcard.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13466: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13495: \"$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:13520: checking for audio/audiolib.h" >&5
+echo "configure:13549: checking for audio/audiolib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13523 "configure"
+#line 13552 "configure"
 #include "confdefs.h"
 #include <audio/audiolib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13528: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13557: \"$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*
@@ -13542,12 +13571,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:13546: checking for AuOpenServer in -laudio" >&5
+echo "configure:13575: 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 13551 "configure"
+#line 13580 "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
@@ -13558,7 +13587,7 @@ int main() {
 AuOpenServer()
 ; return 0; }
 EOF
-if { (eval echo configure:13562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13591: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -13597,7 +13626,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 13601 "configure"
+#line 13630 "configure"
 #include "confdefs.h"
 #include <audio/Xtutil.h>
 EOF
@@ -13628,7 +13657,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:13632: checking for $ac_word" >&5
+echo "configure:13661: 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:13661: checking for esd_play_stream" >&5
+echo "configure:13690: checking for esd_play_stream" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13664 "configure"
+#line 13693 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char esd_play_stream(); below.  */
@@ -13683,7 +13712,7 @@ esd_play_stream();
 
 ; return 0; }
 EOF
-if { (eval echo configure:13687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13716: \"$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
@@ -13734,7 +13763,7 @@ test -z "$with_tty" && with_tty=yes
 
 if test "$with_tty" = "yes"  ; then
   echo "checking for TTY-related features" 1>&6
-echo "configure:13738: checking for TTY-related features" >&5
+echo "configure:13767: checking for TTY-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_TTY
 EOF
@@ -13750,12 +13779,12 @@ EOF
     if test -z "$with_ncurses"; then
     
 echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
-echo "configure:13754: checking for tgetent in -lncurses" >&5
+echo "configure:13783: 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 13759 "configure"
+#line 13788 "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
@@ -13766,7 +13795,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:13770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13799: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -13799,15 +13828,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:13803: checking for ncurses/curses.h" >&5
+echo "configure:13832: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13806 "configure"
+#line 13835 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13811: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13840: \"$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:13833: checking for ncurses/term.h" >&5
+echo "configure:13862: checking for ncurses/term.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13836 "configure"
+#line 13865 "configure"
 #include "confdefs.h"
 #include <ncurses/term.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13841: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13870: \"$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:13871: checking for ncurses/curses.h" >&5
+echo "configure:13900: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13874 "configure"
+#line 13903 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13879: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13908: \"$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:13914: checking for tgetent in -l$lib" >&5
+echo "configure:13943: 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 13919 "configure"
+#line 13948 "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
@@ -13926,7 +13955,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:13930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13959: \"$ac_link\") 1>&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       if test -n "$libs_termcap" -a "$opsys" = "openbsd"; then
                                 
 echo $ac_n "checking for tgoto in -ltermcap""... $ac_c" 1>&6
-echo "configure:13955: checking for tgoto in -ltermcap" >&5
+echo "configure:13984: checking for tgoto in -ltermcap" >&5
 ac_lib_var=`echo termcap'_'tgoto | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltermcap "
 cat > conftest.$ac_ext <<EOF
-#line 13960 "configure"
+#line 13989 "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
@@ -13967,7 +13996,7 @@ int main() {
 tgoto()
 ; return 0; }
 EOF
-if { (eval echo configure:13971: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14000: \"$ac_link\") 1>&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:14016: checking for tgetent in -lcurses" >&5
+echo "configure:14045: 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 14021 "configure"
+#line 14050 "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
@@ -14028,7 +14057,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:14032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14061: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14046,12 +14075,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:14050: checking for tgetent in -ltermcap" >&5
+echo "configure:14079: 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 14055 "configure"
+#line 14084 "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
@@ -14062,7 +14091,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:14066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14108,17 +14137,18 @@ EOF
 }
 
 
-    test -z "$with_gpm" && { ac_safe=`echo "gpm.h" | sed 'y%./+-%__p_%'`
+    if test "$with_gpm" != "no"; then
+    ac_safe=`echo "gpm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for gpm.h""... $ac_c" 1>&6
-echo "configure:14114: checking for gpm.h" >&5
+echo "configure:14144: checking for gpm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14117 "configure"
+#line 14147 "configure"
 #include "confdefs.h"
 #include <gpm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:14122: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:14152: \"$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*
 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_gpm=no
-fi
- }
-  test -z "$with_gpm" && { 
+  
+      
 echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
-echo "configure:14145: checking for Gpm_Open in -lgpm" >&5
+echo "configure:14170: 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 14150 "configure"
+#line 14175 "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
@@ -14157,7 +14182,7 @@ int main() {
 Gpm_Open()
 ; return 0; }
 EOF
-if { (eval echo configure:14161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14171,15 +14196,19 @@ xe_check_libs=""
 
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
   echo "$ac_t""yes" 1>&6
-  with_gpm=yes
+  have_gpm=yes
 else
   echo "$ac_t""no" 1>&6
-with_gpm=no
 fi
 
- }
-  if test "$with_gpm" = "yes"; then
-    { test "$extra_verbose" = "yes" && cat << \EOF
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+    if test "$have_gpm" = "yes"; then
+      with_gpm=yes
+      { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_GPM
 EOF
 cat >> confdefs.h <<\EOF
@@ -14187,10 +14216,15 @@ cat >> confdefs.h <<\EOF
 EOF
 }
 
-    extra_objs="$extra_objs gpmevent.o" &&  if test "$extra_verbose" = "yes"; then
+      extra_objs="$extra_objs gpmevent.o" &&  if test "$extra_verbose" = "yes"; then
    echo "    xemacs will be linked with \"gpmevent.o\""
  fi
-    LIBS="-lgpm $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lgpm\" to \$LIBS"; fi
+      LIBS="-lgpm $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lgpm\" to \$LIBS"; fi
+    elif test "$with_gpm" = "yes"; then
+      { echo "Error:" "GPM requested, but gpm.h or libgpm seems to be missing." >&2; exit 1; }
+    else
+      with_gpm=no
+    fi
   fi
 
 else   for feature in ncurses gpm; do
@@ -14207,20 +14241,20 @@ test "$with_x11" = "yes" -o "$with_tty" = "yes" -o "$need_event_unixoid" = "yes"
 
 test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
   != "no no no" && echo "checking for database support" 1>&6
-echo "configure:14211: checking for database support" >&5
+echo "configure:14245: 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:14216: checking for ndbm.h" >&5
+echo "configure:14250: checking for ndbm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14219 "configure"
+#line 14253 "configure"
 #include "confdefs.h"
 #include <ndbm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:14224: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:14258: \"$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:14254: checking for dbm_open in -lgdbm" >&5
+echo "configure:14288: 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 14259 "configure"
+#line 14293 "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
@@ -14266,7 +14300,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:14270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14304: \"$ac_link\") 1>&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:14298: checking for dbm_open" >&5
+echo "configure:14332: checking for dbm_open" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14301 "configure"
+#line 14335 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbm_open(); below.  */
@@ -14320,7 +14354,7 @@ dbm_open();
 
 ; return 0; }
 EOF
-if { (eval echo configure:14324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14358: \"$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
@@ -14339,12 +14373,12 @@ else
 
     
 echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
-echo "configure:14343: checking for dbm_open in -ldbm" >&5
+echo "configure:14377: 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 14348 "configure"
+#line 14382 "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
@@ -14355,7 +14389,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:14359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14396,12 +14430,12 @@ EOF
 
 if test "$with_database_berkdb" != "no"; then
   echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6
-echo "configure:14400: checking for Berkeley db.h" >&5
+echo "configure:14434: checking for Berkeley db.h" >&5
   for header in "db/db.h" "db.h"; do
     case "$opsys" in
         *freebsd*)
     cat > conftest.$ac_ext <<EOF
-#line 14405 "configure"
+#line 14439 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -14417,7 +14451,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14421: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14455: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   db_h_file="$header"; break
 else
@@ -14428,7 +14462,7 @@ rm -f conftest*
         ;;
         *)
     cat > conftest.$ac_ext <<EOF
-#line 14432 "configure"
+#line 14466 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -14450,7 +14484,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14488: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   db_h_file="$header"; break
 else
@@ -14468,9 +14502,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:14472: checking for Berkeley DB version" >&5
+echo "configure:14506: checking for Berkeley DB version" >&5
     cat > conftest.$ac_ext <<EOF
-#line 14474 "configure"
+#line 14508 "configure"
 #include "confdefs.h"
 #include <$db_h_file>
 #if DB_VERSION_MAJOR > 1
@@ -14482,7 +14516,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 14486 "configure"
+#line 14520 "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:14513: checking for $dbfunc" >&5
+echo "configure:14547: checking for $dbfunc" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14516 "configure"
+#line 14550 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $dbfunc(); below.  */
@@ -14535,7 +14569,7 @@ $dbfunc();
 
 ; return 0; }
 EOF
-if { (eval echo configure:14539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14573: \"$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
@@ -14554,12 +14588,12 @@ else
 
     
 echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6
-echo "configure:14558: checking for $dbfunc in -ldb" >&5
+echo "configure:14592: 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 14563 "configure"
+#line 14597 "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
@@ -14570,7 +14604,7 @@ int main() {
 $dbfunc()
 ; return 0; }
 EOF
-if { (eval echo configure:14574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14608: \"$ac_link\") 1>&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:14648: checking for SOCKSinit in -lsocks" >&5
+echo "configure:14682: 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 14653 "configure"
+#line 14687 "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
@@ -14660,7 +14694,7 @@ int main() {
 SOCKSinit()
 ; return 0; }
 EOF
-if { (eval echo configure:14664: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14715,7 +14749,7 @@ fi
 
 if test "$with_modules" != "no"; then
   echo "checking for module support" 1>&6
-echo "configure:14719: checking for module support" >&5
+echo "configure:14753: checking for module support" >&5
 
     if test "$with_msw" = "yes"; then
     have_dl=yes;
@@ -14731,15 +14765,15 @@ EOF
  ;;
       *)          ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
-echo "configure:14735: checking for dlfcn.h" >&5
+echo "configure:14769: checking for dlfcn.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14738 "configure"
+#line 14772 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:14743: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:14777: \"$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*
@@ -14756,16 +14790,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:14760: checking for dlopen in -lc" >&5
+echo "configure:14794: checking for dlopen in -lc" >&5
            cat > conftest.$ac_ext <<EOF
-#line 14762 "configure"
+#line 14796 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 int main() {
              dlopen ("", 0);
 ; return 0; }
 EOF
-if { (eval echo configure:14769: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
    have_dl=yes 
 else
@@ -14774,18 +14808,18 @@ else
   rm -rf conftest*
   
                echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:14778: checking for dlopen in -ldl" >&5
+echo "configure:14812: checking for dlopen in -ldl" >&5
                ac_save_LIBS="$LIBS"
                LIBS="-ldl $LIBS"
                cat > conftest.$ac_ext <<EOF
-#line 14782 "configure"
+#line 14816 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 int main() {
                 dlopen ("", 0);
 ; return 0; }
 EOF
-if { (eval echo configure:14789: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14823: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
    have_dl=yes 
 else
@@ -14814,12 +14848,12 @@ EOF
         else
            
 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:14818: checking for shl_load in -ldld" >&5
+echo "configure:14852: 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 14823 "configure"
+#line 14857 "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
@@ -14830,7 +14864,7 @@ int main() {
 shl_load()
 ; return 0; }
 EOF
-if { (eval echo configure:14834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14857,12 +14891,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6
-echo "configure:14861: checking for dld_init in -ldld" >&5
+echo "configure:14895: 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 14866 "configure"
+#line 14900 "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
@@ -14873,7 +14907,7 @@ int main() {
 dld_init()
 ; return 0; }
 EOF
-if { (eval echo configure:14877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14920,7 +14954,7 @@ xehost=$canonical
 xealias=$internal_configuration
 
 echo "checking how to build dynamic libraries for ${xehost}" 1>&6
-echo "configure:14924: checking how to build dynamic libraries for ${xehost}" >&5
+echo "configure:14958: checking how to build dynamic libraries for ${xehost}" >&5
 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts.
 case "$xehost" in
 *-*-linux-gnu*) ;;
@@ -14948,9 +14982,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:14952: checking checking whether we are using GNU C" >&5
+echo "configure:14986: checking checking whether we are using GNU C" >&5
   cat > conftest.$ac_ext <<EOF
-#line 14954 "configure"
+#line 14988 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -14972,7 +15006,7 @@ rm -f conftest*
 fi
 
 echo $ac_n "checking how to produce PIC code""... $ac_c" 1>&6
-echo "configure:14976: checking how to produce PIC code" >&5
+echo "configure:15010: checking how to produce PIC code" >&5
 wl=
 
 can_build_shared=yes
@@ -15073,18 +15107,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:15077: checking if PIC flag ${dll_cflags} really works" >&5
+echo "configure:15111: checking if PIC flag ${dll_cflags} really works" >&5
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $dll_cflags -DPIC"
   cat > conftest.$ac_ext <<EOF
-#line 15081 "configure"
+#line 15115 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:15088: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15122: \"$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
@@ -15115,7 +15149,7 @@ cc_produces_so=no
 xldf=
 xcldf=
 echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6
-echo "configure:15119: checking if C compiler can produce shared libraries" >&5
+echo "configure:15153: checking if C compiler can produce shared libraries" >&5
 if test "$XEGCC" = yes -o "$__ICC" = yes; then
   xcldf="-shared"
   xldf="-shared"
@@ -15166,14 +15200,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 15170 "configure"
+#line 15204 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:15177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cc_produces_so=yes
 else
@@ -15198,7 +15232,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:15202: checking for ld used by GCC" >&5
+echo "configure:15236: checking for ld used by GCC" >&5
     ac_prog=`($CC -print-prog-name=ld) 2>&5`
     case "$ac_prog" in
     # Accept absolute paths.
@@ -15224,7 +15258,7 @@ echo "configure:15202: checking for ld used by GCC" >&5
     esac
   else
     echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:15228: checking for GNU ld" >&5
+echo "configure:15262: checking for GNU ld" >&5
   fi
 
   if test -z "$LTLD"; then
@@ -15262,7 +15296,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:15266: checking if the linker is GNU ld" >&5
+echo "configure:15300: 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
@@ -15290,7 +15324,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:15294: checking whether the linker supports shared libraries" >&5
+echo "configure:15328: checking whether the linker supports shared libraries" >&5
   dll_ld=$CC
   dll_ldflags=$LDFLAGS
   ld_shlibs=yes
@@ -15501,10 +15535,10 @@ EOF
     for ac_func in dlerror _dlerror
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15505: checking for $ac_func" >&5
+echo "configure:15539: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 15508 "configure"
+#line 15542 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -15527,7 +15561,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:15531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15565: \"$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
@@ -15566,11 +15600,11 @@ done
 fi
 
 cat > conftest.$ac_ext <<EOF
-#line 15570 "configure"
+#line 15604 "configure"
 #include "confdefs.h"
 int main(int c,char *v[]){return 0;}
 EOF
-if { (eval echo configure:15574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:15608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -15911,7 +15945,7 @@ done
 
 
 
-RECURSIVE_MAKE="\$(MAKE) \$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
+RECURSIVE_MAKE_ARGS="\$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
 
 
 
@@ -16700,7 +16734,7 @@ s%@ld_switch_all@%$ld_switch_all%g
 s%@ld_libs_general@%$ld_libs_general%g
 s%@ld_libs_window_system@%$ld_libs_window_system%g
 s%@ld_libs_all@%$ld_libs_all%g
-s%@RECURSIVE_MAKE@%$RECURSIVE_MAKE%g
+s%@RECURSIVE_MAKE_ARGS@%$RECURSIVE_MAKE_ARGS%g
 s%@native_sound_lib@%$native_sound_lib%g
 s%@sound_cflags@%$sound_cflags%g
 s%@dynodump_arch@%$dynodump_arch%g
index 2d1847b..04d718c 100644 (file)
@@ -6,7 +6,7 @@ define([AC_INIT_NOTICE],
 #### Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
 #### Copyright (C) 1993-1995 Board of Trustees, University of Illinois.
 #### Copyright (C) 1996, 1997 Sun Microsystems, Inc.
-#### Copyright (C) 1995, 1996 Ben Wing.
+#### Copyright (C) 1995, 1996, 2005 Ben Wing.
 #### Copyright (C) 2000, 2001 Martin Buchholz.
 #### Copyright (C) 1998, 1999 J. Kean Johnston.
 
@@ -1592,6 +1592,7 @@ if test -z "$pdump"; then
   case "$opsys" in
     linux* )  pdump=yes ;;    dnl glibc 2.3.1 seems to hose unexec
     darwin )  pdump=yes ;;    dnl No "native" working dumper available
+    cygwin* ) pdump=yes ;;    dnl unexec is broken
     *)        pdump=no ;;
   esac
 fi
@@ -2099,7 +2100,9 @@ fi
 dnl Feed s&m crud to src/Makefile
 
 dnl Linux/powerpc needs the following magic for some reason
-test "$machine$opsys" = "powerpclinux" && start_flags="-T $srcdir/src/ppc.ldscript"
+dnl [Not needed with YellowDog 2.3 and causes link problems with YellowDog 3.0,
+dnl the two most popular PowerPC distributions.]
+dnl test "$machine$opsys" = "powerpclinux" && start_flags="-T $srcdir/src/ppc.ldscript"
 
 if test "$unexec" = "unexaix.o"; then
 dnl AIX needs various hacks to make static linking work.
@@ -2635,16 +2638,16 @@ if test "$with_gtk" != "no";then
       possible_version=`${possible} --version 2> /dev/null`
       if test "x${possible_version}" != "x"; then
               GTK_CONFIG="${possible}"
+             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
       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
@@ -3209,28 +3212,32 @@ AC_CHECKING(for LDAP)
 test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=no) }
 test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=no) }
 if test "$with_ldap" != "no"; then
-  AC_CHECK_LIB(ldap, ldap_search, with_ldap_nolber=yes, with_ldap_nolber=no)
-  test "$with_ldap_nolber" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_lber=yes, with_ldap_lber=no, -llber) }
-  test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_krb=yes, with_ldap_krb=no, -llber -lkrb) }
-  test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" -a "$with_ldap_krb" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_krbdes=yes, with_ldap_krbdes=no, -llber -lkrb -ldes) }
-  test -z "$with_ldap" -a \( "$with_ldap_lber" = "yes" -o "$with_ldap_nolber" = "yes" -o "$with_ldap_krb" = "yes" -o "$with_ldap_krbdes" = "yes" \) && with_ldap=yes
+  AC_CHECK_LIB(ldap, ldap_search, with_ldap=yes)
+  dnl Check for other libraries we need to link with to get the main routines.
+  test "$with_ldap" != "yes" && { AC_CHECK_LIB(ldap, ldap_open, [with_ldap=yes with_ldap_lber=yes], , -llber) }
+  test "$with_ldap" != "yes" && { AC_CHECK_LIB(ldap, ldap_open, [with_ldap=yes with_ldap_lber=yes with_ldap_krb=yes], , -llber -lkrb) }
+  test "$with_ldap" != "yes" && { AC_CHECK_LIB(ldap, ldap_open, [with_ldap=yes with_ldap_lber=yes with_ldap_krb=yes with_ldap_des=yes], , -llber -lkrb -ldes) }
+  dnl Recently, we need -lber even though the main routines are elsewhere,
+  dnl because otherwise be get link errors w.r.t. ber_pvt_opt_on.  So just
+  dnl check for that (it's a variable not a fun but that doesn't seem to
+  dnl matter in these checks)  and stick in -lber if so.  Can't hurt (even to
+  dnl stick it in always shouldn't hurt, I don't think) ... #### Someone who
+  dnl #### understands LDAP needs to fix this properly.
+  test "$with_ldap_lber" != "yes" && { AC_CHECK_LIB(lber, ber_pvt_opt_on, with_ldap_lber=yes) }
 fi
 if test "$with_ldap" = "yes"; then
   AC_DEFINE(HAVE_LDAP)
   XE_ADD_OBJS(eldap.o)
-  if test "$with_ldap_nolber" = "yes" ; then
-    XE_PREPEND(-lldap, LIBS)
-  else
-    if test "$with_ldap_krb" = "yes" ; then
-      XE_PREPEND(-lkrb, LIBS)
-    fi
-    if test "$with_ldap_krbdes" = "yes" ; then
-      XE_PREPEND(-ldes, LIBS)
-      XE_PREPEND(-lkrb, LIBS)
-    fi
+  if test "$with_ldap_des" = "yes" ; then
+    XE_PREPEND(-ldes, LIBS)
+  fi
+  if test "$with_ldap_krb" = "yes" ; then
+    XE_PREPEND(-lkrb, LIBS)
+  fi
+  if test "$with_ldap_lber" = "yes" ; then
     XE_PREPEND(-llber, LIBS)
-    XE_PREPEND(-lldap, LIBS)
   fi
+  XE_PREPEND(-lldap, LIBS)
   AC_CHECK_FUNCS(ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result)
 fi
 
@@ -3590,8 +3597,8 @@ dnl Not all toolkits support all widgets
 
 dnl Avoid using Motif :-(
 case "$opsys" in
-  *linux* )  lucid_prefers_motif = "no"  ;;
-  * )        lucid_prefers_motif = "yes" ;;
+  *linux* )  lucid_prefers_motif="no"  ;;
+  * )        lucid_prefers_motif="yes" ;;
 esac
 
 case "$with_menubars" in "" | "yes" | "athena" )
@@ -4423,13 +4430,20 @@ if test "$with_tty" = "yes"  ; then
   AC_DEFINE_UNQUOTED(CURSES_H_FILE, "${curses_h_file-curses.h}")
   AC_DEFINE_UNQUOTED(TERM_H_FILE, "${term_h_file-term.h}")
 
-  dnl Autodetect gpm
-  test -z "$with_gpm" && { AC_CHECK_HEADER(gpm.h, , with_gpm=no) }
-  test -z "$with_gpm" && { AC_CHECK_LIB(gpm, Gpm_Open, with_gpm=yes, with_gpm=no) }
-  if test "$with_gpm" = "yes"; then
-    AC_DEFINE(HAVE_GPM)
-    XE_ADD_OBJS(gpmevent.o)
-    XE_PREPEND(-lgpm, LIBS)
+  dnl General Purpose Mouse (libgpm) support
+  if test "$with_gpm" != "no"; then
+    AC_CHECK_HEADER(gpm.h, [
+      AC_CHECK_LIB(gpm, Gpm_Open, have_gpm=yes)])
+    if test "$have_gpm" = "yes"; then
+      with_gpm=yes
+      AC_DEFINE(HAVE_GPM)
+      XE_ADD_OBJS(gpmevent.o)
+      XE_PREPEND(-lgpm, LIBS)
+    elif test "$with_gpm" = "yes"; then
+      XE_DIE(["GPM requested, but gpm.h or libgpm seems to be missing."])
+    else
+      with_gpm=no
+    fi
   fi
 
 else dnl "$with_tty" = "no"
@@ -4940,8 +4954,8 @@ AC_SUBST(ld_libs_all)
 AC_SUBST(CFLAGS)
 AC_SUBST(CPPFLAGS)
 AC_SUBST(LDFLAGS)
-RECURSIVE_MAKE="\$(MAKE) \$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
-AC_SUBST(RECURSIVE_MAKE)
+RECURSIVE_MAKE_ARGS="\$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
+AC_SUBST(RECURSIVE_MAKE_ARGS)
 
 AC_SUBST(native_sound_lib)
 AC_SUBST(sound_cflags)
index 6eaad69..6005b5c 100644 (file)
@@ -37,14 +37,15 @@ theme for the releases following the promotion of 21.4 from "gamma" to
 21.4.14: Reasonable Discussion
 21.4.15: Security Through Obscurity
 21.4.16: Corporate Culture
-21.4.17: Social Property
-21.4.18: Stable Release Maintainer
-21.4.19: Standard C
-21.4.20: Successful IPO
-21.4.21: Sufficiently Smart Compiler
-21.4.22: The Gift Economy
-21.4.23: Too Much Mozart
-21.4.24: UTF-8 BOM
+21.4.17: Jumbo Shrimp
+21.4.18: Social Property
+21.4.19: Stable Release Maintainer
+21.4.20: Standard C
+21.4.21: Successful IPO
+21.4.22: Sufficiently Smart Compiler
+21.4.23: The Gift Economy
+21.4.24: Too Much Mozart
+21.4.25: UTF-8 BOM
 
 N.B.  Only incredibly redeeming suggestions can be accepted now.
 
index 538308a..2c610bf 100644 (file)
@@ -273,7 +273,7 @@ Non-nil if we need to inhibit XEmacs from loading custom.el after init.el.")
 ;; and in fact all we've done is copied the definition.  Note again
 ;; how we check to avoid clobbering an existing definition. (It's good
 ;; style to do this, in case some improvement was made to the
-;; already-existing function -- otherwise we might subsitute an older
+;; already-existing function -- otherwise we might substitute an older
 ;; definition and possibly break some code elsewhere.)
 ;;
 ;; NOTE ALSO: It is in general *NOT* a good idea to do what we're
@@ -735,7 +735,10 @@ backward, and defaults to 1.  Buffers whose name begins with a space
 ;; File menu.
 
 (when (console-on-window-system-p)
-    (global-set-key "\C-x\C-c" nil))
+    (global-set-key "\C-x\C-c"
+      #'(lambda () (interactive)
+         (beep)
+         (message "Use the \"File/Exit XEmacs\" menu item to exit XEmacs"))))
 
 ;; Make C-k always delete the whole line, which is what most people want,
 ;; anyway.
@@ -1390,7 +1393,7 @@ previous with \\[backward-sexp]."
 
 
 ;;; ********************
-;;; Filladapt is a syntax-highlighting package.  When it is enabled it
+;;; Filladapt is an adaptive text-filling package.  When it is enabled it
 ;;; makes filling (e.g. using M-q) much much smarter about paragraphs
 ;;; that are indented and/or are set off with semicolons, dashes, etc.
 
index 0399d99..7715882 100644 (file)
-/* DDE client for XEmacs.\r
-   Copyright (C) 2002 Alastair J. Houghton\r
-\r
-   This file is part of XEmacs.\r
-\r
-   XEmacs is free software; you can redistribute it and/or modify it\r
-   under the terms of the GNU General Public License as published by the\r
-   Free Software Foundation; either version 2, or (at your option) any\r
-   later version.\r
-\r
-   XEmacs is distributed in the hope that it will be useful, but WITHOUT\r
-   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
-   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
-   for more details.\r
-\r
-   You should have received a copy of the GNU General Public License\r
-   along with XEmacs; see the file COPYING.  If not, write to\r
-   the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\r
-   Boston, MA 02111-1307, USA.  */\r
-\r
-/* Synched up with: Not in FSF. */\r
-\r
-/* -- Pre-Include Defines --------------------------------------------------- */\r
-\r
-#define STRICT\r
-\r
-/* -- Includes -------------------------------------------------------------- */\r
-\r
-#include <windows.h>\r
-#ifdef HAVE_CONFIG_H\r
-# include <config.h>\r
-#endif\r
-#include <stdlib.h>\r
-#include <stdio.h>\r
-#include <ctype.h>\r
-#include <errno.h>\r
-\r
-static void error (const char* s1, const char* s2);\r
-static void fatal (const char *s1, const char *s2);\r
-static void * xmalloc (size_t size);\r
-static char * getNextArg (const char **ptr, unsigned *len);\r
-\r
-/* -- Post-Include Defines -------------------------------------------------- */\r
-\r
-/* Timeouts & delays */\r
-#define CONNECT_DELAY          500             /* ms */\r
-#define TRANSACTION_TIMEOUT    5000            /* ms */\r
-#define MAX_INPUT_IDLE_WAIT     INFINITE       /* ms */\r
-\r
-/* DDE Strings */\r
-#define SERVICE_NAME   "XEmacs"\r
-#define TOPIC_NAME     "System"\r
-#define COMMAND_FORMAT "[open(\"%s%s\")]"\r
-\r
-/* XEmacs program name */\r
-#define PROGRAM_TO_RUN "xemacs.exe"\r
-\r
-/* -- Constants ------------------------------------------------------------- */\r
-\r
-/* -- Global Variables ------------------------------------------------------ */\r
-\r
-HINSTANCE hInstance;\r
-DWORD     idInst = 0;\r
-\r
-/* -- Function Declarations ------------------------------------------------- */\r
-\r
-HDDEDATA CALLBACK ddeCallback (UINT uType, UINT uFmt, HCONV hconv,\r
-                              HSZ hsz1, HSZ hsz2, HDDEDATA hdata,\r
-                              DWORD dwData1, DWORD dwData2);\r
-\r
-int WINAPI WinMain (HINSTANCE hInst,\r
-                   HINSTANCE hPrev,\r
-                   LPSTR     lpCmdLine,\r
-                   int       nCmdShow);\r
-\r
-static HCONV openConversation (void);\r
-static void closeConversation (HCONV hConv);\r
-static int doFile (HCONV hConv, LPSTR lpszFileName1, LPSTR lpszFileName2);\r
-static int parseCommandLine (HCONV hConv, LPSTR lpszCommandLine);\r
-\r
-/* -- Function Definitions -------------------------------------------------- */\r
-\r
-/*\r
- * Name    : ddeCallback\r
- * Function: Gets called by DDEML.\r
- *\r
- */\r
-\r
-HDDEDATA CALLBACK\r
-ddeCallback (UINT uType, UINT uFmt, HCONV hconv,\r
-            HSZ hsz1, HSZ hsz2, HDDEDATA hdata,\r
-            DWORD dwData1, DWORD dwData2)\r
-{\r
-  return (HDDEDATA) NULL;\r
-}\r
-\r
-/*\r
- * Name    : WinMain\r
- * Function: The program's entry point function.\r
- *\r
- */\r
-\r
-int WINAPI\r
-WinMain (HINSTANCE hInst,\r
-        HINSTANCE hPrev,\r
-        LPSTR     lpCmdLine,\r
-        int       nCmdShow)\r
-{\r
-  HCONV hConv;\r
-  int   ret = 0;\r
-  UINT  uiRet;\r
-  \r
-  /* Initialise the DDEML library */\r
-  uiRet = DdeInitialize (&idInst,\r
-                        (PFNCALLBACK) ddeCallback,\r
-                        APPCMD_CLIENTONLY\r
-                        |CBF_FAIL_ALLSVRXACTIONS,\r
-                        0);\r
-\r
-  if (uiRet != DMLERR_NO_ERROR)\r
-    {\r
-      MessageBox (NULL, "Could not initialise DDE management library.",\r
-                 "winclient", MB_ICONEXCLAMATION | MB_OK);\r
-\r
-      return 1;\r
-    }\r
-\r
-  /* Open a conversation */\r
-  hConv = openConversation ();\r
-\r
-  if (hConv)\r
-    {\r
-      /* OK. Next, we need to parse the command line. */\r
-      ret = parseCommandLine (hConv, lpCmdLine);\r
-\r
-      /* Close the conversation */\r
-      closeConversation (hConv);\r
-    }\r
-  \r
-  DdeUninitialize (idInst);\r
-\r
-  return ret;\r
-}\r
-\r
-/*\r
- * Name    : openConversation\r
- * Function: Start a conversation.\r
- *\r
- */\r
-\r
-static HCONV\r
-openConversation (void)\r
-{\r
-  HSZ             hszService = NULL, hszTopic = NULL;\r
-  HCONV           hConv = NULL;\r
-\r
-  /* Get the application (service) name */\r
-  hszService = DdeCreateStringHandle (idInst,\r
-                                     SERVICE_NAME,\r
-                                     CP_WINANSI);\r
-\r
-  if (!hszService)\r
-    {\r
-      MessageBox (NULL, "Could not create string handle for service.",\r
-                 "winclient", MB_ICONEXCLAMATION | MB_OK);\r
-\r
-      goto error;\r
-    }\r
-  \r
-  /* Get the topic name */\r
-  hszTopic = DdeCreateStringHandle (idInst,\r
-                                   TOPIC_NAME,\r
-                                   CP_WINANSI);\r
-\r
-  if (!hszTopic)\r
-    {\r
-      MessageBox (NULL, "Could not create string handle for topic.",\r
-                 "winclient", MB_ICONEXCLAMATION | MB_OK);\r
-\r
-      goto error;\r
-    }\r
-\r
-  /* Try to connect */\r
-  hConv = DdeConnect (idInst, hszService, hszTopic, NULL);\r
-\r
-  if (!hConv)\r
-    {\r
-      STARTUPINFO         sti;\r
-      PROCESS_INFORMATION pi;\r
-      int                 n;\r
-      \r
-      /* Try to start the program */\r
-      ZeroMemory (&sti, sizeof (sti));\r
-      sti.cb = sizeof (sti);\r
-      if (!CreateProcess (NULL, PROGRAM_TO_RUN, NULL, NULL, FALSE, 0,\r
-                         NULL, NULL, &sti, &pi))\r
-       {\r
-         MessageBox (NULL, "Could not start process.",\r
-                     "winclient", MB_ICONEXCLAMATION | MB_OK);\r
-\r
-         goto error;\r
-       }\r
-\r
-      /* Wait for the process to enter an idle state */\r
-      WaitForInputIdle (pi.hProcess, MAX_INPUT_IDLE_WAIT);\r
-\r
-      /* Close the handles */\r
-      CloseHandle (pi.hThread);\r
-      CloseHandle (pi.hProcess);\r
-      \r
-      /* Try to connect */\r
-      for (n = 0; n < 5; n++)\r
-       {\r
-         Sleep (CONNECT_DELAY);\r
-         \r
-         hConv = DdeConnect (idInst, hszService, hszTopic, NULL);\r
-\r
-         if (hConv)\r
-           break;\r
-       }\r
-\r
-      if (!hConv)\r
-       {\r
-         /* Still couldn't connect. */\r
-         MessageBox (NULL, "Could not connect to DDE server.",\r
-                     "winclient", MB_ICONEXCLAMATION | MB_OK);\r
-\r
-         goto error;\r
-       }\r
-    }\r
-\r
-  /* Release the string handles */\r
-  DdeFreeStringHandle (idInst, hszService);\r
-  DdeFreeStringHandle (idInst, hszTopic);\r
-\r
-  return hConv;\r
-  \r
- error:\r
-  if (hConv)\r
-    DdeDisconnect (hConv);\r
-  if (hszService)\r
-    DdeFreeStringHandle (idInst, hszService);\r
-  if (hszTopic)\r
-    DdeFreeStringHandle (idInst, hszTopic);\r
-\r
-  return NULL;\r
-}\r
-\r
-/*\r
- * Name    : closeConversation\r
- * Function: Close a conversation.\r
- *\r
- */\r
-\r
-static void\r
-closeConversation (HCONV hConv)\r
-{\r
-  /* Shut down */\r
-  DdeDisconnect (hConv);\r
-}\r
-\r
-/*\r
- * Name    : doFile\r
- * Function: Process a file.\r
- *\r
- */\r
-\r
-int\r
-doFile (HCONV hConv, LPSTR lpszFileName1, LPSTR lpszFileName2)\r
-{\r
-  char            *buf = NULL;\r
-  unsigned        len;\r
-  \r
-  /* Calculate the buffer length */\r
-  len = strlen (lpszFileName1) + strlen (lpszFileName2)\r
-    + strlen (COMMAND_FORMAT);\r
-  \r
-  /* Allocate a buffer */\r
-  buf = (char *) xmalloc (len);\r
-\r
-  if (!buf)\r
-    {\r
-      MessageBox (NULL, "Not enough memory.",\r
-                 "winclient", MB_ICONEXCLAMATION | MB_OK);\r
-\r
-      return 1;\r
-    }\r
-\r
-  /* Build the command */\r
-  len = wsprintf (buf, COMMAND_FORMAT, lpszFileName1, lpszFileName2);\r
-\r
-  len++;\r
-  \r
-  /* OK. We're connected. Send the message. */\r
-  DdeClientTransaction (buf, len, hConv, NULL,\r
-                       0, XTYP_EXECUTE, TRANSACTION_TIMEOUT, NULL);\r
-\r
-  free (buf);\r
-  \r
-  return 0;\r
-}\r
-\r
-/*\r
- * Name    : getNextArg\r
- * Function: Retrieve the next command line argument.\r
- *\r
- */\r
-\r
-static char *\r
-getNextArg (const char **ptr, unsigned *len)\r
-{\r
-  int        in_quotes = 0, quit = 0, all_in_quotes = 0;\r
-  const char *p = *ptr, *start;\r
-  char       *buf = NULL;\r
-  unsigned   length = 0;\r
-\r
-  /* Skip whitespace */\r
-  while (*p && isspace (*p))\r
-    p++;\r
-\r
-  /* If this is the end, return NULL */\r
-  if (!*p)\r
-    return NULL;\r
-  \r
-  /* Remember where we are */\r
-  start = p;\r
-  \r
-  /* Find the next whitespace character outside quotes */\r
-  if (*p == '"')\r
-    all_in_quotes = 1;\r
-  \r
-  while (*p && !quit)\r
-    {\r
-      switch (*p)\r
-       {\r
-       case '"':\r
-         in_quotes = 1 - in_quotes;\r
-         p++;\r
-         break;\r
-\r
-       case '\\':\r
-         if (!in_quotes)\r
-           all_in_quotes = 0;\r
-         \r
-         p++;\r
-\r
-         if (!*p)\r
-           break;\r
-\r
-         p++;\r
-         break;\r
-\r
-       default:\r
-         if (isspace (*p) && !in_quotes)\r
-           quit = 1;\r
-         else if (!in_quotes)\r
-           all_in_quotes = 0;\r
-\r
-         if (!quit)\r
-           p++;\r
-       }\r
-    }\r
-\r
-  /* Work out the length */\r
-  length = p - start;\r
-\r
-  /* Strip quotes if the argument is completely quoted */\r
-  if (all_in_quotes)\r
-    {\r
-      start++;\r
-      length -= 2;\r
-    }\r
-  \r
-  /* Copy */\r
-  buf = (char *) xmalloc (length + 1);\r
-\r
-  if (!buf)\r
-    return NULL;\r
-  \r
-  strncpy (buf, start, length);\r
-  buf[length] = '\0';\r
-\r
-  /* Return the pointer and length */\r
-  *ptr = p;\r
-  *len = length;\r
-\r
-  return buf;\r
-}\r
-\r
-/*\r
- * Name    : parseCommandLine\r
- * Function: Process the command line. This program accepts a list of strings\r
- *         : (which may contain wildcards) representing filenames.\r
- *\r
- */\r
-\r
-int\r
-parseCommandLine (HCONV hConv, LPSTR lpszCommandLine)\r
-{\r
-  char            *fullpath, *filepart;\r
-  char            *arg;\r
-  unsigned        len, pathlen;\r
-  int             ret = 0;\r
-  HANDLE          hFindFile = NULL;\r
-  WIN32_FIND_DATA wfd;\r
-\r
-  /* Retrieve arguments */\r
-  while ((arg = getNextArg ((const char**)&lpszCommandLine, &len)) != NULL)\r
-    {\r
-      /* First find the canonical path name */\r
-      fullpath = filepart = NULL;\r
-      pathlen = GetFullPathName (arg, 0, fullpath, &filepart);\r
-\r
-      fullpath = (char *) xmalloc (pathlen);\r
-\r
-      if (!fullpath)\r
-       {\r
-         MessageBox (NULL, "Not enough memory.", "winclient",\r
-                     MB_ICONEXCLAMATION | MB_OK);\r
-         \r
-         ret = 1;\r
-         free (arg);\r
-         \r
-         break;\r
-       }\r
-\r
-      GetFullPathName (arg, pathlen, fullpath, &filepart);\r
-\r
-      /* Find the first matching file */\r
-      hFindFile = FindFirstFile (arg, &wfd);\r
-\r
-      if (hFindFile == INVALID_HANDLE_VALUE)\r
-       ret = doFile (hConv, fullpath, "");\r
-      else\r
-       {\r
-         /* Chop off the file part from the full path name */\r
-         if (filepart)\r
-           *filepart = '\0';\r
-\r
-         /* For each matching file */\r
-         do\r
-           {\r
-             /* Process it */\r
-             ret = doFile (hConv, fullpath, wfd.cFileName);\r
-\r
-             if (ret)\r
-               break;\r
-           }\r
-         while (FindNextFile (hFindFile, &wfd));\r
-\r
-         FindClose (hFindFile);\r
-       }\r
-\r
-      /* Release the path name buffers */\r
-      free (fullpath);\r
-      free (arg);\r
-\r
-      if (ret)\r
-       break;\r
-    }\r
-\r
-  return ret;\r
-}\r
-\r
-static void\r
-fatal (const char *s1, const char *s2)\r
-{\r
-  error (s1, s2);\r
-  exit (1);\r
-}\r
-\r
-/* Print error message.  `s1' is printf control string, `s2' is arg for it. */\r
-static void\r
-error (const char* s1, const char* s2)\r
-{\r
-  fprintf (stderr, "winclient: ");\r
-  fprintf (stderr, s1, s2);\r
-  fprintf (stderr, "\n");\r
-}\r
-\r
-/* Like malloc but get fatal error if memory is exhausted.  */\r
-\r
-static void *\r
-xmalloc (size_t size)\r
-{\r
-  void *result = malloc (size);\r
-  if (result == NULL)\r
-    fatal ("virtual memory exhausted", (char *) 0);\r
-  return result;\r
-}\r
+/* DDE client for XEmacs.
+   Copyright (C) 2002 Alastair J. Houghton
+
+   This file is part of XEmacs.
+
+   XEmacs is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 2, or (at your option) any
+   later version.
+
+   XEmacs is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+   for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with XEmacs; see the file COPYING.  If not, write to
+   the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* Synched up with: Not in FSF. */
+
+/* -- Pre-Include Defines --------------------------------------------------- */
+
+#define STRICT
+
+/* -- Includes -------------------------------------------------------------- */
+
+#include <windows.h>
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <errno.h>
+
+static void error (const char* s1, const char* s2);
+static void fatal (const char *s1, const char *s2);
+static void * xmalloc (size_t size);
+static char * getNextArg (const char **ptr, unsigned *len);
+
+/* -- Post-Include Defines -------------------------------------------------- */
+
+/* Timeouts & delays */
+#define CONNECT_DELAY          500             /* ms */
+#define TRANSACTION_TIMEOUT    5000            /* ms */
+#define MAX_INPUT_IDLE_WAIT     INFINITE       /* ms */
+
+/* DDE Strings */
+#define SERVICE_NAME   "XEmacs"
+#define TOPIC_NAME     "System"
+#define COMMAND_FORMAT "[open(\"%s%s\")]"
+
+/* XEmacs program name */
+#define PROGRAM_TO_RUN "xemacs.exe"
+
+/* -- Constants ------------------------------------------------------------- */
+
+/* -- Global Variables ------------------------------------------------------ */
+
+HINSTANCE hInstance;
+DWORD     idInst = 0;
+
+/* -- Function Declarations ------------------------------------------------- */
+
+HDDEDATA CALLBACK ddeCallback (UINT uType, UINT uFmt, HCONV hconv,
+                              HSZ hsz1, HSZ hsz2, HDDEDATA hdata,
+                              DWORD dwData1, DWORD dwData2);
+
+int WINAPI WinMain (HINSTANCE hInst,
+                   HINSTANCE hPrev,
+                   LPSTR     lpCmdLine,
+                   int       nCmdShow);
+
+static HCONV openConversation (void);
+static void closeConversation (HCONV hConv);
+static int doFile (HCONV hConv, LPSTR lpszFileName1, LPSTR lpszFileName2);
+static int parseCommandLine (HCONV hConv, LPSTR lpszCommandLine);
+
+/* -- Function Definitions -------------------------------------------------- */
+
+/*
+ * Name    : ddeCallback
+ * Function: Gets called by DDEML.
+ *
+ */
+
+HDDEDATA CALLBACK
+ddeCallback (UINT uType, UINT uFmt, HCONV hconv,
+            HSZ hsz1, HSZ hsz2, HDDEDATA hdata,
+            DWORD dwData1, DWORD dwData2)
+{
+  return (HDDEDATA) NULL;
+}
+
+/*
+ * Name    : WinMain
+ * Function: The program's entry point function.
+ *
+ */
+
+int WINAPI
+WinMain (HINSTANCE hInst,
+        HINSTANCE hPrev,
+        LPSTR     lpCmdLine,
+        int       nCmdShow)
+{
+  HCONV hConv;
+  int   ret = 0;
+  UINT  uiRet;
+  
+  /* Initialise the DDEML library */
+  uiRet = DdeInitialize (&idInst,
+                        (PFNCALLBACK) ddeCallback,
+                        APPCMD_CLIENTONLY
+                        |CBF_FAIL_ALLSVRXACTIONS,
+                        0);
+
+  if (uiRet != DMLERR_NO_ERROR)
+    {
+      MessageBox (NULL, "Could not initialise DDE management library.",
+                 "winclient", MB_ICONEXCLAMATION | MB_OK);
+
+      return 1;
+    }
+
+  /* Open a conversation */
+  hConv = openConversation ();
+
+  if (hConv)
+    {
+      /* OK. Next, we need to parse the command line. */
+      ret = parseCommandLine (hConv, lpCmdLine);
+
+      /* Close the conversation */
+      closeConversation (hConv);
+    }
+  
+  DdeUninitialize (idInst);
+
+  return ret;
+}
+
+/*
+ * Name    : openConversation
+ * Function: Start a conversation.
+ *
+ */
+
+static HCONV
+openConversation (void)
+{
+  HSZ             hszService = NULL, hszTopic = NULL;
+  HCONV           hConv = NULL;
+
+  /* Get the application (service) name */
+  hszService = DdeCreateStringHandle (idInst,
+                                     SERVICE_NAME,
+                                     CP_WINANSI);
+
+  if (!hszService)
+    {
+      MessageBox (NULL, "Could not create string handle for service.",
+                 "winclient", MB_ICONEXCLAMATION | MB_OK);
+
+      goto error;
+    }
+  
+  /* Get the topic name */
+  hszTopic = DdeCreateStringHandle (idInst,
+                                   TOPIC_NAME,
+                                   CP_WINANSI);
+
+  if (!hszTopic)
+    {
+      MessageBox (NULL, "Could not create string handle for topic.",
+                 "winclient", MB_ICONEXCLAMATION | MB_OK);
+
+      goto error;
+    }
+
+  /* Try to connect */
+  hConv = DdeConnect (idInst, hszService, hszTopic, NULL);
+
+  if (!hConv)
+    {
+      STARTUPINFO         sti;
+      PROCESS_INFORMATION pi;
+      int                 n;
+      
+      /* Try to start the program */
+      ZeroMemory (&sti, sizeof (sti));
+      sti.cb = sizeof (sti);
+      if (!CreateProcess (NULL, PROGRAM_TO_RUN, NULL, NULL, FALSE, 0,
+                         NULL, NULL, &sti, &pi))
+       {
+         MessageBox (NULL, "Could not start process.",
+                     "winclient", MB_ICONEXCLAMATION | MB_OK);
+
+         goto error;
+       }
+
+      /* Wait for the process to enter an idle state */
+      WaitForInputIdle (pi.hProcess, MAX_INPUT_IDLE_WAIT);
+
+      /* Close the handles */
+      CloseHandle (pi.hThread);
+      CloseHandle (pi.hProcess);
+      
+      /* Try to connect */
+      for (n = 0; n < 5; n++)
+       {
+         Sleep (CONNECT_DELAY);
+         
+         hConv = DdeConnect (idInst, hszService, hszTopic, NULL);
+
+         if (hConv)
+           break;
+       }
+
+      if (!hConv)
+       {
+         /* Still couldn't connect. */
+         MessageBox (NULL, "Could not connect to DDE server.",
+                     "winclient", MB_ICONEXCLAMATION | MB_OK);
+
+         goto error;
+       }
+    }
+
+  /* Release the string handles */
+  DdeFreeStringHandle (idInst, hszService);
+  DdeFreeStringHandle (idInst, hszTopic);
+
+  return hConv;
+  
+ error:
+  if (hConv)
+    DdeDisconnect (hConv);
+  if (hszService)
+    DdeFreeStringHandle (idInst, hszService);
+  if (hszTopic)
+    DdeFreeStringHandle (idInst, hszTopic);
+
+  return NULL;
+}
+
+/*
+ * Name    : closeConversation
+ * Function: Close a conversation.
+ *
+ */
+
+static void
+closeConversation (HCONV hConv)
+{
+  /* Shut down */
+  DdeDisconnect (hConv);
+}
+
+/*
+ * Name    : doFile
+ * Function: Process a file.
+ *
+ */
+
+int
+doFile (HCONV hConv, LPSTR lpszFileName1, LPSTR lpszFileName2)
+{
+  char            *buf = NULL;
+  unsigned        len;
+  
+  /* Calculate the buffer length */
+  len = strlen (lpszFileName1) + strlen (lpszFileName2)
+    + strlen (COMMAND_FORMAT);
+  
+  /* Allocate a buffer */
+  buf = (char *) xmalloc (len);
+
+  if (!buf)
+    {
+      MessageBox (NULL, "Not enough memory.",
+                 "winclient", MB_ICONEXCLAMATION | MB_OK);
+
+      return 1;
+    }
+
+  /* Build the command */
+  len = wsprintf (buf, COMMAND_FORMAT, lpszFileName1, lpszFileName2);
+
+  len++;
+  
+  /* OK. We're connected. Send the message. */
+  DdeClientTransaction (buf, len, hConv, NULL,
+                       0, XTYP_EXECUTE, TRANSACTION_TIMEOUT, NULL);
+
+  free (buf);
+  
+  return 0;
+}
+
+/*
+ * Name    : getNextArg
+ * Function: Retrieve the next command line argument.
+ *
+ */
+
+static char *
+getNextArg (const char **ptr, unsigned *len)
+{
+  int        in_quotes = 0, quit = 0, all_in_quotes = 0;
+  const char *p = *ptr, *start;
+  char       *buf = NULL;
+  unsigned   length = 0;
+
+  /* Skip whitespace */
+  while (*p && isspace (*p))
+    p++;
+
+  /* If this is the end, return NULL */
+  if (!*p)
+    return NULL;
+  
+  /* Remember where we are */
+  start = p;
+  
+  /* Find the next whitespace character outside quotes */
+  if (*p == '"')
+    all_in_quotes = 1;
+  
+  while (*p && !quit)
+    {
+      switch (*p)
+       {
+       case '"':
+         in_quotes = 1 - in_quotes;
+         p++;
+         break;
+
+       case '\\':
+         if (!in_quotes)
+           all_in_quotes = 0;
+         
+         p++;
+
+         if (!*p)
+           break;
+
+         p++;
+         break;
+
+       default:
+         if (isspace (*p) && !in_quotes)
+           quit = 1;
+         else if (!in_quotes)
+           all_in_quotes = 0;
+
+         if (!quit)
+           p++;
+       }
+    }
+
+  /* Work out the length */
+  length = p - start;
+
+  /* Strip quotes if the argument is completely quoted */
+  if (all_in_quotes)
+    {
+      start++;
+      length -= 2;
+    }
+  
+  /* Copy */
+  buf = (char *) xmalloc (length + 1);
+
+  if (!buf)
+    return NULL;
+  
+  strncpy (buf, start, length);
+  buf[length] = '\0';
+
+  /* Return the pointer and length */
+  *ptr = p;
+  *len = length;
+
+  return buf;
+}
+
+/*
+ * Name    : parseCommandLine
+ * Function: Process the command line. This program accepts a list of strings
+ *         : (which may contain wildcards) representing filenames.
+ *
+ */
+
+int
+parseCommandLine (HCONV hConv, LPSTR lpszCommandLine)
+{
+  char            *fullpath, *filepart;
+  char            *arg;
+  unsigned        len, pathlen;
+  int             ret = 0;
+  HANDLE          hFindFile = NULL;
+  WIN32_FIND_DATA wfd;
+
+  /* Retrieve arguments */
+  while ((arg = getNextArg ((const char**)&lpszCommandLine, &len)) != NULL)
+    {
+      /* First find the canonical path name */
+      fullpath = filepart = NULL;
+      pathlen = GetFullPathName (arg, 0, fullpath, &filepart);
+
+      fullpath = (char *) xmalloc (pathlen);
+
+      if (!fullpath)
+       {
+         MessageBox (NULL, "Not enough memory.", "winclient",
+                     MB_ICONEXCLAMATION | MB_OK);
+         
+         ret = 1;
+         free (arg);
+         
+         break;
+       }
+
+      GetFullPathName (arg, pathlen, fullpath, &filepart);
+
+      /* Find the first matching file */
+      hFindFile = FindFirstFile (arg, &wfd);
+
+      if (hFindFile == INVALID_HANDLE_VALUE)
+       ret = doFile (hConv, fullpath, "");
+      else
+       {
+         /* Chop off the file part from the full path name */
+         if (filepart)
+           *filepart = '\0';
+
+         /* For each matching file */
+         do
+           {
+             /* Process it */
+             ret = doFile (hConv, fullpath, wfd.cFileName);
+
+             if (ret)
+               break;
+           }
+         while (FindNextFile (hFindFile, &wfd));
+
+         FindClose (hFindFile);
+       }
+
+      /* Release the path name buffers */
+      free (fullpath);
+      free (arg);
+
+      if (ret)
+       break;
+    }
+
+  return ret;
+}
+
+static void
+fatal (const char *s1, const char *s2)
+{
+  error (s1, s2);
+  exit (1);
+}
+
+/* Print error message.  `s1' is printf control string, `s2' is arg for it. */
+static void
+error (const char* s1, const char* s2)
+{
+  fprintf (stderr, "winclient: ");
+  fprintf (stderr, s1, s2);
+  fprintf (stderr, "\n");
+}
+
+/* Like malloc but get fatal error if memory is exhausted.  */
+
+static void *
+xmalloc (size_t size)
+{
+  void *result = malloc (size);
+  if (result == NULL)
+    fatal ("virtual memory exhausted", (char *) 0);
+  return result;
+}
index ec4df0c..6199d06 100644 (file)
        * files.el (insert-file-contents-literally): Treat file as binary;
        call file-name-handlers. [sync with Emacs 20.3.10]
 
+2005-02-06  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.17 is released
+
+2005-01-29  Ben Wing  <ben@xemacs.org>
+
+       * shadow.el (find-emacs-lisp-shadows):
+       Add custom-defines to list of ignored files.
+
+2005-01-17  Adrian Aichner  <adrian@xemacs.org>
+
+       * simple.el (shifted-motion-keys-select-region): Fix statement
+       about unshifted-motion-keys-deselect-region.
+
+2004-12-15  Ville Skyttä  <scop@xemacs.org>
+
+       * bytecomp-runtime.el (make-obsolete): Add 3rd argument (no-op for
+       now) for GNU Emacs compatibility.
+       (make-obsolete-variable): Ditto.
+
+2004-01-08  Ben Wing  <ben@xemacs.org>
+
+       * code-files.el (load):
+       File positions are 0 based not 1 based. Thanks to Steve Youngs.
+
+2004-12-05  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.16 is released
+
+2004-12-04  Vin Shelton  <acs@xemacs.org>
+
+       * auto-autoloads.el: Regenerated.
+
+       * custom-load.el: Regenerated.
+
+2004-09-15  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       Fix bug: apropos errors if a defalias refers to an undefined
+       function.  <87pt4pmdcs.fsf@tleepslib.sk.tsukuba.ac.jp>
+
+       * apropos.el (apropos):
+       (apropos-command):
+       * help.el (frob-help-extents):
+       * help-macro.el (make-help-screen):
+       * hyper-apropos.el (hyper-apropos-grok-functions):
+       (hyper-apropos-get-doc):
+       Catch void-function error thrown by `documentation'.
+
+2004-09-02  Steve Youngs  <steve@youngs.au.com>
+
+       * packages.el (package-require): Fix incorrect arg to format.
+       This fixes a `format specifier' error.
+
+2004-08-13  Jerry James  <james@xemacs.org>
+
+       * bytecomp.el (forward-word): Tell the byte compiler the correct
+       number of arguments to forward-word.
+
+2004-08-12  Sven Grundmann  <sven@xemacs.org>
+
+       * etags.el: Fixed loading of include files for tag completion. Now
+       you can make a tag file for a library, include it into your
+       project and it will be reloaded only if it changed. Infinte
+       include loops are detected and the correct tag files are loaded.
+       * etags.el (buffer-tag-table-list): Load and verify tag files in
+       the external function buffer-tag-table-list-load.
+       * etags.el (buffer-tag-table-list-load): New. Load and verify the
+       tag files. Also load the included tag files. The priority of the
+       included files is right below their parent file. If multiple
+       matches occur then the symbols from the parent file are found
+       first.
+       * etags.el (tag-table-include-files): Corrected comment
+       string. Switched to pattern constant tags-include-pattern to have
+       it at a central location.
+       * etags.el (tags-include-pattern): Added doc string.
+       * etags.el (add-to-tag-completion-table): Removed obsolete
+       comments as the include files are allready returned by
+       buffer-tag-table-list and loaded.
+       * etags.el (find-tag-internal): The include files are allready
+       included in tag-tables as buffer-tag-table-list returns them now.
+
+2004-07-02  Malcolm Purvis  <malcolmp@xemacs.org>
+
+       * widgets-gtk.el (gtk-widget-instantiate-notebook-internal):
+       Loading items into the notebook is now done by C code.
+       * widgets-gtk.el (gtk-widget-instantiate-internal):
+       Style no longer changed.
+
+2004-06-28  Nix  <nix@esperi.org.uk>
+
+       * cmdloop.el (truncate-command-history-for-gc): Delay
+        execution of all things that look up variable bindings,
+        via `enqueue-eval-event'.
+
+2004-06-24  Vin Shelton  <acs@xemacs.org>
+
+       * package-get.el (package-get-require-signed-base-updates):
+       now defaults to nil.
+
+2004-06-09  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * subr.el (split-string): Clean up docstring.
+
+2002-01-24  John Paul Wallington  <jpw@shootybangbang.com>
+
+       * faces.el (zmacs-region): fix typo in docstring.
+
+2004-06-07  Jerry James  <james@xemacs.org>
+
+       * derived.el: Synch with Emacs 21.3.
+       * subr.el (with-local-quit): New, from Emacs 21.3.
+       * subr.el (delayed-mode-hooks): New variable, from Emacs 21.3.
+       * subr.el (run-mode-hooks): New function, from Emacs 21.3.
+       * subr.el (delay-mode-hooks): New macro, from Emacs 21.3.
+
+2004-06-16  Jerry James  <james@xemacs.org>
+
+       * cl.el (cl-set-substring): Increment start by the length of the
+       string, not the string itself.
+
+2004-05-19  Malcolm Purvis  <malcolmp@xemacs.org>
+
+       * etags.el (tag-table-include-files): Expand included TAGS file
+       paths to avoid problems with relative paths.  Thanks to Peter
+       Chubb <peterc@gelato.unsw.edu.au>.
+       * etags.el (tags-include-pattern): New.
+       * etags.el (add-to-tag-completion-table): Parse and ignore
+       trailing include lines.
+
+2004-06-21  Adrian Aichner  <adrian@xemacs.org>
+
+       * package-ui.el (pui-help-echo): Fix false cvs conflict by
+       avoiding line solely composed of equal signs.
+
+2004-06-10  Adrian Aichner  <adrian@xemacs.org>
+
+       * cus-edit.el (alloc): Typo fix.
+       * cus-edit.el (custom-browse-visibility): Ditto.
+       * cus-edit.el (custom-variable-value-create): Ditto.
+       * cus-edit.el (custom-variable-pre-reset-standard): Ditto.
+       * cus-edit.el (custom-save-variables): Bind print-length and
+       print-level to nil to avoid value abbreviation.
+       * cus-edit.el (custom-save-face-internal): Ditto.
+       * cus-edit.el (custom-save-faces): Save in sorted order.
+       * cus-edit.el (custom-save-resets): Bind print-length and
+       print-level to nil to avoid value abbreviation.
+       * cus-edit.el (custom-save-loaded-themes): Ditto.
+
+2004-06-09  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * subr.el (split-string-default-separators): New.
+       (split-string): Synch to 21.5/GNU Emacs version.  *New semantics*,
+       see comment in source.
+
+2004-01-29  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * mule/japanese.el (paragraph-start, paragraph-separate):
+       Remove anchor to BOL.
+
+2004-04-30  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * cl.el (gensym, gentemp): Improve docstrings.
+
+2004-05-10  Vin Shelton  <acs@xemacs.org>
+
+       * etags.el: Sync with 21.5 version.
+
+2004-04-21  Sven Grundmann  <sven@hellerhof.de>
+
+       * etags.el:
+       * etags.el (tags-exuberant-ctags-optimization-p): Enable optimization
+       only for use with exuberant ctags. This will also enable building of 
+       completion tables with exuberant ctags. This will not work with
+       xemacs ctags. 
+       * etags.el (get-tag-table-buffer): New function for creating of
+       completion table is used if tags-exuberant-ctags-optimization-p ist t
+       * etags.el (tags-explicit-name-pattern): Hold the name pattern for
+       finding the tag names. New.
+       * etags.el (add-to-tag-completion-table-exuberant-ctags): Defun for
+       building tag completion table with exuberant ctags. New.
+       * etags.el (find-tag-internal): Improve exact tag matching for tags
+       with name fields. Before the patch return types of functions or
+       function parameters (with exuberant ctags) were found as matches.
+
+2004-04-21  Sven Grundmann  <sven@hellerhof.de>
+
+       * list-mode.el (display-completion-list): Fixed completion list was
+       taking the width of the frame and not of the window for displaying
+       the selection methods.
+
+2004-04-18  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * menubar-items.el (default-menubar): Options are saved to custom.el.
+
+
+2004-02-23  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * isearch-mode.el (isearch-abort): Preserve successful search target.
+
+2004-03-27  Adrian Aichner  <adrian@xemacs.org>
+
+       * gnuserv.el: Sync with 21.5 version, inspired by bugreport and
+       (make-variable-buffer-local 'gnuserv-minor-mode) patch by Robert
+       Bihlmeyer.
+       * gnuserv.el (gnuserv-mode-line-string): New.
+       * gnuserv.el (gnuserv-minor-mode): Make it buffer-local, not
+       gnuserv-mode.
+       * gnuserv.el (make-x-device-with-gtk-fallback): New.
+       * gnuserv.el (gnuserv-edit-files): Use
+       make-x-device-with-gtk-fallback.
+
+2004-03-23  Malcolm Purvis  <malcolmpurvis@optushome.com.au>
+
+       * gtk-widgets.el: New import: gtk-accel-group-new.
+       * dialog-gtk.el:
+       * dialog-gtk.el (gtk-popup-convert-underscores): New.
+       * dialog-gtk.el (popup-builtin-question-dialog):
+       Added support for dialog button mnemonics.
+
+2004-03-22  Chris Green <cmg@dok.org>
+
+       * process.el (shell-command): Output buffer was ignored when a
+       background process was run via shell-command.
+
+2004-03-19  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * cus-edit.el (custom-save-variables): Retrieve a list of
+       variables to save first, sort it, and make sure the variables are
+       saved in sorted order.
+
+2004-02-23  Steve Youngs  <sryoungs@bigpond.net.au>
+       * package-get.el (package-get-update-base-from-buffer): Force
+       binary coding system for verifying GnuPG signature in the
+       package-index file.
+2003-07-06  Adrian Aichner  <adrian@xemacs.org>
+
+       * package-get.el (package-get-package-index-file-location): Handle
+       missing "EMACSPACKAGEPATH" environment variable.
+
+2003-07-05  Adrian Aichner  <adrian@xemacs.org>
+
+       * package-admin.el (package-admin-find-top-directory): Simplify
+       directory comparisions and fix substring errors on short path
+       components.
+       * package-get.el (package-get-package-index-file-location):
+       Default to first component of "EMACSPACKAGEPATH", if set.
+
+2004-02-16  Steve Youngs  <sryoungs@bigpond.net.au>
+
+       * package-get.el (process-error): New error datum.
+
 2004-02-02  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.15 is released
index 4dc16b8..670a8c8 100644 (file)
@@ -864,8 +864,7 @@ in the tag table that matches the tagname used in the previous find-tag.
 the tag.
 
 This version of this function supports multiple active tags tables,
-and completion. See also the commands `\\[push-tag-mark]' and
-`\\[pop-tag-mark]'.
+and completion.
 
 Variables of note:
 
@@ -1248,6 +1247,8 @@ Return a font descriptor object for FONTNAME, appropriate for DEVICE." nil nil)
 \f
 ;;;### (autoloads (gnuserv-start gnuserv-running-p) "gnuserv" "lisp/gnuserv.el")
 
+(defcustom gnuserv-mode-line-string " Server" "*String to display in the modeline when Gnuserv is active.\nSet this to nil if you don't want a modeline indicator." :type '(choice string (const :tag "none" nil)) :group 'gnuserv)
+
 (defcustom gnuserv-frame nil "*The frame to be used to display all edited files.\nIf nil, then a new frame is created for each file edited.\nIf t, then the currently selected frame will be used.\nIf a function, then this will be called with a symbol `x' or `tty' as the\nonly argument, and its return value will be interpreted as above." :tag "Gnuserv Frame" :type '(radio (const :tag "Create new frame each time" nil) (const :tag "Use selected frame" t) (function-item :tag "Use main Emacs frame" gnuserv-main-frame-function) (function-item :tag "Use visible frame, otherwise create new" gnuserv-visible-frame-function) (function-item :tag "Create special Gnuserv frame and use it" gnuserv-special-frame-function) (function :tag "Other")) :group 'gnuserv :group 'frames)
 
 (autoload 'gnuserv-running-p "gnuserv" "\
@@ -1501,7 +1502,7 @@ recent to least recent -- in other words, the version names don't have to
 be lexically ordered.  It is debatable if it makes sense to have more than
 one version of a package available.")
 
-(defcustom package-get-package-index-file-location (or (getenv "EMACSPACKAGEPATH") user-init-directory) "*The directory where the package-index file can be found." :type 'directory :group 'package-get)
+(defcustom package-get-package-index-file-location (car (split-path (or (getenv "EMACSPACKAGEPATH") user-init-directory))) "*The directory where the package-index file can be found." :type 'directory :group 'package-get)
 
 (defcustom package-get-install-to-user-init-directory nil "*If non-nil install packages under `user-init-directory'." :type 'boolean :group 'package-get)
 
index f5be73d..a7bbe8d 100644 (file)
@@ -2946,7 +2946,7 @@ If FORM is a lambda or a macro, byte-compile it as a function."
 (byte-defop-compiler char-after                0-1+1)
 (byte-defop-compiler set-buffer                1)
 ;;(byte-defop-compiler set-mark                1) ;; obsolete
-(byte-defop-compiler forward-word      1+1)
+(byte-defop-compiler forward-word      0-1+1)
 (byte-defop-compiler char-syntax       1+1)
 (byte-defop-compiler nreverse          1)
 (byte-defop-compiler car-safe          1)
index cb69ba7..1cfdaf2 100644 (file)
 (require 'gtk-password-dialog)
 (require 'gtk-file-dialog)
 
+(defun gtk-popup-convert-underscores (str)
+  ;; Convert the XEmacs button accelerator representation to Gtk mnemonic
+  ;; form.  If no accelerator has been provided, put one at the start of the
+  ;; string (this mirrors the behaviour under X). This algorithm is also found
+  ;; in menubar-gtk.c:convert_underscores().
+  (let ((new-str (string))
+       (i 0)
+       (found-accel nil))
+    (while (< i (length str))
+      (let ((c (aref str i)))
+       (cond ((eq c ?%)
+              (setq i (1+ i))
+              (if (and (not (eq (aref str i) ?_)) (not (eq (aref str i) ?%)))
+                  (setq i (1- i)))
+              (setq found-accel 1)
+              )
+             ((eq c ?_)
+               (setq new-str (concat new-str "_")))
+              ))
+       (setq new-str (concat new-str (string (aref str i))))
+       (setq i (1+ i))
+       )
+    (if found-accel new-str (concat "_" new-str)) 
+    ))
+
 (defun popup-builtin-open-dialog (keys)
   ;; Allowed keywords are:
   ;;
        (callback nil)
        (flushrightp nil)
        (length nil)
+       (label nil)
+       (gui-button nil)
+       (accel-group (gtk-accel-group-new))
+       (accel-key nil)
        (errp t))
     (if (not buttons-descr)
        (error 'syntax-error
                        (setq activep (plist-get plist :active)
                              callback (plist-get plist :callback)))))
 
-                   (push (gtk-button-new-with-label (aref button 0)) buttons)
+                   ;; Create the label and determine what the mnemonic key is.
+                   (setq label (gtk-label-new ""))
+                   (setq accel-key (gtk-label-parse-uline label
+                                                          (gtk-popup-convert-underscores (aref button 0))))
+                   ;; Place the label in the button.
+                   (gtk-misc-set-alignment label 0.5 0.5)
+                   (setq gui-button (gtk-button-new))
+                   (gtk-container-add gui-button label)
+                   ;; Add ALT-mnemonic to the dialog's accelerator group.
+                   (gtk-widget-add-accelerator gui-button "clicked" accel-group
+                                               accel-key
+                                               8 ; GDK_MOD1_MASK
+                                               4 ; GTK_ACCEL_LOCKED
+                                               )
+                   
+                   (push gui-button buttons)
                    (gtk-widget-set-sensitive (car buttons) (eval activep))
                    
                    ;; Apply the callback
          (gtk-window-set-transient-for dialog (frame-property nil 'shell-widget))
          (put dialog 'type 'dialog)
          (put dialog 'modal t)
+         ;; Make the dialog listen for global mnemonic keys.
+         (gtk-window-add-accel-group dialog accel-group)
+
          (gtk-widget-show-all dialog)
          (gtk-main)
          (gtk-widget-destroy dialog)
index 075594c..d590007 100644 (file)
@@ -31,6 +31,8 @@
 (eval-and-compile
   (require 'gtk-ffi))
 
+(gtk-import-function GtkAccelGroup gtk_accel_group_new)
+
 (gtk-import-function GtkType gtk_accel_label_get_type)
 (gtk-import-function GtkWidget gtk_accel_label_new GtkString)
 (gtk-import-function guint gtk_accel_label_get_accel_width GtkAccelLabel)
index b8b4e25..02ef1d3 100644 (file)
        "\e$B!#\e(B"
        "\\)"
        "[ \t\n]*"))
-(setq paragraph-start    "^[ \e$B!!\e(B\t\n\f]")
-(setq paragraph-separate "^[ \e$B!!\e(B\t\f]*$")
+
+;; allow paragraphs to start with a zenkaku space
+(setq paragraph-start    "[ \e$B!!\e(B\t\n\f]")
+(setq paragraph-separate "[ \e$B!!\e(B\t\f]*$")
 
 ;; EGG specific setup
 (define-egg-environment 'japanese
index 661a84c..c85c55d 100644 (file)
@@ -56,9 +56,10 @@ describes meaning of keys:
                kangxi                                  \e$B9/_f;zE5\e(B
                guangyun (kouin)                        \e$B9-1$\e(B
                daikanwa (morohashi-daikanwa)           \e$BBg4AOB<-E5\e(B
+               (goonruiju)                             \e$B8^2;N`f\\e(B
                ruijumyougishou (ruishuu-meigishou)     \e$BN`f\L>5A>6\e(B
                zhengyun (seiin)                        \e$B@51$\e(B
-               zhengzi-tong (seiji-tsuu)               \e$B@5;z\e$(CwW\e(B
+               zhengzitong (zhengzi-tong, seiji-tsuu)  \e$B@5;z\e$(CwW\e(B
                shuowen-tongxun-dingsheng
                        (setsumon-tsuukun-teisei)       \e$B@bJ8DL71Djfa\e(B
                shuowen                                 \e$B@bJ8\e(B
index 38a151a..06b74d7 100644 (file)
 
 (defvar foo)
 
-(defun gtk-widget-instantiate-button-internal (plist callback)
+(defun gtk-widget-get-callback (widget plist instance)
+  (let ((cb (plist-get plist :callback))
+       (ex (plist-get plist :callback-ex))
+       (real-cb nil))
+    (cond
+     (ex
+      (gtk-signal-connect widget 'button-release-event
+                         (lambda (widget event data)
+                           (put widget 'last-event event)))
+      `(lambda (widget &rest ignored)
+        (funcall ,ex ,instance (get widget 'last-event))))
+     (cb
+      `(lambda (widget &rest ignored)
+        (if (functionp ,real-cb)
+            (funcall ,real-cb)
+          (eval ,real-cb))))
+     (t
+      nil))))
+
+(defun gtk-widget-instantiate-button-internal (plist instance)
   (let* ((type (or (plist-get plist :style) 'button))
         (label (or (plist-get plist :descriptor) (symbol-name type)))
         (widget nil))
     (case type
       (button
        (setq widget (gtk-button-new-with-label label))
-       (gtk-signal-connect widget 'clicked (lambda (wid real-cb)
-                                            (if (functionp real-cb)
-                                                (funcall real-cb)
-                                              (eval real-cb)))
-                          callback))
+       (gtk-signal-connect widget 'clicked
+                          (gtk-widget-get-callback widget plist instance)))
       (radio
        (let ((aux nil)
             (selected-p (plist-get plist :selected)))
                    "bogus sibling"))
         (gtk-toggle-button-set-active widget (eval selected-p))
         (gtk-signal-connect widget 'toggled
-                            (lambda (wid data)
-                              ;; data is (real-cb . sibling)
-                              )
-                            (cons callback aux))))
+                            (gtk-widget-get-callback widget plist instance) aux)))
       (otherwise
        ;; Check boxes
        (setq widget (gtk-check-button-new-with-label label))
        (gtk-toggle-button-set-active widget
                                     (eval (plist-get plist :selected)))
        (gtk-signal-connect widget 'toggled
-                          (lambda (wid real-cb)
-                            (if (functionp real-cb)
-                                (funcall real-cb)
-                              (eval real-cb)))
-                          callback)))
-
+                          (gtk-widget-get-callback widget plist instance))))
     (gtk-widget-show-all widget)
     widget))
 
 (defun gtk-widget-instantiate-notebook-internal (plist callback)
   (let ((widget (gtk-notebook-new))
        (items (plist-get plist :items)))
-    (while items
-      (gtk-notebook-append-page widget
-                               (gtk-vbox-new nil 3)
-                               (gtk-label-new (aref (car items) 0)))
-      (setq items (cdr items)))
+;     (while items
+;       (gtk-notebook-append-page widget
+;                              (gtk-vbox-new nil 3)
+;                              (gtk-label-new (aref (car items) 0)))
+;       (setq items (cdr items)))
     widget))
 
 (defun gtk-widget-instantiate-progress-internal (plist callback)
   (let* ((type (aref instantiator 0))
         (plist (cdr (map 'list 'identity instantiator)))
         (widget (funcall (or (get type 'instantiator) 'ignore)
-                         plist (or (plist-get plist :callback) 'ignore))))
-    (add-timeout 0.1 (lambda (obj)
-                      (gtk-widget-set-style obj
-                                            (gtk-widget-get-style
-                                             (frame-property nil 'text-widget))))
-                widget)
+                         plist instance)))
+;     (add-timeout 0.1 (lambda (obj)
+;                     (gtk-widget-set-style obj
+;                                           (gtk-widget-get-style
+;                                            (frame-property nil 'text-widget))))
+;               widget)
     (setq x widget)
     widget))
 
index 207a1ff..cfb0e54 100644 (file)
@@ -305,13 +305,6 @@ RadioExpose (Widget w,
         * but it bears thinking on.
         */
 
-       /* Command widget may sometimes override the label GC in order
-        * to draw inverse video.  We don't use inverse video, so we need
-        * to restore the label's normal GC.
-        */
-       rw->label.normal_GC = rw->command.normal_GC ;
-
-
        /* Let label widget draw the label.  If there was an lbm_x
         * field, we could let Label draw the bitmap too.  But there
         * isn't, so we need to temporarily remove the bitmap and
index 7a19f38..dcdfabf 100644 (file)
@@ -1,3 +1,11 @@
+2005-02-06  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.17 is released
+
+2004-12-05  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.16 is released
+
 2004-02-02  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.15 is released
index 4a7520b..fe58c57 100644 (file)
-//Microsoft Developer Studio generated resource script.\r
-//\r
-#include "resource.h"\r
-\r
-#define APSTUDIO_READONLY_SYMBOLS\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Generated from the TEXTINCLUDE 2 resource.\r
-//\r
-#define APSTUDIO_HIDDEN_SYMBOLS\r
-#include "windows.h"\r
-#undef APSTUDIO_HIDDEN_SYMBOLS\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-#undef APSTUDIO_READONLY_SYMBOLS\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-// English (U.S.) resources\r
-\r
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r
-#ifdef _WIN32\r
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US\r
-#pragma code_page(1252)\r
-#endif //_WIN32\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Dialog\r
-//\r
-\r
-IDD_SOURCE DIALOG DISCARDABLE  0, 0, 311, 201\r
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "XEmacs Setup"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    PUSHBUTTON      "Next >",IDOK,199,176,45,15,WS_GROUP\r
-    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15\r
-    CONTROL         "Download from the Internet",IDC_SOURCE_DOWNLOAD,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,127,102,152,10\r
-    CONTROL         "Install from the Internet",IDC_SOURCE_NETINST,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,127,121,87,10\r
-    CONTROL         "Install from Local Directory",IDC_SOURCE_CWD,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,127,140,104,10\r
-    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "Setup will use the following installation method.",\r
-                    IDC_STATIC,112,11,170,17\r
-    LTEXT           "To exit setup click Cancel at any time.",IDC_STATIC,112,\r
-                    32,166,17\r
-    GROUPBOX        "Installation method",IDC_STATIC,113,84,188,77\r
-    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62\r
-END\r
-\r
-IDD_LOCAL_DIR DIALOG DISCARDABLE  0, 0, 311, 201\r
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Local package directory"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Next >",IDOK,199,176,45,15,WS_DISABLED\r
-    PUSHBUTTON      "< Back",IDC_BACK,154,176,45,15\r
-    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15\r
-    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP\r
-    EDITTEXT        IDC_LOCAL_DIR,120,138,122,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "Browse...",IDC_LOCAL_DIR_BROWSE,252,137,38,14\r
-    LTEXT           "Setup will use the following folder to install XEmacs and / or packages from.",\r
-                    IDC_STATIC,112,10,170,17\r
-    LTEXT           "To select a different folder, click Browse and select another folder.",\r
-                    IDC_STATIC,112,36,170,18\r
-    LTEXT           "To exit setup click Cancel at any time.",IDC_STATIC,112,\r
-                    63,166,17\r
-    GROUPBOX        "Local Package Directory",IDC_STATIC,112,126,186,31\r
-    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62\r
-END\r
-\r
-IDD_ROOT DIALOG DISCARDABLE  0, 0, 311, 201\r
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "XEmacs Setup"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Next >",IDOK,199,176,45,15\r
-    PUSHBUTTON      "< Back",IDC_BACK,154,176,45,15\r
-    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15\r
-    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP\r
-    EDITTEXT        IDC_ROOT_DIR,120,138,122,12,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "Browse...",IDC_ROOT_BROWSE,252,137,38,14\r
-    LTEXT           "Setup will use the following folder in which to install XEmacs and / or packages.",\r
-                    IDC_STATIC,112,10,170,17\r
-    LTEXT           "To select a different folder, click Browse and select another folder.",\r
-                    IDC_STATIC,112,35,170,18\r
-    LTEXT           "To exit setup click Cancel at any time.",IDC_STATIC,112,\r
-                    63,166,17\r
-    GROUPBOX        "Installation Root Directory",IDC_STATIC,112,126,186,31\r
-    CONTROL         "All",IDC_ROOT_SYSTEM,"Button",BS_AUTORADIOBUTTON | \r
-                    WS_GROUP,177,110,25,8\r
-    CONTROL         "Just Me",IDC_ROOT_USER,"Button",BS_AUTORADIOBUTTON,220,\r
-                    110,50,8\r
-    LTEXT           "Installation Type :",IDC_STATIC,112,95,60,8\r
-    LTEXT           "Install For :",IDC_STATIC,112,110,43,8\r
-    CONTROL         "Native",IDC_INSTALL_NATIVE,"Button",BS_AUTORADIOBUTTON,\r
-                    177,93,37,10\r
-    CONTROL         "Cygwin",IDC_INSTALL_CYGWIN,"Button",BS_AUTORADIOBUTTON,\r
-                    220,93,39,10\r
-    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62\r
-END\r
-\r
-IDD_SITE DIALOG DISCARDABLE  0, 0, 311, 201\r
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "XEmacs Setup"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Next >",IDOK,199,176,45,15\r
-    PUSHBUTTON      "< Back",IDC_BACK,154,176,45,15\r
-    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15\r
-    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "Select Download Site",IDC_STATIC,113,11,135,11\r
-    LISTBOX         IDC_URL_LIST,121,24,179,136,LBS_NOINTEGRALHEIGHT | \r
-                    WS_VSCROLL | WS_HSCROLL | WS_TABSTOP\r
-    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62\r
-END\r
-\r
-IDD_OTHER_URL DIALOG DISCARDABLE  0, 0, 311, 201\r
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "XEmacs Setup"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Next >",IDOK,199,176,45,15\r
-    PUSHBUTTON      "< Back",IDC_BACK,154,176,45,15\r
-    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15\r
-    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP\r
-    EDITTEXT        IDC_OTHER_URL,120,138,170,12,ES_AUTOHSCROLL\r
-    LTEXT           "Setup will use the following URL to install XEmacs and / or packages from.",\r
-                    IDC_STATIC,112,10,170,17\r
-    LTEXT           "To select a different URL, edit the text.",IDC_STATIC,\r
-                    112,36,170,18\r
-    LTEXT           "To exit setup click Cancel at any time.",IDC_STATIC,112,\r
-                    58,166,17\r
-    GROUPBOX        "Select URL to download from",IDC_STATIC,112,126,186,31\r
-    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62\r
-END\r
-\r
-IDD_NET DIALOG DISCARDABLE  0, 0, 311, 201\r
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "XEmacs Setup"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    PUSHBUTTON      "Next >",IDOK,199,176,45,15,WS_GROUP\r
-    PUSHBUTTON      "< Back",IDC_BACK,154,176,45,15\r
-    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15\r
-    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "Setup will use the following connection method.",\r
-                    IDC_STATIC,112,11,170,17,NOT WS_GROUP\r
-    LTEXT           "To exit setup click Cancel at any time.",IDC_STATIC,112,\r
-                    32,166,17,NOT WS_GROUP\r
-    CONTROL         "Use IE5 Settings",IDC_NET_IE5,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,128,93,69,10\r
-    CONTROL         "Direct Connection",IDC_NET_DIRECT,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,128,109,73,10\r
-    CONTROL         "Use HTTP/FTP Proxy:",IDC_NET_PROXY,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,128,124,88,10\r
-    EDITTEXT        IDC_PROXY_HOST,128,141,80,12,ES_AUTOHSCROLL | \r
-                    WS_DISABLED\r
-    LTEXT           "Proxy",IDC_STATIC,10,55,50,15,SS_CENTERIMAGE,\r
-                    WS_EX_RIGHT\r
-    LTEXT           "Port",IDC_STATIC,229,139,20,15,SS_CENTERIMAGE,\r
-                    WS_EX_RIGHT\r
-    EDITTEXT        IDC_PROXY_PORT,257,141,30,12,ES_AUTOHSCROLL | \r
-                    WS_DISABLED\r
-    GROUPBOX        "Installation method",IDC_STATIC,113,78,188,83\r
-    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62\r
-END\r
-\r
-IDD_DLSTATUS DIALOG DISCARDABLE  0, 0, 311, 201\r
-STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_CENTER | WS_POPUP | WS_VISIBLE | \r
-    WS_CAPTION | WS_SYSMENU\r
-CAPTION "XEmacs Setup"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15\r
-    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "Downloading Packages",IDC_STATIC,112,10,170,17\r
-    LTEXT           "(URL)",IDC_DLS_URL,112,26,170,11\r
-    LTEXT           "(RATE)",IDC_DLS_RATE,112,41,166,11\r
-    CONTROL         "Progress1",IDC_DLS_PROGRESS,"msctls_progress32",\r
-                    WS_BORDER,123,143,165,10\r
-    GROUPBOX        "Progress",IDC_STATIC,112,130,186,31\r
-    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62\r
-END\r
-\r
-IDD_INSTATUS DIALOG DISCARDABLE  0, 0, 311, 201\r
-STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_CENTER | WS_POPUP | WS_VISIBLE | \r
-    WS_CAPTION | WS_SYSMENU\r
-CAPTION "XEmacs Setup"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15\r
-    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "Installing Packages",IDC_STATIC,112,10,170,17\r
-    LTEXT           "(PKG)",IDC_INS_PKG,112,26,170,11\r
-    LTEXT           "(FILE)",IDC_INS_FILE,112,41,183,11\r
-    CONTROL         "Progress1",IDC_INS_DISKFULL,"msctls_progress32",\r
-                    WS_BORDER,123,143,165,10\r
-    CONTROL         "Progress1",IDC_INS_IPROGRESS,"msctls_progress32",\r
-                    WS_BORDER,125,106,163,10\r
-    CONTROL         "Progress1",IDC_INS_PPROGRESS,"msctls_progress32",\r
-                    WS_BORDER,125,67,163,10\r
-    GROUPBOX        "Disk",IDC_STATIC,112,130,186,31\r
-    GROUPBOX        "Package",IDC_STATIC,112,54,186,31\r
-    GROUPBOX        "Total",IDC_STATIC,112,93,186,31\r
-    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62\r
-END\r
-\r
-IDD_UNINSTALL DIALOG DISCARDABLE  0, 0, 311, 201\r
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Uninstall XEmacs"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    PUSHBUTTON      "Cancel",IDCANCEL,199,176,45,15\r
-    DEFPUSHBUTTON   "Uninstall",IDOK,256,176,45,15\r
-    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "Uninstalling Packages",IDC_STATIC,112,10,170,17\r
-    LTEXT           "(PKG)",IDC_UNINS_PKG,112,26,170,11\r
-    LTEXT           "(FILE)",IDC_UNINS_FILE,112,41,166,11\r
-    CONTROL         "Progress1",IDC_UNINS_DISKFULL,"msctls_progress32",\r
-                    WS_BORDER,123,143,165,10\r
-    CONTROL         "Progress1",IDC_UNINS_IPROGRESS,"msctls_progress32",\r
-                    WS_BORDER,125,106,163,10\r
-    CONTROL         "Progress1",IDC_UNINS_PPROGRESS,"msctls_progress32",\r
-                    WS_BORDER,125,67,163,10\r
-    GROUPBOX        "Disk",IDC_STATIC,112,130,186,31\r
-    GROUPBOX        "Package",IDC_STATIC,112,54,186,31\r
-    GROUPBOX        "Total",IDC_STATIC,112,93,186,31\r
-    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62\r
-END\r
-\r
-IDD_PROXY_AUTH DIALOG DISCARDABLE  0, 0, 215, 95\r
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "XEmacs Setup"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    ICON            IDI_XEMACS,IDC_STATIC,5,5,20,20\r
-    EDITTEXT        IDC_NET_USER,65,28,145,12,ES_AUTOHSCROLL\r
-    LTEXT           "Proxy User ID",IDC_STATIC,5,28,55,15,SS_CENTERIMAGE,\r
-                    WS_EX_RIGHT\r
-    EDITTEXT        IDC_NET_PASSWD,65,43,145,12,ES_PASSWORD | ES_AUTOHSCROLL\r
-    LTEXT           "Password",IDC_STATIC,10,43,50,15,SS_CENTERIMAGE,\r
-                    WS_EX_RIGHT\r
-    LTEXT           "Proxy Authorization Required",IDC_STATIC,65,10,145,10\r
-    DEFPUSHBUTTON   "OK",IDOK,100,75,45,15,WS_DISABLED\r
-    PUSHBUTTON      "Cancel",IDCANCEL,165,75,45,15\r
-END\r
-\r
-IDD_NET_AUTH DIALOG DISCARDABLE  0, 0, 215, 95\r
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "XEmacs Setup"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    ICON            IDI_XEMACS,IDC_STATIC,5,5,20,20\r
-    EDITTEXT        IDC_NET_USER,65,28,145,12,ES_AUTOHSCROLL\r
-    LTEXT           "User ID",IDC_STATIC,5,28,55,15,SS_CENTERIMAGE,\r
-                    WS_EX_RIGHT\r
-    EDITTEXT        IDC_NET_PASSWD,65,43,145,12,ES_PASSWORD | ES_AUTOHSCROLL\r
-    LTEXT           "Password",IDC_STATIC,10,43,50,15,SS_CENTERIMAGE,\r
-                    WS_EX_RIGHT\r
-    LTEXT           "Server Authorization Required",IDC_STATIC,65,10,145,10\r
-    DEFPUSHBUTTON   "OK",IDOK,100,75,45,15,WS_DISABLED\r
-    PUSHBUTTON      "Cancel",IDCANCEL,165,75,45,15\r
-END\r
-\r
-IDD_SPLASH DIALOG DISCARDABLE  0, 0, 311, 201\r
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "XEmacs Setup"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Next >",IDOK,199,176,45,15\r
-    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15\r
-    ICON            IDI_XEMACS,IDC_STATIC,107,10,20,20\r
-    LTEXT           "Welcome to the XEmacs Net Release Setup Program. This will install XEmacs and/or associated packages on your computer.",\r
-                    IDC_STATIC,133,10,158,29\r
-    LTEXT           "Version (unknown)",IDC_VERSION,112,117,120,10\r
-    LTEXT           "Copyright (C) 2000 Red Hat Inc",IDC_STATIC,111,132,135,\r
-                    8\r
-    LTEXT           "http://www.xemacs.org/",IDC_STATIC,111,147,150,10\r
-    LTEXT           "It is strongly recommended that you exit all Windows programs before running this utility.",\r
-                    IDC_STATIC,110,43,191,19\r
-    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP\r
-    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62\r
-END\r
-\r
-IDD_CHOOSE DIALOG DISCARDABLE  0, 0, 311, 239\r
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "XEmacs Setup"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Next >",IDOK,199,214,45,15\r
-    PUSHBUTTON      "< Back",IDC_BACK,154,214,45,15\r
-    PUSHBUTTON      "Cancel",IDCANCEL,256,214,45,15\r
-    LTEXT           "",IDC_STATIC,10,201,291,1,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "Select packages to install",IDC_STATIC,55,5,85,8\r
-    ICON            IDI_XEMACS,IDC_STATIC,5,5,21,20\r
-    LTEXT           "",IDC_LISTVIEW_POS,55,15,230,155,SS_SUNKEN | NOT \r
-                    WS_VISIBLE | NOT WS_GROUP\r
-    CONTROL         "SPIN",IDC_STATIC,"Static",SS_BITMAP,55,170,15,13\r
-    LTEXT           "= click to choose action, (p) = previous version, (x) = experimental",\r
-                    IDC_STATIC,65,170,220,8\r
-    PUSHBUTTON      "Full/Part",IDC_CHOOSE_FULLPART,250,5,35,10\r
-    PUSHBUTTON      "Exp",IDC_CHOOSE_EXP,215,5,25,10\r
-    PUSHBUTTON      "Curr",IDC_CHOOSE_CURR,190,5,25,10\r
-    PUSHBUTTON      "Prev",IDC_CHOOSE_PREV,165,5,25,10\r
-END\r
-\r
-IDD_DESKTOP DIALOG DISCARDABLE  0, 0, 311, 201\r
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
-CAPTION "XEmacs Setup"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-    DEFPUSHBUTTON   "Finish",IDOK,199,176,45,15\r
-    PUSHBUTTON      "< Back",IDC_BACK,154,176,45,15\r
-    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15\r
-    LTEXT           "Setup has now finished. To create desktop shortcuts, please select from the following options.",\r
-                    IDC_STATIC,112,11,170,17\r
-    LTEXT           "To complete setup click Finish.",IDC_STATIC,112,32,166,\r
-                    17\r
-    CONTROL         "Create Desktop Icon",IDC_ROOT_DESKTOP,"Button",\r
-                    BS_AUTOCHECKBOX,113,50,100,8\r
-    CONTROL         "Add to Start Menu",IDC_ROOT_MENU,"Button",\r
-                    BS_AUTOCHECKBOX,113,66,100,8\r
-    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62\r
-    CONTROL         "Text",IDC_TXT_TYPE,"Button",BS_AUTOCHECKBOX,209,101,38,\r
-                    8\r
-    CONTROL         "Java",IDC_JAVA_TYPE,"Button",BS_AUTOCHECKBOX,113,100,50,\r
-                    8\r
-    CONTROL         "C",IDC_C_TYPE,"Button",BS_AUTOCHECKBOX,113,116,41,8\r
-    CONTROL         "C++",IDC_CPP_TYPE,"Button",BS_AUTOCHECKBOX,113,133,38,8\r
-    CONTROL         "E-Lisp",IDC_ELISP_TYPE,"Button",BS_AUTOCHECKBOX,113,148,\r
-                    38,8\r
-    LTEXT           "Register XEmacs for these file types:",IDC_STATIC,113,\r
-                    84,166,13\r
-    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP\r
-    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP\r
-    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62\r
-    CONTROL         "IDL",IDC_IDL_TYPE,"Button",BS_AUTOCHECKBOX,209,116,38,8\r
-END\r
-\r
-\r
-#ifdef APSTUDIO_INVOKED\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// TEXTINCLUDE\r
-//\r
-\r
-1 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "resource.h\0"\r
-END\r
-\r
-2 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"\r
-    "#include ""windows.h""\r\n"\r
-    "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"\r
-    "\0"\r
-END\r
-\r
-3 TEXTINCLUDE DISCARDABLE \r
-BEGIN\r
-    "\r\n"\r
-    "\0"\r
-END\r
-\r
-#endif    // APSTUDIO_INVOKED\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Icon\r
-//\r
-\r
-// Icon with lowest ID value placed first to ensure application icon\r
-// remains consistent on all systems.\r
-IDI_XEMACS              ICON    DISCARDABLE     "xemacs.ico"\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// FILE\r
-//\r
-\r
-XEMACS.ICON             FILE    DISCARDABLE     "xemacs.ico"\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// DESIGNINFO\r
-//\r
-\r
-#ifdef APSTUDIO_INVOKED\r
-GUIDELINES DESIGNINFO DISCARDABLE \r
-BEGIN\r
-    IDD_SOURCE, DIALOG\r
-    BEGIN\r
-        VERTGUIDE, 113\r
-        VERTGUIDE, 127\r
-    END\r
-\r
-    IDD_LOCAL_DIR, DIALOG\r
-    BEGIN\r
-        VERTGUIDE, 112\r
-        HORZGUIDE, 10\r
-    END\r
-\r
-    IDD_ROOT, DIALOG\r
-    BEGIN\r
-        VERTGUIDE, 112\r
-        HORZGUIDE, 103\r
-        HORZGUIDE, 118\r
-    END\r
-\r
-    IDD_SITE, DIALOG\r
-    BEGIN\r
-        HORZGUIDE, 11\r
-        HORZGUIDE, 161\r
-    END\r
-\r
-    IDD_NET, DIALOG\r
-    BEGIN\r
-        VERTGUIDE, 128\r
-        BOTTOMMARGIN, 191\r
-        HORZGUIDE, 153\r
-    END\r
-\r
-    IDD_INSTATUS, DIALOG\r
-    BEGIN\r
-        VERTGUIDE, 112\r
-        VERTGUIDE, 125\r
-        VERTGUIDE, 288\r
-    END\r
-\r
-    IDD_PROXY_AUTH, DIALOG\r
-    BEGIN\r
-        BOTTOMMARGIN, 49\r
-    END\r
-\r
-    IDD_NET_AUTH, DIALOG\r
-    BEGIN\r
-        BOTTOMMARGIN, 49\r
-    END\r
-\r
-    IDD_SPLASH, DIALOG\r
-    BEGIN\r
-        LEFTMARGIN, 10\r
-        RIGHTMARGIN, 301\r
-        TOPMARGIN, 10\r
-        BOTTOMMARGIN, 191\r
-    END\r
-\r
-    IDD_CHOOSE, DIALOG\r
-    BEGIN\r
-        BOTTOMMARGIN, 229\r
-        HORZGUIDE, 214\r
-    END\r
-\r
-    IDD_DESKTOP, DIALOG\r
-    BEGIN\r
-        VERTGUIDE, 113\r
-        VERTGUIDE, 209\r
-        HORZGUIDE, 124\r
-    END\r
-END\r
-#endif    // APSTUDIO_INVOKED\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Bitmap\r
-//\r
-\r
-SPIN                    BITMAP  DISCARDABLE     "choose-spin.bmp"\r
-IDB_SPIN                BITMAP  DISCARDABLE     "choose-spin.bmp"\r
-IDB_RTARROW             BITMAP  DISCARDABLE     "choose-rtarrow.bmp"\r
-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
-IDB_GNU                 BITMAP  DISCARDABLE     "gnu.bmp"\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// String Table\r
-//\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    IDS_ROOT_SLASH          "Warning: we recommend you do NOT use the root of your hard drive as the XEmacs root.  Proceed anyway?"\r
-    IDS_ROOT_SPACE          "You should not choose a root path that include spaces in directory names.  Proceed anyway?"\r
-    IDS_MIRROR_LST          "http://www.xemacs.org/Download/mirrors.lst"\r
-    IDS_DIALOG_FAILED       "Unable to create Dialog Box"\r
-    IDS_CYGWIN_FUNC_MISSING "Error: unable to find function `%s' in %s"\r
-    IDS_DOWNLOAD_SHORT      "Download error: %s too short (%d, wanted %d)"\r
-    IDS_ERR_OPEN_WRITE      "Can't open %s for writing: %s"\r
-    IDS_SETUPINI_MISSING    "Unable to get setup.ini from %s"\r
-    IDS_OLD_SETUPINI        "This setup.ini is older than the one you used last time you installed cygwin.  Proceed anyway?"\r
-    IDS_ERR_RENAME          "Can't rename %s to %s: %s"\r
-    IDS_NOTHING_INSTALLED   "Nothing needed to be installed"\r
-    IDS_INSTALL_COMPLETE    "Installation Complete"\r
-END\r
-\r
-STRINGTABLE DISCARDABLE \r
-BEGIN\r
-    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.2.2.1.2.1 2002/05/18 07:47:27 stephent 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
-    IDS_ERR_CHDIR           "Could not change dir to %s"\r
-    IDS_OLD_SETUP_VERSION   "This setup is version %s, but setup.ini claims version %s is available.\nYou might want to upgrade to get the latest features and bug fixes."\r
-    IDS_DOWNLOAD_FAILED     "Unable to download %s"\r
-    IDS_DOWNLOAD_INCOMPLETE "Download Incomplete.  Try again?"\r
-    IDS_INSTALL_INCOMPLETE  "Installation incomplete.  Check /setup.log.full for details"\r
-    IDS_ROOT_NOCYGWIN       "You should not install the Cygwin version without Cygwin installed.  Proceed anyway?"\r
-    IDS_CREATE_DIR          "The directory %s does not exist, create it?"\r
-END\r
-\r
-#endif    // English (U.S.) resources\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-\r
-\r
-#ifndef APSTUDIO_INVOKED\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Generated from the TEXTINCLUDE 3 resource.\r
-//\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////////\r
-#endif    // not APSTUDIO_INVOKED\r
-\r
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "windows.h"
+#undef APSTUDIO_HIDDEN_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_SOURCE DIALOG DISCARDABLE  0, 0, 311, 201
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "XEmacs Setup"
+FONT 8, "MS Sans Serif"
+BEGIN
+    PUSHBUTTON      "Next >",IDOK,199,176,45,15,WS_GROUP
+    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15
+    CONTROL         "Download from the Internet",IDC_SOURCE_DOWNLOAD,"Button",
+                    BS_AUTORADIOBUTTON | WS_TABSTOP,127,102,152,10
+    CONTROL         "Install from the Internet",IDC_SOURCE_NETINST,"Button",
+                    BS_AUTORADIOBUTTON | WS_TABSTOP,127,121,87,10
+    CONTROL         "Install from Local Directory",IDC_SOURCE_CWD,"Button",
+                    BS_AUTORADIOBUTTON | WS_TABSTOP,127,140,104,10
+    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "Setup will use the following installation method.",
+                    IDC_STATIC,112,11,170,17
+    LTEXT           "To exit setup click Cancel at any time.",IDC_STATIC,112,
+                    32,166,17
+    GROUPBOX        "Installation method",IDC_STATIC,113,84,188,77
+    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62
+END
+
+IDD_LOCAL_DIR DIALOG DISCARDABLE  0, 0, 311, 201
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Local package directory"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Next >",IDOK,199,176,45,15,WS_DISABLED
+    PUSHBUTTON      "< Back",IDC_BACK,154,176,45,15
+    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15
+    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP
+    EDITTEXT        IDC_LOCAL_DIR,120,138,122,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "Browse...",IDC_LOCAL_DIR_BROWSE,252,137,38,14
+    LTEXT           "Setup will use the following folder to install XEmacs and / or packages from.",
+                    IDC_STATIC,112,10,170,17
+    LTEXT           "To select a different folder, click Browse and select another folder.",
+                    IDC_STATIC,112,36,170,18
+    LTEXT           "To exit setup click Cancel at any time.",IDC_STATIC,112,
+                    63,166,17
+    GROUPBOX        "Local Package Directory",IDC_STATIC,112,126,186,31
+    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62
+END
+
+IDD_ROOT DIALOG DISCARDABLE  0, 0, 311, 201
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "XEmacs Setup"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Next >",IDOK,199,176,45,15
+    PUSHBUTTON      "< Back",IDC_BACK,154,176,45,15
+    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15
+    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP
+    EDITTEXT        IDC_ROOT_DIR,120,138,122,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "Browse...",IDC_ROOT_BROWSE,252,137,38,14
+    LTEXT           "Setup will use the following folder in which to install XEmacs and / or packages.",
+                    IDC_STATIC,112,10,170,17
+    LTEXT           "To select a different folder, click Browse and select another folder.",
+                    IDC_STATIC,112,35,170,18
+    LTEXT           "To exit setup click Cancel at any time.",IDC_STATIC,112,
+                    63,166,17
+    GROUPBOX        "Installation Root Directory",IDC_STATIC,112,126,186,31
+    CONTROL         "All",IDC_ROOT_SYSTEM,"Button",BS_AUTORADIOBUTTON | 
+                    WS_GROUP,177,110,25,8
+    CONTROL         "Just Me",IDC_ROOT_USER,"Button",BS_AUTORADIOBUTTON,220,
+                    110,50,8
+    LTEXT           "Installation Type :",IDC_STATIC,112,95,60,8
+    LTEXT           "Install For :",IDC_STATIC,112,110,43,8
+    CONTROL         "Native",IDC_INSTALL_NATIVE,"Button",BS_AUTORADIOBUTTON,
+                    177,93,37,10
+    CONTROL         "Cygwin",IDC_INSTALL_CYGWIN,"Button",BS_AUTORADIOBUTTON,
+                    220,93,39,10
+    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62
+END
+
+IDD_SITE DIALOG DISCARDABLE  0, 0, 311, 201
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "XEmacs Setup"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Next >",IDOK,199,176,45,15
+    PUSHBUTTON      "< Back",IDC_BACK,154,176,45,15
+    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15
+    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "Select Download Site",IDC_STATIC,113,11,135,11
+    LISTBOX         IDC_URL_LIST,121,24,179,136,LBS_NOINTEGRALHEIGHT | 
+                    WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
+    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62
+END
+
+IDD_OTHER_URL DIALOG DISCARDABLE  0, 0, 311, 201
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "XEmacs Setup"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Next >",IDOK,199,176,45,15
+    PUSHBUTTON      "< Back",IDC_BACK,154,176,45,15
+    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15
+    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP
+    EDITTEXT        IDC_OTHER_URL,120,138,170,12,ES_AUTOHSCROLL
+    LTEXT           "Setup will use the following URL to install XEmacs and / or packages from.",
+                    IDC_STATIC,112,10,170,17
+    LTEXT           "To select a different URL, edit the text.",IDC_STATIC,
+                    112,36,170,18
+    LTEXT           "To exit setup click Cancel at any time.",IDC_STATIC,112,
+                    58,166,17
+    GROUPBOX        "Select URL to download from",IDC_STATIC,112,126,186,31
+    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62
+END
+
+IDD_NET DIALOG DISCARDABLE  0, 0, 311, 201
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "XEmacs Setup"
+FONT 8, "MS Sans Serif"
+BEGIN
+    PUSHBUTTON      "Next >",IDOK,199,176,45,15,WS_GROUP
+    PUSHBUTTON      "< Back",IDC_BACK,154,176,45,15
+    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15
+    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "Setup will use the following connection method.",
+                    IDC_STATIC,112,11,170,17,NOT WS_GROUP
+    LTEXT           "To exit setup click Cancel at any time.",IDC_STATIC,112,
+                    32,166,17,NOT WS_GROUP
+    CONTROL         "Use IE5 Settings",IDC_NET_IE5,"Button",
+                    BS_AUTORADIOBUTTON | WS_TABSTOP,128,93,69,10
+    CONTROL         "Direct Connection",IDC_NET_DIRECT,"Button",
+                    BS_AUTORADIOBUTTON | WS_TABSTOP,128,109,73,10
+    CONTROL         "Use HTTP/FTP Proxy:",IDC_NET_PROXY,"Button",
+                    BS_AUTORADIOBUTTON | WS_TABSTOP,128,124,88,10
+    EDITTEXT        IDC_PROXY_HOST,128,141,80,12,ES_AUTOHSCROLL | 
+                    WS_DISABLED
+    LTEXT           "Proxy",IDC_STATIC,10,55,50,15,SS_CENTERIMAGE,
+                    WS_EX_RIGHT
+    LTEXT           "Port",IDC_STATIC,229,139,20,15,SS_CENTERIMAGE,
+                    WS_EX_RIGHT
+    EDITTEXT        IDC_PROXY_PORT,257,141,30,12,ES_AUTOHSCROLL | 
+                    WS_DISABLED
+    GROUPBOX        "Installation method",IDC_STATIC,113,78,188,83
+    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62
+END
+
+IDD_DLSTATUS DIALOG DISCARDABLE  0, 0, 311, 201
+STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_CENTER | WS_POPUP | WS_VISIBLE | 
+    WS_CAPTION | WS_SYSMENU
+CAPTION "XEmacs Setup"
+FONT 8, "MS Sans Serif"
+BEGIN
+    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15
+    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "Downloading Packages",IDC_STATIC,112,10,170,17
+    LTEXT           "(URL)",IDC_DLS_URL,112,26,170,11
+    LTEXT           "(RATE)",IDC_DLS_RATE,112,41,166,11
+    CONTROL         "Progress1",IDC_DLS_PROGRESS,"msctls_progress32",
+                    WS_BORDER,123,143,165,10
+    GROUPBOX        "Progress",IDC_STATIC,112,130,186,31
+    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62
+END
+
+IDD_INSTATUS DIALOG DISCARDABLE  0, 0, 311, 201
+STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_CENTER | WS_POPUP | WS_VISIBLE | 
+    WS_CAPTION | WS_SYSMENU
+CAPTION "XEmacs Setup"
+FONT 8, "MS Sans Serif"
+BEGIN
+    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15
+    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "Installing Packages",IDC_STATIC,112,10,170,17
+    LTEXT           "(PKG)",IDC_INS_PKG,112,26,170,11
+    LTEXT           "(FILE)",IDC_INS_FILE,112,41,183,11
+    CONTROL         "Progress1",IDC_INS_DISKFULL,"msctls_progress32",
+                    WS_BORDER,123,143,165,10
+    CONTROL         "Progress1",IDC_INS_IPROGRESS,"msctls_progress32",
+                    WS_BORDER,125,106,163,10
+    CONTROL         "Progress1",IDC_INS_PPROGRESS,"msctls_progress32",
+                    WS_BORDER,125,67,163,10
+    GROUPBOX        "Disk",IDC_STATIC,112,130,186,31
+    GROUPBOX        "Package",IDC_STATIC,112,54,186,31
+    GROUPBOX        "Total",IDC_STATIC,112,93,186,31
+    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62
+END
+
+IDD_UNINSTALL DIALOG DISCARDABLE  0, 0, 311, 201
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Uninstall XEmacs"
+FONT 8, "MS Sans Serif"
+BEGIN
+    PUSHBUTTON      "Cancel",IDCANCEL,199,176,45,15
+    DEFPUSHBUTTON   "Uninstall",IDOK,256,176,45,15
+    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "Uninstalling Packages",IDC_STATIC,112,10,170,17
+    LTEXT           "(PKG)",IDC_UNINS_PKG,112,26,170,11
+    LTEXT           "(FILE)",IDC_UNINS_FILE,112,41,166,11
+    CONTROL         "Progress1",IDC_UNINS_DISKFULL,"msctls_progress32",
+                    WS_BORDER,123,143,165,10
+    CONTROL         "Progress1",IDC_UNINS_IPROGRESS,"msctls_progress32",
+                    WS_BORDER,125,106,163,10
+    CONTROL         "Progress1",IDC_UNINS_PPROGRESS,"msctls_progress32",
+                    WS_BORDER,125,67,163,10
+    GROUPBOX        "Disk",IDC_STATIC,112,130,186,31
+    GROUPBOX        "Package",IDC_STATIC,112,54,186,31
+    GROUPBOX        "Total",IDC_STATIC,112,93,186,31
+    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62
+END
+
+IDD_PROXY_AUTH DIALOG DISCARDABLE  0, 0, 215, 95
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "XEmacs Setup"
+FONT 8, "MS Sans Serif"
+BEGIN
+    ICON            IDI_XEMACS,IDC_STATIC,5,5,20,20
+    EDITTEXT        IDC_NET_USER,65,28,145,12,ES_AUTOHSCROLL
+    LTEXT           "Proxy User ID",IDC_STATIC,5,28,55,15,SS_CENTERIMAGE,
+                    WS_EX_RIGHT
+    EDITTEXT        IDC_NET_PASSWD,65,43,145,12,ES_PASSWORD | ES_AUTOHSCROLL
+    LTEXT           "Password",IDC_STATIC,10,43,50,15,SS_CENTERIMAGE,
+                    WS_EX_RIGHT
+    LTEXT           "Proxy Authorization Required",IDC_STATIC,65,10,145,10
+    DEFPUSHBUTTON   "OK",IDOK,100,75,45,15,WS_DISABLED
+    PUSHBUTTON      "Cancel",IDCANCEL,165,75,45,15
+END
+
+IDD_NET_AUTH DIALOG DISCARDABLE  0, 0, 215, 95
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "XEmacs Setup"
+FONT 8, "MS Sans Serif"
+BEGIN
+    ICON            IDI_XEMACS,IDC_STATIC,5,5,20,20
+    EDITTEXT        IDC_NET_USER,65,28,145,12,ES_AUTOHSCROLL
+    LTEXT           "User ID",IDC_STATIC,5,28,55,15,SS_CENTERIMAGE,
+                    WS_EX_RIGHT
+    EDITTEXT        IDC_NET_PASSWD,65,43,145,12,ES_PASSWORD | ES_AUTOHSCROLL
+    LTEXT           "Password",IDC_STATIC,10,43,50,15,SS_CENTERIMAGE,
+                    WS_EX_RIGHT
+    LTEXT           "Server Authorization Required",IDC_STATIC,65,10,145,10
+    DEFPUSHBUTTON   "OK",IDOK,100,75,45,15,WS_DISABLED
+    PUSHBUTTON      "Cancel",IDCANCEL,165,75,45,15
+END
+
+IDD_SPLASH DIALOG DISCARDABLE  0, 0, 311, 201
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "XEmacs Setup"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Next >",IDOK,199,176,45,15
+    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15
+    ICON            IDI_XEMACS,IDC_STATIC,107,10,20,20
+    LTEXT           "Welcome to the XEmacs Net Release Setup Program. This will install XEmacs and/or associated packages on your computer.",
+                    IDC_STATIC,133,10,158,29
+    LTEXT           "Version (unknown)",IDC_VERSION,112,117,120,10
+    LTEXT           "Copyright (C) 2000 Red Hat Inc",IDC_STATIC,111,132,135,
+                    8
+    LTEXT           "http://www.xemacs.org/",IDC_STATIC,111,147,150,10
+    LTEXT           "It is strongly recommended that you exit all Windows programs before running this utility.",
+                    IDC_STATIC,110,43,191,19
+    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP
+    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62
+END
+
+IDD_CHOOSE DIALOG DISCARDABLE  0, 0, 311, 239
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "XEmacs Setup"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Next >",IDOK,199,214,45,15
+    PUSHBUTTON      "< Back",IDC_BACK,154,214,45,15
+    PUSHBUTTON      "Cancel",IDCANCEL,256,214,45,15
+    LTEXT           "",IDC_STATIC,10,201,291,1,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "Select packages to install",IDC_STATIC,55,5,85,8
+    ICON            IDI_XEMACS,IDC_STATIC,5,5,21,20
+    LTEXT           "",IDC_LISTVIEW_POS,55,15,230,155,SS_SUNKEN | NOT 
+                    WS_VISIBLE | NOT WS_GROUP
+    CONTROL         "SPIN",IDC_STATIC,"Static",SS_BITMAP,55,170,15,13
+    LTEXT           "= click to choose action, (p) = previous version, (x) = experimental",
+                    IDC_STATIC,65,170,220,8
+    PUSHBUTTON      "Full/Part",IDC_CHOOSE_FULLPART,250,5,35,10
+    PUSHBUTTON      "Exp",IDC_CHOOSE_EXP,215,5,25,10
+    PUSHBUTTON      "Curr",IDC_CHOOSE_CURR,190,5,25,10
+    PUSHBUTTON      "Prev",IDC_CHOOSE_PREV,165,5,25,10
+END
+
+IDD_DESKTOP DIALOG DISCARDABLE  0, 0, 311, 201
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "XEmacs Setup"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Finish",IDOK,199,176,45,15
+    PUSHBUTTON      "< Back",IDC_BACK,154,176,45,15
+    PUSHBUTTON      "Cancel",IDCANCEL,256,176,45,15
+    LTEXT           "Setup has now finished. To create desktop shortcuts, please select from the following options.",
+                    IDC_STATIC,112,11,170,17
+    LTEXT           "To complete setup click Finish.",IDC_STATIC,112,32,166,
+                    17
+    CONTROL         "Create Desktop Icon",IDC_ROOT_DESKTOP,"Button",
+                    BS_AUTOCHECKBOX,113,50,100,8
+    CONTROL         "Add to Start Menu",IDC_ROOT_MENU,"Button",
+                    BS_AUTOCHECKBOX,113,66,100,8
+    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62
+    CONTROL         "Text",IDC_TXT_TYPE,"Button",BS_AUTOCHECKBOX,209,101,38,
+                    8
+    CONTROL         "Java",IDC_JAVA_TYPE,"Button",BS_AUTOCHECKBOX,113,100,50,
+                    8
+    CONTROL         "C",IDC_C_TYPE,"Button",BS_AUTOCHECKBOX,113,116,41,8
+    CONTROL         "C++",IDC_CPP_TYPE,"Button",BS_AUTOCHECKBOX,113,133,38,8
+    CONTROL         "E-Lisp",IDC_ELISP_TYPE,"Button",BS_AUTOCHECKBOX,113,148,
+                    38,8
+    LTEXT           "Register XEmacs for these file types:",IDC_STATIC,113,
+                    84,166,13
+    LTEXT           "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP
+    LTEXT           "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP
+    CONTROL         "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62
+    CONTROL         "IDL",IDC_IDL_TYPE,"Button",BS_AUTOCHECKBOX,209,116,38,8
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
+    "#include ""windows.h""\r\n"
+    "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_XEMACS              ICON    DISCARDABLE     "xemacs.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// FILE
+//
+
+XEMACS.ICON             FILE    DISCARDABLE     "xemacs.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE 
+BEGIN
+    IDD_SOURCE, DIALOG
+    BEGIN
+        VERTGUIDE, 113
+        VERTGUIDE, 127
+    END
+
+    IDD_LOCAL_DIR, DIALOG
+    BEGIN
+        VERTGUIDE, 112
+        HORZGUIDE, 10
+    END
+
+    IDD_ROOT, DIALOG
+    BEGIN
+        VERTGUIDE, 112
+        HORZGUIDE, 103
+        HORZGUIDE, 118
+    END
+
+    IDD_SITE, DIALOG
+    BEGIN
+        HORZGUIDE, 11
+        HORZGUIDE, 161
+    END
+
+    IDD_NET, DIALOG
+    BEGIN
+        VERTGUIDE, 128
+        BOTTOMMARGIN, 191
+        HORZGUIDE, 153
+    END
+
+    IDD_INSTATUS, DIALOG
+    BEGIN
+        VERTGUIDE, 112
+        VERTGUIDE, 125
+        VERTGUIDE, 288
+    END
+
+    IDD_PROXY_AUTH, DIALOG
+    BEGIN
+        BOTTOMMARGIN, 49
+    END
+
+    IDD_NET_AUTH, DIALOG
+    BEGIN
+        BOTTOMMARGIN, 49
+    END
+
+    IDD_SPLASH, DIALOG
+    BEGIN
+        LEFTMARGIN, 10
+        RIGHTMARGIN, 301
+        TOPMARGIN, 10
+        BOTTOMMARGIN, 191
+    END
+
+    IDD_CHOOSE, DIALOG
+    BEGIN
+        BOTTOMMARGIN, 229
+        HORZGUIDE, 214
+    END
+
+    IDD_DESKTOP, DIALOG
+    BEGIN
+        VERTGUIDE, 113
+        VERTGUIDE, 209
+        HORZGUIDE, 124
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+SPIN                    BITMAP  DISCARDABLE     "choose-spin.bmp"
+IDB_SPIN                BITMAP  DISCARDABLE     "choose-spin.bmp"
+IDB_RTARROW             BITMAP  DISCARDABLE     "choose-rtarrow.bmp"
+IDB_CHECK_YES           BITMAP  DISCARDABLE     "check-yes.bmp"
+IDB_CHECK_NO            BITMAP  DISCARDABLE     "check-no.bmp"
+IDB_CHECK_NA            BITMAP  DISCARDABLE     "check-na.bmp"
+GNU                     BITMAP  DISCARDABLE     "gnu.bmp"
+IDB_GNU                 BITMAP  DISCARDABLE     "gnu.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_ROOT_SLASH          "Warning: we recommend you do NOT use the root of your hard drive as the XEmacs root.  Proceed anyway?"
+    IDS_ROOT_SPACE          "You should not choose a root path that include spaces in directory names.  Proceed anyway?"
+    IDS_MIRROR_LST          "http://www.xemacs.org/Download/mirrors.lst"
+    IDS_DIALOG_FAILED       "Unable to create Dialog Box"
+    IDS_CYGWIN_FUNC_MISSING "Error: unable to find function `%s' in %s"
+    IDS_DOWNLOAD_SHORT      "Download error: %s too short (%d, wanted %d)"
+    IDS_ERR_OPEN_WRITE      "Can't open %s for writing: %s"
+    IDS_SETUPINI_MISSING    "Unable to get setup.ini from %s"
+    IDS_OLD_SETUPINI        "This setup.ini is older than the one you used last time you installed cygwin.  Proceed anyway?"
+    IDS_ERR_RENAME          "Can't rename %s to %s: %s"
+    IDS_NOTHING_INSTALLED   "Nothing needed to be installed"
+    IDS_INSTALL_COMPLETE    "Installation Complete"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_ERR_OPEN_READ       "Can't open %s for reading: %s"
+    IDS_ROOT_ABSOLUTE       "The install directory must be absolute, with both a drive letter and leading slash, like C:\\Cygwin"
+    IDS_DOWNLOAD_COMPLETE   "Download Complete"
+    IDS_CVSID               "\n%%% $Id: res.rc,v 1.2.2.2 2002/08/20 11:36:07 stephent Exp $\n"
+    IDS_NOLOGFILE           "Cannot open log file %s for writing"
+    IDS_UNINSTALL_COMPLETE  "Uninstalls complete."
+    IDS_WININET             "Unable to find or load the Internet Explorer 5 DLLs"
+    IDS_ERR_CHDIR           "Could not change dir to %s"
+    IDS_OLD_SETUP_VERSION   "This setup is version %s, but setup.ini claims version %s is available.\nYou might want to upgrade to get the latest features and bug fixes."
+    IDS_DOWNLOAD_FAILED     "Unable to download %s"
+    IDS_DOWNLOAD_INCOMPLETE "Download Incomplete.  Try again?"
+    IDS_INSTALL_INCOMPLETE  "Installation incomplete.  Check /setup.log.full for details"
+    IDS_ROOT_NOCYGWIN       "You should not install the Cygwin version without Cygwin installed.  Proceed anyway?"
+    IDS_CREATE_DIR          "The directory %s does not exist, create it?"
+END
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
index ac46438..ce19cb7 100644 (file)
-//{{NO_DEPENDENCIES}}\r
-// Microsoft Developer Studio generated include file.\r
-// Used by res.rc\r
-//\r
-#define IDS_ROOT_SLASH                  1\r
-#define IDS_ROOT_SPACE                  2\r
-#define IDS_CWD_NONEMPTY                3\r
-#define IDS_MIRROR_LST                  6\r
-#define IDS_DIALOG_FAILED               7\r
-#define IDS_CYGWIN_FUNC_MISSING         8\r
-#define IDS_DOWNLOAD_SHORT              9\r
-#define IDS_ERR_OPEN_WRITE              10\r
-#define IDS_SETUPINI_MISSING            11\r
-#define IDS_OLD_SETUPINI                12\r
-#define IDS_ERR_RENAME                  13\r
-#define IDS_NOTHING_INSTALLED           14\r
-#define IDS_INSTALL_COMPLETE            15\r
-#define IDS_ERR_OPEN_READ               16\r
-#define IDS_ROOT_ABSOLUTE               17\r
-#define IDS_DOWNLOAD_COMPLETE           18\r
-#define IDS_CVSID                       19\r
-#define IDS_NOLOGFILE                   20\r
-#define IDS_UNINSTALL_COMPLETE          21\r
-#define IDS_WININET                     22\r
-#define IDS_ERR_CHDIR                   23\r
-#define IDS_OLD_SETUP_VERSION           24\r
-#define IDS_DOWNLOAD_FAILED             25\r
-#define IDS_DOWNLOAD_INCOMPLETE         26\r
-#define IDS_INSTALL_INCOMPLETE          27\r
-#define IDS_ROOT_NOCYGWIN               28\r
-#define IDS_CREATE_DIR   29\r
-#define IDD_ROOT                        101\r
-#define IDD_SOURCE                      102\r
-#define IDD_OTHER_URL                   103\r
-#define IDD_SITE                        104\r
-#define IDD_NET                         105\r
-#define IDD_DLSTATUS                    106\r
-#define IDD_S_LOAD_INI                  107\r
-#define IDD_S_FROM_CWD                  108\r
-#define IDD_CHOOSE                      109\r
-#define IDD_S_DOWNLOAD                  110\r
-#define IDD_S_INSTALL                   111\r
-#define IDD_INSTATUS                    112\r
-#define IDD_DESKTOP                     113\r
-#define IDD_PROXY_AUTH                  114\r
-#define IDD_S_POSTINSTALL               115\r
-#define IDD_NET_AUTH                    116\r
-#define IDD_SPLASH                      117\r
-#define IDB_SPIN                        118\r
-#define IDB_RTARROW                     119\r
-#define IDI_SPIN                        120\r
-#define IDI_XEMACS                      121\r
-#define IDD_LOCAL_DIR                   122\r
-#define IDB_CHECK_YES                   123\r
-#define IDB_CHECK_NO                    124\r
-#define IDB_CHECK_NA                    125\r
-#define IDB_GNU                         126\r
-#define IDD_UNINSTALL                   127\r
-#define IDC_SOURCE_DOWNLOAD             1000\r
-#define IDC_SOURCE_NETINST              1001\r
-#define IDC_SOURCE_CWD                  1002\r
-#define IDC_ROOT_DIR                    1003\r
-#define IDC_ROOT_BROWSE                 1004\r
-#define IDC_ROOT_TEXT                   1005\r
-#define IDC_ROOT_BINARY                 1006\r
-#define IDC_URL_LIST                    1007\r
-#define IDC_SITE_NEXT                   1008\r
-#define IDC_BACK                        1009\r
-#define IDC_OTHER_URL                   1010\r
-#define IDC_NET_IE5                     1011\r
-#define IDC_NET_DIRECT                  1012\r
-#define IDC_NET_PROXY                   1013\r
-#define IDC_PROXY_HOST                  1014\r
-#define IDC_PROXY_PORT                  1015\r
-#define IDC_PROXY_USER                  1016\r
-#define IDC_DLS_PROGRESS                1019\r
-#define IDC_DLS_URL                     1020\r
-#define IDC_DLS_RATE                    1021\r
-#define IDC_INS_PKG                     1022\r
-#define IDC_INS_FILE                    1023\r
-#define IDC_INS_DISKFULL                1024\r
-#define IDC_INS_IPROGRESS               1025\r
-#define IDC_INS_PPROGRESS               1026\r
-#define IDC_ROOT_SYSTEM                 1028\r
-#define IDC_ROOT_USER                   1029\r
-#define IDC_NET_USER                    1030\r
-#define IDC_NET_PASSWD                  1031\r
-#define IDC_VERSION                     1033\r
-#define IDC_LISTVIEW_POS                1034\r
-#define IDC_CHOOSE_FULLPART             1035\r
-#define IDC_CHOOSE_EXP                  1036\r
-#define IDC_CHOOSE_CURR                 1037\r
-#define IDC_CHOOSE_PREV                 1038\r
-#define IDC_CHOOSE_LIST                 1039\r
-#define IDC_INS_ACTION                  1040\r
-#define IDC_ROOT_DESKTOP                1041\r
-#define IDC_ROOT_MENU                   1042\r
-#define IDC_LOCAL_DIR_BROWSE            1043\r
-#define IDC_TXT_TYPE                    1043\r
-#define IDC_LOCAL_DIR                   1044\r
-#define IDC_JAVA_TYPE                   1044\r
-#define IDC_INSTALL_NATIVE              1045\r
-#define IDC_C_TYPE                      1045\r
-#define IDC_INSTALL_CYGWIN              1046\r
-#define IDC_CPP_TYPE                    1046\r
-#define IDC_UNINS_PKG                   1047\r
-#define IDC_ELISP_TYPE                  1047\r
-#define IDC_UNINS_FILE                  1048\r
-#define IDC_IDL_TYPE                    1048\r
-#define IDC_UNINS_DISKFULL              1049\r
-#define IDC_UNINS_IPROGRESS             1050\r
-#define IDC_UNINS_PPROGRESS             1051\r
-#define IDC_UNINS_ACTION                1052\r
-#define IDC_STATIC                      -1\r
-\r
-// Next default values for new objects\r
-// \r
-#ifdef APSTUDIO_INVOKED\r
-#ifndef APSTUDIO_READONLY_SYMBOLS\r
-#define _APS_NO_MFC                     1\r
-#define _APS_3D_CONTROLS                     1\r
-#define _APS_NEXT_RESOURCE_VALUE        127\r
-#define _APS_NEXT_COMMAND_VALUE         40003\r
-#define _APS_NEXT_CONTROL_VALUE         1050\r
-#define _APS_NEXT_SYMED_VALUE           101\r
-#endif\r
-#endif\r
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by res.rc
+//
+#define IDS_ROOT_SLASH                  1
+#define IDS_ROOT_SPACE                  2
+#define IDS_CWD_NONEMPTY                3
+#define IDS_MIRROR_LST                  6
+#define IDS_DIALOG_FAILED               7
+#define IDS_CYGWIN_FUNC_MISSING         8
+#define IDS_DOWNLOAD_SHORT              9
+#define IDS_ERR_OPEN_WRITE              10
+#define IDS_SETUPINI_MISSING            11
+#define IDS_OLD_SETUPINI                12
+#define IDS_ERR_RENAME                  13
+#define IDS_NOTHING_INSTALLED           14
+#define IDS_INSTALL_COMPLETE            15
+#define IDS_ERR_OPEN_READ               16
+#define IDS_ROOT_ABSOLUTE               17
+#define IDS_DOWNLOAD_COMPLETE           18
+#define IDS_CVSID                       19
+#define IDS_NOLOGFILE                   20
+#define IDS_UNINSTALL_COMPLETE          21
+#define IDS_WININET                     22
+#define IDS_ERR_CHDIR                   23
+#define IDS_OLD_SETUP_VERSION           24
+#define IDS_DOWNLOAD_FAILED             25
+#define IDS_DOWNLOAD_INCOMPLETE         26
+#define IDS_INSTALL_INCOMPLETE          27
+#define IDS_ROOT_NOCYGWIN               28
+#define IDS_CREATE_DIR   29
+#define IDD_ROOT                        101
+#define IDD_SOURCE                      102
+#define IDD_OTHER_URL                   103
+#define IDD_SITE                        104
+#define IDD_NET                         105
+#define IDD_DLSTATUS                    106
+#define IDD_S_LOAD_INI                  107
+#define IDD_S_FROM_CWD                  108
+#define IDD_CHOOSE                      109
+#define IDD_S_DOWNLOAD                  110
+#define IDD_S_INSTALL                   111
+#define IDD_INSTATUS                    112
+#define IDD_DESKTOP                     113
+#define IDD_PROXY_AUTH                  114
+#define IDD_S_POSTINSTALL               115
+#define IDD_NET_AUTH                    116
+#define IDD_SPLASH                      117
+#define IDB_SPIN                        118
+#define IDB_RTARROW                     119
+#define IDI_SPIN                        120
+#define IDI_XEMACS                      121
+#define IDD_LOCAL_DIR                   122
+#define IDB_CHECK_YES                   123
+#define IDB_CHECK_NO                    124
+#define IDB_CHECK_NA                    125
+#define IDB_GNU                         126
+#define IDD_UNINSTALL                   127
+#define IDC_SOURCE_DOWNLOAD             1000
+#define IDC_SOURCE_NETINST              1001
+#define IDC_SOURCE_CWD                  1002
+#define IDC_ROOT_DIR                    1003
+#define IDC_ROOT_BROWSE                 1004
+#define IDC_ROOT_TEXT                   1005
+#define IDC_ROOT_BINARY                 1006
+#define IDC_URL_LIST                    1007
+#define IDC_SITE_NEXT                   1008
+#define IDC_BACK                        1009
+#define IDC_OTHER_URL                   1010
+#define IDC_NET_IE5                     1011
+#define IDC_NET_DIRECT                  1012
+#define IDC_NET_PROXY                   1013
+#define IDC_PROXY_HOST                  1014
+#define IDC_PROXY_PORT                  1015
+#define IDC_PROXY_USER                  1016
+#define IDC_DLS_PROGRESS                1019
+#define IDC_DLS_URL                     1020
+#define IDC_DLS_RATE                    1021
+#define IDC_INS_PKG                     1022
+#define IDC_INS_FILE                    1023
+#define IDC_INS_DISKFULL                1024
+#define IDC_INS_IPROGRESS               1025
+#define IDC_INS_PPROGRESS               1026
+#define IDC_ROOT_SYSTEM                 1028
+#define IDC_ROOT_USER                   1029
+#define IDC_NET_USER                    1030
+#define IDC_NET_PASSWD                  1031
+#define IDC_VERSION                     1033
+#define IDC_LISTVIEW_POS                1034
+#define IDC_CHOOSE_FULLPART             1035
+#define IDC_CHOOSE_EXP                  1036
+#define IDC_CHOOSE_CURR                 1037
+#define IDC_CHOOSE_PREV                 1038
+#define IDC_CHOOSE_LIST                 1039
+#define IDC_INS_ACTION                  1040
+#define IDC_ROOT_DESKTOP                1041
+#define IDC_ROOT_MENU                   1042
+#define IDC_LOCAL_DIR_BROWSE            1043
+#define IDC_TXT_TYPE                    1043
+#define IDC_LOCAL_DIR                   1044
+#define IDC_JAVA_TYPE                   1044
+#define IDC_INSTALL_NATIVE              1045
+#define IDC_C_TYPE                      1045
+#define IDC_INSTALL_CYGWIN              1046
+#define IDC_CPP_TYPE                    1046
+#define IDC_UNINS_PKG                   1047
+#define IDC_ELISP_TYPE                  1047
+#define IDC_UNINS_FILE                  1048
+#define IDC_IDL_TYPE                    1048
+#define IDC_UNINS_DISKFULL              1049
+#define IDC_UNINS_IPROGRESS             1050
+#define IDC_UNINS_PPROGRESS             1051
+#define IDC_UNINS_ACTION                1052
+#define IDC_STATIC                      -1
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NO_MFC                     1
+#define _APS_3D_CONTROLS                     1
+#define _APS_NEXT_RESOURCE_VALUE        127
+#define _APS_NEXT_COMMAND_VALUE         40003
+#define _APS_NEXT_CONTROL_VALUE         1050
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
index 0e2752c..bd49704 100644 (file)
@@ -18,47 +18,65 @@ 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.
+# GTK support. Do NOT set this to 1; 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=
 
 ############################################################################
+#                  Compiled-in features: graphics formats                  #
+############################################################################
+
+# Directory under which the optional libraries are placed.  To make your
+# life easy, just grab http://ftp.xemacs.org/aux/optional-libs.exe
+# (a self-installing .ZIP) and unzip them into an appropriate directory
+# (by default, c:\src).  This gets you precompiled versions of all of
+# the libraries below.
+OPTIONAL_LIBRARY_DIR=c:\src
 
 # Set this to enable XPM support (virtually mandatory), and specify
-# the directory containing xpm.
+# the directory containing xpm.  Get the library from
+# http://ftp.xemacs.org/aux/xpm-3.4k.tar.gz.
 HAVE_XPM=1
-XPM_DIR=c:\src\xpm-3.4k
+XPM_DIR=$(OPTIONAL_LIBRARY_DIR)\xpm-3.4k
 
-# Set this to enable GIF support.
+# Set this to enable GIF support (built-in).
 HAVE_GIF=1
 
 # Set this to enable PNG support (virtually mandatory), and specify
-# the directories containing png and zlib.
+# the directories containing png and zlib.  Get the latest version from
+# ftp://ftp.uu.net/graphics/png/.  NOTE: In order to compile libpng,
+# you will have to rename the zlib directory to just `zlib'.  We don't
+# do that here so we can preserve the version number, like for the other
+# libraries.
 HAVE_PNG=1
-PNG_DIR=c:\src\libpng-1.0.9
-ZLIB_DIR=c:\src\zlib
+PNG_DIR=$(OPTIONAL_LIBRARY_DIR)\libpng-1.2.8
+ZLIB_DIR=$(OPTIONAL_LIBRARY_DIR)\zlib-1.2.1
 
-# Set this to enable TIFF support, and specify the directory containing tiff.
-HAVE_TIFF=0
-TIFF_DIR=
-
-# Set this to enable JPEG support, and specify the directory containing jpeg.
+# Set this to enable JPEG support (useful, but not necessary), and specify
+# the directory containing jpeg.  Get the latest version from
+# ftp://ftp.uu.net/graphics/jpeg/.
 HAVE_JPEG=1
-JPEG_DIR=c:\src\jpeg-6b
+JPEG_DIR=$(OPTIONAL_LIBRARY_DIR)\jpeg-6b
+
+# Set this to enable TIFF support (not very important), and specify the
+# directory containing tiff.  Get the latest version from
+# ftp://ftp.uu.net/graphics/tiff/.
+HAVE_TIFF=1
+TIFF_DIR=$(OPTIONAL_LIBRARY_DIR)\tiff-v3.5.7
 
-# Set this to enable XFace support, and specify the directory containing
-# compface.
-HAVE_XFACE=0
-COMPFACE_DIR=
+# Set this to enable XFace support (not very important), and specify the
+# directory containing compface.  Get the library from
+# http://ftp.xemacs.org/aux/compface-1.5-1.tar.gz.
+HAVE_XFACE=1
+COMPFACE_DIR=$(OPTIONAL_LIBRARY_DIR)\compface-1.5.1
 
 ############################################################################
 
 # Set this to specify the location of makeinfo. (If not set, XEmacs will
 # attempt to use its built-in texinfo support when building info files.)
-MAKEINFO=c:\src\texinfo-4.0\makeinfo\makeinfo.exe
+MAKEINFO=c:\cygwin\bin\makeinfo.exe
 
 ############################################################################
 
index 057954b..6ba64ed 100755 (executable)
@@ -1,21 +1,21 @@
-#Configuration variables\r
-\r
-#where the source is:\r
-\r
-source = r"X:\XEmacs-21"\r
-#where the installed distribution is:\r
-installed = r"C:\Program Files\XEmacs\xemacs-21.0-b62"\r
-\r
-#where the (built and installed) packages are\r
-packages = r"C:\Program Files\XEmacs\xemacs-packages"\r
-\r
-#where the package source is\r
-pkg_src = r"X:\xemacs-packages"\r
-\r
-#Subdirs relative to the base installation directory\r
-#Everything except packages goes here:\r
-dst = "XEmacs-21.0-b62"\r
-#packages go here:\r
-pkg_dst = "xemacs-packages"\r
-\r
-\r
+#Configuration variables
+
+#where the source is:
+
+source = r"X:\XEmacs-21"
+#where the installed distribution is:
+installed = r"C:\Program Files\XEmacs\xemacs-21.0-b62"
+
+#where the (built and installed) packages are
+packages = r"C:\Program Files\XEmacs\xemacs-packages"
+
+#where the package source is
+pkg_src = r"X:\xemacs-packages"
+
+#Subdirs relative to the base installation directory
+#Everything except packages goes here:
+dst = "XEmacs-21.0-b62"
+#packages go here:
+pkg_dst = "xemacs-packages"
+
+
index 05a45b5..e10791e 100755 (executable)
@@ -1,63 +1,63 @@
-Document Type: DLG\r
-item: Custom Dialog\r
-  Name=Display ReadMe\r
-  Display Variable=DISPLAY\r
-  item: Dialog\r
-    Title=Read Me File\r
-    Title French=Fichier Lisez-moi\r
-    Title German=Liesmich-Datei\r
-    Title Portuguese=Ficheiro Leia-me\r
-    Title Spanish=Archivo Léeme\r
-    Title Italian=File Leggimi\r
-    Title Danish=Vigtigt fil\r
-    Title Dutch=Leesmij-bestand\r
-    Title Norwegian=Informasjonsfil\r
-    Title Swedish=Läs mig-fil\r
-    Width=280\r
-    Height=224\r
-    Font Name=Helv\r
-    Font Size=8\r
-    item: Push Button\r
-      Rectangle=172 185 214 199\r
-      Variable=DIRECTION\r
-      Value=N\r
-      Create Flags=01010000000000010000000000000001\r
-      Text=I &Agree >\r
-      Text French=&Suivant>\r
-      Text German=&Weiter>\r
-      Text Portuguese=&Próximo>\r
-      Text Spanish=&Siguiente >\r
-      Text Italian=&Avanti >\r
-      Text Danish=&Næste>\r
-      Text Dutch=&Volgende>\r
-      Text Norwegian=&Neste>\r
-      Text Swedish=&Nästa >\r
-    end\r
-    item: Push Button\r
-      Rectangle=222 185 264 199\r
-      Action=3\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=Cancel\r
-      Text French=Annuler\r
-      Text German=Abbrechen\r
-      Text Portuguese=Cancelar\r
-      Text Spanish=Cancelar\r
-      Text Italian=Annulla\r
-      Text Danish=Slet\r
-      Text Dutch=Annuleren\r
-      Text Norwegian=Avbryt\r
-      Text Swedish=Avbryt\r
-    end\r
-    item: Static\r
-      Rectangle=9 177 263 178\r
-      Action=3\r
-      Create Flags=01010000000000000000000000000111\r
-    end\r
-    item: Editbox\r
-      Rectangle=85 11 254 170\r
-      Value=%TEMP%\%READMEFILE%\r
-      Help Context=16711681\r
-      Create Flags=01010000101000000000100000000100\r
-    end\r
-  end\r
-end\r
+Document Type: DLG
+item: Custom Dialog
+  Name=Display ReadMe
+  Display Variable=DISPLAY
+  item: Dialog
+    Title=Read Me File
+    Title French=Fichier Lisez-moi
+    Title German=Liesmich-Datei
+    Title Portuguese=Ficheiro Leia-me
+    Title Spanish=Archivo Léeme
+    Title Italian=File Leggimi
+    Title Danish=Vigtigt fil
+    Title Dutch=Leesmij-bestand
+    Title Norwegian=Informasjonsfil
+    Title Swedish=Läs mig-fil
+    Width=280
+    Height=224
+    Font Name=Helv
+    Font Size=8
+    item: Push Button
+      Rectangle=172 185 214 199
+      Variable=DIRECTION
+      Value=N
+      Create Flags=01010000000000010000000000000001
+      Text=I &Agree >
+      Text French=&Suivant>
+      Text German=&Weiter>
+      Text Portuguese=&Próximo>
+      Text Spanish=&Siguiente >
+      Text Italian=&Avanti >
+      Text Danish=&Næste>
+      Text Dutch=&Volgende>
+      Text Norwegian=&Neste>
+      Text Swedish=&Nästa >
+    end
+    item: Push Button
+      Rectangle=222 185 264 199
+      Action=3
+      Create Flags=01010000000000010000000000000000
+      Text=Cancel
+      Text French=Annuler
+      Text German=Abbrechen
+      Text Portuguese=Cancelar
+      Text Spanish=Cancelar
+      Text Italian=Annulla
+      Text Danish=Slet
+      Text Dutch=Annuleren
+      Text Norwegian=Avbryt
+      Text Swedish=Avbryt
+    end
+    item: Static
+      Rectangle=9 177 263 178
+      Action=3
+      Create Flags=01010000000000000000000000000111
+    end
+    item: Editbox
+      Rectangle=85 11 254 170
+      Value=%TEMP%\%READMEFILE%
+      Help Context=16711681
+      Create Flags=01010000101000000000100000000100
+    end
+  end
+end
index 466e3ac..d0eed07 100755 (executable)
-Document Type: DLG\r
-item: Custom Dialog\r
-  Name=Select Components\r
-  Display Variable=DISPLAY\r
-  Flags=00000001\r
-  item: Dialog\r
-    Title=Select Components \r
-    Title French=Sélectionner les Ã©léments\r
-    Title German=Komponenten auswählen\r
-    Title Portuguese=Seleccionar Componentes\r
-    Title Spanish=Seleccione los Componentes\r
-    Title Italian=Seleziona Componenti\r
-    Title Danish=Vælg komponenter\r
-    Title Dutch=Selecteer onderdelen\r
-    Title Norwegian=Velg komponenter\r
-    Title Swedish=Välj komponenter\r
-    Width=280\r
-    Height=224\r
-    Font Name=Helv\r
-    Font Size=8\r
-    item: Push Button\r
-      Rectangle=172 185 214 199\r
-      Variable=DIRECTION\r
-      Value=N\r
-      Create Flags=01010000000000010000000000000001\r
-      Text=&Next >\r
-      Text French=&Suivant>\r
-      Text German=&Weiter>\r
-      Text Portuguese=&Próximo>\r
-      Text Spanish=&Siguiente >\r
-      Text Italian=&Avanti >\r
-      Text Danish=&Næste>\r
-      Text Dutch=&Volgende>\r
-      Text Norwegian=&Neste>\r
-      Text Swedish=&Nästa >\r
-    end\r
-    item: Push Button\r
-      Rectangle=130 185 172 199\r
-      Variable=DIRECTION\r
-      Value=B\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=< &Back\r
-      Text French=<&Retour\r
-      Text German=<&Zurück\r
-      Text Portuguese=<&Retornar\r
-      Text Spanish=<&Retroceder\r
-      Text Italian=< &Indietro\r
-      Text Danish=<&Tilbage\r
-      Text Dutch=<&Terug\r
-      Text Norwegian=<&Tilbake\r
-      Text Swedish=< &Tillbaka\r
-    end\r
-    item: Push Button\r
-      Rectangle=222 185 264 199\r
-      Action=3\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=Cancel\r
-      Text French=Annuler\r
-      Text German=Abbrechen\r
-      Text Portuguese=Cancelar\r
-      Text Spanish=Cancelar\r
-      Text Italian=Annulla\r
-      Text Danish=Annuller\r
-      Text Dutch=Annuleren\r
-      Text Norwegian=Avbryt\r
-      Text Swedish=Avbryt\r
-    end\r
-    item: Static\r
-      Rectangle=9 177 263 178\r
-      Action=3\r
-      Create Flags=01010000000000000000000000000111\r
-    end\r
-    item: Static\r
-      Rectangle=205 156 253 166\r
-      Variable=COMPONENTS\r
-      Value=MAINDIR\r
-      Create Flags=01010000000000000000000000000010\r
-    end\r
-    item: Static\r
-      Rectangle=205 148 253 157\r
-      Variable=COMPONENTS\r
-      Create Flags=01010000000000000000000000000010\r
-    end\r
-    item: Static\r
-      Rectangle=95 147 184 158\r
-      Create Flags=01010000000000000000000000000000\r
-      Text=Disk Space Required:\r
-      Text French=Espace disque requis\r
-      Text German=Benötigter Festplattenspeicher:\r
-      Text Portuguese=Espaço de disco necessário:\r
-      Text Spanish=Espacio de Disco Requerido:\r
-      Text Italian=Spazio su disco richiesto:\r
-      Text Danish=Nødvendig diskplads:\r
-      Text Dutch=Vereiste hoeveelheid schijfruimte\r
-      Text Norwegian=Diskplass nødvendig:\r
-      Text Swedish=Erforderligt diskutrymme\r
-    end\r
-    item: Static\r
-      Rectangle=95 157 190 167\r
-      Create Flags=01010000000000000000000000000000\r
-      Text=Disk Space Remaining:\r
-      Text French=Espace disque disponible\r
-      Text German=Verbleibender Festplattenspeicher:\r
-      Text Portuguese=Espaço de disco restante:\r
-      Text Spanish=Espacio de Disco Remanente:\r
-      Text Italian=Spazio su disco rimanente:\r
-      Text Danish=Ledig diskplads:\r
-      Text Dutch=Resterende schijfruimte\r
-      Text Norwegian=Ledig diskplass:\r
-      Text Swedish=Ã…terstÃ¥ende diskutrymme\r
-    end\r
-    item: Static\r
-      Rectangle=90 138 264 168\r
-      Action=1\r
-      Create Flags=01010000000000000000000000000111\r
-    end\r
-    item: Static\r
-      Rectangle=90 8 260 41\r
-      Create Flags=01010000000000000000000000000000\r
-      Text=In the options list below, select the checkboxes for the options that you would like to have installed.  The disk space fields reflect the requirements of the options you have selected.\r
-      Text French=Dans la liste d'options suivante, veuillez sélectionner les cases des options que vous désirez installer. Le champ d'espace disque indique les conditions requises pour les options choisies\r
-      Text German=Wählen Sie in der Optionenliste unten die Kontrollkästchen für diejenigen Optionen, die Sie installieren möchten. Die Speicherfelder zeigen die benötigte Speicherkapazität für die gewählten Optionen an.\r
-      Text Portuguese=Na lista de opções abaixo, seleccione as caixas de verificação para as opções que gostaria de ter instalado. Os campos de espaço de disco reflectem os requerimentos das opções que seleccionou.\r
-      Text Spanish=En la lista de opciones que se ofrece a continuación, seleccione las casillas de comprobación para las opciones que desea instalar. Los campos del espacio en el disco reflejan los requerimientos de las opciones que ha seleccionado.\r
-      Text Italian=Nell\92elenco delle opzioni sotto, marca le caselle di controllo delle opzioni che vuoi installare. I campi dello spazio sul disco riflettono i requisiti delle opzioni selezionate.\r
-      Text Danish=Marker afkrydsningsfelterne for de komponenter, der skal installeres, pÃ¥ listen herunder. Diskpladsfelterne angiver pladskravene for de valgte komponenter.\r
-      Text Dutch=Kruis in de onderstaande lijst het vakje aan naast de opties die u wilt installeren. Achter elke optie staat de benodigde schijfruimte vermeld.\r
-      Text Norwegian=I listen over alternativer nedenfor, klikk i kontrollrutene for de alternativene du Ã¸nsker Ã¥ installere. Diskplassfeltene gjenspeiler kravene for de alternativene du har valgt.\r
-      Text Swedish=Kryssa för i rutorna nedan vilka alternativ du vill fÃ¥ installerade. I diskutrymmesfälten anges utrymmesbehoven för de alternativ du väljer.\r
-    end\r
-    item: Checkbox\r
-      Rectangle=91 41 126 56\r
-      Variable=COMPONENTS LIBS\r
-      Enabled Color=00000000000000001111111111111111\r
-      Create Flags=01010000000000010000000000000011\r
-      Flags=0000000000000010\r
-      Text=Libraries\r
-      Text=\r
-    end\r
-    item: Checkbox\r
-      Rectangle=90 56 148 71\r
-      Variable=COMPONENTS COMM\r
-      Enabled Color=00000000000000001111111111111111\r
-      Create Flags=01010000000000010000000000000011\r
-      Flags=0000000000000010\r
-      Text=Communications\r
-      Text=\r
-    end\r
-  end\r
-  item: Dialog\r
-    Title=Library Packages\r
-    Width=268\r
-    Height=204\r
-    Font Name=Helv\r
-    Font Size=8\r
-  end\r
-  item: Dialog\r
-    Title=Library Packages\r
-    Width=268\r
-    Height=204\r
-    Font Name=Helv\r
-    Font Size=8\r
-    item: Push Button\r
-      Rectangle=219 170 254 185\r
-      Enabled Color=00000000000000001111111111111111\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=OK\r
-    end\r
-  end\r
-end\r
+Document Type: DLG
+item: Custom Dialog
+  Name=Select Components
+  Display Variable=DISPLAY
+  Flags=00000001
+  item: Dialog
+    Title=Select Components 
+    Title French=Sélectionner les Ã©léments
+    Title German=Komponenten auswählen
+    Title Portuguese=Seleccionar Componentes
+    Title Spanish=Seleccione los Componentes
+    Title Italian=Seleziona Componenti
+    Title Danish=Vælg komponenter
+    Title Dutch=Selecteer onderdelen
+    Title Norwegian=Velg komponenter
+    Title Swedish=Välj komponenter
+    Width=280
+    Height=224
+    Font Name=Helv
+    Font Size=8
+    item: Push Button
+      Rectangle=172 185 214 199
+      Variable=DIRECTION
+      Value=N
+      Create Flags=01010000000000010000000000000001
+      Text=&Next >
+      Text French=&Suivant>
+      Text German=&Weiter>
+      Text Portuguese=&Próximo>
+      Text Spanish=&Siguiente >
+      Text Italian=&Avanti >
+      Text Danish=&Næste>
+      Text Dutch=&Volgende>
+      Text Norwegian=&Neste>
+      Text Swedish=&Nästa >
+    end
+    item: Push Button
+      Rectangle=130 185 172 199
+      Variable=DIRECTION
+      Value=B
+      Create Flags=01010000000000010000000000000000
+      Text=< &Back
+      Text French=<&Retour
+      Text German=<&Zurück
+      Text Portuguese=<&Retornar
+      Text Spanish=<&Retroceder
+      Text Italian=< &Indietro
+      Text Danish=<&Tilbage
+      Text Dutch=<&Terug
+      Text Norwegian=<&Tilbake
+      Text Swedish=< &Tillbaka
+    end
+    item: Push Button
+      Rectangle=222 185 264 199
+      Action=3
+      Create Flags=01010000000000010000000000000000
+      Text=Cancel
+      Text French=Annuler
+      Text German=Abbrechen
+      Text Portuguese=Cancelar
+      Text Spanish=Cancelar
+      Text Italian=Annulla
+      Text Danish=Annuller
+      Text Dutch=Annuleren
+      Text Norwegian=Avbryt
+      Text Swedish=Avbryt
+    end
+    item: Static
+      Rectangle=9 177 263 178
+      Action=3
+      Create Flags=01010000000000000000000000000111
+    end
+    item: Static
+      Rectangle=205 156 253 166
+      Variable=COMPONENTS
+      Value=MAINDIR
+      Create Flags=01010000000000000000000000000010
+    end
+    item: Static
+      Rectangle=205 148 253 157
+      Variable=COMPONENTS
+      Create Flags=01010000000000000000000000000010
+    end
+    item: Static
+      Rectangle=95 147 184 158
+      Create Flags=01010000000000000000000000000000
+      Text=Disk Space Required:
+      Text French=Espace disque requis
+      Text German=Benötigter Festplattenspeicher:
+      Text Portuguese=Espaço de disco necessário:
+      Text Spanish=Espacio de Disco Requerido:
+      Text Italian=Spazio su disco richiesto:
+      Text Danish=Nødvendig diskplads:
+      Text Dutch=Vereiste hoeveelheid schijfruimte
+      Text Norwegian=Diskplass nødvendig:
+      Text Swedish=Erforderligt diskutrymme
+    end
+    item: Static
+      Rectangle=95 157 190 167
+      Create Flags=01010000000000000000000000000000
+      Text=Disk Space Remaining:
+      Text French=Espace disque disponible
+      Text German=Verbleibender Festplattenspeicher:
+      Text Portuguese=Espaço de disco restante:
+      Text Spanish=Espacio de Disco Remanente:
+      Text Italian=Spazio su disco rimanente:
+      Text Danish=Ledig diskplads:
+      Text Dutch=Resterende schijfruimte
+      Text Norwegian=Ledig diskplass:
+      Text Swedish=Ã…terstÃ¥ende diskutrymme
+    end
+    item: Static
+      Rectangle=90 138 264 168
+      Action=1
+      Create Flags=01010000000000000000000000000111
+    end
+    item: Static
+      Rectangle=90 8 260 41
+      Create Flags=01010000000000000000000000000000
+      Text=In the options list below, select the checkboxes for the options that you would like to have installed.  The disk space fields reflect the requirements of the options you have selected.
+      Text French=Dans la liste d'options suivante, veuillez sélectionner les cases des options que vous désirez installer. Le champ d'espace disque indique les conditions requises pour les options choisies
+      Text German=Wählen Sie in der Optionenliste unten die Kontrollkästchen für diejenigen Optionen, die Sie installieren möchten. Die Speicherfelder zeigen die benötigte Speicherkapazität für die gewählten Optionen an.
+      Text Portuguese=Na lista de opções abaixo, seleccione as caixas de verificação para as opções que gostaria de ter instalado. Os campos de espaço de disco reflectem os requerimentos das opções que seleccionou.
+      Text Spanish=En la lista de opciones que se ofrece a continuación, seleccione las casillas de comprobación para las opciones que desea instalar. Los campos del espacio en el disco reflejan los requerimientos de las opciones que ha seleccionado.
+      Text Italian=Nell\92elenco delle opzioni sotto, marca le caselle di controllo delle opzioni che vuoi installare. I campi dello spazio sul disco riflettono i requisiti delle opzioni selezionate.
+      Text Danish=Marker afkrydsningsfelterne for de komponenter, der skal installeres, pÃ¥ listen herunder. Diskpladsfelterne angiver pladskravene for de valgte komponenter.
+      Text Dutch=Kruis in de onderstaande lijst het vakje aan naast de opties die u wilt installeren. Achter elke optie staat de benodigde schijfruimte vermeld.
+      Text Norwegian=I listen over alternativer nedenfor, klikk i kontrollrutene for de alternativene du Ã¸nsker Ã¥ installere. Diskplassfeltene gjenspeiler kravene for de alternativene du har valgt.
+      Text Swedish=Kryssa för i rutorna nedan vilka alternativ du vill fÃ¥ installerade. I diskutrymmesfälten anges utrymmesbehoven för de alternativ du väljer.
+    end
+    item: Checkbox
+      Rectangle=91 41 126 56
+      Variable=COMPONENTS LIBS
+      Enabled Color=00000000000000001111111111111111
+      Create Flags=01010000000000010000000000000011
+      Flags=0000000000000010
+      Text=Libraries
+      Text=
+    end
+    item: Checkbox
+      Rectangle=90 56 148 71
+      Variable=COMPONENTS COMM
+      Enabled Color=00000000000000001111111111111111
+      Create Flags=01010000000000010000000000000011
+      Flags=0000000000000010
+      Text=Communications
+      Text=
+    end
+  end
+  item: Dialog
+    Title=Library Packages
+    Width=268
+    Height=204
+    Font Name=Helv
+    Font Size=8
+  end
+  item: Dialog
+    Title=Library Packages
+    Width=268
+    Height=204
+    Font Name=Helv
+    Font Size=8
+    item: Push Button
+      Rectangle=219 170 254 185
+      Enabled Color=00000000000000001111111111111111
+      Create Flags=01010000000000010000000000000000
+      Text=OK
+    end
+  end
+end
index 566e5c5..4bbd1a4 100755 (executable)
-import string\r
-import re\r
-import os\r
-import types\r
-\r
-infile=open("xemacs.tmpl","r")\r
-\r
-import version\r
-import dirs\r
-import filelist\r
-import packages\r
-\r
-def letter(package):\r
-    index = packages.all.index(package)\r
-    if index>29:\r
-       raise "WISE error: too many components"\r
-    return chr(ord("A")+index)\r
-\r
-def letters(package_list):\r
-    ret = ""\r
-    for p in package_list: \r
-       ret = ret+letter(p)\r
-    return ret\r
-\r
-def describe(package):\r
-    if package in packages.descriptions.keys():\r
-       return ": "+packages.descriptions[package]\r
-    else: return ""\r
-\r
-def ifblock(var,val):\r
-    return("item: If/While Statement\n  Variable=%s\n  Value=%s\n  Flags=00001010\nend\n" % (var,val))\r
-\r
-def endblock():\r
-    return("item: End Block\nend\n")\r
-\r
-def setvar(var,val):\r
-    return("item: Set Variable\n  Variable=%s\n  Value=%s\n  Flags=10000000\nend\n" % (string.upper(var), val))\r
-\r
-def default_letters_of_category(cat):\r
-    val = ""\r
-    for p in packages.default:\r
-        if packages.category_of_package(p) == cat:\r
-            val = val + packages.letter_of_package(p)\r
-    return val\r
-\r
-def set_category_defaults():\r
-    ret = ""\r
-    for c in packages.category_names:\r
-        ret = ret +  setvar(c, default_letters_of_category(c))\r
-    return ret\r
-\r
-def do_category(cat):\r
-    ret = ifblock("COMPONENTS", packages.letter_of_category(cat))\r
-    for pkg in packages.packages_of_category(cat):\r
-        ret = ret + ifblock(string.upper(cat),packages.letter_of_package(pkg))\r
-        for f in files_of_package(pkg):\r
-            ret = ret+install_pkg_file(f)\r
-        ret = ret + endblock()\r
-    ret = ret + endblock()\r
-    return ret\r
-\r
-def files_of_package(package):\r
-    manifest_file = dirs.packages + "\\pkginfo\\MANIFEST." + package\r
-    manifest = open(manifest_file,"r")\r
-    lines = manifest.readlines()\r
-    lines = map(lambda s:s[:-1], lines)\r
-    lines = map(lambda s:string.replace(s,'/','\\'), lines)\r
-    return lines\r
-\r
-def category_dialog(cat):\r
-    npkg = len(packages.packages_of_category(cat))\r
-    ret=""\r
-    ret=ret+"  item: Dialog\n    Title="+packages.category_descriptions[cat]+" Packages\n"\r
-    ret=ret+"    Width=210\n"\r
-    ret=ret+"    Height=%d\n" % (45+npkg*10)\r
-    ret=ret+"    Font Name=Helv\n"\r
-    ret=ret+"    Font Size=8\n"\r
-    ret=ret+"    item: Push Button\n"\r
-    ret=ret+"      Rectangle=107 %d 147 %d\n" % (5+npkg*10+2, 5+npkg*10+17)\r
-    ret=ret+"      Create Flags=01010000000000010000000000000001\n"\r
-    ret=ret+"      Text=OK\n"\r
-    ret=ret+"    end\n"\r
-    ret=ret+"    item: Push Button\n"\r
-    ret=ret+"      Rectangle=153 %d 193 %d\n" % (5+npkg*10+2, 5+npkg*10+17)\r
-    ret=ret+"      Variable=%s\n" % string.upper(cat)\r
-    ret=ret+"      Value=%%%s_SAVE%%\n" % string.upper(cat)\r
-    ret=ret+"      Create Flags=01010000000000010000000000000000\n"\r
-    ret=ret+"      Flags=0000000000000001\n"\r
-    ret=ret+"      Text=Cancel\n"\r
-    ret=ret+"    end\n"\r
-    ret=ret+"    item: Checkbox\n"\r
-    ret=ret+"      Rectangle=0 5 191 %d\n" % (10*npkg)\r
-    ret=ret+"      Variable=%s\n"%string.upper(cat)\r
-    ret=ret+"      Create Flags=01010000000000010000000000000011\n"\r
-    ret=ret+"      Flags=0000000000000010\n"\r
-    for pkg in packages.packages_of_category(cat):\r
-        ret = ret+"      Text=%s: %s\n"%( pkg, packages.package_descriptions[pkg])\r
-    ret=ret+"      Text=\n"\r
-    ret=ret+"    end\n"\r
-    ret=ret+"  end\n"\r
-    return ret\r
-\r
-def src_path(src,name):\r
-    return src + "\\" + name\r
-\r
-def dst_path(dst,name):\r
-    return "%MAINDIR%"+"\\"+dst+"\\" + name\r
-\r
-def install_file(name,src,dst):\r
-    return("item: Install File\n  Source=%s\n  Destination=%s\n  Flags=0000000010000010\nend\n" % (src_path(src,name),dst_path(dst,name)))\r
-\r
-def install_pkg_file(name):\r
-    return install_file(name,dirs.packages,dirs.pkg_dst)\r
-\r
-def do_package(package):\r
-    return ifblock("COMPONENTS",letter(package)) + \\r
-          string.join(map(install_pkg_file,files(package)),"")+ \\r
-          endblock()\r
-\r
-for line in infile.readlines():\r
-    left=string.find(line,"<<<")\r
-    if left>=0:\r
-       right=string.find(line,">>>")\r
-       expr=line[left+3:right]\r
-       val=eval(expr)\r
-       if type(val)==types.StringType:\r
-           print line[:left] + val + line[right+3:],\r
-       elif type(val)==types.ListType:\r
-           for v in val:\r
-               print line[:left] + v + line[right+3:],\r
-    else: print line,\r
-\r
-\r
+import string
+import re
+import os
+import types
+
+infile=open("xemacs.tmpl","r")
+
+import version
+import dirs
+import filelist
+import packages
+
+def letter(package):
+    index = packages.all.index(package)
+    if index>29:
+       raise "WISE error: too many components"
+    return chr(ord("A")+index)
+
+def letters(package_list):
+    ret = ""
+    for p in package_list: 
+       ret = ret+letter(p)
+    return ret
+
+def describe(package):
+    if package in packages.descriptions.keys():
+       return ": "+packages.descriptions[package]
+    else: return ""
+
+def ifblock(var,val):
+    return("item: If/While Statement\n  Variable=%s\n  Value=%s\n  Flags=00001010\nend\n" % (var,val))
+
+def endblock():
+    return("item: End Block\nend\n")
+
+def setvar(var,val):
+    return("item: Set Variable\n  Variable=%s\n  Value=%s\n  Flags=10000000\nend\n" % (string.upper(var), val))
+
+def default_letters_of_category(cat):
+    val = ""
+    for p in packages.default:
+        if packages.category_of_package(p) == cat:
+            val = val + packages.letter_of_package(p)
+    return val
+
+def set_category_defaults():
+    ret = ""
+    for c in packages.category_names:
+        ret = ret +  setvar(c, default_letters_of_category(c))
+    return ret
+
+def do_category(cat):
+    ret = ifblock("COMPONENTS", packages.letter_of_category(cat))
+    for pkg in packages.packages_of_category(cat):
+        ret = ret + ifblock(string.upper(cat),packages.letter_of_package(pkg))
+        for f in files_of_package(pkg):
+            ret = ret+install_pkg_file(f)
+        ret = ret + endblock()
+    ret = ret + endblock()
+    return ret
+
+def files_of_package(package):
+    manifest_file = dirs.packages + "\\pkginfo\\MANIFEST." + package
+    manifest = open(manifest_file,"r")
+    lines = manifest.readlines()
+    lines = map(lambda s:s[:-1], lines)
+    lines = map(lambda s:string.replace(s,'/','\\'), lines)
+    return lines
+
+def category_dialog(cat):
+    npkg = len(packages.packages_of_category(cat))
+    ret=""
+    ret=ret+"  item: Dialog\n    Title="+packages.category_descriptions[cat]+" Packages\n"
+    ret=ret+"    Width=210\n"
+    ret=ret+"    Height=%d\n" % (45+npkg*10)
+    ret=ret+"    Font Name=Helv\n"
+    ret=ret+"    Font Size=8\n"
+    ret=ret+"    item: Push Button\n"
+    ret=ret+"      Rectangle=107 %d 147 %d\n" % (5+npkg*10+2, 5+npkg*10+17)
+    ret=ret+"      Create Flags=01010000000000010000000000000001\n"
+    ret=ret+"      Text=OK\n"
+    ret=ret+"    end\n"
+    ret=ret+"    item: Push Button\n"
+    ret=ret+"      Rectangle=153 %d 193 %d\n" % (5+npkg*10+2, 5+npkg*10+17)
+    ret=ret+"      Variable=%s\n" % string.upper(cat)
+    ret=ret+"      Value=%%%s_SAVE%%\n" % string.upper(cat)
+    ret=ret+"      Create Flags=01010000000000010000000000000000\n"
+    ret=ret+"      Flags=0000000000000001\n"
+    ret=ret+"      Text=Cancel\n"
+    ret=ret+"    end\n"
+    ret=ret+"    item: Checkbox\n"
+    ret=ret+"      Rectangle=0 5 191 %d\n" % (10*npkg)
+    ret=ret+"      Variable=%s\n"%string.upper(cat)
+    ret=ret+"      Create Flags=01010000000000010000000000000011\n"
+    ret=ret+"      Flags=0000000000000010\n"
+    for pkg in packages.packages_of_category(cat):
+        ret = ret+"      Text=%s: %s\n"%( pkg, packages.package_descriptions[pkg])
+    ret=ret+"      Text=\n"
+    ret=ret+"    end\n"
+    ret=ret+"  end\n"
+    return ret
+
+def src_path(src,name):
+    return src + "\\" + name
+
+def dst_path(dst,name):
+    return "%MAINDIR%"+"\\"+dst+"\\" + name
+
+def install_file(name,src,dst):
+    return("item: Install File\n  Source=%s\n  Destination=%s\n  Flags=0000000010000010\nend\n" % (src_path(src,name),dst_path(dst,name)))
+
+def install_pkg_file(name):
+    return install_file(name,dirs.packages,dirs.pkg_dst)
+
+def do_package(package):
+    return ifblock("COMPONENTS",letter(package)) + \
+          string.join(map(install_pkg_file,files(package)),"")+ \
+          endblock()
+
+for line in infile.readlines():
+    left=string.find(line,"<<<")
+    if left>=0:
+       right=string.find(line,">>>")
+       expr=line[left+3:right]
+       val=eval(expr)
+       if type(val)==types.StringType:
+           print line[:left] + val + line[right+3:],
+       elif type(val)==types.ListType:
+           for v in val:
+               print line[:left] + v + line[right+3:],
+    else: print line,
+
+
index 80855ec..23b6ecd 100755 (executable)
@@ -1,32 +1,32 @@
-Document Type: DLG\r
-item: Custom Dialog\r
-  Name=type\r
-  item: Dialog\r
-    Title=type\r
-    Width=238\r
-    Height=208\r
-    Font Name=Helv\r
-    Font Size=8\r
-    item: Radio Button\r
-      Rectangle=5 5 40 20\r
-      Enabled Color=00000000000000001111111111111111\r
-      Create Flags=01010000000000010000000000001001\r
-      Text=minimal\r
-      Text=\r
-    end\r
-    item: Radio Button\r
-      Rectangle=5 25 40 40\r
-      Enabled Color=00000000000000001111111111111111\r
-      Create Flags=01010000000000010000000000001001\r
-      Text=custom\r
-      Text=\r
-    end\r
-    item: Radio Button\r
-      Rectangle=5 45 40 60\r
-      Enabled Color=00000000000000001111111111111111\r
-      Create Flags=01010000000000010000000000001001\r
-      Text=full\r
-      Text=\r
-    end\r
-  end\r
-end\r
+Document Type: DLG
+item: Custom Dialog
+  Name=type
+  item: Dialog
+    Title=type
+    Width=238
+    Height=208
+    Font Name=Helv
+    Font Size=8
+    item: Radio Button
+      Rectangle=5 5 40 20
+      Enabled Color=00000000000000001111111111111111
+      Create Flags=01010000000000010000000000001001
+      Text=minimal
+      Text=
+    end
+    item: Radio Button
+      Rectangle=5 25 40 40
+      Enabled Color=00000000000000001111111111111111
+      Create Flags=01010000000000010000000000001001
+      Text=custom
+      Text=
+    end
+    item: Radio Button
+      Rectangle=5 45 40 60
+      Enabled Color=00000000000000001111111111111111
+      Create Flags=01010000000000010000000000001001
+      Text=full
+      Text=
+    end
+  end
+end
index 7af36c5..eb10c46 100755 (executable)
@@ -1,3 +1,3 @@
-title="XEmacs 21.0b62 EXPERIMENTAL"\r
-welcome="Welcome to the %APPTITLE% setup program.  Please note that this is an experimental release and some features may not work correctly, especially on machines running Windows 95.  Please read the file PROBLEMS in the xemacs installation directory.  Send comments or bug reports to xemacs-nt@xemacs.org.  For more info see http://www.xemacs.org"\r
-\r
+title="XEmacs 21.0b62 EXPERIMENTAL"
+welcome="Welcome to the %APPTITLE% setup program.  Please note that this is an experimental release and some features may not work correctly, especially on machines running Windows 95.  Please read the file PROBLEMS in the xemacs installation directory.  Send comments or bug reports to xemacs-nt@xemacs.org.  For more info see http://www.xemacs.org"
+
index f591185..a0c467a 100755 (executable)
@@ -1,63 +1,63 @@
-Document Type: DLG\r
-item: Custom Dialog\r
-  Name=Welcome\r
-  Display Variable=DISPLAY\r
-  item: Dialog\r
-    Title=Welcome\r
-    Title French=Bienvenue\r
-    Title German=Willkommen\r
-    Title Portuguese=Bem-vindo \r
-    Title Spanish=Bienvenido\r
-    Title Italian=Benvenuto\r
-    Title Danish=Velkommen\r
-    Title Dutch=Welkom\r
-    Title Norwegian=Velkommen\r
-    Title Swedish=Välkommen\r
-    Width=280\r
-    Height=224\r
-    Font Name=Helv\r
-    Font Size=8\r
-    item: Push Button\r
-      Rectangle=172 185 214 199\r
-      Variable=DIRECTION\r
-      Value=N\r
-      Create Flags=01010000000000010000000000000001\r
-      Text=&Next >\r
-      Text French=&Suivant>\r
-      Text German=&Weiter>\r
-      Text Portuguese=&Próximo>\r
-      Text Spanish=&Siguiente >\r
-      Text Italian=&Avanti >\r
-      Text Danish=&Næste>\r
-      Text Dutch=&Volgende>\r
-      Text Norwegian=&Neste>\r
-      Text Swedish=&Nästa >\r
-    end\r
-    item: Push Button\r
-      Rectangle=222 185 264 199\r
-      Action=3\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=Cancel\r
-      Text French=Annuler\r
-      Text German=Abbrechen\r
-      Text Portuguese=Cancelar\r
-      Text Spanish=Cancelar\r
-      Text Italian=Annulla\r
-      Text Danish=Annuller\r
-      Text Dutch=Annuleren\r
-      Text Norwegian=Avbryt\r
-      Text Swedish=Avbryt\r
-    end\r
-    item: Static\r
-      Rectangle=9 177 263 178\r
-      Action=3\r
-      Create Flags=01010000000000000000000000000111\r
-    end\r
-    item: Static\r
-      Rectangle=91 22 245 118\r
-      Enabled Color=00000000000000001111111111111111\r
-      Create Flags=01010000000000000000000000000000\r
-      Text=Welcome to the %APPTITLE% setup program.  Please note that this is an experimental release and some features may not work correctly.  Send comments or bug reports to xemacs-nt@xemacs.org rather than one of the other XEmacs mailing lists.  For more info see http://www.xemacs.org\r
-    end\r
-  end\r
-end\r
+Document Type: DLG
+item: Custom Dialog
+  Name=Welcome
+  Display Variable=DISPLAY
+  item: Dialog
+    Title=Welcome
+    Title French=Bienvenue
+    Title German=Willkommen
+    Title Portuguese=Bem-vindo 
+    Title Spanish=Bienvenido
+    Title Italian=Benvenuto
+    Title Danish=Velkommen
+    Title Dutch=Welkom
+    Title Norwegian=Velkommen
+    Title Swedish=Välkommen
+    Width=280
+    Height=224
+    Font Name=Helv
+    Font Size=8
+    item: Push Button
+      Rectangle=172 185 214 199
+      Variable=DIRECTION
+      Value=N
+      Create Flags=01010000000000010000000000000001
+      Text=&Next >
+      Text French=&Suivant>
+      Text German=&Weiter>
+      Text Portuguese=&Próximo>
+      Text Spanish=&Siguiente >
+      Text Italian=&Avanti >
+      Text Danish=&Næste>
+      Text Dutch=&Volgende>
+      Text Norwegian=&Neste>
+      Text Swedish=&Nästa >
+    end
+    item: Push Button
+      Rectangle=222 185 264 199
+      Action=3
+      Create Flags=01010000000000010000000000000000
+      Text=Cancel
+      Text French=Annuler
+      Text German=Abbrechen
+      Text Portuguese=Cancelar
+      Text Spanish=Cancelar
+      Text Italian=Annulla
+      Text Danish=Annuller
+      Text Dutch=Annuleren
+      Text Norwegian=Avbryt
+      Text Swedish=Avbryt
+    end
+    item: Static
+      Rectangle=9 177 263 178
+      Action=3
+      Create Flags=01010000000000000000000000000111
+    end
+    item: Static
+      Rectangle=91 22 245 118
+      Enabled Color=00000000000000001111111111111111
+      Create Flags=01010000000000000000000000000000
+      Text=Welcome to the %APPTITLE% setup program.  Please note that this is an experimental release and some features may not work correctly.  Send comments or bug reports to xemacs-nt@xemacs.org rather than one of the other XEmacs mailing lists.  For more info see http://www.xemacs.org
+    end
+  end
+end
index 7c20e1e..6f09e51 100755 (executable)
-Document Type: WSE\r
-item: Global\r
-  Version=7.0\r
-  Title=<<<version.title + " Installation">>>\r
-  Flags=00000100\r
-  Languages=65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\r
-  Japanese Font Name=MS Gothic\r
-  Japanese Font Size=10\r
-  Progress Bar DLL=%_WISE_%\Progress\WIZ%_EXE_OS_TYPE_%.DLL\r
-  Start Gradient=0 0 255\r
-  End Gradient=0 0 0\r
-  Windows Flags=00000100000000010010110000001000\r
-  Log Pathname=%MAINDIR%\INSTALL.LOG\r
-  Message Font=MS Sans Serif\r
-  Font Size=8\r
-  Disk Filename=SETUP\r
-  Patch Flags=0000000000000001\r
-  Patch Threshold=85\r
-  Patch Memory=4000\r
-  FTP Cluster Size=20\r
-  Dialogs Version=6\r
-  Variable Name1=_SYS_\r
-  Variable Default1=C:\WINDOWS\SYSTEM\r
-  Variable Flags1=00001000\r
-  Variable Name2=_WISE_\r
-  Variable Default2=C:\PROGRAM FILES\WISE INSTALLBUILDER\r
-  Variable Flags2=00001000\r
-end\r
-item: Get Temporary Filename\r
-  Variable=READMEFILE\r
-end\r
-item: Install File\r
-  Source=<<<dirs.source>>>\nt\Wise\Copying.txt\r
-  Destination=%TEMP%\%READMEFILE%\r
-  Flags=0000000000100010\r
-end\r
-item: Open/Close INSTALL.LOG\r
-  Flags=00000001\r
-end\r
-item: Check if File/Dir Exists\r
-  Pathname=%SYS%\r
-  Flags=10000100\r
-end\r
-item: Set Variable\r
-  Variable=SYS\r
-  Value=%WIN%\r
-end\r
-item: End Block\r
-end\r
-item: Set Variable\r
-  Variable=APPTITLE\r
-  Value=<<<version.title>>>\r
-  Flags=10000000\r
-end\r
-item: Set Variable\r
-  Variable=GROUP\r
-  Value=XEmacs\r
-  Flags=10000000\r
-end\r
-item: Set Variable\r
-  Variable=DISABLED\r
-  Value=!\r
-end\r
-item: Set Variable\r
-  Variable=MAINDIR\r
-  Value=XEmacs\r
-  Flags=10000000\r
-end\r
-item: Check Configuration\r
-  Flags=10111011\r
-end\r
-item: Get Registry Key Value\r
-  Variable=COMMON\r
-  Key=SOFTWARE\Microsoft\Windows\CurrentVersion\r
-  Default=C:\Program Files\Common Files\r
-  Value Name=CommonFilesDir\r
-  Flags=00000100\r
-end\r
-item: Get Registry Key Value\r
-  Variable=PROGRAM_FILES\r
-  Key=SOFTWARE\Microsoft\Windows\CurrentVersion\r
-  Default=C:\Program Files\r
-  Value Name=ProgramFilesDir\r
-  Flags=00000100\r
-end\r
-item: Set Variable\r
-  Variable=MAINDIR\r
-  Value=%PROGRAM_FILES%\%MAINDIR%\r
-  Flags=00001100\r
-end\r
-item: Set Variable\r
-  Variable=EXPLORER\r
-  Value=1\r
-end\r
-item: Else Statement\r
-end\r
-item: Set Variable\r
-  Variable=MAINDIR\r
-  Value=C:\%MAINDIR%\r
-  Flags=00001100\r
-end\r
-item: End Block\r
-end\r
-item: Set Variable\r
-  Variable=BACKUP\r
-  Value=%MAINDIR%\BACKUP\r
-  Flags=10000000\r
-end\r
-item: Set Variable\r
-  Variable=DOBACKUP\r
-  Value=B\r
-  Flags=10000000\r
-end\r
-item: Set Variable\r
-  Variable=COMPONENTS\r
-  Value=ACE\r
-  Flags=10000000\r
-end\r
-<<<set_category_defaults()>>>\r
-item: Wizard Block\r
-  Direction Variable=DIRECTION\r
-  Display Variable=DISPLAY\r
-  Bitmap Pathname=<<<dirs.source>>>\nt\Wise\gnu.bmp\r
-  X Position=9\r
-  Y Position=10\r
-  Filler Color=8421440\r
-  Dialog=Select Program Manager Group\r
-  Dialog=Select Backup Directory\r
-  Dialog=Display Registration Information\r
-  Dialog=Get Registration Information\r
-  Variable=EXPLORER\r
-  Variable=DOBACKUP\r
-  Variable=DOBRAND\r
-  Variable=DOBRAND\r
-  Value=1\r
-  Value=A\r
-  Value=1\r
-  Value=1\r
-  Compare=0\r
-  Compare=1\r
-  Compare=0\r
-  Compare=1\r
-  Flags=00000011\r
-end\r
-item: Custom Dialog Set\r
-  Name=Welcome\r
-  Display Variable=DISPLAY\r
-  item: Dialog\r
-    Title=Welcome\r
-    Title French=Bienvenue\r
-    Title German=Willkommen\r
-    Title Portuguese=Bem-vindo \r
-    Title Spanish=Bienvenido\r
-    Title Italian=Benvenuto\r
-    Title Danish=Velkommen\r
-    Title Dutch=Welkom\r
-    Title Norwegian=Velkommen\r
-    Title Swedish=Välkommen\r
-    Width=280\r
-    Height=224\r
-    Font Name=Helv\r
-    Font Size=8\r
-    item: Push Button\r
-      Rectangle=172 185 214 199\r
-      Variable=DIRECTION\r
-      Value=N\r
-      Create Flags=01010000000000010000000000000001\r
-      Text=&Next >\r
-      Text French=&Suivant>\r
-      Text German=&Weiter>\r
-      Text Portuguese=&Próximo>\r
-      Text Spanish=&Siguiente >\r
-      Text Italian=&Avanti >\r
-      Text Danish=&Næste>\r
-      Text Dutch=&Volgende>\r
-      Text Norwegian=&Neste>\r
-      Text Swedish=&Nästa >\r
-    end\r
-    item: Push Button\r
-      Rectangle=222 185 264 199\r
-      Action=3\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=Cancel\r
-      Text French=Annuler\r
-      Text German=Abbrechen\r
-      Text Portuguese=Cancelar\r
-      Text Spanish=Cancelar\r
-      Text Italian=Annulla\r
-      Text Danish=Annuller\r
-      Text Dutch=Annuleren\r
-      Text Norwegian=Avbryt\r
-      Text Swedish=Avbryt\r
-    end\r
-    item: Static\r
-      Rectangle=9 177 263 178\r
-      Action=3\r
-      Create Flags=01010000000000000000000000000111\r
-    end\r
-    item: Static\r
-      Rectangle=91 22 245 118\r
-      Enabled Color=00000000000000001111111111111111\r
-      Create Flags=01010000000000000000000000000000\r
-      Text=<<<version.welcome>>>\r
-    end\r
-  end\r
-end\r
-item: Custom Dialog Set\r
-  Name=Display ReadMe\r
-  Display Variable=DISPLAY\r
-  item: Dialog\r
-    Title=Read Me File\r
-    Title French=Fichier Lisez-moi\r
-    Title German=Liesmich-Datei\r
-    Title Portuguese=Ficheiro Leia-me\r
-    Title Spanish=Archivo Léeme\r
-    Title Italian=File Leggimi\r
-    Title Danish=Vigtigt fil\r
-    Title Dutch=Leesmij-bestand\r
-    Title Norwegian=Informasjonsfil\r
-    Title Swedish=Läs mig-fil\r
-    Width=280\r
-    Height=224\r
-    Font Name=Helv\r
-    Font Size=8\r
-    item: Push Button\r
-      Rectangle=172 185 214 199\r
-      Variable=DIRECTION\r
-      Value=N\r
-      Create Flags=01010000000000010000000000000001\r
-      Text=I &Agree >\r
-      Text French=&Suivant>\r
-      Text German=&Weiter>\r
-      Text Portuguese=&Próximo>\r
-      Text Spanish=&Siguiente >\r
-      Text Italian=&Avanti >\r
-      Text Danish=&Næste>\r
-      Text Dutch=&Volgende>\r
-      Text Norwegian=&Neste>\r
-      Text Swedish=&Nästa >\r
-    end\r
-    item: Push Button\r
-      Rectangle=222 185 264 199\r
-      Action=3\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=Cancel\r
-      Text French=Annuler\r
-      Text German=Abbrechen\r
-      Text Portuguese=Cancelar\r
-      Text Spanish=Cancelar\r
-      Text Italian=Annulla\r
-      Text Danish=Slet\r
-      Text Dutch=Annuleren\r
-      Text Norwegian=Avbryt\r
-      Text Swedish=Avbryt\r
-    end\r
-    item: Static\r
-      Rectangle=9 177 263 178\r
-      Action=3\r
-      Create Flags=01010000000000000000000000000111\r
-    end\r
-    item: Editbox\r
-      Rectangle=85 11 254 170\r
-      Value=%TEMP%\%READMEFILE%\r
-      Help Context=16711681\r
-      Create Flags=01010000101000000000100000000100\r
-    end\r
-  end\r
-end\r
-item: Custom Dialog Set\r
-  Name=Select Destination Directory\r
-  Display Variable=DISPLAY\r
-  item: Dialog\r
-    Title=Choose Destination Location\r
-    Title French=Choisissez la localisation de destination\r
-    Title German=Zielpfad wählen\r
-    Title Portuguese=Escolher Local de Destino\r
-    Title Spanish=Elegir una localización de destino\r
-    Title Italian=Scegli Posizione di Destinazione\r
-    Title Danish=Vælg destinationsmappe\r
-    Title Dutch=Kies doellocatie\r
-    Title Norwegian=Velg mÃ¥lplassering\r
-    Title Swedish=Välj ställe för installationen\r
-    Width=280\r
-    Height=224\r
-    Font Name=Helv\r
-    Font Size=8\r
-    item: Push Button\r
-      Rectangle=172 185 214 199\r
-      Variable=DIRECTION\r
-      Value=N\r
-      Create Flags=01010000000000010000000000000001\r
-      Text=&Next >\r
-      Text French=&Suivant>\r
-      Text German=&Weiter>\r
-      Text Portuguese=&Próximo>\r
-      Text Spanish=&Siguiente >\r
-      Text Italian=&Avanti >\r
-      Text Danish=&Næste>\r
-      Text Dutch=&Volgende>\r
-      Text Norwegian=&Neste>\r
-      Text Swedish=&Nästa >\r
-    end\r
-    item: Push Button\r
-      Rectangle=130 185 172 199\r
-      Variable=DIRECTION\r
-      Value=B\r
-      Create Flags=01010000000000010000000000000000\r
-      Flags=0000000000000001\r
-      Text=< &Back\r
-      Text French=<&Retour\r
-      Text German=<&Zurück\r
-      Text Portuguese=<&Retornar\r
-      Text Spanish=<&Retroceder\r
-      Text Italian=< &Indietro\r
-      Text Danish=<&Tilbage\r
-      Text Dutch=<&Terug\r
-      Text Norwegian=<&Tilbake\r
-      Text Swedish=< &Tillbaka\r
-    end\r
-    item: Push Button\r
-      Rectangle=222 185 264 199\r
-      Action=3\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=Cancel\r
-      Text French=Annuler\r
-      Text German=Abbrechen\r
-      Text Portuguese=Cancelar\r
-      Text Spanish=Cancelar\r
-      Text Italian=Annulla\r
-      Text Danish=Annuller\r
-      Text Dutch=Annuleren\r
-      Text Norwegian=Avbryt\r
-      Text Swedish=Avbryt\r
-    end\r
-    item: Static\r
-      Rectangle=9 177 263 178\r
-      Action=3\r
-      Create Flags=01010000000000000000000000000111\r
-    end\r
-    item: Static\r
-      Rectangle=90 10 260 122\r
-      Create Flags=01010000000000000000000000000000\r
-      Text=Setup will install %APPTITLE% in the following folder.\r
-      Text=\r
-      Text=To install into a different folder, click Browse, and select another folder. \r
-      Text=\r
-      Text=You can choose not to install %APPTITLE% by clicking Cancel to exit Setup.\r
-      Text French=%APPTITLE% va Ãªtre installé dans le répertoire ci-dessous\r
-      Text French=\r
-      Text French=Pour l'installer dans un répertoire différent, cliquez sur Parcourir et sélectionnez un autre répertoire\r
-      Text French=\r
-      Text French=Vous pouvez choisir de ne pas installer %APPTITLE% en cliquant sur Annuler pour quitter l'Installation\r
-      Text German=Installation speichert %APPTITLE% im unten angegebenen Ordner:\r
-      Text German=\r
-      Text German=Zur Installation in einem anderen Ordner auf Blättern klicken und einen anderen Ordner wählen.\r
-      Text German=\r
-      Text German=Wenn Sie %APPTITLE% nicht installieren möchten, können Sie durch Klicken auf Abbrechen die Installation beenden.\r
-      Text Portuguese=Configuração instalará %APPTITLE% na seguinte pasta\r
-      Text Portuguese=\r
-      Text Portuguese=Para instalar numa pasta diferente, faça um clique sobre Procurar, e seleccione uma outra pasta.\r
-      Text Portuguese=\r
-      Text Portuguese=Pode escolher não instalar %APPTITLE% clicando no botão Cancelar para sair da Configuração\r
-      Text Spanish=El programa de Configuración instalará %APPTITLE% en la siguiente carpeta.\r
-      Text Spanish=\r
-      Text Spanish=Para instalar en una carpeta diferente, haga un clic en Visualizar, y seleccione otra carpeta.\r
-      Text Spanish=\r
-      Text Spanish=Puede elegir no instalar %APPTITLE% haciendo un clic en Cancelar para salir de Configuración.\r
-      Text Italian=Il programma di installazione installerà %APPTITLE% nella seguente cartella.\r
-      Text Italian=\r
-      Text Italian=Per effettuare l\92installazione in una cartella diversa, fai clic su Sfoglia, e scegli un\92altra cartella.\r
-      Text Italian=\r
-      Text Italian=Puoi scegliere di non installare %APPTITLE% facendo clic su Annulla per uscire dal programma di installazione\r
-      Text Danish=Installationsprogrammet installerer %APPTITLE% i denne mappe.\r
-      Text Danish=\r
-      Text Danish=Man installerer i en anden mappe ved at klikke pÃ¥ Browse og vælge en anden mappe.\r
-      Text Danish=\r
-      Text Danish=Man kan vælge ikke at installere %APPTITLE% ved at klikke pÃ¥ Slet og forlade installationsprogrammet.\r
-      Text Dutch=Het installatieprogramma installeert %APPTITLE% in de volgende directory.\r
-      Text Dutch=\r
-      Text Dutch=Als u het in een andere directory wilt installeren, klik dan op Bladeren en kies een andere locatie.\r
-      Text Dutch=\r
-      Text Dutch=U kunt ervoor kiezen om %APPTITLE% niet te installeren: klik op Annuleren om het installatieprogramma te verlaten.\r
-      Text Norwegian=Oppsett vil installere %APPTITLE% i følgende mappe.\r
-      Text Norwegian=\r
-      Text Norwegian=For Ã¥ installere i en annen mappe, klikk Bla igjennom og velg en annen mappe.\r
-      Text Norwegian=\r
-      Text Norwegian=Du kan velge Ã¥ ikke installere %APPTITLE% ved Ã¥ velge Avbryt for Ã¥ gÃ¥ ut av Oppsett.\r
-      Text Swedish=Installationsprogrammet installerar %APPTITLE% i följande mapp.\r
-      Text Swedish=\r
-      Text Swedish=Om du vill att installationen ska göras i en annan mapp, klickar du pÃ¥ Bläddra och väljer en annan mapp.\r
-      Text Swedish=\r
-      Text Swedish=Du kan välja att inte installera %APPTITLE% genom att klicka pÃ¥ Avbryt för att lämna installationsprogrammet.\r
-    end\r
-    item: Static\r
-      Rectangle=90 134 260 162\r
-      Action=1\r
-      Create Flags=01010000000000000000000000000111\r
-      Text=Destination Folder\r
-      Text French=Répertoire de destination\r
-      Text German=Zielordner\r
-      Text Portuguese=Pasta de Destino\r
-      Text Spanish=Carpeta de Destino\r
-      Text Italian=Cartella di destinazione\r
-      Text Danish=Destinationsmappe\r
-      Text Dutch=Doeldirectory\r
-      Text Norwegian=MÃ¥lmappe\r
-      Text Swedish=Destinationsmapp\r
-    end\r
-    item: Push Button\r
-      Rectangle=213 143 255 157\r
-      Variable=MAINDIR_SAVE\r
-      Value=%MAINDIR%\r
-      Destination Dialog=1\r
-      Action=2\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=B&rowse...\r
-      Text French=P&arcourir\r
-      Text German=B&lättern...\r
-      Text Portuguese=P&rocurar\r
-      Text Spanish=V&isualizar...\r
-      Text Italian=Sfoglia...\r
-      Text Danish=&Gennemse...\r
-      Text Dutch=B&laderen...\r
-      Text Norwegian=Bla igjennom\r
-      Text Swedish=&Bläddra\r
-    end\r
-    item: Static\r
-      Rectangle=95 146 211 157\r
-      Destination Dialog=2\r
-      Create Flags=01010000000000000000000000000000\r
-      Text=%MAINDIR%\r
-      Text French=%MAINDIR%\r
-      Text German=%MAINDIR%\r
-      Text Portuguese=%MAINDIR%\r
-      Text Spanish=%MAINDIR%\r
-      Text Italian=%MAINDIR%\r
-      Text Danish=%MAINDIR%\r
-      Text Dutch=%MAINDIR%\r
-      Text Norwegian=%MAINDIR%\r
-      Text Swedish=%MAINDIR%\r
-    end\r
-  end\r
-  item: Dialog\r
-    Title=Select Destination Directory\r
-    Title French=Choisissez le répertoire de destination\r
-    Title German=Zielverzeichnis wählen\r
-    Title Portuguese=Seleccionar Directório de Destino\r
-    Title Spanish=Seleccione el Directorio de Destino\r
-    Title Italian=Seleziona Directory di destinazione\r
-    Title Danish=Vælg Destinationsbibliotek\r
-    Title Dutch=Kies doeldirectory\r
-    Title Norwegian=Velg mÃ¥lkatalog\r
-    Title Swedish=Välj destinationskalatog\r
-    Width=221\r
-    Height=173\r
-    Font Name=Helv\r
-    Font Size=8\r
-    item: Listbox\r
-      Rectangle=5 2 160 149\r
-      Variable=MAINDIR\r
-      Create Flags=01010000100000010000000101000000\r
-      Flags=0000110000100010\r
-      Text=%MAINDIR%\r
-      Text French=%MAINDIR%\r
-      Text German=%MAINDIR%\r
-      Text Portuguese=%MAINDIR%\r
-      Text Spanish=%MAINDIR%\r
-      Text Italian=%MAINDIR%\r
-      Text Danish=%MAINDIR%\r
-      Text Dutch=%MAINDIR%\r
-      Text Norwegian=%MAINDIR%\r
-      Text Swedish=%MAINDIR%\r
-    end\r
-    item: Push Button\r
-      Rectangle=167 6 212 21\r
-      Create Flags=01010000000000010000000000000001\r
-      Text=OK\r
-      Text French=OK\r
-      Text German=OK\r
-      Text Portuguese=OK\r
-      Text Spanish=ACEPTAR\r
-      Text Italian=OK\r
-      Text Danish=OK\r
-      Text Dutch=OK\r
-      Text Norwegian=OK\r
-      Text Swedish=OK\r
-    end\r
-    item: Push Button\r
-      Rectangle=167 25 212 40\r
-      Variable=MAINDIR\r
-      Value=%MAINDIR_SAVE%\r
-      Create Flags=01010000000000010000000000000000\r
-      Flags=0000000000000001\r
-      Text=Cancel\r
-      Text French=Annuler\r
-      Text German=Abbrechen \r
-      Text Portuguese=Cancelar\r
-      Text Spanish=Cancelar\r
-      Text Italian=Annulla\r
-      Text Danish=Slet\r
-      Text Dutch=Annuleren\r
-      Text Norwegian=Avbryt\r
-      Text Swedish=Avbryt\r
-    end\r
-  end\r
-end\r
-item: Custom Dialog Set\r
-  Name=Select Packages\r
-  Display Variable=DISPLAY\r
-  item: Dialog\r
-    Title=Select Packages\r
-    Width=271\r
-    Height=224\r
-    Font Name=Helv\r
-    Font Size=8\r
-    item: Push Button\r
-      Rectangle=150 187 195 202\r
-      Variable=DIRECTION\r
-      Value=N\r
-      Create Flags=01010000000000010000000000000001\r
-      Text=&Next >\r
-      Text French=&Suite >\r
-      Text German=&Weiter >\r
-      Text Spanish=&Siguiente >\r
-      Text Italian=&Avanti >\r
-    end\r
-    item: Push Button\r
-      Rectangle=105 187 150 202\r
-      Variable=DIRECTION\r
-      Value=B\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=< &Back\r
-      Text French=< &Retour\r
-      Text German=< &Zurück\r
-      Text Spanish=< &Atrás\r
-      Text Italian=< &Indietro\r
-    end\r
-    item: Push Button\r
-      Rectangle=211 187 256 202\r
-      Action=3\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=&Cancel\r
-      Text French=&Annuler\r
-      Text German=&Abbrechen\r
-      Text Spanish=&Cancelar\r
-      Text Italian=&Annulla\r
-    end\r
-    item: Static\r
-      Rectangle=8 180 256 181\r
-      Action=3\r
-      Create Flags=01010000000000000000000000000111\r
-    end\r
-    item: Static\r
-      Rectangle=86 8 258 28\r
-      Create Flags=01010000000000000000000000000000\r
-      Flags=0000000000000001\r
-      Name=Times New Roman\r
-      Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18\r
-      Text=Select Packages\r
-      Text French=Sélectionner les composants\r
-      Text German=Komponenten auswählen\r
-      Text Spanish=Seleccione componentes\r
-      Text Italian=Selezionare i componenti\r
-    end\r
-    item: Checkbox\r
-      Rectangle=83 62 211 146\r
-      Variable=COMPONENTS LIBS,COMM,OA,OS,PROG,WP,GAMES\r
-      Create Flags=01010000000000010000000000000011\r
-      Flags=0000000000000110\r
-      Text=Libraries\r
-      Text=Communication\r
-      Text=Productivity\r
-      Text=Operating System\r
-      Text=Programming\r
-      Text=Word Processing\r
-      Text=Games and Amusements\r
-      Text=\r
-    end\r
-    item: Static\r
-      Rectangle=194 162 242 172\r
-      Variable=COMPONENTS, LIBS, COMM, OA, OS, PROG, WP, GAMES\r
-      Value=MAINDIR\r
-      Create Flags=01010000000000000000000000000010\r
-    end\r
-    item: Static\r
-      Rectangle=194 153 242 162\r
-      Variable=COMPONENTS, LIBS, COMM, OA, OS, PROG, WP, GAMES\r
-      Create Flags=01010000000000000000000000000010\r
-    end\r
-    item: Static\r
-      Rectangle=107 153 196 164\r
-      Create Flags=01010000000000000000000000000000\r
-      Text=Disk Space Required:\r
-      Text French=Espace disque requis :\r
-      Text German=Notwendiger Speicherplatz:\r
-      Text Spanish=Espacio requerido en el disco:\r
-      Text Italian=Spazio su disco necessario:\r
-    end\r
-    item: Static\r
-      Rectangle=107 162 196 172\r
-      Create Flags=01010000000000000000000000000000\r
-      Text=Disk Space Remaining:\r
-      Text French=Espace disque disponible :\r
-      Text German=Verbleibender Speicherplatz:\r
-      Text Spanish=Espacio en disco disponible:\r
-      Text Italian=Spazio su disco disponibile:\r
-    end\r
-    item: Static\r
-      Rectangle=80 146 256 175\r
-      Action=1\r
-      Create Flags=01010000000000000000000000000111\r
-    end\r
-    item: Static\r
-      Rectangle=83 30 256 57\r
-      Create Flags=01010000000000000000000000000000\r
-      Text=Choose which package categories to install by checking the boxes below. Press the Options buttons to select individual packages.\r
-      Text French=Choisissez les composants que vous voulez installer en cochant les cases ci-dessous.\r
-      Text German=Wählen Sie die zu installierenden Komponenten, indem Sie in die entsprechenden Kästchen klicken.\r
-      Text Spanish=Elija los componentes que desee instalar marcando los cuadros de abajo.\r
-      Text Italian=Scegliere quali componenti installare selezionando le caselle sottostanti.\r
-    end\r
-    item: Push Button\r
-      Rectangle=230 62 254 72\r
-      Variable=LIBS_SAVE\r
-      Value=%LIBS%\r
-      Destination Dialog=1\r
-      Action=2\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=Options\r
-      Text French=&Annuler\r
-      Text German=&Abbrechen\r
-      Text Spanish=&Cancelar\r
-      Text Italian=&Annulla\r
-    end\r
-    item: Push Button\r
-      Rectangle=230 74 254 84\r
-      Variable=COMM_SAVE\r
-      Value=%COMM%\r
-      Destination Dialog=2\r
-      Action=2\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=Options\r
-      Text French=&Annuler\r
-      Text German=&Abbrechen\r
-      Text Spanish=&Cancelar\r
-      Text Italian=&Annulla\r
-    end\r
-    item: Push Button\r
-      Rectangle=230 86 254 96\r
-      Variable=OA_SAVE\r
-      Value=%OA%\r
-      Destination Dialog=3\r
-      Action=2\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=Options\r
-      Text French=&Annuler\r
-      Text German=&Abbrechen\r
-      Text Spanish=&Cancelar\r
-      Text Italian=&Annulla\r
-    end\r
-    item: Push Button\r
-      Rectangle=230 98 254 108\r
-      Variable=OS_SAVE\r
-      Value=%OS%\r
-      Destination Dialog=4\r
-      Action=2\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=Options\r
-      Text French=&Annuler\r
-      Text German=&Abbrechen\r
-      Text Spanish=&Cancelar\r
-      Text Italian=&Annulla\r
-    end\r
-    item: Push Button\r
-      Rectangle=230 110 254 120\r
-      Variable=PROG_SAVE\r
-      Value=%PROG%\r
-      Destination Dialog=5\r
-      Action=2\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=Options\r
-      Text French=&Annuler\r
-      Text German=&Abbrechen\r
-      Text Spanish=&Cancelar\r
-      Text Italian=&Annulla\r
-    end\r
-    item: Push Button\r
-      Rectangle=230 122 254 132\r
-      Variable=WP_SAVE\r
-      Value=%WP%\r
-      Destination Dialog=6\r
-      Action=2\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=Options\r
-      Text French=&Annuler\r
-      Text German=&Abbrechen\r
-      Text Spanish=&Cancelar\r
-      Text Italian=&Annulla\r
-    end\r
-    item: Push Button\r
-      Rectangle=230 134 254 144\r
-      Variable=GAMES_SAVE\r
-      Value=%GAMES%\r
-      Destination Dialog=7\r
-      Action=2\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=Options\r
-      Text French=&Annuler\r
-      Text German=&Abbrechen\r
-      Text Spanish=&Cancelar\r
-      Text Italian=&Annulla\r
-    end\r
-    item: Set Variable\r
-      Variable=COMPONENTS\r
-      Value=X\r
-      Flags=00000001\r
-    end\r
-  end\r
-<<<string.join(map(category_dialog,packages.category_names),"")>>>\r
-end\r
-item: Custom Dialog Set\r
-  Name=Select Program Manager Group\r
-  Display Variable=DISPLAY\r
-  item: Dialog\r
-    Title=Select Program Manager Group\r
-    Title French=Sélectionnez le Groupe du Gestionnaire de Programmes\r
-    Title German=Programm-Managergruppe wählen\r
-    Title Portuguese=Seleccionar o Grupo Gestor de Programas\r
-    Title Spanish=Seleccione el Grupo del Administrador del Programa\r
-    Title Italian=Seleziona il gruppo Program Manager\r
-    Title Danish=Vælg Programstyringsgruppen\r
-    Title Dutch=Kies Programmabeheergroep.\r
-    Title Norwegian=Velg Programbehandlingsgruppen\r
-    Title Swedish=Välj grupp i Programhanteraren\r
-    Width=280\r
-    Height=224\r
-    Font Name=Helv\r
-    Font Size=8\r
-    item: Push Button\r
-      Rectangle=172 185 214 199\r
-      Variable=DIRECTION\r
-      Value=N\r
-      Create Flags=01010000000000010000000000000001\r
-      Text=&Next >\r
-      Text French=&Suivant>\r
-      Text German=&Weiter>\r
-      Text Portuguese=&Próximo>\r
-      Text Spanish=&Siguiente >\r
-      Text Italian=&Avanti >\r
-      Text Danish=&Næste>\r
-      Text Dutch=&Volgende>\r
-      Text Norwegian=&Neste>\r
-      Text Swedish=&Nästa >\r
-    end\r
-    item: Push Button\r
-      Rectangle=130 185 172 199\r
-      Variable=DIRECTION\r
-      Value=B\r
-      Create Flags=01010000000000010000000000000000\r
-      Flags=0000000000000001\r
-      Text=< &Back\r
-      Text French=<&Retour\r
-      Text German=<&Zurück\r
-      Text Portuguese=<&Retornar\r
-      Text Spanish=<&Retroceder\r
-      Text Italian=< &Indietro\r
-      Text Danish=<&Back\r
-      Text Dutch=<&Terug\r
-      Text Norwegian=<&Tilbake\r
-      Text Swedish=< &Tillbaka\r
-    end\r
-    item: Push Button\r
-      Rectangle=222 185 264 199\r
-      Action=3\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=Cancel\r
-      Text French=Annuler\r
-      Text German=Abbrechen\r
-      Text Portuguese=Cancelar\r
-      Text Spanish=Cancelar\r
-      Text Italian=Annulla\r
-      Text Danish=Slet\r
-      Text Dutch=Annuleren\r
-      Text Norwegian=Avbryt\r
-      Text Swedish=Avbryt\r
-    end\r
-    item: Static\r
-      Rectangle=9 177 263 178\r
-      Action=3\r
-      Create Flags=01010000000000000000000000000111\r
-    end\r
-    item: Static\r
-      Rectangle=90 10 260 38\r
-      Create Flags=01010000000000000000000000000000\r
-      Text=Enter the name of the Program Manager group to add %APPTITLE% icons to:\r
-      Text French=Entrez le nom du groupe du Gestionnaire de Programmes où placer les icônes %APPTITLE% Ã  :\r
-      Text German=Den Namen der Programm-Managergruppe wählen, in der die %APPTITLE%-Symbole gespeichert werden sollen:\r
-      Text Portuguese=Introduzir o nome do Grupo Gestor de Programa para acrescentar os Ã­cones %APPTITLE% para:\r
-      Text Spanish=Introduzca el nombre del grupo del Administrador del Programa para añadir los iconos %APPTITLE para:\r
-      Text Italian=Inserisci il nome del gruppo Program Manager per aggiungere le icone di %APPTITLE% a:\r
-      Text Danish=Indtast navnet pÃ¥ Programstyringsgruppen der skal tilføjes %APPTITLE% elementer:\r
-      Text Dutch=Breng de naam van de programmabeheergroep in waaraan u %APPTITLE%-pictogrammen wilt toevoegen.\r
-      Text Norwegian=Tast inn navnet pÃ¥ programbehandlingsgruppen for Ã¥ legge %APPTITLE%-ikoner til:\r
-      Text Swedish=Skriv in namnet pÃ¥ den grupp i Programhanteraren där du vill ha ikonerna för %APPTITLE%:\r
-    end\r
-    item: Combobox\r
-      Rectangle=90 42 260 148\r
-      Variable=GROUP\r
-      Create Flags=01010000001000010000001100000001\r
-      Flags=0000000000000001\r
-      Text=%GROUP%\r
-      Text=\r
-      Text French=%GROUP%\r
-      Text French=\r
-      Text German=%GROUP%\r
-      Text German=\r
-      Text Portuguese=%GROUP%\r
-      Text Portuguese=\r
-      Text Spanish=%GROUP%\r
-      Text Spanish=\r
-      Text Italian=%GROUP%\r
-      Text Italian=\r
-      Text Danish=%GROUP%\r
-      Text Danish=\r
-      Text Dutch=%GROUP%\r
-      Text Dutch=\r
-      Text Norwegian=%GROUP%\r
-      Text Norwegian=\r
-      Text Swedish=%GROUP%\r
-      Text Swedish=\r
-    end\r
-  end\r
-end\r
-item: Custom Dialog Set\r
-  Name=Start Installation\r
-  Display Variable=DISPLAY\r
-  item: Dialog\r
-    Title=Start Installation\r
-    Title French=Commencer l'installation\r
-    Title German=Installation beginnen\r
-    Title Portuguese=Iniciar Instalação\r
-    Title Spanish=Comenzar la Instalación\r
-    Title Italian=Avvia Installazione\r
-    Title Danish=Start installationen\r
-    Title Dutch=Start de installatie.\r
-    Title Norwegian=Start installeringen\r
-    Title Swedish=Starta installationen\r
-    Width=280\r
-    Height=224\r
-    Font Name=Helv\r
-    Font Size=8\r
-    item: Push Button\r
-      Rectangle=172 185 214 199\r
-      Variable=DIRECTION\r
-      Value=N\r
-      Create Flags=01010000000000010000000000000001\r
-      Text=&Next >\r
-      Text French=&Suivant>\r
-      Text German=&Weiter>\r
-      Text Portuguese=&Próximo>\r
-      Text Spanish=&Siguiente >\r
-      Text Italian=&Avanti >\r
-      Text Danish=&Næste>\r
-      Text Dutch=&Volgende>\r
-      Text Norwegian=&Neste>\r
-      Text Swedish=&Nästa >\r
-    end\r
-    item: Push Button\r
-      Rectangle=130 185 172 199\r
-      Variable=DIRECTION\r
-      Value=B\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=< &Back\r
-      Text French=<&Retour\r
-      Text German=<&Zurück\r
-      Text Portuguese=<&Retornar\r
-      Text Spanish=<&Retroceder\r
-      Text Italian=< &Indietro\r
-      Text Danish=<&Tilbage\r
-      Text Dutch=<&Terug\r
-      Text Norwegian=<&Tilbake\r
-      Text Swedish=< &Tillbaka\r
-    end\r
-    item: Push Button\r
-      Rectangle=222 185 264 199\r
-      Action=3\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=Cancel\r
-      Text French=Annuler\r
-      Text German=Abbrechen\r
-      Text Portuguese=Cancelar\r
-      Text Spanish=Cancelar\r
-      Text Italian=Annulla\r
-      Text Danish=Annuller\r
-      Text Dutch=Annuleren\r
-      Text Norwegian=Avbryt\r
-      Text Swedish=Avbryt\r
-    end\r
-    item: Static\r
-      Rectangle=9 177 263 178\r
-      Action=3\r
-      Create Flags=01010000000000000000000000000111\r
-    end\r
-    item: Static\r
-      Rectangle=90 10 260 70\r
-      Create Flags=01010000000000000000000000000000\r
-      Text=You are now ready to install %APPTITLE%.\r
-      Text=\r
-      Text=Press the Next button to begin the installation or the Back button to reenter the installation information.\r
-      Text French=Vous Ãªtes maintenant prêt Ã  installer %APPTITLE%\r
-      Text French=\r
-      Text French=Cliquez sur Suivant pour commencer l'installation ou Retour pour entrer Ã  nouveau les informations d'installation\r
-      Text German=Sie sind jetzt zur Installation von %APPTITLE% bereit.\r
-      Text German=\r
-      Text German=Auf die Schaltfläche Weiter klicken, um mit dem Start der Installation zu beginnen, oder auf die Schaltfläche Zurück, um die Installationsinformationen nochmals aufzurufen.\r
-      Text Portuguese=Está agora pronto para instalar %APPTITLE%\r
-      Text Portuguese=\r
-      Text Portuguese=Pressione o botão Próximo para começar a instalação ou o botão Retornar para introduzir novamente a informação sobre a instalação\r
-      Text Spanish=Ahora estará listo para instalar %APPTITLE%.\r
-      Text Spanish=\r
-      Text Spanish=Pulse el botón de Próximo para comenzar la instalación o el botón Retroceder para volver a introducir la información sobre la instalación.\r
-      Text Italian=Sei pronto ad installare %APPTITLE%.\r
-      Text Italian=\r
-      Text Italian=Premi il tasto Avanti per iniziare l\92installazione o il tasto Indietro per rientrare nuovamente nei dati sull\92installazione\r
-      Text Danish=Du er nu klar til at installere %APPTITLE%.\r
-      Text Danish=\r
-      Text Danish=Klik pÃ¥ Næste for at starte installationen eller pÃ¥ Tilbage for at Ã¦ndre installationsoplysningerne.\r
-      Text Dutch=U bent nu klaar om %APPTITLE% te installeren.\r
-      Text Dutch=\r
-      Text Dutch=Druk op Volgende om met de installatie te beginnen of op Terug om de installatie-informatie opnieuw in te voeren.\r
-      Text Norwegian=Du er nÃ¥ klar til Ã¥ installere %APPTITLE%\r
-      Text Norwegian=\r
-      Text Norwegian=Trykk pÃ¥ Neste-tasten for Ã¥ starte installeringen, eller Tilbake-tasten for Ã¥ taste inn installasjonsinformasjonen pÃ¥ nytt.\r
-      Text Swedish=Du Ã¤r nu redo att installera %APPTITLE%.\r
-      Text Swedish=\r
-      Text Swedish=Tryck pÃ¥ Nästa för att starta installationen eller pÃ¥ Tillbaka för att skriva in installationsinformationen pÃ¥ nytt.\r
-    end\r
-  end\r
-end\r
-item: If/While Statement\r
-  Variable=DISPLAY\r
-  Value=Select Destination Directory\r
-end\r
-item: Set Variable\r
-  Variable=BACKUP\r
-  Value=%MAINDIR%\BACKUP\r
-end\r
-item: End Block\r
-end\r
-item: End Block\r
-end\r
-item: If/While Statement\r
-  Variable=DOBACKUP\r
-  Value=A\r
-end\r
-item: Set Variable\r
-  Variable=BACKUPDIR\r
-  Value=%BACKUP%\r
-end\r
-item: End Block\r
-end\r
-item: Open/Close INSTALL.LOG\r
-end\r
-item: Check Disk Space\r
-  Component=COMPONENTS\r
-end\r
-item: Display Graphic\r
-  Pathname=<<<dirs.source>>>\nt\Wise\xemacs-beta.bmp\r
-  X Position=32784\r
-  Y Position=16\r
-end\r
-item: Include Script\r
-  Pathname=%_WISE_%\INCLUDE\uninstal.wse\r
-end\r
-<<<ifblock("COMPONENTS","X")>>>\r
-<<<string.join(map(lambda x:install_file(x[0],x[1],x[2]),filelist.all),"")>>>\r
-<<<endblock()>>>\r
-<<<map(do_category,packages.category_names)>>>\r
-item: Set Variable\r
-  Variable=COMMON\r
-  Value=%COMMON%\r
-  Flags=00010100\r
-end\r
-item: Set Variable\r
-  Variable=MAINDIR\r
-  Value=%MAINDIR%\r
-  Flags=00010100\r
-end\r
-item: Check Configuration\r
-  Flags=10111011\r
-end\r
-item: Get Registry Key Value\r
-  Variable=STARTUPDIR\r
-  Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\r
-  Default=%WIN%\Start Menu\Programs\StartUp\r
-  Value Name=StartUp\r
-  Flags=00000010\r
-end\r
-item: Get Registry Key Value\r
-  Variable=DESKTOPDIR\r
-  Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\r
-  Default=%WIN%\Desktop\r
-  Value Name=Desktop\r
-  Flags=00000010\r
-end\r
-item: Get Registry Key Value\r
-  Variable=STARTMENUDIR\r
-  Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\r
-  Default=%WIN%\Start Menu\r
-  Value Name=Start Menu\r
-  Flags=00000010\r
-end\r
-item: Get Registry Key Value\r
-  Variable=GROUPDIR\r
-  Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\r
-  Default=%WIN%\Start Menu\Programs\r
-  Value Name=Programs\r
-  Flags=00000010\r
-end\r
-item: Get Registry Key Value\r
-  Variable=CSTARTUPDIR\r
-  Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\r
-  Default=%STARTUPDIR%\r
-  Value Name=Common Startup\r
-  Flags=00000100\r
-end\r
-item: Get Registry Key Value\r
-  Variable=CDESKTOPDIR\r
-  Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\r
-  Default=%DESKTOPDIR%\r
-  Value Name=Common Desktop\r
-  Flags=00000100\r
-end\r
-item: Get Registry Key Value\r
-  Variable=CSTARTMENUDIR\r
-  Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\r
-  Default=%STARTMENUDIR%\r
-  Value Name=Common Start Menu\r
-  Flags=00000100\r
-end\r
-item: Get Registry Key Value\r
-  Variable=CGROUPDIR\r
-  Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\r
-  Default=%GROUPDIR%\r
-  Value Name=Common Programs\r
-  Flags=00000100\r
-end\r
-item: Set Variable\r
-  Variable=CGROUP_SAVE\r
-  Value=%GROUP%\r
-end\r
-item: Set Variable\r
-  Variable=GROUP\r
-  Value=%GROUPDIR%\%GROUP%\r
-end\r
-item: Create Shortcut\r
-  Source=%MAINDIR%\<<<dirs.dst>>>\i386-pc-win32\runemacs.exe\r
-  Destination=%GROUP%\XEmacs.lnk\r
-  Working Directory=\\r
-  Icon Number=0\r
-end\r
-item: Create Shortcut\r
-  Source=%MAINDIR%\<<<dirs.dst>>>\i386-pc-win32\runemacs.exe\r
-  Destination=%DESKTOPDIR%\XEmacs.lnk\r
-  Working Directory=\\r
-  Icon Number=0\r
-end\r
-item: Else Statement\r
-end\r
-item: Add ProgMan Icon\r
-  Group=%GROUP%\r
-  Icon Name=XEmacs\r
-  Command Line=%MAINDIR%\<<<dirs.dst>>>\i386-pc-win32\runemacs.exe\r
-  Default Directory=\\r
-  Flags=01000000\r
-end\r
-item: End Block\r
-end\r
-item: Edit Registry\r
-  Total Keys=16\r
-  item: Key\r
-    Key=SOFTWARE\GNU\XEmacs\r
-    New Value=%MAINDIR%\r
-    Value Name=emacs_dir\r
-    Root=2\r
-  end\r
-  item: Key\r
-    Key=SOFTWARE\GNU\XEmacs\r
-    New Value=%MAINDIR%\xemacs-packages\r
-    Value Name=EMACSPACKAGEPATH\r
-    Root=2\r
-  end\r
-  item: Key\r
-    Key=SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\runemacs.exe\r
-    New Value=%MAINDIR%\<<<dirs.dst>>>\i386-pc-win32\r
-    Value Name=Path\r
-    Root=2\r
-  end\r
-  item: Key\r
-    Key=SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\xemacs.exe\r
-    New Value=%MAINDIR%\<<<dirs.dst>>>\i386-pc-win32\r
-    Value Name=Path\r
-    Root=2\r
-  end\r
-  item: Key\r
-    Key=.el\r
-    New Value=elfile\r
-  end\r
-  item: Key\r
-    Key=.el\r
-    New Value=text/plain\r
-    Value Name=Content Type\r
-  end\r
-  item: Key\r
-    Key=elfile\r
-    New Value=Emacs lisp\r
-  end\r
-  item: Key\r
-    Key=elfile\r
-    New Value=00 00 01 00\r
-    Value Name=EditFlags\r
-    Data Type=4\r
-  end\r
-  item: Key\r
-    Key=elfile\DefaultIcon\r
-    New Value=%MAINDIR%\<<<dirs.dst>>>\i386-pc-win32\runemacs.exe,2\r
-  end\r
-  item: Key\r
-    Key=elfile\QuickView\r
-    New Value=*\r
-  end\r
-  item: Key\r
-    Key=elfile\Shell\r
-    New Value=\r
-  end\r
-  item: Key\r
-    Key=elfile\Shell\open\r
-  end\r
-  item: Key\r
-    Key=elfile\Shell\open\command\r
-    New Value=%MAINDIR%\<<<dirs.dst>>>\i386-pc-win32\runemacs.exe "%%1"\r
-  end\r
-  item: Key\r
-    Key=elfile\Shell\open\ddeexec\r
-    New Value=open("%%1")\r
-  end\r
-  item: Key\r
-    Key=elfile\Shell\open\ddeexec\Application\r
-    New Value=XEmacs\r
-    New Value=\r
-  end\r
-  item: Key\r
-    Key=elfile\Shell\open\ddeexec\topic\r
-    New Value=System\r
-  end\r
-end\r
-item: Wizard Block\r
-  Direction Variable=DIRECTION\r
-  Display Variable=DISPLAY\r
-  Bitmap Pathname=<<<dirs.source>>>\nt\Wise\gnu.bmp\r
-  X Position=9\r
-  Y Position=10\r
-  Filler Color=8421440\r
-  Flags=00000011\r
-end\r
-item: Custom Dialog Set\r
-  Name=Finished\r
-  Display Variable=DISPLAY\r
-  item: Dialog\r
-    Title=Installation Complete\r
-    Title French=Installation en cours\r
-    Title German=Installation abgeschlossen\r
-    Title Portuguese=Instalação Completa \r
-    Title Spanish=Se ha completado la Instalación\r
-    Title Italian=Installazione completata\r
-    Title Danish=Installation gennemført\r
-    Title Dutch=Installatie afgerond\r
-    Title Norwegian=Installasjonen er fullført\r
-    Title Swedish=Installationen klar\r
-    Width=280\r
-    Height=224\r
-    Font Name=Helv\r
-    Font Size=8\r
-    item: Push Button\r
-      Rectangle=170 185 212 199\r
-      Variable=DIRECTION\r
-      Value=N\r
-      Create Flags=01010000000000010000000000000001\r
-      Text=&Finish >\r
-      Text French=&Terminer>\r
-      Text German=&Fertigstellen>\r
-      Text Portuguese=&Terminar >\r
-      Text Spanish=&Finalizar>\r
-      Text Italian=&Fine >\r
-      Text Danish=&Afslut >\r
-      Text Dutch=&Klaar>\r
-      Text Norwegian=&Avslutt>\r
-      Text Swedish=&Sluta>\r
-    end\r
-    item: Push Button\r
-      Control Name=CANCEL\r
-      Rectangle=222 185 264 199\r
-      Action=3\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=Cancel\r
-      Text French=Annuler\r
-      Text German=Abbrechen\r
-      Text Portuguese=Cancelar\r
-      Text Spanish=Cancelar\r
-      Text Italian=Annulla\r
-      Text Danish=Annuller\r
-      Text Dutch=Annuleren\r
-      Text Norwegian=Avbryt\r
-      Text Swedish=Avbryt\r
-    end\r
-    item: Static\r
-      Rectangle=9 177 263 178\r
-      Action=3\r
-      Create Flags=01010000000000000000000000000111\r
-    end\r
-    item: Static\r
-      Rectangle=90 10 260 63\r
-      Enabled Color=00000000000000001111111111111111\r
-      Create Flags=01010000000000000000000000000000\r
-      Text=%APPTITLE% has been successfully installed.\r
-      Text=\r
-      Text=\r
-      Text=Press the Finish button to exit this installation.\r
-      Text=\r
-      Text French=L'installation de %APPTITLE% est réussie\r
-      Text French=\r
-      Text French=\r
-      Text French=Cliquez sur Terminer pour quitter cette installation\r
-      Text French=\r
-      Text German=%APPTITLE% wurde erfolgreich installiert.\r
-      Text German=\r
-      Text German=\r
-      Text German=Zum Beenden dieser Installation Fertigstellen anklicken.\r
-      Text German=\r
-      Text Portuguese=%APPTITLE% foi instalado com Ãªxito\r
-      Text Portuguese=\r
-      Text Portuguese=\r
-      Text Portuguese=Pressionar o botão Terminar para sair desta instalação\r
-      Text Portuguese=\r
-      Text Spanish=%APPTITLE% se ha instalado con Ã©xito.\r
-      Text Spanish=\r
-      Text Spanish=\r
-      Text Spanish=Pulse el botón de Finalizar para salir de esta instalación.\r
-      Text Spanish=\r
-      Text Italian=%APPTITLE% Ã¨ stato installato.\r
-      Text Italian=\r
-      Text Italian=\r
-      Text Italian=Premi il pulsante Fine per uscire dal programma di installazione\r
-      Text Italian=\r
-      Text Danish=%APPTITLE% er nu installeret korrekt.\r
-      Text Danish=\r
-      Text Danish=\r
-      Text Danish=Klik pÃ¥ Afslut for at afslutte installationen.\r
-      Text Danish=\r
-      Text Dutch=%APPTITLE% is met succes geïnstalleerd.\r
-      Text Dutch=\r
-      Text Dutch=\r
-      Text Dutch=Druk op Klaar om deze installatie af te ronden.\r
-      Text Dutch=\r
-      Text Norwegian=Installasjonen av %APPTITLE% er suksessfull.\r
-      Text Norwegian=\r
-      Text Norwegian=\r
-      Text Norwegian=Trykk pÃ¥ Avslutt-tasten for Ã¥ avslutte denne installasjonen.\r
-      Text Norwegian=\r
-      Text Swedish=Installationen av %APPTITLE% har lyckats.\r
-      Text Swedish=\r
-      Text Swedish=\r
-      Text Swedish=Tryck pÃ¥ Sluta för att gÃ¥ ur installationsprogrammet.\r
-      Text Swedish=\r
-    end\r
-    item: Push Button\r
-      Control Name=BACK\r
-      Rectangle=128 185 170 199\r
-      Variable=DIRECTION\r
-      Value=B\r
-      Create Flags=01010000000000010000000000000000\r
-      Text=< &Back\r
-      Text French=<&Retour\r
-      Text German=<&Zurück\r
-      Text Portuguese=<&Retornar\r
-      Text Spanish=<&Retroceder\r
-      Text Italian=< &Indietro\r
-      Text Danish=<&Tilbage\r
-      Text Dutch=<&Terug\r
-      Text Norwegian=<&Tilbake\r
-      Text Swedish=< &Tillbaka\r
-    end\r
-    item: Set Control Attribute\r
-      Control Name=BACK\r
-      Operation=1\r
-    end\r
-    item: Set Control Attribute\r
-      Control Name=CANCEL\r
-      Operation=1\r
-    end\r
-  end\r
-end\r
-item: End Block\r
-end\r
-item: New Event\r
-  Name=Cancel\r
-end\r
-item: Include Script\r
-  Pathname=%_WISE_%\INCLUDE\rollback.wse\r
-end\r
+Document Type: WSE
+item: Global
+  Version=7.0
+  Title=<<<version.title + " Installation">>>
+  Flags=00000100
+  Languages=65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+  Japanese Font Name=MS Gothic
+  Japanese Font Size=10
+  Progress Bar DLL=%_WISE_%\Progress\WIZ%_EXE_OS_TYPE_%.DLL
+  Start Gradient=0 0 255
+  End Gradient=0 0 0
+  Windows Flags=00000100000000010010110000001000
+  Log Pathname=%MAINDIR%\INSTALL.LOG
+  Message Font=MS Sans Serif
+  Font Size=8
+  Disk Filename=SETUP
+  Patch Flags=0000000000000001
+  Patch Threshold=85
+  Patch Memory=4000
+  FTP Cluster Size=20
+  Dialogs Version=6
+  Variable Name1=_SYS_
+  Variable Default1=C:\WINDOWS\SYSTEM
+  Variable Flags1=00001000
+  Variable Name2=_WISE_
+  Variable Default2=C:\PROGRAM FILES\WISE INSTALLBUILDER
+  Variable Flags2=00001000
+end
+item: Get Temporary Filename
+  Variable=READMEFILE
+end
+item: Install File
+  Source=<<<dirs.source>>>\nt\Wise\Copying.txt
+  Destination=%TEMP%\%READMEFILE%
+  Flags=0000000000100010
+end
+item: Open/Close INSTALL.LOG
+  Flags=00000001
+end
+item: Check if File/Dir Exists
+  Pathname=%SYS%
+  Flags=10000100
+end
+item: Set Variable
+  Variable=SYS
+  Value=%WIN%
+end
+item: End Block
+end
+item: Set Variable
+  Variable=APPTITLE
+  Value=<<<version.title>>>
+  Flags=10000000
+end
+item: Set Variable
+  Variable=GROUP
+  Value=XEmacs
+  Flags=10000000
+end
+item: Set Variable
+  Variable=DISABLED
+  Value=!
+end
+item: Set Variable
+  Variable=MAINDIR
+  Value=XEmacs
+  Flags=10000000
+end
+item: Check Configuration
+  Flags=10111011
+end
+item: Get Registry Key Value
+  Variable=COMMON
+  Key=SOFTWARE\Microsoft\Windows\CurrentVersion
+  Default=C:\Program Files\Common Files
+  Value Name=CommonFilesDir
+  Flags=00000100
+end
+item: Get Registry Key Value
+  Variable=PROGRAM_FILES
+  Key=SOFTWARE\Microsoft\Windows\CurrentVersion
+  Default=C:\Program Files
+  Value Name=ProgramFilesDir
+  Flags=00000100
+end
+item: Set Variable
+  Variable=MAINDIR
+  Value=%PROGRAM_FILES%\%MAINDIR%
+  Flags=00001100
+end
+item: Set Variable
+  Variable=EXPLORER
+  Value=1
+end
+item: Else Statement
+end
+item: Set Variable
+  Variable=MAINDIR
+  Value=C:\%MAINDIR%
+  Flags=00001100
+end
+item: End Block
+end
+item: Set Variable
+  Variable=BACKUP
+  Value=%MAINDIR%\BACKUP
+  Flags=10000000
+end
+item: Set Variable
+  Variable=DOBACKUP
+  Value=B
+  Flags=10000000
+end
+item: Set Variable
+  Variable=COMPONENTS
+  Value=ACE
+  Flags=10000000
+end
+<<<set_category_defaults()>>>
+item: Wizard Block
+  Direction Variable=DIRECTION
+  Display Variable=DISPLAY
+  Bitmap Pathname=<<<dirs.source>>>\nt\Wise\gnu.bmp
+  X Position=9
+  Y Position=10
+  Filler Color=8421440
+  Dialog=Select Program Manager Group
+  Dialog=Select Backup Directory
+  Dialog=Display Registration Information
+  Dialog=Get Registration Information
+  Variable=EXPLORER
+  Variable=DOBACKUP
+  Variable=DOBRAND
+  Variable=DOBRAND
+  Value=1
+  Value=A
+  Value=1
+  Value=1
+  Compare=0
+  Compare=1
+  Compare=0
+  Compare=1
+  Flags=00000011
+end
+item: Custom Dialog Set
+  Name=Welcome
+  Display Variable=DISPLAY
+  item: Dialog
+    Title=Welcome
+    Title French=Bienvenue
+    Title German=Willkommen
+    Title Portuguese=Bem-vindo 
+    Title Spanish=Bienvenido
+    Title Italian=Benvenuto
+    Title Danish=Velkommen
+    Title Dutch=Welkom
+    Title Norwegian=Velkommen
+    Title Swedish=Välkommen
+    Width=280
+    Height=224
+    Font Name=Helv
+    Font Size=8
+    item: Push Button
+      Rectangle=172 185 214 199
+      Variable=DIRECTION
+      Value=N
+      Create Flags=01010000000000010000000000000001
+      Text=&Next >
+      Text French=&Suivant>
+      Text German=&Weiter>
+      Text Portuguese=&Próximo>
+      Text Spanish=&Siguiente >
+      Text Italian=&Avanti >
+      Text Danish=&Næste>
+      Text Dutch=&Volgende>
+      Text Norwegian=&Neste>
+      Text Swedish=&Nästa >
+    end
+    item: Push Button
+      Rectangle=222 185 264 199
+      Action=3
+      Create Flags=01010000000000010000000000000000
+      Text=Cancel
+      Text French=Annuler
+      Text German=Abbrechen
+      Text Portuguese=Cancelar
+      Text Spanish=Cancelar
+      Text Italian=Annulla
+      Text Danish=Annuller
+      Text Dutch=Annuleren
+      Text Norwegian=Avbryt
+      Text Swedish=Avbryt
+    end
+    item: Static
+      Rectangle=9 177 263 178
+      Action=3
+      Create Flags=01010000000000000000000000000111
+    end
+    item: Static
+      Rectangle=91 22 245 118
+      Enabled Color=00000000000000001111111111111111
+      Create Flags=01010000000000000000000000000000
+      Text=<<<version.welcome>>>
+    end
+  end
+end
+item: Custom Dialog Set
+  Name=Display ReadMe
+  Display Variable=DISPLAY
+  item: Dialog
+    Title=Read Me File
+    Title French=Fichier Lisez-moi
+    Title German=Liesmich-Datei
+    Title Portuguese=Ficheiro Leia-me
+    Title Spanish=Archivo Léeme
+    Title Italian=File Leggimi
+    Title Danish=Vigtigt fil
+    Title Dutch=Leesmij-bestand
+    Title Norwegian=Informasjonsfil
+    Title Swedish=Läs mig-fil
+    Width=280
+    Height=224
+    Font Name=Helv
+    Font Size=8
+    item: Push Button
+      Rectangle=172 185 214 199
+      Variable=DIRECTION
+      Value=N
+      Create Flags=01010000000000010000000000000001
+      Text=I &Agree >
+      Text French=&Suivant>
+      Text German=&Weiter>
+      Text Portuguese=&Próximo>
+      Text Spanish=&Siguiente >
+      Text Italian=&Avanti >
+      Text Danish=&Næste>
+      Text Dutch=&Volgende>
+      Text Norwegian=&Neste>
+      Text Swedish=&Nästa >
+    end
+    item: Push Button
+      Rectangle=222 185 264 199
+      Action=3
+      Create Flags=01010000000000010000000000000000
+      Text=Cancel
+      Text French=Annuler
+      Text German=Abbrechen
+      Text Portuguese=Cancelar
+      Text Spanish=Cancelar
+      Text Italian=Annulla
+      Text Danish=Slet
+      Text Dutch=Annuleren
+      Text Norwegian=Avbryt
+      Text Swedish=Avbryt
+    end
+    item: Static
+      Rectangle=9 177 263 178
+      Action=3
+      Create Flags=01010000000000000000000000000111
+    end
+    item: Editbox
+      Rectangle=85 11 254 170
+      Value=%TEMP%\%READMEFILE%
+      Help Context=16711681
+      Create Flags=01010000101000000000100000000100
+    end
+  end
+end
+item: Custom Dialog Set
+  Name=Select Destination Directory
+  Display Variable=DISPLAY
+  item: Dialog
+    Title=Choose Destination Location
+    Title French=Choisissez la localisation de destination
+    Title German=Zielpfad wählen
+    Title Portuguese=Escolher Local de Destino
+    Title Spanish=Elegir una localización de destino
+    Title Italian=Scegli Posizione di Destinazione
+    Title Danish=Vælg destinationsmappe
+    Title Dutch=Kies doellocatie
+    Title Norwegian=Velg mÃ¥lplassering
+    Title Swedish=Välj ställe för installationen
+    Width=280
+    Height=224
+    Font Name=Helv
+    Font Size=8
+    item: Push Button
+      Rectangle=172 185 214 199
+      Variable=DIRECTION
+      Value=N
+      Create Flags=01010000000000010000000000000001
+      Text=&Next >
+      Text French=&Suivant>
+      Text German=&Weiter>
+      Text Portuguese=&Próximo>
+      Text Spanish=&Siguiente >
+      Text Italian=&Avanti >
+      Text Danish=&Næste>
+      Text Dutch=&Volgende>
+      Text Norwegian=&Neste>
+      Text Swedish=&Nästa >
+    end
+    item: Push Button
+      Rectangle=130 185 172 199
+      Variable=DIRECTION
+      Value=B
+      Create Flags=01010000000000010000000000000000
+      Flags=0000000000000001
+      Text=< &Back
+      Text French=<&Retour
+      Text German=<&Zurück
+      Text Portuguese=<&Retornar
+      Text Spanish=<&Retroceder
+      Text Italian=< &Indietro
+      Text Danish=<&Tilbage
+      Text Dutch=<&Terug
+      Text Norwegian=<&Tilbake
+      Text Swedish=< &Tillbaka
+    end
+    item: Push Button
+      Rectangle=222 185 264 199
+      Action=3
+      Create Flags=01010000000000010000000000000000
+      Text=Cancel
+      Text French=Annuler
+      Text German=Abbrechen
+      Text Portuguese=Cancelar
+      Text Spanish=Cancelar
+      Text Italian=Annulla
+      Text Danish=Annuller
+      Text Dutch=Annuleren
+      Text Norwegian=Avbryt
+      Text Swedish=Avbryt
+    end
+    item: Static
+      Rectangle=9 177 263 178
+      Action=3
+      Create Flags=01010000000000000000000000000111
+    end
+    item: Static
+      Rectangle=90 10 260 122
+      Create Flags=01010000000000000000000000000000
+      Text=Setup will install %APPTITLE% in the following folder.
+      Text=
+      Text=To install into a different folder, click Browse, and select another folder. 
+      Text=
+      Text=You can choose not to install %APPTITLE% by clicking Cancel to exit Setup.
+      Text French=%APPTITLE% va Ãªtre installé dans le répertoire ci-dessous
+      Text French=
+      Text French=Pour l'installer dans un répertoire différent, cliquez sur Parcourir et sélectionnez un autre répertoire
+      Text French=
+      Text French=Vous pouvez choisir de ne pas installer %APPTITLE% en cliquant sur Annuler pour quitter l'Installation
+      Text German=Installation speichert %APPTITLE% im unten angegebenen Ordner:
+      Text German=
+      Text German=Zur Installation in einem anderen Ordner auf Blättern klicken und einen anderen Ordner wählen.
+      Text German=
+      Text German=Wenn Sie %APPTITLE% nicht installieren möchten, können Sie durch Klicken auf Abbrechen die Installation beenden.
+      Text Portuguese=Configuração instalará %APPTITLE% na seguinte pasta
+      Text Portuguese=
+      Text Portuguese=Para instalar numa pasta diferente, faça um clique sobre Procurar, e seleccione uma outra pasta.
+      Text Portuguese=
+      Text Portuguese=Pode escolher não instalar %APPTITLE% clicando no botão Cancelar para sair da Configuração
+      Text Spanish=El programa de Configuración instalará %APPTITLE% en la siguiente carpeta.
+      Text Spanish=
+      Text Spanish=Para instalar en una carpeta diferente, haga un clic en Visualizar, y seleccione otra carpeta.
+      Text Spanish=
+      Text Spanish=Puede elegir no instalar %APPTITLE% haciendo un clic en Cancelar para salir de Configuración.
+      Text Italian=Il programma di installazione installerà %APPTITLE% nella seguente cartella.
+      Text Italian=
+      Text Italian=Per effettuare l\92installazione in una cartella diversa, fai clic su Sfoglia, e scegli un\92altra cartella.
+      Text Italian=
+      Text Italian=Puoi scegliere di non installare %APPTITLE% facendo clic su Annulla per uscire dal programma di installazione
+      Text Danish=Installationsprogrammet installerer %APPTITLE% i denne mappe.
+      Text Danish=
+      Text Danish=Man installerer i en anden mappe ved at klikke pÃ¥ Browse og vælge en anden mappe.
+      Text Danish=
+      Text Danish=Man kan vælge ikke at installere %APPTITLE% ved at klikke pÃ¥ Slet og forlade installationsprogrammet.
+      Text Dutch=Het installatieprogramma installeert %APPTITLE% in de volgende directory.
+      Text Dutch=
+      Text Dutch=Als u het in een andere directory wilt installeren, klik dan op Bladeren en kies een andere locatie.
+      Text Dutch=
+      Text Dutch=U kunt ervoor kiezen om %APPTITLE% niet te installeren: klik op Annuleren om het installatieprogramma te verlaten.
+      Text Norwegian=Oppsett vil installere %APPTITLE% i følgende mappe.
+      Text Norwegian=
+      Text Norwegian=For Ã¥ installere i en annen mappe, klikk Bla igjennom og velg en annen mappe.
+      Text Norwegian=
+      Text Norwegian=Du kan velge Ã¥ ikke installere %APPTITLE% ved Ã¥ velge Avbryt for Ã¥ gÃ¥ ut av Oppsett.
+      Text Swedish=Installationsprogrammet installerar %APPTITLE% i följande mapp.
+      Text Swedish=
+      Text Swedish=Om du vill att installationen ska göras i en annan mapp, klickar du pÃ¥ Bläddra och väljer en annan mapp.
+      Text Swedish=
+      Text Swedish=Du kan välja att inte installera %APPTITLE% genom att klicka pÃ¥ Avbryt för att lämna installationsprogrammet.
+    end
+    item: Static
+      Rectangle=90 134 260 162
+      Action=1
+      Create Flags=01010000000000000000000000000111
+      Text=Destination Folder
+      Text French=Répertoire de destination
+      Text German=Zielordner
+      Text Portuguese=Pasta de Destino
+      Text Spanish=Carpeta de Destino
+      Text Italian=Cartella di destinazione
+      Text Danish=Destinationsmappe
+      Text Dutch=Doeldirectory
+      Text Norwegian=MÃ¥lmappe
+      Text Swedish=Destinationsmapp
+    end
+    item: Push Button
+      Rectangle=213 143 255 157
+      Variable=MAINDIR_SAVE
+      Value=%MAINDIR%
+      Destination Dialog=1
+      Action=2
+      Create Flags=01010000000000010000000000000000
+      Text=B&rowse...
+      Text French=P&arcourir
+      Text German=B&lättern...
+      Text Portuguese=P&rocurar
+      Text Spanish=V&isualizar...
+      Text Italian=Sfoglia...
+      Text Danish=&Gennemse...
+      Text Dutch=B&laderen...
+      Text Norwegian=Bla igjennom
+      Text Swedish=&Bläddra
+    end
+    item: Static
+      Rectangle=95 146 211 157
+      Destination Dialog=2
+      Create Flags=01010000000000000000000000000000
+      Text=%MAINDIR%
+      Text French=%MAINDIR%
+      Text German=%MAINDIR%
+      Text Portuguese=%MAINDIR%
+      Text Spanish=%MAINDIR%
+      Text Italian=%MAINDIR%
+      Text Danish=%MAINDIR%
+      Text Dutch=%MAINDIR%
+      Text Norwegian=%MAINDIR%
+      Text Swedish=%MAINDIR%
+    end
+  end
+  item: Dialog
+    Title=Select Destination Directory
+    Title French=Choisissez le répertoire de destination
+    Title German=Zielverzeichnis wählen
+    Title Portuguese=Seleccionar Directório de Destino
+    Title Spanish=Seleccione el Directorio de Destino
+    Title Italian=Seleziona Directory di destinazione
+    Title Danish=Vælg Destinationsbibliotek
+    Title Dutch=Kies doeldirectory
+    Title Norwegian=Velg mÃ¥lkatalog
+    Title Swedish=Välj destinationskalatog
+    Width=221
+    Height=173
+    Font Name=Helv
+    Font Size=8
+    item: Listbox
+      Rectangle=5 2 160 149
+      Variable=MAINDIR
+      Create Flags=01010000100000010000000101000000
+      Flags=0000110000100010
+      Text=%MAINDIR%
+      Text French=%MAINDIR%
+      Text German=%MAINDIR%
+      Text Portuguese=%MAINDIR%
+      Text Spanish=%MAINDIR%
+      Text Italian=%MAINDIR%
+      Text Danish=%MAINDIR%
+      Text Dutch=%MAINDIR%
+      Text Norwegian=%MAINDIR%
+      Text Swedish=%MAINDIR%
+    end
+    item: Push Button
+      Rectangle=167 6 212 21
+      Create Flags=01010000000000010000000000000001
+      Text=OK
+      Text French=OK
+      Text German=OK
+      Text Portuguese=OK
+      Text Spanish=ACEPTAR
+      Text Italian=OK
+      Text Danish=OK
+      Text Dutch=OK
+      Text Norwegian=OK
+      Text Swedish=OK
+    end
+    item: Push Button
+      Rectangle=167 25 212 40
+      Variable=MAINDIR
+      Value=%MAINDIR_SAVE%
+      Create Flags=01010000000000010000000000000000
+      Flags=0000000000000001
+      Text=Cancel
+      Text French=Annuler
+      Text German=Abbrechen 
+      Text Portuguese=Cancelar
+      Text Spanish=Cancelar
+      Text Italian=Annulla
+      Text Danish=Slet
+      Text Dutch=Annuleren
+      Text Norwegian=Avbryt
+      Text Swedish=Avbryt
+    end
+  end
+end
+item: Custom Dialog Set
+  Name=Select Packages
+  Display Variable=DISPLAY
+  item: Dialog
+    Title=Select Packages
+    Width=271
+    Height=224
+    Font Name=Helv
+    Font Size=8
+    item: Push Button
+      Rectangle=150 187 195 202
+      Variable=DIRECTION
+      Value=N
+      Create Flags=01010000000000010000000000000001
+      Text=&Next >
+      Text French=&Suite >
+      Text German=&Weiter >
+      Text Spanish=&Siguiente >
+      Text Italian=&Avanti >
+    end
+    item: Push Button
+      Rectangle=105 187 150 202
+      Variable=DIRECTION
+      Value=B
+      Create Flags=01010000000000010000000000000000
+      Text=< &Back
+      Text French=< &Retour
+      Text German=< &Zurück
+      Text Spanish=< &Atrás
+      Text Italian=< &Indietro
+    end
+    item: Push Button
+      Rectangle=211 187 256 202
+      Action=3
+      Create Flags=01010000000000010000000000000000
+      Text=&Cancel
+      Text French=&Annuler
+      Text German=&Abbrechen
+      Text Spanish=&Cancelar
+      Text Italian=&Annulla
+    end
+    item: Static
+      Rectangle=8 180 256 181
+      Action=3
+      Create Flags=01010000000000000000000000000111
+    end
+    item: Static
+      Rectangle=86 8 258 28
+      Create Flags=01010000000000000000000000000000
+      Flags=0000000000000001
+      Name=Times New Roman
+      Font Style=-24 0 0 0 700 255 0 0 0 3 2 1 18
+      Text=Select Packages
+      Text French=Sélectionner les composants
+      Text German=Komponenten auswählen
+      Text Spanish=Seleccione componentes
+      Text Italian=Selezionare i componenti
+    end
+    item: Checkbox
+      Rectangle=83 62 211 146
+      Variable=COMPONENTS LIBS,COMM,OA,OS,PROG,WP,GAMES
+      Create Flags=01010000000000010000000000000011
+      Flags=0000000000000110
+      Text=Libraries
+      Text=Communication
+      Text=Productivity
+      Text=Operating System
+      Text=Programming
+      Text=Word Processing
+      Text=Games and Amusements
+      Text=
+    end
+    item: Static
+      Rectangle=194 162 242 172
+      Variable=COMPONENTS, LIBS, COMM, OA, OS, PROG, WP, GAMES
+      Value=MAINDIR
+      Create Flags=01010000000000000000000000000010
+    end
+    item: Static
+      Rectangle=194 153 242 162
+      Variable=COMPONENTS, LIBS, COMM, OA, OS, PROG, WP, GAMES
+      Create Flags=01010000000000000000000000000010
+    end
+    item: Static
+      Rectangle=107 153 196 164
+      Create Flags=01010000000000000000000000000000
+      Text=Disk Space Required:
+      Text French=Espace disque requis :
+      Text German=Notwendiger Speicherplatz:
+      Text Spanish=Espacio requerido en el disco:
+      Text Italian=Spazio su disco necessario:
+    end
+    item: Static
+      Rectangle=107 162 196 172
+      Create Flags=01010000000000000000000000000000
+      Text=Disk Space Remaining:
+      Text French=Espace disque disponible :
+      Text German=Verbleibender Speicherplatz:
+      Text Spanish=Espacio en disco disponible:
+      Text Italian=Spazio su disco disponibile:
+    end
+    item: Static
+      Rectangle=80 146 256 175
+      Action=1
+      Create Flags=01010000000000000000000000000111
+    end
+    item: Static
+      Rectangle=83 30 256 57
+      Create Flags=01010000000000000000000000000000
+      Text=Choose which package categories to install by checking the boxes below. Press the Options buttons to select individual packages.
+      Text French=Choisissez les composants que vous voulez installer en cochant les cases ci-dessous.
+      Text German=Wählen Sie die zu installierenden Komponenten, indem Sie in die entsprechenden Kästchen klicken.
+      Text Spanish=Elija los componentes que desee instalar marcando los cuadros de abajo.
+      Text Italian=Scegliere quali componenti installare selezionando le caselle sottostanti.
+    end
+    item: Push Button
+      Rectangle=230 62 254 72
+      Variable=LIBS_SAVE
+      Value=%LIBS%
+      Destination Dialog=1
+      Action=2
+      Create Flags=01010000000000010000000000000000
+      Text=Options
+      Text French=&Annuler
+      Text German=&Abbrechen
+      Text Spanish=&Cancelar
+      Text Italian=&Annulla
+    end
+    item: Push Button
+      Rectangle=230 74 254 84
+      Variable=COMM_SAVE
+      Value=%COMM%
+      Destination Dialog=2
+      Action=2
+      Create Flags=01010000000000010000000000000000
+      Text=Options
+      Text French=&Annuler
+      Text German=&Abbrechen
+      Text Spanish=&Cancelar
+      Text Italian=&Annulla
+    end
+    item: Push Button
+      Rectangle=230 86 254 96
+      Variable=OA_SAVE
+      Value=%OA%
+      Destination Dialog=3
+      Action=2
+      Create Flags=01010000000000010000000000000000
+      Text=Options
+      Text French=&Annuler
+      Text German=&Abbrechen
+      Text Spanish=&Cancelar
+      Text Italian=&Annulla
+    end
+    item: Push Button
+      Rectangle=230 98 254 108
+      Variable=OS_SAVE
+      Value=%OS%
+      Destination Dialog=4
+      Action=2
+      Create Flags=01010000000000010000000000000000
+      Text=Options
+      Text French=&Annuler
+      Text German=&Abbrechen
+      Text Spanish=&Cancelar
+      Text Italian=&Annulla
+    end
+    item: Push Button
+      Rectangle=230 110 254 120
+      Variable=PROG_SAVE
+      Value=%PROG%
+      Destination Dialog=5
+      Action=2
+      Create Flags=01010000000000010000000000000000
+      Text=Options
+      Text French=&Annuler
+      Text German=&Abbrechen
+      Text Spanish=&Cancelar
+      Text Italian=&Annulla
+    end
+    item: Push Button
+      Rectangle=230 122 254 132
+      Variable=WP_SAVE
+      Value=%WP%
+      Destination Dialog=6
+      Action=2
+      Create Flags=01010000000000010000000000000000
+      Text=Options
+      Text French=&Annuler
+      Text German=&Abbrechen
+      Text Spanish=&Cancelar
+      Text Italian=&Annulla
+    end
+    item: Push Button
+      Rectangle=230 134 254 144
+      Variable=GAMES_SAVE
+      Value=%GAMES%
+      Destination Dialog=7
+      Action=2
+      Create Flags=01010000000000010000000000000000
+      Text=Options
+      Text French=&Annuler
+      Text German=&Abbrechen
+      Text Spanish=&Cancelar
+      Text Italian=&Annulla
+    end
+    item: Set Variable
+      Variable=COMPONENTS
+      Value=X
+      Flags=00000001
+    end
+  end
+<<<string.join(map(category_dialog,packages.category_names),"")>>>
+end
+item: Custom Dialog Set
+  Name=Select Program Manager Group
+  Display Variable=DISPLAY
+  item: Dialog
+    Title=Select Program Manager Group
+    Title French=Sélectionnez le Groupe du Gestionnaire de Programmes
+    Title German=Programm-Managergruppe wählen
+    Title Portuguese=Seleccionar o Grupo Gestor de Programas
+    Title Spanish=Seleccione el Grupo del Administrador del Programa
+    Title Italian=Seleziona il gruppo Program Manager
+    Title Danish=Vælg Programstyringsgruppen
+    Title Dutch=Kies Programmabeheergroep.
+    Title Norwegian=Velg Programbehandlingsgruppen
+    Title Swedish=Välj grupp i Programhanteraren
+    Width=280
+    Height=224
+    Font Name=Helv
+    Font Size=8
+    item: Push Button
+      Rectangle=172 185 214 199
+      Variable=DIRECTION
+      Value=N
+      Create Flags=01010000000000010000000000000001
+      Text=&Next >
+      Text French=&Suivant>
+      Text German=&Weiter>
+      Text Portuguese=&Próximo>
+      Text Spanish=&Siguiente >
+      Text Italian=&Avanti >
+      Text Danish=&Næste>
+      Text Dutch=&Volgende>
+      Text Norwegian=&Neste>
+      Text Swedish=&Nästa >
+    end
+    item: Push Button
+      Rectangle=130 185 172 199
+      Variable=DIRECTION
+      Value=B
+      Create Flags=01010000000000010000000000000000
+      Flags=0000000000000001
+      Text=< &Back
+      Text French=<&Retour
+      Text German=<&Zurück
+      Text Portuguese=<&Retornar
+      Text Spanish=<&Retroceder
+      Text Italian=< &Indietro
+      Text Danish=<&Back
+      Text Dutch=<&Terug
+      Text Norwegian=<&Tilbake
+      Text Swedish=< &Tillbaka
+    end
+    item: Push Button
+      Rectangle=222 185 264 199
+      Action=3
+      Create Flags=01010000000000010000000000000000
+      Text=Cancel
+      Text French=Annuler
+      Text German=Abbrechen
+      Text Portuguese=Cancelar
+      Text Spanish=Cancelar
+      Text Italian=Annulla
+      Text Danish=Slet
+      Text Dutch=Annuleren
+      Text Norwegian=Avbryt
+      Text Swedish=Avbryt
+    end
+    item: Static
+      Rectangle=9 177 263 178
+      Action=3
+      Create Flags=01010000000000000000000000000111
+    end
+    item: Static
+      Rectangle=90 10 260 38
+      Create Flags=01010000000000000000000000000000
+      Text=Enter the name of the Program Manager group to add %APPTITLE% icons to:
+      Text French=Entrez le nom du groupe du Gestionnaire de Programmes où placer les icônes %APPTITLE% Ã  :
+      Text German=Den Namen der Programm-Managergruppe wählen, in der die %APPTITLE%-Symbole gespeichert werden sollen:
+      Text Portuguese=Introduzir o nome do Grupo Gestor de Programa para acrescentar os Ã­cones %APPTITLE% para:
+      Text Spanish=Introduzca el nombre del grupo del Administrador del Programa para añadir los iconos %APPTITLE para:
+      Text Italian=Inserisci il nome del gruppo Program Manager per aggiungere le icone di %APPTITLE% a:
+      Text Danish=Indtast navnet pÃ¥ Programstyringsgruppen der skal tilføjes %APPTITLE% elementer:
+      Text Dutch=Breng de naam van de programmabeheergroep in waaraan u %APPTITLE%-pictogrammen wilt toevoegen.
+      Text Norwegian=Tast inn navnet pÃ¥ programbehandlingsgruppen for Ã¥ legge %APPTITLE%-ikoner til:
+      Text Swedish=Skriv in namnet pÃ¥ den grupp i Programhanteraren där du vill ha ikonerna för %APPTITLE%:
+    end
+    item: Combobox
+      Rectangle=90 42 260 148
+      Variable=GROUP
+      Create Flags=01010000001000010000001100000001
+      Flags=0000000000000001
+      Text=%GROUP%
+      Text=
+      Text French=%GROUP%
+      Text French=
+      Text German=%GROUP%
+      Text German=
+      Text Portuguese=%GROUP%
+      Text Portuguese=
+      Text Spanish=%GROUP%
+      Text Spanish=
+      Text Italian=%GROUP%
+      Text Italian=
+      Text Danish=%GROUP%
+      Text Danish=
+      Text Dutch=%GROUP%
+      Text Dutch=
+      Text Norwegian=%GROUP%
+      Text Norwegian=
+      Text Swedish=%GROUP%
+      Text Swedish=
+    end
+  end
+end
+item: Custom Dialog Set
+  Name=Start Installation
+  Display Variable=DISPLAY
+  item: Dialog
+    Title=Start Installation
+    Title French=Commencer l'installation
+    Title German=Installation beginnen
+    Title Portuguese=Iniciar Instalação
+    Title Spanish=Comenzar la Instalación
+    Title Italian=Avvia Installazione
+    Title Danish=Start installationen
+    Title Dutch=Start de installatie.
+    Title Norwegian=Start installeringen
+    Title Swedish=Starta installationen
+    Width=280
+    Height=224
+    Font Name=Helv
+    Font Size=8
+    item: Push Button
+      Rectangle=172 185 214 199
+      Variable=DIRECTION
+      Value=N
+      Create Flags=01010000000000010000000000000001
+      Text=&Next >
+      Text French=&Suivant>
+      Text German=&Weiter>
+      Text Portuguese=&Próximo>
+      Text Spanish=&Siguiente >
+      Text Italian=&Avanti >
+      Text Danish=&Næste>
+      Text Dutch=&Volgende>
+      Text Norwegian=&Neste>
+      Text Swedish=&Nästa >
+    end
+    item: Push Button
+      Rectangle=130 185 172 199
+      Variable=DIRECTION
+      Value=B
+      Create Flags=01010000000000010000000000000000
+      Text=< &Back
+      Text French=<&Retour
+      Text German=<&Zurück
+      Text Portuguese=<&Retornar
+      Text Spanish=<&Retroceder
+      Text Italian=< &Indietro
+      Text Danish=<&Tilbage
+      Text Dutch=<&Terug
+      Text Norwegian=<&Tilbake
+      Text Swedish=< &Tillbaka
+    end
+    item: Push Button
+      Rectangle=222 185 264 199
+      Action=3
+      Create Flags=01010000000000010000000000000000
+      Text=Cancel
+      Text French=Annuler
+      Text German=Abbrechen
+      Text Portuguese=Cancelar
+      Text Spanish=Cancelar
+      Text Italian=Annulla
+      Text Danish=Annuller
+      Text Dutch=Annuleren
+      Text Norwegian=Avbryt
+      Text Swedish=Avbryt
+    end
+    item: Static
+      Rectangle=9 177 263 178
+      Action=3
+      Create Flags=01010000000000000000000000000111
+    end
+    item: Static
+      Rectangle=90 10 260 70
+      Create Flags=01010000000000000000000000000000
+      Text=You are now ready to install %APPTITLE%.
+      Text=
+      Text=Press the Next button to begin the installation or the Back button to reenter the installation information.
+      Text French=Vous Ãªtes maintenant prêt Ã  installer %APPTITLE%
+      Text French=
+      Text French=Cliquez sur Suivant pour commencer l'installation ou Retour pour entrer Ã  nouveau les informations d'installation
+      Text German=Sie sind jetzt zur Installation von %APPTITLE% bereit.
+      Text German=
+      Text German=Auf die Schaltfläche Weiter klicken, um mit dem Start der Installation zu beginnen, oder auf die Schaltfläche Zurück, um die Installationsinformationen nochmals aufzurufen.
+      Text Portuguese=Está agora pronto para instalar %APPTITLE%
+      Text Portuguese=
+      Text Portuguese=Pressione o botão Próximo para começar a instalação ou o botão Retornar para introduzir novamente a informação sobre a instalação
+      Text Spanish=Ahora estará listo para instalar %APPTITLE%.
+      Text Spanish=
+      Text Spanish=Pulse el botón de Próximo para comenzar la instalación o el botón Retroceder para volver a introducir la información sobre la instalación.
+      Text Italian=Sei pronto ad installare %APPTITLE%.
+      Text Italian=
+      Text Italian=Premi il tasto Avanti per iniziare l\92installazione o il tasto Indietro per rientrare nuovamente nei dati sull\92installazione
+      Text Danish=Du er nu klar til at installere %APPTITLE%.
+      Text Danish=
+      Text Danish=Klik pÃ¥ Næste for at starte installationen eller pÃ¥ Tilbage for at Ã¦ndre installationsoplysningerne.
+      Text Dutch=U bent nu klaar om %APPTITLE% te installeren.
+      Text Dutch=
+      Text Dutch=Druk op Volgende om met de installatie te beginnen of op Terug om de installatie-informatie opnieuw in te voeren.
+      Text Norwegian=Du er nÃ¥ klar til Ã¥ installere %APPTITLE%
+      Text Norwegian=
+      Text Norwegian=Trykk pÃ¥ Neste-tasten for Ã¥ starte installeringen, eller Tilbake-tasten for Ã¥ taste inn installasjonsinformasjonen pÃ¥ nytt.
+      Text Swedish=Du Ã¤r nu redo att installera %APPTITLE%.
+      Text Swedish=
+      Text Swedish=Tryck pÃ¥ Nästa för att starta installationen eller pÃ¥ Tillbaka för att skriva in installationsinformationen pÃ¥ nytt.
+    end
+  end
+end
+item: If/While Statement
+  Variable=DISPLAY
+  Value=Select Destination Directory
+end
+item: Set Variable
+  Variable=BACKUP
+  Value=%MAINDIR%\BACKUP
+end
+item: End Block
+end
+item: End Block
+end
+item: If/While Statement
+  Variable=DOBACKUP
+  Value=A
+end
+item: Set Variable
+  Variable=BACKUPDIR
+  Value=%BACKUP%
+end
+item: End Block
+end
+item: Open/Close INSTALL.LOG
+end
+item: Check Disk Space
+  Component=COMPONENTS
+end
+item: Display Graphic
+  Pathname=<<<dirs.source>>>\nt\Wise\xemacs-beta.bmp
+  X Position=32784
+  Y Position=16
+end
+item: Include Script
+  Pathname=%_WISE_%\INCLUDE\uninstal.wse
+end
+<<<ifblock("COMPONENTS","X")>>>
+<<<string.join(map(lambda x:install_file(x[0],x[1],x[2]),filelist.all),"")>>>
+<<<endblock()>>>
+<<<map(do_category,packages.category_names)>>>
+item: Set Variable
+  Variable=COMMON
+  Value=%COMMON%
+  Flags=00010100
+end
+item: Set Variable
+  Variable=MAINDIR
+  Value=%MAINDIR%
+  Flags=00010100
+end
+item: Check Configuration
+  Flags=10111011
+end
+item: Get Registry Key Value
+  Variable=STARTUPDIR
+  Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+  Default=%WIN%\Start Menu\Programs\StartUp
+  Value Name=StartUp
+  Flags=00000010
+end
+item: Get Registry Key Value
+  Variable=DESKTOPDIR
+  Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+  Default=%WIN%\Desktop
+  Value Name=Desktop
+  Flags=00000010
+end
+item: Get Registry Key Value
+  Variable=STARTMENUDIR
+  Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+  Default=%WIN%\Start Menu
+  Value Name=Start Menu
+  Flags=00000010
+end
+item: Get Registry Key Value
+  Variable=GROUPDIR
+  Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+  Default=%WIN%\Start Menu\Programs
+  Value Name=Programs
+  Flags=00000010
+end
+item: Get Registry Key Value
+  Variable=CSTARTUPDIR
+  Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+  Default=%STARTUPDIR%
+  Value Name=Common Startup
+  Flags=00000100
+end
+item: Get Registry Key Value
+  Variable=CDESKTOPDIR
+  Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+  Default=%DESKTOPDIR%
+  Value Name=Common Desktop
+  Flags=00000100
+end
+item: Get Registry Key Value
+  Variable=CSTARTMENUDIR
+  Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+  Default=%STARTMENUDIR%
+  Value Name=Common Start Menu
+  Flags=00000100
+end
+item: Get Registry Key Value
+  Variable=CGROUPDIR
+  Key=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
+  Default=%GROUPDIR%
+  Value Name=Common Programs
+  Flags=00000100
+end
+item: Set Variable
+  Variable=CGROUP_SAVE
+  Value=%GROUP%
+end
+item: Set Variable
+  Variable=GROUP
+  Value=%GROUPDIR%\%GROUP%
+end
+item: Create Shortcut
+  Source=%MAINDIR%\<<<dirs.dst>>>\i386-pc-win32\runemacs.exe
+  Destination=%GROUP%\XEmacs.lnk
+  Working Directory=\
+  Icon Number=0
+end
+item: Create Shortcut
+  Source=%MAINDIR%\<<<dirs.dst>>>\i386-pc-win32\runemacs.exe
+  Destination=%DESKTOPDIR%\XEmacs.lnk
+  Working Directory=\
+  Icon Number=0
+end
+item: Else Statement
+end
+item: Add ProgMan Icon
+  Group=%GROUP%
+  Icon Name=XEmacs
+  Command Line=%MAINDIR%\<<<dirs.dst>>>\i386-pc-win32\runemacs.exe
+  Default Directory=\
+  Flags=01000000
+end
+item: End Block
+end
+item: Edit Registry
+  Total Keys=16
+  item: Key
+    Key=SOFTWARE\GNU\XEmacs
+    New Value=%MAINDIR%
+    Value Name=emacs_dir
+    Root=2
+  end
+  item: Key
+    Key=SOFTWARE\GNU\XEmacs
+    New Value=%MAINDIR%\xemacs-packages
+    Value Name=EMACSPACKAGEPATH
+    Root=2
+  end
+  item: Key
+    Key=SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\runemacs.exe
+    New Value=%MAINDIR%\<<<dirs.dst>>>\i386-pc-win32
+    Value Name=Path
+    Root=2
+  end
+  item: Key
+    Key=SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\xemacs.exe
+    New Value=%MAINDIR%\<<<dirs.dst>>>\i386-pc-win32
+    Value Name=Path
+    Root=2
+  end
+  item: Key
+    Key=.el
+    New Value=elfile
+  end
+  item: Key
+    Key=.el
+    New Value=text/plain
+    Value Name=Content Type
+  end
+  item: Key
+    Key=elfile
+    New Value=Emacs lisp
+  end
+  item: Key
+    Key=elfile
+    New Value=00 00 01 00
+    Value Name=EditFlags
+    Data Type=4
+  end
+  item: Key
+    Key=elfile\DefaultIcon
+    New Value=%MAINDIR%\<<<dirs.dst>>>\i386-pc-win32\runemacs.exe,2
+  end
+  item: Key
+    Key=elfile\QuickView
+    New Value=*
+  end
+  item: Key
+    Key=elfile\Shell
+    New Value=
+  end
+  item: Key
+    Key=elfile\Shell\open
+  end
+  item: Key
+    Key=elfile\Shell\open\command
+    New Value=%MAINDIR%\<<<dirs.dst>>>\i386-pc-win32\runemacs.exe "%%1"
+  end
+  item: Key
+    Key=elfile\Shell\open\ddeexec
+    New Value=open("%%1")
+  end
+  item: Key
+    Key=elfile\Shell\open\ddeexec\Application
+    New Value=XEmacs
+    New Value=
+  end
+  item: Key
+    Key=elfile\Shell\open\ddeexec\topic
+    New Value=System
+  end
+end
+item: Wizard Block
+  Direction Variable=DIRECTION
+  Display Variable=DISPLAY
+  Bitmap Pathname=<<<dirs.source>>>\nt\Wise\gnu.bmp
+  X Position=9
+  Y Position=10
+  Filler Color=8421440
+  Flags=00000011
+end
+item: Custom Dialog Set
+  Name=Finished
+  Display Variable=DISPLAY
+  item: Dialog
+    Title=Installation Complete
+    Title French=Installation en cours
+    Title German=Installation abgeschlossen
+    Title Portuguese=Instalação Completa 
+    Title Spanish=Se ha completado la Instalación
+    Title Italian=Installazione completata
+    Title Danish=Installation gennemført
+    Title Dutch=Installatie afgerond
+    Title Norwegian=Installasjonen er fullført
+    Title Swedish=Installationen klar
+    Width=280
+    Height=224
+    Font Name=Helv
+    Font Size=8
+    item: Push Button
+      Rectangle=170 185 212 199
+      Variable=DIRECTION
+      Value=N
+      Create Flags=01010000000000010000000000000001
+      Text=&Finish >
+      Text French=&Terminer>
+      Text German=&Fertigstellen>
+      Text Portuguese=&Terminar >
+      Text Spanish=&Finalizar>
+      Text Italian=&Fine >
+      Text Danish=&Afslut >
+      Text Dutch=&Klaar>
+      Text Norwegian=&Avslutt>
+      Text Swedish=&Sluta>
+    end
+    item: Push Button
+      Control Name=CANCEL
+      Rectangle=222 185 264 199
+      Action=3
+      Create Flags=01010000000000010000000000000000
+      Text=Cancel
+      Text French=Annuler
+      Text German=Abbrechen
+      Text Portuguese=Cancelar
+      Text Spanish=Cancelar
+      Text Italian=Annulla
+      Text Danish=Annuller
+      Text Dutch=Annuleren
+      Text Norwegian=Avbryt
+      Text Swedish=Avbryt
+    end
+    item: Static
+      Rectangle=9 177 263 178
+      Action=3
+      Create Flags=01010000000000000000000000000111
+    end
+    item: Static
+      Rectangle=90 10 260 63
+      Enabled Color=00000000000000001111111111111111
+      Create Flags=01010000000000000000000000000000
+      Text=%APPTITLE% has been successfully installed.
+      Text=
+      Text=
+      Text=Press the Finish button to exit this installation.
+      Text=
+      Text French=L'installation de %APPTITLE% est réussie
+      Text French=
+      Text French=
+      Text French=Cliquez sur Terminer pour quitter cette installation
+      Text French=
+      Text German=%APPTITLE% wurde erfolgreich installiert.
+      Text German=
+      Text German=
+      Text German=Zum Beenden dieser Installation Fertigstellen anklicken.
+      Text German=
+      Text Portuguese=%APPTITLE% foi instalado com Ãªxito
+      Text Portuguese=
+      Text Portuguese=
+      Text Portuguese=Pressionar o botão Terminar para sair desta instalação
+      Text Portuguese=
+      Text Spanish=%APPTITLE% se ha instalado con Ã©xito.
+      Text Spanish=
+      Text Spanish=
+      Text Spanish=Pulse el botón de Finalizar para salir de esta instalación.
+      Text Spanish=
+      Text Italian=%APPTITLE% Ã¨ stato installato.
+      Text Italian=
+      Text Italian=
+      Text Italian=Premi il pulsante Fine per uscire dal programma di installazione
+      Text Italian=
+      Text Danish=%APPTITLE% er nu installeret korrekt.
+      Text Danish=
+      Text Danish=
+      Text Danish=Klik pÃ¥ Afslut for at afslutte installationen.
+      Text Danish=
+      Text Dutch=%APPTITLE% is met succes geïnstalleerd.
+      Text Dutch=
+      Text Dutch=
+      Text Dutch=Druk op Klaar om deze installatie af te ronden.
+      Text Dutch=
+      Text Norwegian=Installasjonen av %APPTITLE% er suksessfull.
+      Text Norwegian=
+      Text Norwegian=
+      Text Norwegian=Trykk pÃ¥ Avslutt-tasten for Ã¥ avslutte denne installasjonen.
+      Text Norwegian=
+      Text Swedish=Installationen av %APPTITLE% har lyckats.
+      Text Swedish=
+      Text Swedish=
+      Text Swedish=Tryck pÃ¥ Sluta för att gÃ¥ ur installationsprogrammet.
+      Text Swedish=
+    end
+    item: Push Button
+      Control Name=BACK
+      Rectangle=128 185 170 199
+      Variable=DIRECTION
+      Value=B
+      Create Flags=01010000000000010000000000000000
+      Text=< &Back
+      Text French=<&Retour
+      Text German=<&Zurück
+      Text Portuguese=<&Retornar
+      Text Spanish=<&Retroceder
+      Text Italian=< &Indietro
+      Text Danish=<&Tilbage
+      Text Dutch=<&Terug
+      Text Norwegian=<&Tilbake
+      Text Swedish=< &Tillbaka
+    end
+    item: Set Control Attribute
+      Control Name=BACK
+      Operation=1
+    end
+    item: Set Control Attribute
+      Control Name=CANCEL
+      Operation=1
+    end
+  end
+end
+item: End Block
+end
+item: New Event
+  Name=Cancel
+end
+item: Include Script
+  Pathname=%_WISE_%\INCLUDE\rollback.wse
+end
index 6ff57f3..b4538dd 100644 (file)
        (Vcharset_thai_tis620): Likewise.
        (Vcharset_katakana_jisx0201): Likewise.
 
+2005-02-06  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.17 is released
+
+2005-01-31  Ben Wing  <ben@xemacs.org>
+
+       * emacs.c:
+       Define assert_failed() always.
+       * lisp.h:
+       Always define ABORT().
+
+2005-01-25  Ben Wing  <ben@xemacs.org>
+
+       * Makefile.in.in:
+       * Makefile.in.in (%.o):
+       Don't compile executable as Windows (-mwindows) under Cygwin.
+       Semi-recent changes to Cygwin's executable-startup handling make
+       it impossible to access the TTY this way.
+
+       Don't use special linker file under Cygwin (cygwin.sc) except
+       when non-PDUMP (even in this case it is highly questionable); you
+       get errors like
+
+      1 [main] temacs 1364 fhandler_console::fixup_after_exec: error opening input console handle after exec, errno 13, Win32 error 5
+   5820 [main] temacs 1364 fhandler_console::fixup_after_exec: error opening output console handle after exec, errno 13, Win32 error 5
+
+2005-01-29  Ben Wing  <ben@xemacs.org>
+
+       Port this: 2003-08-14  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * mule-charset.c (get_unallocated_leading_byte): Compiler quietus.
+
+2005-01-29  Ben Wing  <ben@xemacs.org>
+
+       * bytecode.c (optimize_compiled_function):
+       * print.c (FROB):
+       * print.c (long_to_string):
+       Add casts to avoid warning.
+       
+       * glyphs-eimage.c:
+       Some really nasty hacks to allow TIFF and JPEG to both be compiled.
+       #### The better solution is to move the TIFF and JPEG code to
+       different files.
+       
+       * glyphs-msw.c (mswindows_xbm_instantiate):
+       Define __STDC__ to avoid problems with compface.h.
+       
+       * EmacsFrame.c (EmacsFrameRecomputeCellSize):
+       * EmacsShell-sub.c:
+       * EmacsShell-sub.c (ABORT):
+       * EmacsShell-sub.c (SuperClassRootGeometryManager):
+       * EmacsShell-sub.c (RootGeometryManager):
+       * EmacsShell.c:
+       * EmacsShell.c (ABORT):
+       * EmacsShell.c (EmacsShellUpdateSizeHints):
+       * alloc.c (free_lcrecord):
+       * alloca.c (i00afunc):
+       * buffer.c (delete_from_buffer_alist):
+       * buffer.c (MARKED_SLOT):
+       * bytecode.c (execute_rare_opcode):
+       * bytecode.c (optimize_byte_code):
+       * bytecode.c (Ffetch_bytecode):
+       * chartab.c (char_table_type_to_symbol):
+       * chartab.c (Freset_char_table):
+       * chartab.c (decode_char_table_range):
+       * chartab.c (Fget_range_char_table):
+       * chartab.c (check_valid_char_table_value):
+       * chartab.c (map_char_table):
+       * chartab.c (slow_map_char_table_fun):
+       * chartab.c (chartab_instantiate):
+       * cm.c (cmcheckmagic):
+       * console-msw.c (DHEADER):
+       * console.c (MARKED_SLOT):
+       * data.c (finish_marking_weak_lists):
+       * data.c (encode_weak_list_type):
+       * debug.h (DASSERT):
+       * device-gtk.c (gtk_init_device):
+       * device-msw.c (mswindows_get_default_margin):
+       * device-tty.c (tty_init_device):
+       * device-x.c (get_device_from_display):
+       * device-x.c (x_get_visual_depth):
+       * doprnt.c (parse_doprnt_spec):
+       * doprnt.c (get_doprnt_args):
+       * dumper.c (pdump_get_indirect_count):
+       * dumper.c (pdump_register_sub):
+       * dumper.c (pdump_register_object):
+       * dumper.c (pdump_register_struct):
+       * dumper.c (pdump_dump_data):
+       * dumper.c (pdump_reloc_one):
+       * elhash.c (print_hash_table):
+       * elhash.c (make_standard_lisp_hash_table):
+       * elhash.c (hash_table_instantiate):
+       * emacs.c:
+       * emacs.c (Fforce_debugging_signal):
+       * emacs.c (sort_args):
+       * emacs.c (main):
+       * emacs.c (assert_failed):
+       * eval.c (throw_or_bomb_out):
+       * eval.c (signal_1):
+       * eval.c (Fsignal):
+       * event-Xt.c:
+       * event-Xt.c (emacs_Xt_mapping_action):
+       * event-Xt.c (Xt_process_to_emacs_event):
+       * event-msw.c:
+       * event-stream.c (check_event_stream_ok):
+       * event-stream.c (Fadd_timeout):
+       * event-stream.c (Fadd_async_timeout):
+       * event-stream.c (Fdiscard_input):
+       * event-stream.c (execute_internal_event):
+       * event-stream.c (Frecent_keys):
+       * event-stream.c (extract_this_command_keys_nth_mouse_event):
+       * event-stream.c (lookup_command_event):
+       * event-unixoid.c (poll_fds_for_input):
+       * events.c:
+       * events.c (mark_event):
+       * events.c (event_equal):
+       * events.c (event_hash):
+       * events.c (Fmake_event):
+       * events.c (Fdeallocate_event):
+       * events.c (event_chain_find_previous):
+       * events.c (event_to_character):
+       * events.c (format_event_object):
+       * events.c (Fevent_type):
+       * events.c (event_pixel_translation):
+       * events.c (Fevent_properties):
+       * extents.c (extent_in_region_p):
+       * extents.c (print_extent):
+       * extents.c (process_extents_for_insertion_mapper):
+       * extents.c (report_extent_modification_mapper):
+       * extents.c (glyph_layout_to_symbol):
+       * faces.c (face_validate):
+       * file-coding.c (eol_type_to_symbol):
+       * file-coding.c (subsidiary_coding_system):
+       * file-coding.c (Fcoding_system_type):
+       * file-coding.c (Fcoding_system_property):
+       * file-coding.c (mule_decode):
+       * file-coding.c (mule_encode):
+       * file-coding.c (encode_coding_ucs4):
+       * file-coding.c (encode_coding_utf8):
+       * file-coding.c (parse_iso2022_esc):
+       * file-coding.c (encode_coding_iso2022):
+       * fileio.c:
+       * fns.c (concat):
+       * fns.c (Fsubseq):
+       * fns.c (mapcar1):
+       * fns.c (Fbase64_encode_region):
+       * fns.c (Fbase64_encode_string):
+       * fns.c (Fbase64_decode_region):
+       * fns.c (Fbase64_decode_string):
+       * font-lock.c (find_context):
+       * font-lock.c (context_to_symbol):
+       * frame-gtk.c (gtk_set_frame_pointer):
+       * frame-gtk.c (gtk_update_frame_external_traits):
+       * frame-x.c (x_wm_mark_shell_size_user_specified):
+       * frame-x.c (x_wm_mark_shell_position_user_specified):
+       * frame-x.c (x_wm_set_shell_iconic_p):
+       * frame-x.c (x_wm_set_cell_size):
+       * frame-x.c (x_wm_set_variable_size):
+       * frame-x.c (x_wm_store_class_hints):
+       * frame-x.c (x_wm_maybe_store_wm_command):
+       * frame-x.c (x_initialize_frame_size):
+       * frame-x.c (x_update_frame_external_traits):
+       * frame.c:
+       * frame.c (delete_frame_internal):
+       * frame.c (mouse_pixel_position_1):
+       * frame.c (change_frame_size_1):
+       * free-hook.c (check_free):
+       * free-hook.c (check_realloc):
+       * free-hook.c (note_block_input):
+       * free-hook.c (log_gcpro):
+       * gccache-gtk.c (gc_cache_lookup):
+       * glyphs-eimage.c (tiff_memory_write):
+       * glyphs-gtk.c (gtk_finalize_image_instance):
+       * glyphs-gtk.c (init_image_instance_from_gdk_pixmap):
+       * glyphs-gtk.c (init_image_instance_from_xbm_inline):
+       * glyphs-gtk.c (gtk_xpm_instantiate):
+       * glyphs-gtk.c (gtk_unmap_subwindow):
+       * glyphs-gtk.c (gtk_map_subwindow):
+       * glyphs-gtk.c (gtk_button_redisplay):
+       * glyphs-msw.c:
+       * glyphs-msw.c (init_image_instance_from_xbm_inline):
+       * glyphs-x.c (init_image_instance_from_xbm_inline):
+       * glyphs-x.c (extract_xpm_color_names):
+       * glyphs-x.c (x_xpm_instantiate):
+       * glyphs.c (get_image_instantiator_governing_domain):
+       * glyphs.c (print_image_instance):
+       * glyphs.c (image_instance_equal):
+       * glyphs.c (image_instance_hash):
+       * glyphs.c (encode_image_instance_type):
+       * glyphs.c (make_image_instance_1):
+       * glyphs.c (inherit_instantiate):
+       * glyphs.c (image_instantiate):
+       * glyphs.c (allocate_glyph):
+       * glyphs.c (Fglyph_type):
+       * glyphs.c (redisplay_subwindow):
+       * glyphs.c (display_table_entry):
+       * gtk-glue.c (xemacs_list_to_gtklist):
+       * gtk-glue.c (xemacs_gtklist_to_list):
+       * gtk-glue.c (xemacs_list_to_array):
+       * gutter.c (SET_GUTTER_WAS_VISIBLE_FLAG):
+       * gutter.c (gutter_was_visible):
+       * gutter.c (get_gutter_coords):
+       * input-method-xlib.c (get_XIM_input):
+       * insdel.c (bufpos_to_bytind_func):
+       * insdel.c (bytind_to_bufpos_func):
+       * insdel.c (move_gap):
+       * intl.c (x_get_composed_input):
+       * keymap.c (keymap_lookup_directly):
+       * keymap.c (keymap_delete_inverse_internal):
+       * keymap.c (ensure_meta_prefix_char_keymapp):
+       * keymap.c (accessible_keymaps_mapper_1):
+       * keymap.c (where_is_recursive_mapper):
+       * lisp.h:
+       * lisp.h (ABORT):
+       * lread.c (read_atom):
+       * lstream.c (Lstream_delete):
+       * lstream.c (make_lisp_buffer_stream_1):
+       * macros.c (pop_kbd_macro_event):
+       * malloc.c (malloc):
+       * malloc.c (free):
+       * marker.c (bi_marker_position):
+       * marker.c (set_bi_marker_position):
+       * menubar-gtk.c (menu_descriptor_to_widget_1):
+       * menubar-msw.c (prune_menubar):
+       * menubar-x.c (set_frame_menubar):
+       * mule-charset.c (get_unallocated_leading_byte):
+       * mule-charset.h (CHAR_LEADING_BYTE):
+       * native-gtk-toolbar.c (SET_TOOLBAR_WAS_VISIBLE_FLAG):
+       * nt.c (init_environment):
+       * nt.c (generate_inode_val):
+       * ntproc.c (delete_child):
+       * ntproc.c (_sys_read_ahead):
+       * ntproc.c (create_child):
+       * objects.c (color_instantiate):
+       * objects.c (font_instantiate):
+       * objects.c (face_boolean_instantiate):
+       * print.c (printing_major_badness):
+       * process-nt.c (nt_send_process):
+       * process-unix.c (unix_send_process):
+       * process.c (get_process):
+       * ralloc.c (obtain):
+       * ralloc.c (relinquish):
+       * ralloc.c (relocate_blocs):
+       * ralloc.c (resize_bloc):
+       * ralloc.c (r_alloc_free):
+       * ralloc.c (r_re_alloc):
+       * ralloc.c (r_alloc_thaw):
+       * ralloc.c (init_ralloc):
+       * ralloc.c (Free_Addr_Block):
+       * ralloc.c (r_alloc):
+       * redisplay-gtk.c (gtk_output_display_block):
+       * redisplay-msw.c (mswindows_output_display_block):
+       * redisplay-output.c (get_next_display_block):
+       * redisplay-output.c (get_cursor_size_and_location):
+       * redisplay-output.c (redisplay_output_layout):
+       * redisplay-output.c (redisplay_clear_region):
+       * redisplay-tty.c (tty_output_display_block):
+       * redisplay-x.c (x_output_display_block):
+       * redisplay.c (add_propagation_runes):
+       * redisplay.c (add_glyph_rune):
+       * redisplay.c (create_text_block):
+       * redisplay.c (add_margin_runes):
+       * redisplay.c (create_left_glyph_block):
+       * redisplay.c (create_right_glyph_block):
+       * redisplay.c (create_string_text_block):
+       * redisplay.c (regenerate_window):
+       * redisplay.c (REGEN_INC_FIND_START_END):
+       * redisplay.c (redisplay_frame):
+       * redisplay.c (point_in_line_start_cache):
+       * regex.c:
+       * regex.c (ABORT):
+       * regex.c (re_compile_fastmap):
+       * regex.c (re_match_2_internal):
+       * regex.c (regerror):
+       * scrollbar-gtk.c (gtk_scrollbar_loop):
+       * scrollbar-gtk.c (scrollbar_cb):
+       * scrollbar-gtk.c (gtk_update_frame_scrollbars):
+       * scrollbar-msw.c (mswindows_handle_scrollbar_event):
+       * scrollbar-x.c (x_update_scrollbar_instance_status):
+       * scrollbar-x.c (x_scrollbar_loop):
+       * scrollbar-x.c (x_update_frame_scrollbars):
+       * search.c (search_command):
+       * search.c (Fmatch_data):
+       * select-x.c (motif_clipboard_cb):
+       * signal.c (interrupt_signal):
+       * specifier.c (specifier_add_spec):
+       * specifier.c (specifier_instance_from_inst_list):
+       * specifier.c (specifier_instance):
+       * specifier.h:
+       * specifier.h (struct specifier_methods):
+       * strftime.c (add_num_time_t):
+       * sunplay.c (init_device):
+       * symbols.c (Fsetplist):
+       * symbols.c (do_symval_forwarding):
+       * symbols.c (store_symval_forwarding):
+       * symbols.c (Fset):
+       * symbols.c (Fbuilt_in_variable_type):
+       * symbols.c (decode_magic_handler_type):
+       * symbols.c (handler_type_from_function_symbol):
+       * syntax.c (update_syntax_cache):
+       * sysdep.c (init_baud_rate):
+       * toolbar-gtk.c (SET_TOOLBAR_WAS_VISIBLE_FLAG):
+       * toolbar-msw.c (SET_TOOLBAR_WAS_VISIBLE_FLAG):
+       * toolbar-x.c (SET_TOOLBAR_WAS_VISIBLE_FLAG):
+       * toolbar.c (get_toolbar_coords):
+       * ui-gtk.c (build_gtk_boxed):
+       * ui-gtk.c (describe_gtk_arg):
+       * ui-gtk.c (gtk_type_to_lisp):
+       * ui-gtk.c (lisp_to_gtk_type):
+       * ui-gtk.c (lisp_to_gtk_ret_type):
+       * ui-gtk.c (lisp_to_flag):
+       * unexnt.c (read_in_bss):
+       * unexnt.c (map_in_heap):
+       * window.c (real_window):
+       * window.c (window_display_lines):
+       * window.c (window_display_buffer):
+       * window.c (set_window_display_buffer):
+       * window.c (window_modeline_height):
+       * window.c (unshow_buffer):
+       * window.c (window_loop):
+       * window.c (Fget_lru_window):
+       * window.c (Fsplit_window):
+       * window.c (Fset_window_configuration):
+       * window.c (saved_window_index):
+       * xgccache.c (gc_cache_lookup):
+       abort() -> ABORT().  Eliminate preprocessor games with abort()
+       since it creates huge problems in VC7, solvable only by including
+       massive amounts of files in every compile (and not worth it).
+
+       * sysdep.c:
+       * sysproc.h:
+       Inclusion of process.h does not need to be before lisp.h any more.
+       Move later and remove comment about abort().
+
+2005-01-26  Arnaud Giersch  <arnaud.giersch@free.fr>
+
+       * regex.c (re_match_2_internal):
+       Correctly initialize loop which clears uninitialized registers.
+
+2005-01-28  Vin Shelton  <acs@xemacs.org>
+
+       * sheap.c (more_static_core): Applied Ben's version of the long
+       string patch.
+
+2005-01-24  Vin Shelton  <acs@xemacs.org>
+
+       * sheap.c (more_static_core): Reformatted printf string so
+       gcc-3.3.3 will compile this on Cygwin.
+
+2004-02-22  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * console.c (function_key_map): Reference `key-binding'.
+
+       * keymap.c (Vkey_translation_map): Improve docstring.
+
+2004-03-30  Zajcev Evgeny  <zevlg@yandex.ru>
+
+       * window.c: Declare `allow_deletion_of_last_visible_frame' extern.
+       * window.c (window_loop): [fix] Take into account
+       `allow-deletion-of-last-visible-frame' variable.
+       * window.c (replace-buffer-in-windows): Ditto.
+
+2004-12-15  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * EmacsManager.c (EmacsManagerChangeSize): Respect XtGeometryNo.
+
+2005-01-20  Malcolm Purvis  <malcolmp@xemacs.org>
+
+       * event-gtk.c: Recognise AltGr as a valid modifier.
+
+2005-01-12  Ville Skyttä  <scop@xemacs.org>
+
+       * console-x.h: #include X11/keysym.h before xintrinsic.h.
+
+2005-01-13  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       Fix backreference bug caught by test suite.
+
+       * regex.c (regex_compile):
+       Make backref duplicate internal register.
+
+2005-01-13  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       Documentation, code clarification, and warning suppression.
+       
+       * regex.c (regex_compile):
+       Improve comments.
+       (re_match_2_internal):
+       Improve comments and avoid redundant braces.  [Most of the big hunk
+       at l. 4710 is indentation; use diff -w to see the real changes.]
+       (alt_match_null_string_p):
+       (common_op_match_null_string_p):
+       Avoid shadowing global on Mac OS X 10.4, at least.
+
+2004-09-08  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * regex.c (regcomp): Fix "unsigned comparison" warning (maybe
+       introduced with shy groups fix).  [Already applied, probably
+       with the second "fix shy groups" patch of 2004-10-07.] 
+
+2005-01-10  Steve Youngs  <steve@sxemacs.org>
+
+       From Andrey Slusar <anrays@gmail.com>:
+
+       * unexelf.c: define `Elfw(type)' for FreeBSD alpha and amd64.
+
+2004-11-21  Malcolm Purvis  <malcolmp@xemacs.org>
+
+       * Makefile (RECURSIVE_MAKE): Removed.
+       * Makefile (RECURSIVE_MAKE_ARGS): New.  The new method for
+       handling parallel builds.
+
+2004-09-08  Malcolm Purvis  <malcolmp@xemacs.org>
+
+       * Makefile.in.in: Enable support for parallel builds.
+
+2005-01-09  Steve Youngs  <steve@sxemacs.org>
+
+       From Andrey Slusar <anrays@gmail.com>:
+
+       * s/freebsd.h (LIBS_SYSTEM): Only set to "-lutil -lxpg4" if
+       FreeBSD version is >= 199701 _and_ < 600006.
+
+2005-01-06  Zajcev Evgeny <zevlg@yandex.ru>
+
+       * scrollbar.c (compute_scrollbar_instance_usage):
+       Only call device method compute_scrollbar_instance_usage() if it
+       is defined.
+
+2004-12-05  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.16 is released
+
+2004-12-04  Vin Shelton  <acs@xemacs.org>
+
+       * depend: Regenerated.
+
+2004-10-07  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * regex.c (re_match_2_internal): Map internal to external
+       registers.  Fixes bug identified by Steve Youngs 2004-09-30
+       <microsoft-free.87ekkjhj7t.fsf@youngs.au.com>.
+
+2004-09-02  Yoshiki Hayashi  <yoshiki@xemacs.org>
+
+       * buffer.c (Frecord_buffer): Make sure the argument is buffer
+       to fix a crash.  Also, check the buffer is live and it
+       really exists in buffer_list.  If the buffer is not in the list,
+       prepend it.
+
+2004-09-08  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       Fix shy groups by implementing recording of all groups for
+       repetition and backtracking.  Backport from 21.5.
+       
+       * regex.h (struct re_pattern_buffer): Add members re_ngroups,
+       external_to_internal_register, external_to_internal_register_size,
+       and update comments for re_nsub.
+
+       * regex.c (re_opcode_t): Update comments.
+       (print_compiled_pattern): Ouput external_to_internal_register,
+       external_to_internal_register_size, and re_ngroups for debugging.
+       (INIT_REG_TRANSLATE_SIZE): New manifest constant.
+       (regex_compile): Update header comment.
+       Ensure that all groups are recorded so that repeat matches and
+       backtracking work correctly.  Comment related warning for groups >
+       255.
+       (re_search_2): Construct map of API indexes (which count only
+       nonshy groups) to internal register numbers, and keep it updated.
+
+2004-07-27  Malcolm Purvis  <malcolmp@xemacs.org>
+
+       * frame-gtk.c (gtk_make_frame_visible):
+       * frame-gtk.c (gtk_make_frame_invisible): Use map/unmap instead of
+       show/hide.  This is what X uses and is prevents previously hidden
+       widgets from suddenly reappearing.
+       * gtk-xemacs.c (gtk_xemacs_paint):
+       * gtk-xemacs.c (gtk_xemacs_draw):
+       * gtk-xemacs.c (gtk_xemacs_expose): Only operate if the widget is
+       drawable.
+       * scrollbar-gtk.c (gtk_update_scrollbar_instance_status): Force
+       size and location changes so that they can be seen before the next
+       idle event.  Without this rapid changes to scrollbar properties
+       are not seen.
+
+2004-07-02  Malcolm Purvis  <malcolmp@xemacs.org>
+
+       * console-gtk.h:
+       * console-gtk.h (struct gtk_frame):
+       * console-gtk.h (FRAME_GTK_WIDGET_INSTANCE_HASH_TABLE):
+         Add hash tables track tab_control callback data.
+         Added #defines for GTK object data names.
+         Declaration of gtk_widget_to_frame().
+       * event-gtk.c (enqueue_gtk_dispatch_event) No longer static:
+       * frame-gtk.c (gtk_widget_to_frame): New.
+       * frame-gtk.c (gtk_create_widgets):
+       * frame-gtk.c (allocate_gtk_frame_struct):
+       * frame-gtk.c (gtk_mark_frame):
+       Manage frame callbakc hash tables.
+       * glyphs-gtk.c (gtk_map_subwindow): Fix size and moving bugs.
+       * glyphs-gtk.c (gtk_redisplay_widget): Use correct size for widgets.
+       * glyphs-gtk.c (gtk_widget_instantiate_1): Force reconsideration
+       of widget size.
+       * glyphs-gtk.c (gtk_widget_query_geometry): New
+       * glyphs-gtk.c (gtk_register_gui_item): New
+       * glyphs-gtk.c (gtk_add_tab_item): New
+       * glyphs-gtk.c (gtk_tab_control_callback): New
+       * glyphs-gtk.c (gtk_tab_control_instantiate): New
+       * glyphs-gtk.c (gtk_tab_control_redisplay): Set notebook page.
+       Use correct list when loading item.
+       * glyphs-gtk.c (image_instantiator_format_create_glyphs_gtk):
+       Register new methods.
+       * gtk-xemacs.c (gtk_xemacs_size_allocate): Use XEmacs size, not
+       default size, for widgets.
+       * gui-x.c:  Improved comment.
+       * menubar-gtk.c (__generic_button_callback): Use
+       gtk_widget_to_frame instead of __get_channel.
+       * scrollbar-gtk.c:
+       * ui-gtk.c: Use symbolic names for GTK object data.
+
+2004-06-23  Ilya N. Golubev <gin@mo.msk.ru>
+
+       * s/usg5-4.h (NSIG): Define only inside emacs binary.
+
+2002-03-04  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * fileio.c (Fwrite_region_internal): Document use of start == Qnil.
+
+2004-06-16  Malcolm Purvis  <malcolmp@xemacs.org>
+
+       * malloc.c (morecore): siz is a long because in some architectures
+       (eg ia-64) an int cannot hold the address range.  Additional patch
+       from the SuSe distribution.
+
+2004-06-13  Malcolm Purvis  <malcolmp@xemacs.org>
+
+       * emacs.c:
+       * malloc.c: lim_data is a long because in some architectures
+       (eg ia-64) an int cannot hold the address range.
+       * mem-limits.h: lim-data is a long.  Linux uses getrlimit()
+       instead of ulimit() because ulimit() always returns -1.
+
+2004-06-09  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * search.c: Reenable an ansync semaphore.  Remove bogus comments.
+
+2004-06-11  David Kastrup  <dak@gnu.org>
+
+       * search.c (match_limit): Don't flag an error if match-data
+       exceeding the allocated search_regs.num_regs gets requested, just
+       return Qnil.
+
+2003-07-21  Malcolm Purvis  <malcolmpurvis@optushome.com.au>
+
+       * glyphs-gtk.c (gtk_xpm_instantiate): Rewrite the XPM data to
+       replace symbolic color entries with the real colors specified in
+       xpm-color-symbols, before passing the XPM to gtk.
+        * glyphs-gtk.h: Use the generic pixmap_image_instance.mask for masks,
+        instead of a GTK specific field, so that it is used in by generic
+        code.
+
+2004-05-05  Chuck Hines <chuck.hines@baesystems.com>
+
+       * dgif_lib.c (DGifSlurp): Changed do-while to while to stop
+        coredump from deref of NULL ptr (ExtData)
+
+2004-04-19  Jerry James  <james@xemacs.org>
+
+       * data.c (sign_extend_lisp_int): Use INT_VALBITS instead of
+       VALBITS to compute the location of the sign bit.
+       * event-stream.c (Fcurrent_event_timestamp): Replace incorrect use
+       of VALBITS with EMACS_INT_MAX.
+       * events.c (Fevent_timestamp): Ditto.
+       * events.c (TIMESTAMP_HALFSPACE): Change VALBITS to INT_VALBITS to
+       compute the halfway point to timestamp wraparound.
+       * floatfns.c (float_to_int): Compare against EMACS_INT_MAX and
+       EMACS_INT_MIN instead of using VALBITS.
+       * floatfns.c (Flogb): Use EMACS_INT_MIN instead of building an
+       incorrect number with VALBITS.
+       * fns.c (Frandom): Correct number of integer bits in docstring.
+       Use INT_VALBITS instead of VALBITS to compute the denominator.
+       * sysdep.c (get_random): Use INT_VALBITS instead of VALBITS to
+       build random numbers.
+
+2004-03-23  Malcolm Purvis  <malcolmpurvis@optushome.com.au>
+       * event-gtk.c:
+       * event-gtk.c (gtk_event_to_emacs_event):
+       * menubar-gtk.c:
+       * menubar-gtk.c (gtk_xemacs_menubar_class_init):
+       * menubar-gtk.c (gtk_xemacs_menubar_size_request):
+       * menubar-gtk.c (gtk_xemacs_accel_label_get_type):
+       * menubar-gtk.c (gtk_xemacs_set_accel_keys):
+       * menubar-gtk.c (__activate_menu):
+       * menubar-gtk.c (convert_underscores):
+       * menubar-gtk.c (remove_underscores):
+       * menubar-gtk.c (menu_convert):
+       * menubar-gtk.c (menu_descriptor_to_widget_1):
+       * menubar-gtk.c (menu_descriptor_to_widget):
+       * menubar-gtk.c (menu_can_reuse_widget):
+       * menubar-gtk.c (menu_create_menubar):
+       * menubar-gtk.c (gtk_popup_menu):
+       * menubar-gtk.c (Fgtk_build_xemacs_menu):
+       Added support for Gtk menu bar and menu item mnemonics.
+
+2004-03-23  Malcolm Purvis  <malcolmpurvis@optushome.com.au>
+
+       * sysdll.c: (dll_function): Added support for finding symbols in
+       Darwin shared libraries as well in Darwin bundles.
+       * sysdll.c (image_for_address): New
+       * sysdll.c (my_find_image): New
+       * sysdll.c (search_linked_libs): New
+
+2004-03-23  Malcolm Purvis  <malcolmpurvis@optushome.com.au>
+
+       * ui-gtk.c (__internal_callback_marshal): Marshalling data to
+       return to GTK requires a different API to marshalling data to use
+       as GTK parameters.
+       * ui-gtk.c (lisp_to_gtk_ret_type): New.
+
+2004-03-08  Lutz Euler  <lutz.euler@freenet.de>
+
+       * lstream.c (Lstream_pseudo_close): Fix test for LSTREAM_FL_IS_OPEN.
+
+2004-02-19  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * glyphs.c (process_image_string_instantiator):
+       (Fset_console_type_image_conversion_list):
+       Stop GCC from warning about shadowing of `exp'.
+
+       * redisplay-x.c (x_output_string): Fix unsigned lossage.
+
+2004-02-19  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * regex.c (re_match_2_internal): Shut up GCC about syn1, syn2.
+
+2004-02-03  Vin Shelton  <acs@xemacs.org>
+
+       * glyphs.c (image_instance_layout): Remove pointless assertion.
+       * regex.c (regex_grow_registers): Return type is void.
+
 2004-02-02  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.15 is released
index 1b2b806..54f3c38 100644 (file)
@@ -412,7 +412,7 @@ free_lcrecord (struct lcrecord_header *lcrecord)
              break;
            }
          else if (next == 0)
-           abort ();
+           ABORT ();
          else
            header = next;
        }
index ecb204c..2487541 100644 (file)
@@ -524,7 +524,7 @@ delete_from_buffer_alist (Lisp_Object buf)
   Lisp_Object cons = Frassq (buf, Vbuffer_alist);
   Lisp_Object frmcons, devcons, concons;
   if (NILP (cons))
-    return; /* abort() ? */
+    return; /* ABORT() ? */
   Vbuffer_alist = delq_no_quit (cons, Vbuffer_alist);
 
   FRAME_LOOP_NO_BREAK (frmcons, devcons, concons)
@@ -1336,38 +1336,60 @@ buffer.  See `other-buffer' for more information.
 {
   REGISTER Lisp_Object lynk, prev;
   struct frame *f = selected_frame ();
+  int buffer_found = 0;
 
+  CHECK_BUFFER (buffer);
+  if (!BUFFER_LIVE_P (XBUFFER (buffer)))
+    return Qnil;
   prev = Qnil;
   for (lynk = Vbuffer_alist; CONSP (lynk); lynk = XCDR (lynk))
     {
       if (EQ (XCDR (XCAR (lynk)), buffer))
-       break;
+       {
+         buffer_found = 1;
+         break;
+       }
       prev = lynk;
     }
-  /* Effectively do Vbuffer_alist = delq_no_quit (lynk, Vbuffer_alist) */
-  if (NILP (prev))
-    Vbuffer_alist = XCDR (Vbuffer_alist);
+  if (buffer_found)
+    {
+      /* Effectively do Vbuffer_alist = delq_no_quit (lynk, Vbuffer_alist) */
+      if (NILP (prev))
+       Vbuffer_alist = XCDR (Vbuffer_alist);
+      else
+       XCDR (prev) = XCDR (XCDR (prev));
+      XCDR (lynk) = Vbuffer_alist;
+      Vbuffer_alist = lynk;
+    }
   else
-    XCDR (prev) = XCDR (XCDR (prev));
-  XCDR (lynk) = Vbuffer_alist;
-  Vbuffer_alist = lynk;
+    Vbuffer_alist = Fcons (Fcons (Fbuffer_name(buffer), buffer), Vbuffer_alist);
 
   /* That was the global one.  Now do the same thing for the
      per-frame buffer-alist. */
+  buffer_found = 0;
   prev = Qnil;
   for (lynk = f->buffer_alist; CONSP (lynk); lynk = XCDR (lynk))
     {
       if (EQ (XCDR (XCAR (lynk)), buffer))
-       break;
+       {
+         buffer_found = 1;
+         break;
+       }
       prev = lynk;
     }
-  /* Effectively do f->buffer_alist = delq_no_quit (lynk, f->buffer_alist) */
-  if (NILP (prev))
-    f->buffer_alist = XCDR (f->buffer_alist);
+  if (buffer_found)
+    {
+      /* Effectively do f->buffer_alist = delq_no_quit (lynk, f->buffer_alist) */
+      if (NILP (prev))
+       f->buffer_alist = XCDR (f->buffer_alist);
+      else
+       XCDR (prev) = XCDR (XCDR (prev));
+      XCDR (lynk) = f->buffer_alist;
+      f->buffer_alist = lynk;
+    }
   else
-    XCDR (prev) = XCDR (XCDR (prev));
-  XCDR (lynk) = f->buffer_alist;
-  f->buffer_alist = lynk;
+    f->buffer_alist = Fcons (Fcons (Fbuffer_name(buffer), buffer),
+                            f->buffer_alist);
 
   return Qnil;
 }
@@ -3049,7 +3071,7 @@ handled:
   if ((XINT (buffer_local_flags.slot) != -2 &&                 \
        XINT (buffer_local_flags.slot) != -3)                   \
       != !(NILP (XBUFFER (Vbuffer_local_symbols)->slot)))      \
-  abort ()
+  ABORT ()
 #include "bufslots.h"
 #undef MARKED_SLOT
 
index 4b5b82c..6eb6b32 100644 (file)
@@ -1392,7 +1392,7 @@ char_table_type_to_symbol (enum char_table_type type)
 {
   switch (type)
   {
-  default: abort();
+  default: ABORT();
   case CHAR_TABLE_TYPE_GENERIC:  return Qgeneric;
   case CHAR_TABLE_TYPE_SYNTAX:   return Qsyntax;
   case CHAR_TABLE_TYPE_DISPLAY:  return Qdisplay;
@@ -1850,7 +1850,7 @@ Reset CHAR-TABLE to its default state.
       break;
 
     default:
-      abort ();
+      ABORT ();
     }
 
   return Qnil;
@@ -2033,7 +2033,7 @@ XCHARSET_CELL_RANGE (Lisp_Object ccs)
       return (0 << 8) | 255;
 #endif
     default:
-      abort ();
+      ABORT ();
       return 0;
     }
 }
@@ -2095,7 +2095,7 @@ decode_char_table_range (Lisp_Object range, struct chartab_range *outrange)
        }
 #endif
       else
-       abort ();
+       ABORT ();
     }
   else
     {
@@ -2329,7 +2329,7 @@ If there is more than one value, return MULTI (defaults to nil).
 #endif /* not MULE */
 
     default:
-      abort ();
+      ABORT ();
     }
 
   return Qnil; /* not reached */
@@ -2379,7 +2379,7 @@ check_valid_char_table_value (Lisp_Object value, enum char_table_type type,
       break;
 
     default:
-      abort ();
+      ABORT ();
     }
 
   return 0; /* not reached */
@@ -2825,7 +2825,7 @@ map_char_table_for_charset_fun (struct chartab_range *range,
       break;
 
     default:
-      abort ();
+      ABORT ();
     }
 
   return 0;
@@ -3036,7 +3036,7 @@ map_char_table (Lisp_Char_Table *ct,
       }
 
     default:
-      abort ();
+      ABORT ();
     }
 
   return 0;
@@ -3082,7 +3082,7 @@ slow_map_char_table_fun (struct chartab_range *range,
       ranjarg = make_char (range->ch);
       break;
     default:
-      abort ();
+      ABORT ();
     }
 
   closure->retval = call2 (closure->function, ranjarg, val);
@@ -4356,7 +4356,7 @@ chartab_instantiate (Lisp_Object data)
                 Fput_char_table (make_char (i), val, chartab);
            }
          else
-           abort ();
+           ABORT ();
        }
       else
        Fput_char_table (range, val, chartab);
index 31c5055..01e48d7 100644 (file)
@@ -170,6 +170,12 @@ struct gtk_frame
   /* Are we iconfied right now? */
   unsigned int iconified_p :1;
 
+  /* Data for widget callbacks.  It is impossible to pass all the necessary
+     data through the GTK signal API so instead it is registered here and the
+     hash key is passed instead. */
+  Lisp_Object widget_instance_hash_table;
+  Lisp_Object widget_callback_hash_table;
+  Lisp_Object widget_callback_ex_hash_table;
 };
 
 #define FRAME_GTK_DATA(f) FRAME_TYPE_DATA (f, gtk)
@@ -191,6 +197,17 @@ struct gtk_frame
 #define FRAME_GTK_TOTALLY_VISIBLE_P(f) (FRAME_GTK_DATA (f)->totally_visible_p)
 #define FRAME_GTK_VISIBLE_P(f) (FRAME_GTK_DATA (f)->visible_p)
 #define FRAME_GTK_TOP_LEVEL_FRAME_P(f) (FRAME_GTK_DATA (f)->top_level_frame_p)
+#define FRAME_GTK_WIDGET_INSTANCE_HASH_TABLE(f) (FRAME_GTK_DATA (f)->widget_instance_hash_table)
+#define FRAME_GTK_WIDGET_CALLBACK_HASH_TABLE(f) (FRAME_GTK_DATA (f)->widget_callback_hash_table)
+#define FRAME_GTK_WIDGET_CALLBACK_EX_HASH_TABLE(f) (FRAME_GTK_DATA (f)->widget_callback_ex_hash_table)
+
+/* Special data used to quickly identify the frame that contains a widget. */
+#define GTK_DATA_FRAME_IDENTIFIER "xemacs::frame"
+
+/* The hashcode in the frame hash table of a tab_control tab's callback data. */
+#define GTK_DATA_TAB_HASHCODE_IDENTIFIER "xemacs::tab_hashcode"
+
+#define GTK_DATA_GUI_IDENTIFIER "xemacs::gui_id"
 
 /* Variables associated with the X display frame this emacs is using. */
 
@@ -205,6 +222,7 @@ extern int gtk_interline_space;
 
 extern int gtk_selection_timeout;
 
+struct frame *gtk_widget_to_frame (GtkWidget *);
 struct frame *gtk_any_window_to_frame (struct device *d, GdkWindow *);
 struct frame *gtk_window_to_frame (struct device *d, GdkWindow *);
 struct frame *gtk_any_widget_or_parent_to_frame (struct device *d, GtkWidget *widget);
index d664360..1850c21 100644 (file)
@@ -35,10 +35,13 @@ Boston, MA 02111-1307, USA.  */
 #ifdef HAVE_X_WINDOWS
 
 #include "console.h"
+/* must come before Xutil.h, which is included indirectly from xintrinsic.h,
+   to avoid breakage in keysym-parsing macros from X11R6, at least X.org as
+   of 2005-01-17, and probably XFree86 too from reports on c.e.x */
+#include <X11/keysym.h>
 #include "xintrinsic.h"
 
 #include <X11/cursorfont.h>
-#include <X11/keysym.h>
 #include <X11/Xatom.h>
 #include <X11/StringDefs.h>
 
index 21e5d26..197842e 100644 (file)
@@ -173,10 +173,10 @@ EMACS_INT sign_extend_lisp_int (EMACS_INT num);
 EMACS_INT
 sign_extend_lisp_int (EMACS_INT num)
 {
-  if (num & (1L << (VALBITS - 1)))
-    return num | ((-1L) << VALBITS);
+  if (num & (1L << (INT_VALBITS - 1)))
+    return num | ((-1L) << INT_VALBITS);
   else
-    return num & ((1L << VALBITS) - 1);
+    return num & (EMACS_INT) ((1UL << INT_VALBITS) - 1);
 }
 
 \f
@@ -1780,7 +1780,7 @@ finish_marking_weak_lists (void)
              break;
 
            default:
-             abort ();
+             ABORT ();
            }
 
          if (need_to_mark_elem && ! marked_p (elem))
@@ -1936,7 +1936,7 @@ encode_weak_list_type (enum weak_list_type type)
     case WEAK_LIST_VALUE_ASSOC: return Qvalue_assoc;
     case WEAK_LIST_FULL_ASSOC:  return Qfull_assoc;
     default:
-      abort ();
+      ABORT ();
     }
 
   return Qnil; /* not reached */
index 188c0ab..b765434 100644 (file)
@@ -49,10 +49,10 @@ redisplay-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h char-1byte.h char-lb.h
 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
+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 menubar.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
+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 events.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 systime.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
index c17c597..83c684f 100644 (file)
@@ -198,7 +198,7 @@ gtk_init_device (struct device *d, Lisp_Object props)
   XSETDEVICE (device, d);
 
   /* gtk_init() and even gtk_check_init() are so brain dead that
-     getting an empty argv array causes them to abort. */
+     getting an empty argv array causes them to ABORT. */
   if (NILP (Vgtk_initial_argv_list))
     {
       signal_simple_error ("gtk-initial-argv-list must be set before creating Gtk devices", Vgtk_initial_argv_list);
index a2b047b..d75f6fa 100644 (file)
@@ -222,7 +222,7 @@ parse_doprnt_spec (const Bufbyte *format, Bytecount format_length)
                case ' ': spec.space_flag  = 1; break;
                case '#': spec.number_flag = 1; break;
                case '0': spec.zero_flag   = 1; break;
-               default: abort ();
+               default: ABORT ();
                }
              NEXT_ASCII_BYTE (ch);
            }
@@ -383,7 +383,7 @@ get_doprnt_args (printf_spec_dynarr *specs, va_list vargs)
        arg.d = va_arg (vargs, double);
       else if (strchr (string_converters, ch))
        arg.bp = va_arg (vargs, Bufbyte *);
-      else abort ();
+      else ABORT ();
 
       Dynarr_add (args, arg);
     }
index a884710..e0b4ad8 100644 (file)
@@ -444,7 +444,7 @@ pdump_get_indirect_count (EMACS_INT code,
       stderr_out ("Unsupported count type : %d (line = %d, code=%ld)\n",
                  idesc[line].type, line, (long)code);
       pdump_backtrace ();
-      abort ();
+      ABORT ();
     }
   count += delta;
   return count;
@@ -544,7 +544,7 @@ pdump_register_sub (const void *data, const struct lrecord_description *desc, in
        default:
          stderr_out ("Unsupported dump type : %d\n", desc[pos].type);
          pdump_backtrace ();
-         abort ();
+         ABORT ();
        };
     }
 }
@@ -573,7 +573,7 @@ pdump_register_object (Lisp_Object obj)
       if (me>65536)
        {
          stderr_out ("Backtrace overflow, loop ?\n");
-         abort ();
+         ABORT ();
        }
       backtrace[me].obj = objh;
       backtrace[me].position = 0;
@@ -608,7 +608,7 @@ pdump_register_struct (const void *data,
       if (me>65536)
        {
          stderr_out ("Backtrace overflow, loop ?\n");
-         abort ();
+         ABORT ();
        }
       backtrace[me].obj = 0;
       backtrace[me].position = 0;
@@ -721,7 +721,7 @@ pdump_dump_data (pdump_entry_list_elt *elt,
                  }
                default:
                  stderr_out ("Unsupported dump type : %d\n", desc[pos].type);
-                 abort ();
+                 ABORT ();
                }
            }
        }
@@ -799,7 +799,7 @@ pdump_reloc_one (void *data, EMACS_INT delta,
          }
        default:
          stderr_out ("Unsupported dump type : %d\n", desc[pos].type);
-         abort ();
+         ABORT ();
        };
     }
 }
index 6a01ca6..2331bb9 100644 (file)
@@ -346,7 +346,7 @@ uintptr_t bss_end = 0;
 #endif
 
 /* Number of bytes of writable memory we can expect to be able to get */
-unsigned int lim_data;
+unsigned long lim_data;
 
 /* WARNING!
 
@@ -562,7 +562,7 @@ DEFUN ("force-debugging-signal", Fforce_debugging_signal, 0, 1, 0, /*
 Cause XEmacs to enter the debugger.
 On some systems, there may be no way to do this gracefully; if so,
 nothing happens unless ABORT is non-nil, in which case XEmacs will
-abort() -- a sure-fire way to immediately get back to the debugger,
+ABORT() -- a sure-fire way to immediately get back to the debugger,
 but also a sure-fire way to kill XEmacs (and dump core on Unix
 systems)!
 */
@@ -570,7 +570,7 @@ systems)!
 {
   debugging_breakpoint ();
   if (!NILP (abort_))
-    abort ();
+    ABORT ();
   return Qnil;
 }
 
@@ -2658,7 +2658,7 @@ sort_args (int argc, char **argv)
        }
 
       if (best < 0)
-       abort ();
+       ABORT ();
 
       /* Copy the highest priority remaining option, with its args, to NEW_ARGV.  */
       new_argv[to++] = argv[best];
@@ -2823,7 +2823,7 @@ main (int argc, char **argv, char **envp)
     {
 #ifdef DOUG_LEA_MALLOC
       if (mallopt (M_MMAP_MAX, 0) != 1)
-       abort();
+       ABORT();
 #endif
       run_temacs_argc = 0;
       if (! SETJMP (run_temacs_catch))
@@ -2870,7 +2870,7 @@ main (int argc, char **argv, char **envp)
       if (rc != 0)
        {
          stderr_out ("malloc_set_state failed, rc = %d\n", rc);
-         abort ();
+         ABORT ();
        }
 #if 0
       free (malloc_state_ptr);
@@ -2881,7 +2881,7 @@ main (int argc, char **argv, char **envp)
     (defined(__GLIBC__) && __GLIBC_MINOR__ < 1 && !defined(MULE)) || \
     defined(DEBUG_DOUG_LEA_MALLOC)
       if(mallopt (M_MMAP_MAX, 0) != 1)
-       abort();
+       ABORT();
 #endif
 #ifdef REL_ALLOC
       r_alloc_reinit ();
@@ -3358,7 +3358,6 @@ Non-nil return value means XEmacs is running without interactive terminal.
    in one session without having to recompile. */
 /* #define ASSERTIONS_DONT_ABORT */
 
-#ifdef USE_ASSERTIONS
 /* This highly dubious kludge ... shut up Jamie, I'm tired of your slagging. */
 
 static int in_assert_failed;
@@ -3370,8 +3369,6 @@ static const char *assert_failed_expr;
 #undef fprintf
 #endif
 
-#undef abort   /* avoid infinite #define loop... */
-
 #if defined (WIN32_NATIVE) && defined (DEBUG_XEMACS)
 #define enter_debugger() DebugBreak ()
 #else
@@ -3428,12 +3425,11 @@ assert_failed (const char *file, int line, const char *expr)
 
   enter_debugger ();
 #if !defined (ASSERTIONS_DONT_ABORT)
-  abort ();
+  abort (); /* The real abort(), this time */
 #endif
   inhibit_non_essential_printing_operations = 0;
   in_assert_failed = 0;
 }
-#endif /* USE_ASSERTIONS */
 
 #ifdef QUANTIFY
 DEFUN ("quantify-start-recording-data", Fquantify_start_recording_data,
index d9360e3..b2c14ba 100644 (file)
@@ -58,6 +58,10 @@ Boston, MA 02111-1307, USA.  */
 #include "dragdrop.h"
 #endif
 
+#ifdef HAVE_MENUBARS
+# include "menubar.h"
+#endif
+
 #if defined (HAVE_OFFIX_DND)
 #include "offix.h"
 #endif
@@ -88,12 +92,25 @@ static int last_quit_check_signal_tick_count;
 Lisp_Object Qkey_mapping;
 Lisp_Object Qsans_modifiers;
 
-static void enqueue_gtk_dispatch_event (Lisp_Object event);
+void enqueue_gtk_dispatch_event (Lisp_Object event);
 
+/*
+ * Identify if the keysym is a modifier.  This implementation mirrors x.org's
+ * IsModifierKey(), but for GDK keysyms.
+ */
+#ifdef GDK_ISO_Lock
+#define IS_MODIFIER_KEY(keysym)  \
+  ((((keysym) >= GDK_Shift_L) && ((keysym) <= GDK_Hyper_R)) \
+   || (((keysym) >= GDK_ISO_Lock) && \
+       ((keysym) <= GDK_ISO_Last_Group_Lock)) \
+   || ((keysym) == GDK_Mode_switch) \
+   || ((keysym) == GDK_Num_Lock))
+#else
 #define IS_MODIFIER_KEY(keysym)  \
   ((((keysym) >= GDK_Shift_L) && ((keysym) <= GDK_Hyper_R)) \
    || ((keysym) == GDK_Mode_switch) \
    || ((keysym) == GDK_Num_Lock))
+#endif
 
 
 \f
@@ -1090,7 +1107,7 @@ dragndrop_dropped (GtkWidget *widget,
 
 static Lisp_Object dispatch_event_queue, dispatch_event_queue_tail;
 
-static void
+void
 enqueue_gtk_dispatch_event (Lisp_Object event)
 {
   enqueue_event (event, &dispatch_event_queue, &dispatch_event_queue_tail);
@@ -1291,6 +1308,22 @@ gtk_event_to_emacs_event (struct frame *frame, GdkEvent *gdk_event, struct Lisp_
            GdkEventKey *key_event = &gdk_event->key;
            Lisp_Object keysym;
 
+#ifdef HAVE_MENUBARS
+           /* If the user wants see if the event is a menu bar accelerator.
+              The process of checking absorbs the event and starts menu
+              processing so send a null event into XEmacs to make sure it
+              does nothing.
+           */
+           if (!NILP (Vmenu_accelerator_enabled)
+               && gtk_accel_groups_activate(GTK_OBJECT (FRAME_GTK_SHELL_WIDGET(frame)),
+                                            key_event->keyval,
+                                            *state))
+             {
+               zero_event(emacs_event);
+               return 1;
+             }
+#endif
+
            /* This used to compute the frame from the given X window and
               store it here, but we really don't care about the frame. */
            emacs_event->channel = DEVICE_CONSOLE (d);
index ab8648e..f3c499e 100644 (file)
@@ -322,7 +322,7 @@ face_validate (Lisp_Object data, Error_behavior errb)
       if (EQ (keyw, Qname))
        name_seen = 1;
       else
-       abort ();
+       ABORT ();
     }
 
   if (!name_seen)
index b4ff9c8..763acae 100644 (file)
@@ -433,7 +433,7 @@ eol_type_to_symbol (eol_type_t type)
 {
   switch (type)
     {
-    default: abort ();
+    default: ABORT ();
     case EOL_LF:         return Qlf;
     case EOL_CRLF:       return Qcrlf;
     case EOL_CR:         return Qcr;
@@ -1222,7 +1222,7 @@ subsidiary_coding_system (Lisp_Object coding_system, eol_type_t type)
     case EOL_LF:   new_coding_system = CODING_SYSTEM_EOL_LF   (cs); break;
     case EOL_CR:   new_coding_system = CODING_SYSTEM_EOL_CR   (cs); break;
     case EOL_CRLF: new_coding_system = CODING_SYSTEM_EOL_CRLF (cs); break;
-    default:       abort (); return Qnil;
+    default:       ABORT (); return Qnil;
     }
 
   return NILP (new_coding_system) ? coding_system : new_coding_system;
@@ -1260,7 +1260,7 @@ Return the type of CODING-SYSTEM.
 {
   switch (XCODING_SYSTEM_TYPE (Fget_coding_system (coding_system)))
     {
-    default: abort ();
+    default: ABORT ();
     case CODESYS_AUTODETECT:   return Qundecided;
 #ifdef MULE
     case CODESYS_SHIFT_JIS:    return Qshift_jis;
@@ -1336,7 +1336,7 @@ Return the PROP property of CODING-SYSTEM.
            break;
 #endif /* MULE */
          default:
-           abort ();
+           ABORT ();
          }
       }
 
@@ -1404,7 +1404,7 @@ Return the PROP property of CODING-SYSTEM.
          unparse_charset_conversion_specs
            (XCODING_SYSTEM (coding_system)->iso2022.output_conv);
       else
-       abort ();
+       ABORT ();
     }
   else if (type == CODESYS_CCL)
     {
@@ -1413,11 +1413,11 @@ Return the PROP property of CODING-SYSTEM.
       else if (EQ (prop, Qencode))
        return XCODING_SYSTEM_CCL_ENCODE (coding_system);
       else
-       abort ();
+       ABORT ();
     }
 #endif /* MULE */
   else
-    abort ();
+    ABORT ();
 
   return Qnil; /* not reached */
 }
@@ -2514,7 +2514,7 @@ mule_decode (Lstream *decoding, const Extbyte *src,
       break;
 #endif /* MULE */
     default:
-      abort ();
+      ABORT ();
     }
 }
 
@@ -2933,7 +2933,7 @@ mule_encode (Lstream *encoding, const Bufbyte *src,
       break;
 #endif /* MULE */
     default:
-      abort ();
+      ABORT ();
     }
 }
 
@@ -3926,7 +3926,7 @@ encode_coding_ucs4 (Lstream *encoding, const Bufbyte *src,
                    }
                  break;
                default:
-                 abort ();
+                 ABORT ();
                }
            }
        }
@@ -4279,7 +4279,7 @@ encode_coding_utf8 (Lstream *encoding, const Bufbyte *src,
                    }
                  break;
                default:
-                 abort ();
+                 ABORT ();
                }
            }
        }
@@ -4832,7 +4832,7 @@ parse_iso2022_esc (Lisp_Object codesys, struct iso2022_decoder *iso,
        else
          {
            /* Can this ever be reached? -slb */
-           abort();
+           ABORT();
            return 0;
          }
 
@@ -5855,7 +5855,7 @@ encode_coding_iso2022 (Lstream *encoding, const Bufbyte *src,
                  break;
 
                default:
-                 abort ();
+                 ABORT ();
                }
            }
          char_boundary = 0;
@@ -5938,7 +5938,7 @@ encode_coding_iso2022 (Lstream *encoding, const Bufbyte *src,
                    }
                  break;
                default:
-                 abort ();
+                 ABORT ();
                }
            }
        }
index 2455d35..266783b 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -144,7 +144,7 @@ extern void seed_random (long arg);
 DEFUN ("random", Frandom, 0, 1, 0, /*
 Return a pseudo-random number.
 All integers representable in Lisp are equally likely.
-  On most systems, this is 28 bits' worth.
+  On most systems, this is 31 bits' worth.
 With positive integer argument N, return random number in interval [0,N).
 With argument t, set the random number seed from the current time and pid.
 */
@@ -164,7 +164,7 @@ With argument t, set the random number seed from the current time and pid.
         it's possible to get a quotient larger than limit; discarding
         these values eliminates the bias that would otherwise appear
         when using a large limit.  */
-      denominator = ((unsigned long)1 << VALBITS) / XINT (limit);
+      denominator = ((unsigned long)1 << INT_VALBITS) / XINT (limit);
       do
        val = get_random () / denominator;
       while (val >= XINT (limit));
@@ -713,7 +713,7 @@ concat (int nargs, Lisp_Object *args,
         break;
       default:
        val = Qnil;
-        abort ();
+        ABORT ();
       }
   }
 
@@ -1002,7 +1002,7 @@ are copied to the new string.
     }
   else
     {
-      abort (); /* unreachable, since Flength (sequence) did not get
+      ABORT (); /* unreachable, since Flength (sequence) did not get
                    an error */
       return Qnil;
     }
@@ -3021,7 +3021,7 @@ mapcar1 (size_t leni, Lisp_Object *vals,
        }
     }
   else
-    abort (); /* unreachable, since Flength (sequence) did not get an error */
+    ABORT (); /* unreachable, since Flength (sequence) did not get an error */
 
   if (vals)
     UNGCPRO;
@@ -3638,7 +3638,7 @@ into shorter lines.
   encoded_length = base64_encode_1 (XLSTREAM (input), encoded,
                                    NILP (no_line_break));
   if (encoded_length > allength)
-    abort ();
+    ABORT ();
   Lstream_delete (XLSTREAM (input));
 
   /* Now we have encoded the region, so we insert the new contents
@@ -3680,7 +3680,7 @@ into shorter lines.
   encoded_length = base64_encode_1 (XLSTREAM (input), encoded,
                                    NILP (no_line_break));
   if (encoded_length > allength)
-    abort ();
+    ABORT ();
   Lstream_delete (XLSTREAM (input));
   result = make_string (encoded, encoded_length);
   XMALLOC_UNBIND (encoded, allength, speccount);
@@ -3713,7 +3713,7 @@ Characters out of the base64 alphabet are ignored.
   XMALLOC_OR_ALLOCA (decoded, length * MAX_EMCHAR_LEN, Bufbyte);
   decoded_length = base64_decode_1 (XLSTREAM (input), decoded, &cc_decoded_length);
   if (decoded_length > length * MAX_EMCHAR_LEN)
-    abort ();
+    ABORT ();
   Lstream_delete (XLSTREAM (input));
 
   /* Now we have decoded the region, so we insert the new contents
@@ -3754,7 +3754,7 @@ Characters out of the base64 alphabet are ignored.
   decoded_length = base64_decode_1 (XLSTREAM (input), decoded,
                                    &cc_decoded_length);
   if (decoded_length > length * MAX_EMCHAR_LEN)
-    abort ();
+    ABORT ();
   Lstream_delete (XLSTREAM (input));
 
   result = make_string (decoded, decoded_length);
index e6132bb..ddeeda9 100644 (file)
@@ -520,7 +520,7 @@ find_context (struct buffer *buf, Bufpos pt)
              context_cache.context = context_comment;
              context_cache.ccontext = ccontext_none;
              context_cache.style = SINGLE_SYNTAX_STYLE (syncode);
-             if (context_cache.style == comment_style_none) abort ();
+             if (context_cache.style == comment_style_none) ABORT ();
            }
          break;
 
@@ -612,7 +612,7 @@ find_context (struct buffer *buf, Bufpos pt)
        {
          context_cache.ccontext = ccontext_start2;
          context_cache.style = SYNTAX_START_STYLE (prev_syncode, syncode);
-         if (context_cache.style == comment_style_none) abort ();
+         if (context_cache.style == comment_style_none) ABORT ();
        }
       else if ((SYNTAX_CODE_COMMENT_BITS (syncode) &
                SYNTAX_FIRST_CHAR_START) &&
@@ -653,18 +653,18 @@ find_context (struct buffer *buf, Bufpos pt)
           comment-end sequence. ie, '/xxx foo xxx/' or '/xxx foo x/',
           where 'x' = '*' -- mct */
        {
-         if (context_cache.style == comment_style_none) abort ();
+         if (context_cache.style == comment_style_none) ABORT ();
          context_cache.ccontext = ccontext_end1;
        }
 
       else if (context_cache.ccontext == ccontext_start1)
        {
-         if (context_cache.context != context_none) abort ();
+         if (context_cache.context != context_none) ABORT ();
          context_cache.ccontext = ccontext_none;
        }
       else if (context_cache.ccontext == ccontext_end1)
        {
-         if (context_cache.context != context_block_comment) abort ();
+         if (context_cache.context != context_block_comment) ABORT ();
          context_cache.context = context_none;
          context_cache.ccontext = ccontext_start2;
        }
@@ -673,7 +673,7 @@ find_context (struct buffer *buf, Bufpos pt)
          context_cache.context == context_none)
        {
          context_cache.context = context_block_comment;
-         if (context_cache.style == comment_style_none) abort ();
+         if (context_cache.style == comment_style_none) ABORT ();
        }
       else if (context_cache.ccontext == ccontext_none &&
               context_cache.context == context_block_comment)
@@ -696,7 +696,7 @@ context_to_symbol (enum syntactic_context context)
     case context_block_comment:                return Qblock_comment;
     case context_generic_comment:      return Qblock_comment;
     case context_generic_string:       return Qstring;
-    default: abort (); return Qnil; /* suppress compiler warning */
+    default: ABORT (); return Qnil; /* suppress compiler warning */
     }
 }
 
index 3f3d754..91951cf 100644 (file)
@@ -27,6 +27,7 @@ Boston, MA 02111-1307, USA.  */
 #include <config.h>
 #include "lisp.h"
 
+#include "elhash.h"
 #include "console-gtk.h"
 #include "ui-gtk.h"
 #include "glyphs-gtk.h"
@@ -54,7 +55,6 @@ Boston, MA 02111-1307, USA.  */
 #define INTERNAL_BORDER_WIDTH 0
 
 #define TRANSIENT_DATA_IDENTIFIER "xemacs::transient_for"
-#define FRAME_DATA_IDENTIFIER "xemacs::frame"
 #define UNMAPPED_DATA_IDENTIFIER "xemacs::initially_unmapped"
 
 #define STUPID_X_SPECIFIC_GTK_STUFF
@@ -98,6 +98,23 @@ static guint dnd_n_targets = sizeof(dnd_target_table) / sizeof(dnd_target_table[
 /*                          helper functions                            */
 /************************************************************************/
 
+/* Return the Emacs frame-object which contains the given widget. */
+struct frame *
+gtk_widget_to_frame (GtkWidget *w)
+{
+  struct frame *f = NULL;
+
+  for (; w; w = w->parent)
+    {
+      if ((f = (struct frame *) gtk_object_get_data (GTK_OBJECT (w),
+                                                    GTK_DATA_FRAME_IDENTIFIER)))
+       return (f);
+    }
+
+  return (selected_frame());
+}
+
+
 /* Return the Emacs frame-object corresponding to an X window */
 struct frame *
 gtk_window_to_frame (struct device *d, GdkWindow *wdesc)
@@ -811,7 +828,7 @@ gtk_create_widgets (struct frame *f, Lisp_Object lisp_window_id, Lisp_Object par
 
   gtk_container_set_border_width (GTK_CONTAINER (shell), 0);
 
-  gtk_object_set_data (GTK_OBJECT (shell), FRAME_DATA_IDENTIFIER, f);
+  gtk_object_set_data (GTK_OBJECT (shell), GTK_DATA_FRAME_IDENTIFIER, f);
 
   FRAME_GTK_SHELL_WIDGET (f) = shell;
 
@@ -937,6 +954,18 @@ allocate_gtk_frame_struct (struct frame *f)
   /* yeah, except the lisp ones */
   FRAME_GTK_ICON_PIXMAP (f) = Qnil;
   FRAME_GTK_ICON_PIXMAP_MASK (f) = Qnil;
+
+  /*
+    Hashtables of callback data for glyphs on the frame.  Make them EQ because
+    we only use ints as keys.  Otherwise we run into stickiness in redisplay
+    because internal_equal() can QUIT.  See enter_redisplay_critical_section().
+  */
+  FRAME_GTK_WIDGET_INSTANCE_HASH_TABLE (f) =
+    make_lisp_hash_table (50, HASH_TABLE_VALUE_WEAK, HASH_TABLE_EQ);
+  FRAME_GTK_WIDGET_CALLBACK_HASH_TABLE (f) =
+    make_lisp_hash_table (50, HASH_TABLE_VALUE_WEAK, HASH_TABLE_EQ);
+  FRAME_GTK_WIDGET_CALLBACK_EX_HASH_TABLE (f) =
+    make_lisp_hash_table (50, HASH_TABLE_VALUE_WEAK, HASH_TABLE_EQ);
 }
 
 \f
@@ -1022,6 +1051,9 @@ gtk_mark_frame (struct frame *f)
   mark_object (FRAME_GTK_LISP_WIDGETS (f)[0]);
   mark_object (FRAME_GTK_LISP_WIDGETS (f)[1]);
   mark_object (FRAME_GTK_LISP_WIDGETS (f)[2]);
+  mark_object (FRAME_GTK_WIDGET_INSTANCE_HASH_TABLE (f));
+  mark_object (FRAME_GTK_WIDGET_CALLBACK_HASH_TABLE (f));
+  mark_object (FRAME_GTK_WIDGET_CALLBACK_EX_HASH_TABLE (f));
 }
 
 static void
@@ -1057,7 +1089,7 @@ gtk_set_frame_pointer (struct frame *f)
     }
   else
     {
-      /* abort()? */
+      /* ABORT()? */
       stderr_out ("POINTER_IMAGE_INSTANCEP (f->pointer) failed!\n");
     }
 }
@@ -1219,7 +1251,7 @@ gtk_lower_frame (struct frame *f)
 static void
 gtk_make_frame_visible (struct frame *f)
 {
-    gtk_widget_show_all (FRAME_GTK_SHELL_WIDGET (f));
+    gtk_widget_map (FRAME_GTK_SHELL_WIDGET (f));
     gtk_raise_frame_1 (f, 0);
 }
 
@@ -1227,7 +1259,7 @@ gtk_make_frame_visible (struct frame *f)
 static void
 gtk_make_frame_invisible (struct frame *f)
 {
-    gtk_widget_hide (FRAME_GTK_SHELL_WIDGET (f));
+    gtk_widget_unmap(FRAME_GTK_SHELL_WIDGET (f));
 }
 
 static int
@@ -1367,7 +1399,7 @@ gtk_update_frame_external_traits (struct frame* frm, Lisp_Object name)
      }
    }
   else
-   abort ();
+   ABORT ();
 
 #ifdef HAVE_TOOLBARS
   /* Setting the background clears the entire frame area
index 979e507..5ab9b6d 100644 (file)
@@ -779,7 +779,7 @@ selected_frame (void)
 /* use this instead of XFRAME (DEVICE_SELECTED_FRAME (d)) to catch
    the possibility of there being no frames on the device (just created).
    There is no point doing this inside of redisplay because errors
-   cause an abort(), indicating a flaw in the logic, and error_check_frame()
+   cause an ABORT(), indicating a flaw in the logic, and error_check_frame()
    will catch this just as well. */
 
 struct frame *
@@ -1633,7 +1633,7 @@ delete_frame_internal (struct frame *f, int force,
             that is prohibited at the top; you can't delete surrogate
             minibuffer frames.  */
          if (NILP (frame_with_minibuf))
-           abort ();
+           ABORT ();
 
          con->default_minibuffer_frame = frame_with_minibuf;
        }
@@ -1707,7 +1707,7 @@ mouse_pixel_position_1 (struct device *d, Lisp_Object *frame,
       break;
 
     default:
-      abort (); /* method is incorrectly written */
+      ABORT (); /* method is incorrectly written */
     }
 
   return 0;
@@ -2951,7 +2951,7 @@ change_frame_size_1 (struct frame *f, int newheight, int newwidth)
      `left' coordinates to be recomputed even though no frame size
      change occurs. --kyle */
   if (in_display)
-    abort ();
+    ABORT ();
 
   XSETFRAME (frame, f);
 
index afc5830..50566c1 100644 (file)
@@ -160,8 +160,8 @@ gc_cache_lookup (struct gc_cache *cache, GdkGCValues *gcv, GdkGCValuesMask mask)
   struct gc_cache_cell *cell, *next, *prev;
   struct gcv_and_mask gcvm;
 
-  if ((!!cache->head) != (!!cache->tail)) abort ();
-  if (cache->head && (cache->head->prev || cache->tail->next)) abort ();
+  if ((!!cache->head) != (!!cache->tail)) ABORT ();
+  if (cache->head && (cache->head->prev || cache->tail->next)) ABORT ();
 
   /* Gdk does not have the equivalent of 'None' for the clip_mask, so
      we need to check it carefully, or gdk_gc_new_with_values will
@@ -216,10 +216,10 @@ gc_cache_lookup (struct gc_cache *cache, GdkGCValues *gcv, GdkGCValuesMask mask)
       cell->prev = cache->tail;
       cache->tail->next = cell;
       cache->tail = cell;
-      if (cache->head == cell) abort ();
-      if (cell->next) abort ();
-      if (cache->head->prev) abort ();
-      if (cache->tail->next) abort ();
+      if (cache->head == cell) ABORT ();
+      if (cell->next) ABORT ();
+      if (cache->head->prev) ABORT ();
+      if (cache->tail->next) ABORT ();
       return cell->gc;
     }
 
@@ -241,7 +241,7 @@ gc_cache_lookup (struct gc_cache *cache, GdkGCValues *gcv, GdkGCValuesMask mask)
 #endif
     }
   else if (cache->size > GC_CACHE_SIZE)
-    abort ();
+    ABORT ();
   else
     {
       /* Allocate a new cell (don't put it in the list or table yet). */
index 69e59e1..d33e8d0 100644 (file)
@@ -63,6 +63,8 @@ Boston, MA 02111-1307, USA.  */
 #include "insdel.h"
 #include "opaque.h"
 #include "faces.h"
+#include "elhash.h"
+#include "events.h"
 
 #include "imgproc.h"
 
@@ -70,10 +72,19 @@ Boston, MA 02111-1307, USA.  */
 
 #include <setjmp.h>
 
+#if defined (HAVE_XPM)
+#include <X11/xpm.h>
+#endif
+
 #ifdef FILE_CODING
 #include "file-coding.h"
 #endif
 
+extern void enqueue_gtk_dispatch_event (Lisp_Object event);
+
+/* Widget callback hash table callback slot. */
+#define WIDGET_GLYPH_SLOT 0
+
 #if INTBITS == 32
 # define FOUR_BYTE_TYPE unsigned int
 #elif LONGBITS == 32
@@ -412,7 +423,7 @@ gtk_finalize_image_instance (struct Lisp_Image_Instance *p)
 #endif
       else if (IMAGE_INSTANCE_TYPE (p) == IMAGE_SUBWINDOW)
        {
-         abort();
+         ABORT();
        }
       else
        {
@@ -777,7 +788,7 @@ void init_image_instance_from_gdk_pixmap (struct Lisp_Image_Instance *ii,
   gint width, height, depth;
 
   if (!DEVICE_GTK_P (device))
-    abort ();
+    ABORT ();
 
   IMAGE_INSTANCE_DEVICE (ii) = device;
   IMAGE_INSTANCE_TYPE (ii) = IMAGE_COLOR_PIXMAP;
@@ -1023,7 +1034,7 @@ init_image_instance_from_xbm_inline (struct Lisp_Image_Instance *ii,
       break;
 
     default:
-      abort ();
+      ABORT ();
     }
 }
 
@@ -1084,105 +1095,21 @@ gtk_xbm_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
 /**********************************************************************
  *                             XPM                                    *
  **********************************************************************/
-static void
-write_lisp_string_to_temp_file (Lisp_Object string, char *filename_out)
-{
-  Lisp_Object instream, outstream;
-  Lstream *istr, *ostr;
-  char tempbuf[1024]; /* some random amount */
-  int fubar = 0;
-  FILE *tmpfil;
-  static Extbyte_dynarr *conversion_out_dynarr;
-  Bytecount bstart, bend;
-  struct gcpro gcpro1, gcpro2;
-#ifdef FILE_CODING
-  Lisp_Object conv_out_stream;
-  Lstream *costr;
-  struct gcpro gcpro3;
-#endif
-
-  /* This function can GC */
-  if (!conversion_out_dynarr)
-    conversion_out_dynarr = Dynarr_new (Extbyte);
-  else
-    Dynarr_reset (conversion_out_dynarr);
-
-  /* Create the temporary file ... */
-  sprintf (filename_out, "/tmp/emacs%d.XXXXXX", (int) getpid ());
-  mktemp (filename_out);
-  tmpfil = fopen (filename_out, "w");
-  if (!tmpfil)
-    {
-      if (tmpfil)
-       {
-         int old_errno = errno;
-         fclose (tmpfil);
-         unlink (filename_out);
-         errno = old_errno;
-       }
-      report_file_error ("Creating temp file",
-                        list1 (build_string (filename_out)));
-    }
-
-  CHECK_STRING (string);
-  get_string_range_byte (string, Qnil, Qnil, &bstart, &bend,
-                        GB_HISTORICAL_STRING_BEHAVIOR);
-  instream = make_lisp_string_input_stream (string, bstart, bend);
-  istr = XLSTREAM (instream);
-  /* setup the out stream */
-  outstream = make_dynarr_output_stream((unsigned_char_dynarr *)conversion_out_dynarr);
-  ostr = XLSTREAM (outstream);
-#ifdef FILE_CODING
-  /* setup the conversion stream */
-  conv_out_stream = make_encoding_output_stream (ostr, Fget_coding_system(Qbinary));
-  costr = XLSTREAM (conv_out_stream);
-  GCPRO3 (instream, outstream, conv_out_stream);
-#else
-  GCPRO2 (instream, outstream);
-#endif
 
-  /* Get the data while doing the conversion */
+/* strcasecmp() is not sufficiently portable or standard,
+   and it's easier just to write our own. */
+static int
+ascii_strcasecmp (const char *s1, const char *s2)
+{
   while (1)
     {
-      int size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
-      if (!size_in_bytes)
-       break;
-      /* It does seem the flushes are necessary... */
-#ifdef FILE_CODING
-      Lstream_write (costr, tempbuf, size_in_bytes);
-      Lstream_flush (costr);
-#else
-      Lstream_write (ostr, tempbuf, size_in_bytes);
-#endif
-      Lstream_flush (ostr);
-      if (fwrite ((unsigned char *)Dynarr_atp(conversion_out_dynarr, 0),
-                 Dynarr_length(conversion_out_dynarr), 1, tmpfil) != 1)
-       {
-         fubar = 1;
-         break;
-       }
-      /* reset the dynarr */
-      Lstream_rewind(ostr);
+      char c1 = *s1++;
+      char c2 = *s2++;
+      if (c1 >= 'A' && c1 <= 'Z') c1 += 'a' - 'A';
+      if (c2 >= 'A' && c2 <= 'Z') c2 += 'a' - 'A';
+      if (c1 != c2) return c1 - c2;
+      if (c1 == '\0') return 0;
     }
-  
-  if (fclose (tmpfil) != 0)
-    fubar = 1;
-  Lstream_close (istr);
-#ifdef FILE_CODING
-  Lstream_close (costr);
-#endif
-  Lstream_close (ostr);
-
-  UNGCPRO;
-  Lstream_delete (istr);
-  Lstream_delete (ostr);
-#ifdef FILE_CODING
-  Lstream_delete (costr);
-#endif
-
-  if (fubar)
-    report_file_error ("Writing temp file",
-                      list1 (build_string (filename_out)));
 }
 
 struct color_symbol
@@ -1271,12 +1198,12 @@ gtk_xpm_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
   GdkWindow *window = 0;
   int nsymbols = 0, i = 0;
   struct color_symbol *color_symbols = NULL;
-  GdkColor *transparent_color = NULL;
   Lisp_Object color_symbol_alist = find_keyword_in_vector (instantiator,
                                                           Q_color_symbols);
   enum image_instance_type type;
   int force_mono;
   unsigned int w, h;
+  const unsigned char * volatile dstring;
 
   if (!DEVICE_GTK_P (XDEVICE (device)))
     signal_simple_error ("Not a Gtk device", device);
@@ -1302,20 +1229,58 @@ gtk_xpm_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
 
   assert (!NILP (data));
 
-  /* Need to get the transparent color here */
-  color_symbols = extract_xpm_color_names (device, domain, color_symbol_alist, &nsymbols);
-  for (i = 0; i < nsymbols; i++)
-    {
-      if (!strcasecmp ("BgColor", color_symbols[i].name) ||
-         !strcasecmp ("None", color_symbols[i].name))
-       {
-         transparent_color = &color_symbols[i].color;
-       }
-    }
+  /* Extract all the entries from xpm-color-symbols */
+  color_symbols = extract_xpm_color_names (device, domain, color_symbol_alist,
+                                          &nsymbols);
+
+  assert (!NILP (data));
 
-  write_lisp_string_to_temp_file (data, temp_file_name);
-  pixmap = gdk_pixmap_create_from_xpm (window, &mask, transparent_color, temp_file_name);
-  unlink (temp_file_name);
+
+  LISP_STRING_TO_EXTERNAL(data, dstring, Qbinary);
+
+  /*
+   * GTK only uses the 'c' color entry of an XPM and doesn't use the symbolic
+   * color names at all.  This is unfortunate because the way to change the
+   * colors from lisp is by adding the symbolic names, and the new colors, to
+   * the variable xpm-color-symbols.
+   *
+   * To get around this decode the XPM, add a 'c' entry of the desired color
+   * for each matching symbolic color, recode the XPM and pass it to GTK.  The
+   * decode and recode stages aren't too bad because this also performs the
+   * external to internal format translation, which avoids contortions like
+   * writing the XPM back to disk in order to get it processed.
+   */
+
+  {
+    XpmImage image;
+    XpmInfo info;
+    char** data;
+
+    XpmCreateXpmImageFromBuffer ((char*) dstring, &image, &info);
+
+    for (i = 0; i < nsymbols; i++)
+      {
+       unsigned j;
+
+       for (j = 0; j < image.ncolors; j++)
+         {
+           if (image.colorTable[j].symbolic != NULL &&
+               !ascii_strcasecmp(color_symbols[i].name, image.colorTable[j].symbolic))
+             {
+               image.colorTable[j].c_color = xmalloc(16);
+
+               sprintf(image.colorTable[j].c_color, "#%.4x%.4x%.4x",
+                       color_symbols[i].color.red, color_symbols[i].color.green,
+                       color_symbols[i].color.blue);
+             }
+         }
+      }
+
+    XpmCreateDataFromXpmImage (&data, &image, &info);
+
+    pixmap = gdk_pixmap_create_from_xpm_d (window, &mask, NULL,
+                                          data);
+  }
 
   if (color_symbols) xfree (color_symbols);
 
@@ -1327,7 +1292,7 @@ gtk_xpm_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
   gdk_window_get_geometry (pixmap, NULL, NULL, &w, &h, &depth);
 
   IMAGE_INSTANCE_GTK_PIXMAP (ii) = pixmap;
-  IMAGE_INSTANCE_GTK_MASK (ii) = mask;
+  IMAGE_INSTANCE_PIXMAP_MASK (ii) = (void*) mask;
   IMAGE_INSTANCE_GTK_COLORMAP (ii) = cmap;
   IMAGE_INSTANCE_GTK_PIXELS (ii) = 0;
   IMAGE_INSTANCE_GTK_NPIXELS (ii) = 0;
@@ -1382,7 +1347,7 @@ gtk_xpm_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
       break;
 
     default:
-      abort ();
+      ABORT ();
     }
 }
 #endif /* HAVE_XPM */
@@ -2033,7 +1998,7 @@ gtk_unmap_subwindow (Lisp_Image_Instance *p)
   if (IMAGE_INSTANCE_TYPE (p) == IMAGE_SUBWINDOW)
     {
       /* We don't support subwindows, but we do support widgets... */
-      abort ();
+      ABORT ();
     }
   else                         /* must be a widget */
     {
@@ -2056,13 +2021,14 @@ gtk_map_subwindow (Lisp_Image_Instance *p, int x, int y,
   if (IMAGE_INSTANCE_TYPE (p) == IMAGE_SUBWINDOW)
     {
       /* No subwindow support... */
-      abort ();
+      ABORT ();
     }
   else                         /* must be a widget */
     {
       struct frame *f = XFRAME (IMAGE_INSTANCE_FRAME (p));
       GtkWidget *wid = IMAGE_INSTANCE_GTK_CLIPWIDGET (p);
       GtkAllocation a;
+      int moving;
 
       if (!wid) return;
 
@@ -2071,38 +2037,58 @@ gtk_map_subwindow (Lisp_Image_Instance *p, int x, int y,
       a.width = dga->width;
       a.height = dga->height;
 
+      /* Is the widget cganging position? */
+      moving = (a.x != wid->allocation.x) ||
+       (a.y != wid->allocation.y);
+
       if ((a.width  != wid->allocation.width)  ||
-         (a.height != wid->allocation.height))
+         (a.height != wid->allocation.height) ||
+         moving)
        {
          gtk_widget_size_allocate (IMAGE_INSTANCE_GTK_CLIPWIDGET (p), &a);
        }
 
-      /* #### FIXME DAMMIT */
-      if ((wid->allocation.x != -dga->xoffset) ||
-         (wid->allocation.y != -dga->yoffset))
+      if (moving)
        {
          guint32 old_flags = GTK_WIDGET_FLAGS (FRAME_GTK_TEXT_WIDGET (f));
 
-         /* Fucking GtkFixed widget queues a resize when you add a widget.
+         /* GtkFixed widget queues a resize when you add a widget.
          ** But only if it is visible.
          ** losers.
          */
          GTK_WIDGET_FLAGS(FRAME_GTK_TEXT_WIDGET (f)) &= ~GTK_VISIBLE;
+
          if (IMAGE_INSTANCE_GTK_ALREADY_PUT(p))
            {
              gtk_fixed_move (GTK_FIXED (FRAME_GTK_TEXT_WIDGET (f)),
                              wid,
-                             -dga->xoffset, -dga->yoffset);
+                             a.x, a.y);
            }
          else
            {
              IMAGE_INSTANCE_GTK_ALREADY_PUT(p) = TRUE;
              gtk_fixed_put (GTK_FIXED (FRAME_GTK_TEXT_WIDGET (f)),
                             wid,
-                            -dga->xoffset, -dga->yoffset);
+                            a.x, a.y);
            }
+
          GTK_WIDGET_FLAGS(FRAME_GTK_TEXT_WIDGET (f)) = old_flags;
        }
+      else
+       {
+         if (IMAGE_INSTANCE_GTK_ALREADY_PUT(p))
+           {
+             /* Do nothing... */
+           }
+         else
+           {
+             /* Must make sure we have put the image at least once! */
+             IMAGE_INSTANCE_GTK_ALREADY_PUT(p) = TRUE;
+             gtk_fixed_put (GTK_FIXED (FRAME_GTK_TEXT_WIDGET (f)),
+                            wid,
+                            a.x, a.y);
+           }
+       }
 
       if (!IMAGE_INSTANCE_SUBWINDOW_DISPLAYEDP (p))
        {
@@ -2193,11 +2179,19 @@ gtk_redisplay_widget (Lisp_Image_Instance *p)
       ||
       IMAGE_INSTANCE_TEXT_CHANGED (p))
     {
+      GtkRequisition r;
+      GtkAllocation a = IMAGE_INSTANCE_GTK_CLIPWIDGET (p)->allocation;
+
       assert (IMAGE_INSTANCE_GTK_WIDGET_ID (p) &&
              IMAGE_INSTANCE_GTK_CLIPWIDGET (p)) ;
 
-      /* #### Resize the widget! */
-      /* gtk_widget_size_allocate () */
+      a.width = r.width = IMAGE_INSTANCE_WIDTH (p);
+      a.height = r.height = IMAGE_INSTANCE_HEIGHT (p);
+
+      /* Force the widget's preferred and actual size to what we say it shall
+        be. */
+      gtk_widget_size_request (IMAGE_INSTANCE_GTK_CLIPWIDGET (p), &r);
+      gtk_widget_size_allocate (IMAGE_INSTANCE_GTK_CLIPWIDGET (p), &a);
     }
 
   /* Adjust offsets within the frame. */
@@ -2356,6 +2350,10 @@ gtk_widget_instantiate_1 (Lisp_Object image_instance, Lisp_Object instantiator,
   */
   IMAGE_INSTANCE_GTK_CLIPWIDGET (ii) = w;
 
+  /* The current theme may produce a widget of a different size that what we
+     expect so force reconsideration of the widget's size. */
+  IMAGE_INSTANCE_LAYOUT_CHANGED (ii) = 1;
+
   return (Qt);
 }
 
@@ -2404,8 +2402,44 @@ FAKE_GTK_WIDGET_INSTANTIATOR(button);
 FAKE_GTK_WIDGET_INSTANTIATOR(progress_gauge);
 FAKE_GTK_WIDGET_INSTANTIATOR(edit_field);
 FAKE_GTK_WIDGET_INSTANTIATOR(combo_box);
-FAKE_GTK_WIDGET_INSTANTIATOR(tab_control);
 FAKE_GTK_WIDGET_INSTANTIATOR(label);
+/* Note: tab_control has a custom instantiator (see below) */
+
+/*
+  Ask the widget to return it's preferred size.  This device method must
+  defined for all widgets that also have format specific version of
+  query_geometry defined in glyphs-widget.c.  This is because those format
+  specific versions return sizes that are appropriate for the X widgets.  For
+  GTK, the size of a widget can change at runtime due to the user changing
+  their theme.
+
+  This method can be called before the widget is instantiated.  This is
+  because instantiate_image_instantiator() is tying to be helpful to other
+  toolkits and supply sane geometry values to them.  This is not appropriate
+  for GTK and can be ignored.
+
+  This method can be used by all widgets.
+*/
+static void
+gtk_widget_query_geometry (Lisp_Object image_instance,
+                          int* width, int* height,
+                          enum image_instance_geometry disp, Lisp_Object domain)
+{
+  Lisp_Image_Instance *p = XIMAGE_INSTANCE (image_instance);
+
+  if (p->data != NULL)
+    {
+      GtkWidget *w = IMAGE_INSTANCE_GTK_CLIPWIDGET (p);
+      GtkRequisition r;
+
+      gtk_widget_size_request(w, &r);
+      *height= r.height;
+      *width = r.width;
+    }
+}
+
+\f
+/* Button functions. */
 
 /* Update a button's clicked state. */
 static void
@@ -2427,7 +2461,7 @@ gtk_button_redisplay (Lisp_Object image_instance)
   else
     {
       /* Unknown button type... */
-      abort();
+      ABORT();
     }
 }
 
@@ -2448,6 +2482,9 @@ gtk_button_property (Lisp_Object image_instance, Lisp_Object prop)
   return Qunbound;
 }
 
+\f
+/* Progress gauge functions. */
+
 /* set the properties of a progress gauge */
 static void
 gtk_progress_gauge_redisplay (Lisp_Object image_instance)
@@ -2467,6 +2504,198 @@ gtk_progress_gauge_redisplay (Lisp_Object image_instance)
     }
 }
 
+\f
+/* Tab Control functions. */
+
+/*
+  Register a widget's callbacks with the frame's hashtable.  The hashtable is
+  weak so deregistration is handled automatically.  Tab controls have per-tab
+  callback list functions and the GTK callback architecture is not
+  sufficiently flexible to deal with this.  Instead, the functions are
+  registered here and the id is passed through the callback loop.
+ */
+static int
+gtk_register_gui_item (Lisp_Object image_instance, Lisp_Object gui,
+                      Lisp_Object domain)
+{
+  struct frame *f = XFRAME(DOMAIN_FRAME(domain));
+  int id = gui_item_id_hash(FRAME_GTK_WIDGET_CALLBACK_HASH_TABLE(f),
+                           gui, WIDGET_GLYPH_SLOT);
+
+  Fputhash(make_int(id), image_instance,
+          FRAME_GTK_WIDGET_INSTANCE_HASH_TABLE (f));
+  Fputhash(make_int(id), XGUI_ITEM (gui)->callback,
+          FRAME_GTK_WIDGET_CALLBACK_HASH_TABLE (f));
+  Fputhash(make_int(id), XGUI_ITEM (gui)->callback_ex,
+          FRAME_GTK_WIDGET_CALLBACK_EX_HASH_TABLE (f));
+  return id;
+}
+
+/*
+  Append the given item as a tab to the notebook. Callbacks, etc are all
+  setup.
+ */
+static void
+gtk_add_tab_item(Lisp_Object image_instance,
+                GtkNotebook* nb, Lisp_Object item,
+                Lisp_Object domain, int i)
+{
+  Lisp_Object name;
+  int hash_id = 0;
+  char *c_name = NULL;
+  GtkWidget* box;
+
+  if (GUI_ITEMP (item))
+    {
+      Lisp_Gui_Item *pgui = XGUI_ITEM (item);
+
+      if (!STRINGP (pgui->name))
+       pgui->name = Feval (pgui->name);
+
+      CHECK_STRING (pgui->name);
+
+      hash_id = gtk_register_gui_item (image_instance, item, domain);
+      name = pgui->name;
+    }
+  else
+    {
+      CHECK_STRING (item);
+      name = item;
+    }
+
+  TO_EXTERNAL_FORMAT (LISP_STRING, name,
+                     C_STRING_ALLOCA, c_name,
+                     Qctext);
+
+  /* Dummy widget that the notbook wants to display when a tab is selected. */
+  box = gtk_vbox_new (FALSE, 3);
+
+  /*
+    Store the per-tab callback data id in the tab.  The callback functions
+    themselves could have been stored in the widget but this avoids having to
+    worry about the garbage collector running between here and the callback
+    function.
+  */
+  gtk_object_set_data(GTK_OBJECT(box), GTK_DATA_TAB_HASHCODE_IDENTIFIER,
+                     (gpointer) hash_id);
+
+  gtk_notebook_append_page (nb, box, gtk_label_new (c_name));
+}
+
+/* Signal handler for the switch-page signal. */
+static void gtk_tab_control_callback(GtkNotebook *notebook,
+                                    GtkNotebookPage *page,
+                                    gint page_num,
+                                    gpointer user_data)
+{
+  /*
+    This callback is called for every selection, not just user selection.
+    We're only interested in user selection, which occurs outside of
+    redisplay.
+  */
+
+  if (!in_display)
+    {
+      Lisp_Object image_instance, callback, callback_ex;
+      Lisp_Object frame, event;
+      int update_subwindows_p = 0;
+      struct frame *f = gtk_widget_to_frame(GTK_WIDGET(notebook));
+      int id;
+
+      if (!f)
+       return;
+      frame = wrap_frame (f);
+
+      id             = (int) gtk_object_get_data(GTK_OBJECT(page->child),
+                                                GTK_DATA_TAB_HASHCODE_IDENTIFIER);
+      image_instance = Fgethash(make_int(id),
+                               FRAME_GTK_WIDGET_INSTANCE_HASH_TABLE(f), Qnil);
+      callback       = Fgethash(make_int(id),
+                               FRAME_GTK_WIDGET_CALLBACK_HASH_TABLE(f), Qnil);
+      callback_ex    = Fgethash(make_int(id),
+                               FRAME_GTK_WIDGET_CALLBACK_EX_HASH_TABLE(f), Qnil);
+      update_subwindows_p = 1;
+
+      /* It is possible for a widget action to cause it to get out of
+        sync with its instantiator. Thus it is necessary to signal
+        this possibility. */
+      if (IMAGE_INSTANCEP (image_instance))
+       XIMAGE_INSTANCE_WIDGET_ACTION_OCCURRED (image_instance) = 1;
+      
+      if (!NILP (callback_ex) && !UNBOUNDP (callback_ex))
+       {
+         event = Fmake_event (Qnil, Qnil);
+
+         XEVENT (event)->event_type = misc_user_event;
+         XEVENT (event)->channel = frame;
+         XEVENT (event)->event.eval.function = Qeval;
+         XEVENT (event)->event.eval.object =
+           list4 (Qfuncall, callback_ex, image_instance, event);
+       }
+      else if (NILP (callback) || UNBOUNDP (callback))
+       event = Qnil;
+      else
+       {
+         Lisp_Object fn, arg;
+
+         event = Fmake_event (Qnil, Qnil);
+
+         get_gui_callback (callback, &fn, &arg);
+         XEVENT (event)->event_type = misc_user_event;
+         XEVENT (event)->channel = frame;
+         XEVENT (event)->event.eval.function = fn;
+         XEVENT (event)->event.eval.object = arg;
+       }
+
+      if (!NILP (event))
+       enqueue_gtk_dispatch_event (event);
+
+      /* The result of this evaluation could cause other instances to change so
+        enqueue an update callback to check this. */
+      if (update_subwindows_p && !NILP (event))
+       enqueue_magic_eval_event (update_widget_instances, frame);
+    }
+}
+
+/* Create a tab_control widget.  The special handling of the individual tabs
+   means that the normal instantiation code cannot be used. */
+static void
+gtk_tab_control_instantiate (Lisp_Object image_instance,
+                            Lisp_Object instantiator,
+                            Lisp_Object pointer_fg,
+                            Lisp_Object pointer_bg,
+                            int dest_mask, Lisp_Object domain)
+{
+  Lisp_Object rest;
+  Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+  int i = 0;
+  int selected = 0;
+  GtkNotebook *nb;
+
+  /* The normal instantiation is still needed. */
+  gtk_widget_instantiate (image_instance, instantiator, pointer_fg,
+                         pointer_bg, dest_mask, domain);
+
+  nb = GTK_NOTEBOOK (IMAGE_INSTANCE_GTK_CLIPWIDGET (ii));
+
+  /* Add items to the tab, find the current selection */
+  LIST_LOOP (rest, XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)))
+    {
+      gtk_add_tab_item (image_instance, nb, XCAR (rest), domain, i);
+
+      if (gui_item_selected_p (XCAR (rest)))
+       selected = i;
+
+      i++;
+    }
+
+  gtk_notebook_set_page(nb, selected);
+
+  /* Call per-tab lisp callback when a tab is pressed. */
+  gtk_signal_connect (GTK_OBJECT (nb), "switch-page",
+                     GTK_SIGNAL_FUNC (gtk_tab_control_callback), NULL);
+}
+
 /* Set the properties of a tab control */
 static void
 gtk_tab_control_redisplay (Lisp_Object image_instance)
@@ -2483,6 +2712,7 @@ gtk_tab_control_redisplay (Lisp_Object image_instance)
         one. */
       if (tab_control_order_only_changed (image_instance))
        {
+         int i = 0;
          Lisp_Object rest, selected =
            gui_item_list_find_selected
            (NILP (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii)) ?
@@ -2496,9 +2726,6 @@ gtk_tab_control_redisplay (Lisp_Object image_instance)
                  Lisp_Object old_selected =gui_item_list_find_selected
                    (XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)));
 
-                 /* Need to focus on the widget... */
-                 stderr_out ("Hey, change the tab-focus you boob...\n");
-
                  /* Pick up the new selected item. */
                  XGUI_ITEM (old_selected)->selected =
                    XGUI_ITEM (XCAR (rest))->selected;
@@ -2507,8 +2734,14 @@ gtk_tab_control_redisplay (Lisp_Object image_instance)
                  /* We're not actually changing the items anymore. */
                  IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii) = 0;
                  IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii) = Qnil;
+
+                 gtk_notebook_set_page(GTK_NOTEBOOK (IMAGE_INSTANCE_GTK_CLIPWIDGET (ii)),
+                                       i);
+
                  break;
                }
+
+             i++;
            }
        }
       else
@@ -2517,33 +2750,23 @@ gtk_tab_control_redisplay (Lisp_Object image_instance)
          GtkNotebook *nb = GTK_NOTEBOOK (IMAGE_INSTANCE_GTK_CLIPWIDGET (ii));
          guint num_pages = g_list_length (nb->children);
          Lisp_Object rest;
+         int i;
 
+         /* Why is there no API to remove everything from a notebook? */
          if (num_pages >= 0)
            {
-             int i;
              for (i = num_pages; i >= 0; --i)
                {
                  gtk_notebook_remove_page (nb, i);
                }
            }
 
-         LIST_LOOP (rest, XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)))
-           {
-             Lisp_Gui_Item *pgui = XGUI_ITEM (XCAR (rest));
-             char *c_name = NULL;
+         i = 0;
 
-             if (!STRINGP (pgui->name))
-               pgui->name = Feval (pgui->name);
-
-             CHECK_STRING (pgui->name);
-
-             TO_EXTERNAL_FORMAT (LISP_STRING, pgui->name,
-                                 C_STRING_ALLOCA, c_name,
-                                 Qctext);
-
-             gtk_notebook_append_page (nb,
-                                       gtk_vbox_new (FALSE, 3),
-                                       gtk_label_new (c_name));
+         LIST_LOOP (rest, XCDR (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii)))
+           {
+             gtk_add_tab_item(image_instance, nb, XCAR(rest),
+                              IMAGE_INSTANCE_FRAME(ii), i);
            }
 
          /* Show all the new widgets we just added... */
@@ -2640,14 +2863,17 @@ image_instantiator_format_create_glyphs_gtk (void)
   IIFORMAT_HAS_DEVMETHOD (gtk, button, property);
   IIFORMAT_HAS_DEVMETHOD (gtk, button, instantiate);
   IIFORMAT_HAS_DEVMETHOD (gtk, button, redisplay);
+  IIFORMAT_HAS_SHARED_DEVMETHOD (gtk, button, query_geometry, widget);
   /* general widget methods. */
   INITIALIZE_DEVICE_IIFORMAT (gtk, widget);
   IIFORMAT_HAS_DEVMETHOD (gtk, widget, property);
+  IIFORMAT_HAS_DEVMETHOD (gtk, widget, query_geometry);
 
   /* progress gauge */
   INITIALIZE_DEVICE_IIFORMAT (gtk, progress_gauge);
   IIFORMAT_HAS_DEVMETHOD (gtk, progress_gauge, redisplay);
   IIFORMAT_HAS_DEVMETHOD (gtk, progress_gauge, instantiate);
+  IIFORMAT_HAS_SHARED_DEVMETHOD (gtk, progress_gauge, query_geometry, widget);
   /* text field */
   INITIALIZE_DEVICE_IIFORMAT (gtk, edit_field);
   IIFORMAT_HAS_DEVMETHOD (gtk, edit_field, instantiate);
@@ -2658,6 +2884,7 @@ image_instantiator_format_create_glyphs_gtk (void)
   INITIALIZE_DEVICE_IIFORMAT (gtk, tab_control);
   IIFORMAT_HAS_DEVMETHOD (gtk, tab_control, instantiate);
   IIFORMAT_HAS_DEVMETHOD (gtk, tab_control, redisplay);
+  IIFORMAT_HAS_SHARED_DEVMETHOD (gtk, tab_control, query_geometry, widget);
   /* label */
   INITIALIZE_DEVICE_IIFORMAT (gtk, label);
   IIFORMAT_HAS_DEVMETHOD (gtk, label, instantiate);
index 0a99770..e306772 100644 (file)
@@ -40,7 +40,6 @@ Boston, MA 02111-1307, USA.  */
 struct gtk_image_instance_data
 {
   GdkPixmap **pixmaps;
-  GdkPixmap *mask;
   GdkCursor *cursor;
 
   /* If depth>0, then that means that other colors were allocated when
@@ -87,7 +86,7 @@ void init_image_instance_from_gdk_pixmap (struct Lisp_Image_Instance *ii,
      (GTK_IMAGE_INSTANCE_DATA (i)->pixmaps[slice])
 #define IMAGE_INSTANCE_GTK_PIXMAP_SLICES(i) \
      (GTK_IMAGE_INSTANCE_DATA (i)->pixmaps)
-#define IMAGE_INSTANCE_GTK_MASK(i) (GTK_IMAGE_INSTANCE_DATA (i)->mask)
+#define IMAGE_INSTANCE_GTK_MASK(i) (GdkPixmap*)(IMAGE_INSTANCE_PIXMAP_MASK (i))
 #define IMAGE_INSTANCE_GTK_CURSOR(i) (GTK_IMAGE_INSTANCE_DATA (i)->cursor)
 #define IMAGE_INSTANCE_GTK_COLORMAP(i) (GTK_IMAGE_INSTANCE_DATA (i)->colormap)
 #define IMAGE_INSTANCE_GTK_PIXELS(i) (GTK_IMAGE_INSTANCE_DATA (i)->pixels)
index a83f4b9..6f9d031 100644 (file)
@@ -318,13 +318,13 @@ specifiers will not be affected.
        signal_simple_error ("Invalid mapping form", mapping);
       else
        {
-         Lisp_Object exp = XCAR (mapping);
+         Lisp_Object mapexp = XCAR (mapping);
          Lisp_Object typevec = XCAR (XCDR (mapping));
          Lisp_Object pos = Qnil;
          Lisp_Object newvec;
          struct gcpro gcpro1;
 
-         CHECK_STRING (exp);
+         CHECK_STRING (mapexp);
          CHECK_VECTOR (typevec);
          if (!NILP (XCDR (XCDR (mapping))))
            {
@@ -338,7 +338,7 @@ specifiers will not be affected.
 
          newvec = Fcopy_sequence (typevec);
          if (INTP (pos))
-           XVECTOR_DATA (newvec)[XINT (pos)] = exp;
+           XVECTOR_DATA (newvec)[XINT (pos)] = mapexp;
          GCPRO1 (newvec);
          image_validate (newvec);
          UNGCPRO;
@@ -374,7 +374,7 @@ process_image_string_instantiator (Lisp_Object data,
   LIST_LOOP (tail, *get_image_conversion_list (console_type))
     {
       Lisp_Object mapping = XCAR (tail);
-      Lisp_Object exp = XCAR (mapping);
+      Lisp_Object mapexp = XCAR (mapping);
       Lisp_Object typevec = XCAR (XCDR (mapping));
 
       /* if the result is of a type that can't be instantiated
@@ -385,7 +385,7 @@ process_image_string_instantiator (Lisp_Object data,
                           (INSTANTIATOR_TYPE (typevec), ERROR_ME),
                           possible_dest_types, ())))
        continue;
-      if (fast_string_match (exp, 0, data, 0, -1, 0, ERROR_ME, 0) >= 0)
+      if (fast_string_match (mapexp, 0, data, 0, -1, 0, ERROR_ME, 0) >= 0)
        {
          if (!NILP (XCDR (XCDR (mapping))))
            {
@@ -711,7 +711,7 @@ get_image_instantiator_governing_domain (Lisp_Object instantiator,
   else if (governing_domain == GOVERNING_DOMAIN_DEVICE)
     domain = DOMAIN_DEVICE (domain);
   else
-    abort ();
+    ABORT ();
 
   return domain;
 }
@@ -1032,7 +1032,7 @@ print_image_instance (Lisp_Object obj, Lisp_Object printcharfun,
       break;
 
     default:
-      abort ();
+      ABORT ();
     }
 
   MAYBE_DEVMETH (DOMAIN_XDEVICE (ii->domain), print_image_instance,
@@ -1155,7 +1155,7 @@ image_instance_equal (Lisp_Object obj1, Lisp_Object obj2, int depth)
       break;
 
     default:
-      abort ();
+      ABORT ();
     }
 
   return DEVMETH_OR_GIVEN (DOMAIN_XDEVICE (i1->domain),
@@ -1234,7 +1234,7 @@ image_instance_hash (Lisp_Object obj, int depth)
       break;
 
     default:
-      abort ();
+      ABORT ();
     }
 
   return HASH2 (hash, DEVMETH_OR_GIVEN
@@ -1322,7 +1322,7 @@ encode_image_instance_type (enum image_instance_type type)
     case IMAGE_SUBWINDOW:    return Qsubwindow;
     case IMAGE_WIDGET:    return Qwidget;
     default:
-      abort ();
+      ABORT ();
     }
 
   return Qnil; /* not reached */
@@ -1460,7 +1460,7 @@ make_image_instance_1 (Lisp_Object data, Lisp_Object domain,
     signal_simple_error ("Image instances not allowed here", data);
   image_validate (data);
   domain = decode_domain (domain);
-  /* instantiate_image_instantiator() will abort if given an
+  /* instantiate_image_instantiator() will ABORT if given an
      image instance ... */
   dest_mask = decode_image_instance_type_list (dest_types);
   data = normalize_image_instantiator (data,
@@ -1989,9 +1989,6 @@ image_instance_layout (Lisp_Object image_instance,
   if (yoffset != IMAGE_UNCHANGED_GEOMETRY)
     XIMAGE_INSTANCE_YOFFSET (image_instance) = yoffset;
 
-  assert (XIMAGE_INSTANCE_YOFFSET (image_instance) >= 0
-         && XIMAGE_INSTANCE_XOFFSET (image_instance) >= 0);
-
   /* If geometry is unspecified then get some reasonable values for it. */
   if (width == IMAGE_UNSPECIFIED_GEOMETRY
       ||
@@ -2215,7 +2212,7 @@ inherit_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
                     int dest_mask, Lisp_Object domain)
 {
   /* handled specially in image_instantiate */
-  abort ();
+  ABORT ();
 }
 
 \f
@@ -3238,7 +3235,7 @@ image_instantiate (Lisp_Object specifier, Lisp_Object matchspec,
                      Qunbound);
        }
       else
-       abort ();       /* We're not allowed anything else currently. */
+       ABORT ();       /* We're not allowed anything else currently. */
 
       /* If we don't have an instance at this point then create
          one. */
@@ -3316,7 +3313,7 @@ image_instantiate (Lisp_Object specifier, Lisp_Object matchspec,
       RETURN_UNGCPRO (instance);
     }
 
-  abort ();
+  ABORT ();
   return Qnil; /* not reached */
 }
 
@@ -3713,7 +3710,7 @@ allocate_glyph (enum glyph_type type,
        | IMAGE_COLOR_PIXMAP_MASK;
       break;
     default:
-      abort ();
+      ABORT ();
     }
 
   /* I think Fmake_specifier can GC.  I think set_specifier_fallback can GC. */
@@ -3838,7 +3835,7 @@ The return value will be one of 'buffer, 'pointer, or 'icon.
   CHECK_GLYPH (glyph);
   switch (XGLYPH_TYPE (glyph))
     {
-    default: abort ();
+    default: ABORT ();
     case GLYPH_BUFFER:  return Qbuffer;
     case GLYPH_POINTER: return Qpointer;
     case GLYPH_ICON:    return Qicon;
@@ -4526,7 +4523,7 @@ redisplay_subwindow (Lisp_Object subwindow)
   /* The update method is allowed to call eval.  Since it is quite
      common for this function to get called from somewhere in
      redisplay we need to make sure that quits are ignored.  Otherwise
-     Fsignal will abort. */
+     Fsignal will ABORT. */
   specbind (Qinhibit_quit, Qt);
 
   ERROR_CHECK_IMAGE_INSTANCE (subwindow);
@@ -4889,7 +4886,7 @@ display_table_entry (Emchar ch, Lisp_Object face_table,
            continue;
        }
       else
-       abort ();
+       ABORT ();
     }
 }
 
index 66cc549..95285f8 100644 (file)
@@ -91,7 +91,7 @@ xemacs_list_to_gtklist (Lisp_Object obj, GtkArg *arg)
     }
   else
     {
-      abort();
+      ABORT();
     }
 }
 
@@ -128,7 +128,7 @@ xemacs_gtklist_to_list (GtkArg *arg)
        }
       else
        {
-         abort();
+         ABORT();
        }
     }
   return (rval);
@@ -179,7 +179,7 @@ xemacs_list_to_array (Lisp_Object obj, GtkArg *arg)
     }
   else
     {
-      abort();
+      ABORT();
     }
 #undef FROB
 }
index 15d15c0..e5c3c42 100644 (file)
@@ -248,14 +248,58 @@ gtk_xemacs_size_request (GtkWidget *widget, GtkRequisition *requisition)
       }
 }
 
+/* Assign a size and position to the child widgets.  This differs from the
+   super class method in that for all widgets except the scrollbars the size
+   and position are not caclulated here.  This is because these widgets have
+   this function performed for them by the redisplay code (see
+   gtk_map_subwindow()). If the superclass method is called then the widgets
+   can change size and position as the two pieces of code move the widgets at
+   random.
+*/
 static void
 gtk_xemacs_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
 {
     GtkXEmacs *x = GTK_XEMACS (widget);
+    GtkFixed *fixed = GTK_FIXED (widget);
     struct frame *f = GTK_XEMACS_FRAME (x);
     int columns, rows;
-
-    parent_class->size_allocate(widget, allocation);
+    GList *children;
+    guint16 border_width;
+
+    widget->allocation = *allocation;
+    if (GTK_WIDGET_REALIZED (widget))
+      gdk_window_move_resize (widget->window,
+                             allocation->x, 
+                             allocation->y,
+                             allocation->width, 
+                             allocation->height);
+
+    border_width = GTK_CONTAINER (fixed)->border_width;
+  
+    children = fixed->children;
+    while (children)
+      {
+       GtkFixedChild* child = children->data;
+       children = children->next;
+      
+       /*
+         Scrollbars are the only widget that is managed by GTK.  See
+         comments in gtk_create_scrollbar_instance().
+       */
+       if (GTK_WIDGET_VISIBLE (child->widget) &&
+           gtk_type_is_a(GTK_OBJECT_TYPE(child->widget), GTK_TYPE_SCROLLBAR))
+         {
+           GtkAllocation child_allocation;
+           GtkRequisition child_requisition;
+
+           gtk_widget_get_child_requisition (child->widget, &child_requisition);
+           child_allocation.x = child->x + border_width;
+           child_allocation.y = child->y + border_width;
+           child_allocation.width = child_requisition.width;
+           child_allocation.height = child_requisition.height;
+           gtk_widget_size_allocate (child->widget, &child_allocation);
+         }
+      }
 
     if (f)
       {
@@ -275,7 +319,9 @@ gtk_xemacs_paint (GtkWidget *widget, GdkRectangle *area)
 {
     GtkXEmacs *x = GTK_XEMACS (widget);
     struct frame *f = GTK_XEMACS_FRAME (x);
-    gtk_redraw_exposed_area (f, area->x, area->y, area->width, area->height);
+
+    if (GTK_WIDGET_DRAWABLE (widget))
+      gtk_redraw_exposed_area (f, area->x, area->y, area->width, area->height);
 }
 
 static void
@@ -291,30 +337,33 @@ gtk_xemacs_draw (GtkWidget *widget, GdkRectangle *area)
        gtk_fixed_paint() directly, which clears the background window,
        which causes A LOT of flashing. */
 
-    gtk_xemacs_paint (widget, area);
+    if (GTK_WIDGET_DRAWABLE (widget))
+      {
+       gtk_xemacs_paint (widget, area);
 
-    children = fixed->children;
+       children = fixed->children;
 
-    while (children)
-      {
-       child = children->data;
-       children = children->next;
-       /* #### This is what causes the scrollbar flickering!
-          Evidently the scrollbars pretty much take care of drawing
-          themselves in most cases.  Then we come along and tell them
-          to redraw again!
-
-          But if we just leave it out, then they do not get drawn
-          correctly the first time!
-
-          Scrollbar flickering has been greatly helped by the
-          optimizations in scrollbar-gtk.c /
-          gtk_update_scrollbar_instance_status (), so this is not that
-          big a deal anymore.
-       */
-       if (gtk_widget_intersect (child->widget, area, &child_area))
+       while (children)
          {
-           gtk_widget_draw (child->widget, &child_area);
+           child = children->data;
+           children = children->next;
+           /* #### This is what causes the scrollbar flickering!
+              Evidently the scrollbars pretty much take care of drawing
+              themselves in most cases.  Then we come along and tell them
+              to redraw again!
+              
+              But if we just leave it out, then they do not get drawn
+              correctly the first time!
+
+              Scrollbar flickering has been greatly helped by the
+              optimizations in scrollbar-gtk.c /
+              gtk_update_scrollbar_instance_status (), so this is not that
+              big a deal anymore.
+           */
+           if (gtk_widget_intersect (child->widget, area, &child_area))
+             {
+               gtk_widget_draw (child->widget, &child_area);
+             }
          }
       }
 }
@@ -326,14 +375,19 @@ gtk_xemacs_expose (GtkWidget *widget, GdkEventExpose *event)
     struct frame *f = GTK_XEMACS_FRAME (x);
     GdkRectangle *a = &event->area;
 
-    /* This takes care of drawing the scrollbars, etc */
-    parent_class->expose_event (widget, event);
+  if (GTK_WIDGET_DRAWABLE (widget))
+    {
+      /* This takes care of drawing the scrollbars, etc */
+      parent_class->expose_event (widget, event);
+
+      /* Now draw the actual frame data */
+      if (!check_for_ignored_expose (f, a->x, a->y, a->width, a->height) &&
+         !find_matching_subwindow (f, a->x, a->y, a->width, a->height))
+       gtk_redraw_exposed_area (f, a->x, a->y, a->width, a->height);
+      return (TRUE);
+    }
 
-    /* Now draw the actual frame data */
-    if (!check_for_ignored_expose (f, a->x, a->y, a->width, a->height) &&
-       !find_matching_subwindow (f, a->x, a->y, a->width, a->height))
-      gtk_redraw_exposed_area (f, a->x, a->y, a->width, a->height);
-    return (TRUE);
+  return FALSE;
 }
 
 Lisp_Object
index 55dc0f8..fe6301a 100644 (file)
@@ -70,7 +70,7 @@ update_gutter_geometry (struct frame *f, enum gutter_pos pos);
        (frame)->right_gutter_was_visible = flag;       \
        break;                                          \
       default:                                         \
-       abort ();                                       \
+       ABORT ();                                       \
       }                                                        \
   } while (0)
 
@@ -87,7 +87,7 @@ static int gutter_was_visible (struct frame* frame, enum gutter_pos pos)
     case RIGHT_GUTTER:
       return frame->right_gutter_was_visible;
     default:
-      abort ();
+      ABORT ();
        return 0;       /* To keep the compiler happy */
     }
 }
@@ -214,7 +214,7 @@ get_gutter_coords (struct frame *f, enum gutter_pos pos, int *x, int *y,
       break;
 
     default:
-      abort ();
+      ABORT ();
     }
 }
 
index d17322b..a459c8a 100644 (file)
@@ -495,7 +495,7 @@ bufpos_to_bytind_func (struct buffer *buf, Bufpos x)
     }
 #ifdef ERROR_CHECK_BUFPOS
   else if (x >= bufmin)
-    abort ();
+    ABORT ();
 #endif
   else
     {
@@ -783,7 +783,7 @@ bytind_to_bufpos_func (struct buffer *buf, Bytind x)
     }
 #ifdef ERROR_CHECK_BUFPOS
   else if (x >= bytmin)
-    abort ();
+    ABORT ();
 #endif
   else
     {
@@ -1825,7 +1825,7 @@ static void
 move_gap (struct buffer *buf, Bytind pos)
 {
   if (! BUF_BEG_ADDR (buf))
-    abort ();
+    ABORT ();
   if (pos < BI_BUF_GPT (buf))
     gap_left (buf, pos);
   else if (pos > BI_BUF_GPT (buf))
index fe098df..44a67b2 100644 (file)
@@ -243,15 +243,16 @@ template<typename T> struct alignment_trick { char c; T member; };
    time the assert checks take is measurable so let's not include them
    in production binaries. */
 
-#ifdef USE_ASSERTIONS
 /* Highly dubious kludge */
 /*   (thanks, Jamie, I feel better now -- ben) */
+# define ABORT() (assert_failed (__FILE__, __LINE__, "ABORT()"))
 void assert_failed (const char *, int, const char *);
-# define abort() (assert_failed (__FILE__, __LINE__, "abort()"))
+
+#ifdef USE_ASSERTIONS
 # define assert(x) ((x) ? (void) 0 : assert_failed (__FILE__, __LINE__, #x))
 #else
 # ifdef DEBUG_XEMACS
-#  define assert(x) ((x) ? (void) 0 : (void) abort ())
+#  define assert(x) ((x) ? (void) 0 : (void) ABORT ())
 # else
 #  define assert(x)
 # endif
@@ -879,7 +880,7 @@ do {                                                                        \
 
 /* For a list that's known to be in valid list format, where we may
    be deleting the current element out of the list --
-   will abort() if the list is not in valid format */
+   will ABORT() if the list is not in valid format */
 #define LIST_LOOP_DELETING(consvar, nextconsvar, list)         \
   for (consvar = list;                                         \
        !NILP (consvar) ? (nextconsvar = XCDR (consvar), 1) :0; \
@@ -1410,7 +1411,7 @@ DECLARE_LRECORD (marker, Lisp_Marker);
 #define CONCHECK_MARKER(x) CONCHECK_RECORD (x, marker)
 
 /* The second check was looking for GCed markers still in use */
-/* if (INTP (XMARKER (x)->lheader.next.v)) abort (); */
+/* if (INTP (XMARKER (x)->lheader.next.v)) ABORT (); */
 
 #define marker_next(m) ((m)->next)
 #define marker_prev(m) ((m)->prev)
index 0d6b06c..d62b0d8 100644 (file)
@@ -1960,7 +1960,7 @@ read_atom (Lisp_Object readcharfun,
                else if (sizeof (long) == sizeof (EMACS_INT))
                  number = atol (read_buffer);
                else
-                 abort ();
+                 ABORT ();
                return make_int (number);
              }
 #else
index 4af6659..387e150 100644 (file)
@@ -1,4 +1,4 @@
-/* Implements an elisp-programmable menubar -- X interface.
+/* Implements an elisp-programmable menubar -- Gtk interface.
    Copyright (C) 1993, 1994 Free Software Foundation, Inc.
    Copyright (C) 1995 Tinker Systems and INS Engineering Corp.
 
@@ -46,7 +46,7 @@ Boston, MA 02111-1307, USA.  */
 #define SUBMENU_TYPE   1
 #define POPUP_TYPE     2
 
-static GtkWidget *menu_descriptor_to_widget_1 (Lisp_Object descr);
+static GtkWidget *menu_descriptor_to_widget_1 (Lisp_Object descr, GtkAccelGroup* accel_group);
 
 #define FRAME_MENUBAR_DATA(frame) ((frame)->menubar_data)
 #define XFRAME_MENUBAR_DATA_LASTBUFF(frame) (XCAR ((frame)->menubar_data))
@@ -110,14 +110,14 @@ gtk_xemacs_menubar_get_type (void)
   return xemacs_menubar_type;
 }
 
-static GtkWidgetClass *parent_class;
+static GtkWidgetClass *menubar_parent_class;
 
 static void gtk_xemacs_menubar_class_init      (GtkXEmacsMenubarClass *klass)
 {
   GtkWidgetClass *widget_class;
 
   widget_class = (GtkWidgetClass*) klass;
-  parent_class = (GtkWidgetClass *) gtk_type_class (gtk_menu_bar_get_type ());
+  menubar_parent_class = (GtkWidgetClass *) gtk_type_class (gtk_menu_bar_get_type ());
 
   widget_class->size_request = gtk_xemacs_menubar_size_request;
 }
@@ -131,7 +131,7 @@ static void gtk_xemacs_menubar_size_request (GtkWidget *widget, GtkRequisition *
   GtkXEmacsMenubar *x = GTK_XEMACS_MENUBAR (widget);
   GtkRequisition frame_size;
 
-  parent_class->size_request (widget, requisition);
+  menubar_parent_class->size_request (widget, requisition);
 
   /* #### BILL!
   ** We should really only do this if the menu has not been detached!
@@ -154,6 +154,117 @@ gtk_xemacs_menubar_new (struct frame *f)
   return (GTK_WIDGET (menubar));
 }
 \f
+/*
+ * Label with XEmacs accelerator character support.
+ *
+ * The default interfaces to GtkAccelLabel does not understand XEmacs
+ * keystroke printing conventions, nor is it convenient in the places where is
+ * it needed.  This subclass provides an alternative interface more suited to
+ * XEmacs needs but does not add new functionality.
+ */
+#define GTK_TYPE_XEMACS_ACCEL_LABEL           (gtk_xemacs_accel_label_get_type ())
+#define GTK_XEMACS_ACCEL_LABEL(obj)           (GTK_CHECK_CAST ((obj), GTK_TYPE_ACCEL_LABEL, GtkXEmacsAccelLabel))
+#define GTK_XEMACS_ACCEL_LABEL_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_ACCEL_LABEL, GtkXEmacsAccelLabelClass))
+#define GTK_IS_XEMACS_ACCEL_LABEL(obj)        (GTK_CHECK_TYPE ((obj), GTK_TYPE_XEMACS_ACCEL_LABEL))
+#define GTK_IS_XEMACS_ACCEL_LABEL_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_XEMACS_ACCEL_LABEL))
+
+typedef struct _GtkXEmacsAccelLabel        GtkXEmacsAccelLabel;
+typedef struct _GtkXEmacsAccelLabelClass  GtkXEmacsAccelLabelClass;
+
+/* Instance structure. No additional fields required. */
+struct _GtkXEmacsAccelLabel
+{
+  GtkAccelLabel label;
+};
+
+/* Class structure. No additional fields required. */
+struct _GtkXEmacsAccelLabelClass
+{
+  GtkAccelLabelClass    parent_class;
+};
+
+static GtkType   gtk_xemacs_accel_label_get_type(void);
+static GtkWidget* gtk_xemacs_accel_label_new(const gchar *string);
+static void       gtk_xemacs_set_accel_keys(GtkXEmacsAccelLabel* l,
+                                      Lisp_Object keys);
+static void       gtk_xemacs_accel_label_class_init(GtkXEmacsAccelLabelClass *klass);
+static void       gtk_xemacs_accel_label_init(GtkXEmacsAccelLabel *xemacs);
+
+static GtkType
+gtk_xemacs_accel_label_get_type(void)
+{
+  static GtkType xemacs_accel_label_type = 0;
+
+  if (!xemacs_accel_label_type)
+    {
+      static const GtkTypeInfo xemacs_accel_label_info =
+      {
+       "GtkXEmacsAccelLabel",
+       sizeof (GtkXEmacsAccelLabel),
+       sizeof (GtkXEmacsAccelLabelClass),
+       (GtkClassInitFunc) gtk_xemacs_accel_label_class_init,
+       (GtkObjectInitFunc) gtk_xemacs_accel_label_init,
+       /* reserved_1 */ NULL,
+        /* reserved_2 */ NULL,
+        (GtkClassInitFunc) NULL,
+      };
+
+      xemacs_accel_label_type = gtk_type_unique (gtk_accel_label_get_type(), &xemacs_accel_label_info);
+    }
+
+  return xemacs_accel_label_type;
+}
+
+static void
+gtk_xemacs_accel_label_class_init(GtkXEmacsAccelLabelClass *klass)
+{
+  /* Nothing to do. */
+}
+
+static void
+gtk_xemacs_accel_label_init(GtkXEmacsAccelLabel *xemacs)
+{
+  /* Nothing to do. */
+}
+
+static GtkWidget*
+gtk_xemacs_accel_label_new (const gchar *string)
+{
+  GtkXEmacsAccelLabel *xemacs_accel_label;
+  
+  xemacs_accel_label = gtk_type_new (GTK_TYPE_XEMACS_ACCEL_LABEL);
+  
+  if (string && *string)
+    gtk_label_set_text (GTK_LABEL (xemacs_accel_label), string);
+  
+  return GTK_WIDGET (xemacs_accel_label);
+}
+
+/* Make the string <keys> the accelerator string for the label. */
+static void
+gtk_xemacs_set_accel_keys(GtkXEmacsAccelLabel* l, Lisp_Object keys)
+{
+  g_return_if_fail (l != NULL);
+  g_return_if_fail (GTK_IS_XEMACS_ACCEL_LABEL (l));
+
+  /* Disable the standard way of finding the accelerator string for the
+     label. */
+  gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL(l), NULL);
+
+  /* Set the string straight from the object. */
+  if (STRINGP (keys) && XSTRING_LENGTH (keys))
+    {
+      C_STRING_TO_EXTERNAL_MALLOC(XSTRING_DATA (keys),
+                                 l->label.accel_string,
+                                 Qctext);
+    }
+  else
+    {
+      /* l->label.accel_string = NULL;*/
+    }
+}
+\f
+
 /* We now return you to your regularly scheduled menus... */
 
 int dockable_menubar;
@@ -314,7 +425,8 @@ __activate_menu(GtkMenuItem *item, gpointer user_data)
        }
       else
        {
-         next = menu_descriptor_to_widget_1 (child);
+         next = menu_descriptor_to_widget_1 (child,
+                                             gtk_menu_ensure_uline_accel_group (GTK_MENU (item->submenu)));
        }
 
       if (!next)
@@ -349,6 +461,63 @@ __kill_stupid_gtk_timer (GtkObject *obj, gpointer user_data)
     }
 }
 
+/* Convert the XEmacs menu accelerator representation to Gtk mnemonic form. If
+  no accelerator has been provided, put one at the start of the string (this
+  mirrors the behaviour under X).  This algorithm is also found in
+  dialog-gtk.el:gtk-popup-convert-underscores.
+*/
+static char *
+convert_underscores(const char *name)
+{
+  char *rval;
+  int i,j;
+  int found_accel = FALSE;
+  int underscores = 0;
+
+  for (i = 0; name[i]; ++i)
+    if (name[i] == '%' && name[i+1] == '_')
+      {
+       found_accel = TRUE;
+      }
+    else if (name[i] == '_')
+      {
+       underscores++;
+      }
+
+  /* Allocate space for the original string, plus zero byte plus extra space
+     for all quoted underscores plus possible additional leading accelerator. */
+  rval = xmalloc_and_zero (strlen(name) + 1 + underscores
+                          + (found_accel ? 0 : 1));
+
+  if (!found_accel)
+    rval[0] = '_';
+
+  for (i = 0, j = (found_accel ? 0 : 1); name[i]; i++)
+    {
+      if (name[i]=='%')
+       {
+         i++;
+         if (!(name[i]))
+           continue;
+         
+         if ((name[i] != '_') && (name[i] != '%'))
+           i--;
+
+         found_accel = TRUE;
+       }
+      else if (name[i] == '_')
+       {
+         rval[j++] = '_';
+       }
+
+      rval[j++] = name[i];
+    }
+
+  return rval;
+}
+
+
+/* Remove the XEmacs menu accellerator representation from a string. */
 static char *
 remove_underscores(const char *name)
 {
@@ -362,7 +531,9 @@ remove_underscores(const char *name)
        if (!(name[i]))
          continue;
 
-       if ((name[i] == '_'))
+       if ((name[i] != '_') && (name[i] != '%'))
+         i--;
+       else
          continue;
       }
       rval[j++] = name[i];
@@ -375,7 +546,8 @@ remove_underscores(const char *name)
    DESCR is either a list (meaning a submenu), a vector, or nil (if
    you include a :filter keyword) */
 static GtkWidget *
-menu_convert (Lisp_Object desc, GtkWidget *reuse)
+menu_convert (Lisp_Object desc, GtkWidget *reuse,
+             GtkAccelGroup* menubar_accel_group)
 {
   GtkWidget *menu_item = NULL;
   GtkWidget *submenu = NULL;
@@ -392,8 +564,23 @@ menu_convert (Lisp_Object desc, GtkWidget *reuse)
 
       if (!reuse)
        {
-         char *temp_menu_name = remove_underscores (XSTRING_DATA (XCAR (desc)));
-         menu_item = gtk_menu_item_new_with_label (temp_menu_name);
+         char *temp_menu_name = convert_underscores (XSTRING_DATA (XCAR (desc)));
+         GtkWidget* accel_label = gtk_xemacs_accel_label_new(NULL);
+         guint accel_key;
+
+         gtk_misc_set_alignment (GTK_MISC (accel_label), 0.0, 0.5);
+         accel_key = gtk_label_parse_uline (GTK_LABEL (accel_label), temp_menu_name);
+
+         menu_item = gtk_menu_item_new ();
+         gtk_container_add (GTK_CONTAINER (menu_item), accel_label);
+         gtk_widget_show (accel_label);
+
+         if (menubar_accel_group)
+           gtk_widget_add_accelerator (menu_item,
+                                       "activate_item",
+                                       menubar_accel_group,
+                                       accel_key, GDK_MOD1_MASK,
+                                       GTK_ACCEL_LOCKED);
          free (temp_menu_name);
        }
       else
@@ -542,28 +729,13 @@ menu_convert (Lisp_Object desc, GtkWidget *reuse)
   return (menu_item);
 }
 
-static struct frame *
-__get_channel (GtkWidget *w)
-{
-  struct frame *f = NULL;
-
-  for (; w; w = w->parent)
-    {
-      if ((f = (struct frame *) gtk_object_get_data (GTK_OBJECT (w), "xemacs::frame")))
-       return (f);
-    }
-
-  return (selected_frame());
-}
-
-
 /* Called whenever a button, radio, or toggle is selected in the menu */
 static void
 __generic_button_callback (GtkMenuItem *item, gpointer user_data)
 {
   Lisp_Object callback, function, data, channel;
 
-  XSETFRAME (channel, __get_channel (GTK_WIDGET (item)));
+  XSETFRAME (channel, gtk_widget_to_frame (GTK_WIDGET (item)));
 
   VOID_TO_LISP (callback, user_data);
 
@@ -576,7 +748,8 @@ __generic_button_callback (GtkMenuItem *item, gpointer user_data)
 /* This function cannot GC.
    It is only called from menu_item_descriptor_to_widget_value, which
    prohibits GC. */
-static GtkWidget *menu_descriptor_to_widget_1 (Lisp_Object descr)
+static GtkWidget *
+menu_descriptor_to_widget_1 (Lisp_Object descr, GtkAccelGroup* accel_group)
 {
   if (STRINGP (descr))
     {
@@ -589,7 +762,7 @@ static GtkWidget *menu_descriptor_to_widget_1 (Lisp_Object descr)
   else if (LISTP (descr))
     {
       /* It is a submenu */
-      return (menu_convert (descr, NULL));
+      return (menu_convert (descr, NULL, accel_group));
     }
   else if (VECTORP (descr))
     {
@@ -610,6 +783,7 @@ static GtkWidget *menu_descriptor_to_widget_1 (Lisp_Object descr)
       int plist_p;
       int selected_spec = 0, included_spec = 0;
       GtkWidget *widget = NULL;
+      guint accel_key;
 
       if (length < 2)
        signal_simple_error ("button descriptors must be at least 2 long", descr);
@@ -705,8 +879,9 @@ static GtkWidget *menu_descriptor_to_widget_1 (Lisp_Object descr)
              sprintf (label_buffer, "%s ", XSTRING_DATA (name));
            }
 
-         temp_label = remove_underscores (label_buffer);
-         main_label = gtk_accel_label_new (temp_label);
+         temp_label = convert_underscores (label_buffer);
+         main_label = gtk_xemacs_accel_label_new (NULL);
+         accel_key = gtk_label_parse_uline (GTK_LABEL (main_label), temp_label);
          free (temp_label);
        }
 
@@ -822,36 +997,23 @@ static GtkWidget *menu_descriptor_to_widget_1 (Lisp_Object descr)
                          GTK_SIGNAL_FUNC (__generic_button_callback),
                          LISP_TO_VOID (callback));
 
-      /* We cheat here... GtkAccelLabel usually builds its
-        `accel_string' from the widget it is attached to, but we do
-        not want to go thru the overhead of converting our nice
-        string back into the modifier + key format that requires,
-        just so that they can convert it back into a (possibly
-        different/wrong) string
-
-        We set the label string manually, and things should 'just
-        work'
-
-        In an ideal world we would just subclass GtkLabel ourselves,
-        but I have known for a very long time that this is not an
-        ideal world.
-
-        #### Should do menu shortcuts `correctly' one of these days.
+      /* Now that all the information about the menu item is know, set the
+        remaining properties.
       */
       
       if (main_label)
        {
-         GtkAccelLabel *l = GTK_ACCEL_LABEL (main_label);
-
          gtk_container_add (GTK_CONTAINER (widget), main_label);
 
-         gtk_accel_label_set_accel_widget (l, NULL);
-         gtk_misc_set_alignment (GTK_MISC (l), 0.0, 0.5);
+         gtk_misc_set_alignment (GTK_MISC (main_label), 0.0, 0.5);
+         gtk_xemacs_set_accel_keys(GTK_XEMACS_ACCEL_LABEL(main_label), keys);
 
-         if (STRINGP (keys) && XSTRING_LENGTH (keys))
-           {
-             l->accel_string = g_strdup (XSTRING_DATA (keys));
-           }
+         if (accel_group)
+           gtk_widget_add_accelerator (widget,
+                                       "activate_item",
+                                       accel_group,
+                                       accel_key, 0,
+                                       GTK_ACCEL_LOCKED);
        }
 
       return (widget);
@@ -859,11 +1021,12 @@ static GtkWidget *menu_descriptor_to_widget_1 (Lisp_Object descr)
   else
     {
       return (NULL);
-      /* abort (); ???? */
+      /* ABORT (); ???? */
     }
 }
 
-static GtkWidget *menu_descriptor_to_widget (Lisp_Object descr)
+static GtkWidget *
+menu_descriptor_to_widget (Lisp_Object descr, GtkAccelGroup* accel_group)
 {
   int count = specpdl_depth ();
   GtkWidget *rval = NULL;
@@ -873,7 +1036,7 @@ static GtkWidget *menu_descriptor_to_widget (Lisp_Object descr)
   gc_currently_forbidden = 1;
 
   /* Cannot GC from here on out... */
-  rval = menu_descriptor_to_widget_1 (descr);
+  rval = menu_descriptor_to_widget_1 (descr, accel_group);
   unbind_to (count, Qnil);
   return (rval);
   
@@ -883,23 +1046,24 @@ static gboolean
 menu_can_reuse_widget (GtkWidget *child, const char *label)
 {
   /* Everything up at the top level was done using
-  ** gtk_menu_item_new_with_label(), but we still double check to make
+  ** gtk_xemacs_accel_label_new(), but we still double check to make
   ** sure we don't seriously foobar ourselves.
   */
-  char *temp_label = NULL;
-  gpointer possible_child = g_list_nth_data (gtk_container_children (GTK_CONTAINER (child)), 0);
+  gpointer possible_child =
+    g_list_nth_data (gtk_container_children (GTK_CONTAINER (child)), 0);
+  gboolean ret_val = FALSE;
 
   if (possible_child && GTK_IS_LABEL (possible_child))
     {
-      if (!temp_label) temp_label = remove_underscores (label);
+      char *temp_label = remove_underscores (label);
+
       if (!strcmp (GTK_LABEL (possible_child)->label, temp_label))
-       {
-         free (temp_label);
-         return (TRUE);
-       }
+       ret_val = TRUE;
+
+      free (temp_label);
     }
-  if (temp_label) free (temp_label);
-  return (FALSE);
+
+  return ret_val;
 }
 
 /* Converts a menubar description into a GtkMenuBar... a menubar is a
@@ -915,6 +1079,7 @@ menu_create_menubar (struct frame *f, Lisp_Object descr)
   GtkWidget *menubar = FRAME_GTK_MENUBAR_WIDGET (f);
   GUI_ID id = (GUI_ID) gtk_object_get_data (GTK_OBJECT (menubar), XEMACS_MENU_GUIID_TAG);
   guint menu_position = 0;
+  GtkAccelGroup *menubar_accel_group;
 
   /* Remove any existing protection for old menu items */
   ungcpro_popup_callbacks (id);
@@ -922,6 +1087,8 @@ menu_create_menubar (struct frame *f, Lisp_Object descr)
   /* GCPRO the whole damn thing */
   gcpro_popup_callbacks (id, descr);
 
+  menubar_accel_group = gtk_accel_group_new();
+
   EXTERNAL_LIST_LOOP (tail, value)
     {
       gpointer current_child = g_list_nth_data (GTK_MENU_SHELL (menubar)->children, menu_position);
@@ -939,7 +1106,7 @@ menu_create_menubar (struct frame *f, Lisp_Object descr)
          /* It is a button description */
          GtkWidget *item;
 
-         item = menu_descriptor_to_widget (item_descr);
+         item = menu_descriptor_to_widget (item_descr, menubar_accel_group);
          gtk_widget_set_name (item, "XEmacsMenuButton");
 
          if (!item)
@@ -961,12 +1128,13 @@ menu_create_menubar (struct frame *f, Lisp_Object descr)
          if (current_child && menu_can_reuse_widget (GTK_WIDGET (current_child),
                                                      XSTRING_DATA (XCAR (item_descr))))
            {
-             widget = menu_convert (item_descr, GTK_WIDGET (current_child));
+             widget = menu_convert (item_descr, GTK_WIDGET (current_child),
+                                    menubar_accel_group);
              reused_p = TRUE;
            }
          else
            {
-             widget = menu_convert (item_descr, NULL);
+             widget = menu_convert (item_descr, NULL, menubar_accel_group);
              if (current_child) gtk_widget_destroy (GTK_WIDGET (current_child));
              gtk_menu_bar_insert (GTK_MENU_BAR (menubar), widget, menu_position);
            }
@@ -1005,6 +1173,10 @@ menu_create_menubar (struct frame *f, Lisp_Object descr)
          }
       }
   }
+
+  /* Attach the new accelerator group to the frame. */
+  gtk_window_add_accel_group (GTK_WINDOW (FRAME_GTK_SHELL_WIDGET(f)),
+                             menubar_accel_group);
 }
 
 \f
@@ -1227,7 +1399,7 @@ gtk_popup_menu (Lisp_Object menu_desc, Lisp_Object event)
   CHECK_STRING (XCAR (menu_desc));
 
   /* Now lets get down to business... */
-  widget = menu_descriptor_to_widget (menu_desc);
+  widget = menu_descriptor_to_widget (menu_desc, NULL);
   menu = GTK_MENU_ITEM (widget)->submenu;
   gtk_widget_set_name (widget, "XEmacsPopupMenu");
   id = gtk_object_get_data (GTK_OBJECT (widget), XEMACS_MENU_GUIID_TAG);
@@ -1271,7 +1443,7 @@ See the definition of `popup-menu' for more information on the format of MENU.
 */
        (menu))
 {
-  GtkWidget *w = menu_descriptor_to_widget (menu);
+  GtkWidget *w = menu_descriptor_to_widget (menu, NULL);
 
   return (w ? build_gtk_object (GTK_OBJECT (w)) : Qnil);
 }
index 30b720a..e32fcf2 100644 (file)
@@ -908,15 +908,22 @@ get_unallocated_leading_byte (int dimension)
 #else
   if (dimension == 1)
     {
-      if (chlook->next_allocated_1_byte_leading_byte > MAX_LEADING_BYTE_PRIVATE_1)
+      if (chlook->next_allocated_1_byte_leading_byte >
+         MAX_LEADING_BYTE_PRIVATE_1)
        lb = 0;
       else
        lb = chlook->next_allocated_1_byte_leading_byte++;
     }
   else
     {
-      if (chlook->next_allocated_2_byte_leading_byte > MAX_LEADING_BYTE_PRIVATE_2)
-       lb = 0;
+      /* awfully fragile, but correct */
+#if MAX_LEADING_BYTE_PRIVATE_2 == 255
+      if (chlook->next_allocated_2_byte_leading_byte == 0)
+#else
+      if (chlook->next_allocated_2_byte_leading_byte >
+         MAX_LEADING_BYTE_PRIVATE_2)
+#endif
+        lb = 0;
       else
        lb = chlook->next_allocated_2_byte_leading_byte++;
     }
index 95ee6f2..adf9fb6 100644 (file)
@@ -697,7 +697,7 @@ CHAR_LEADING_BYTE (Emchar c)
 #ifdef ENABLE_COMPOSITE_CHARS
       return LEADING_BYTE_COMPOSITE;
 #else
-      abort();
+      ABORT();
       return 0;
 #endif /* ENABLE_COMPOSITE_CHARS */
     }
index 8757108..e2af216 100644 (file)
@@ -49,7 +49,7 @@ Boston, MA 02111-1307, USA.  */
        (frame)->right_toolbar_was_visible = flag;                      \
        break;                                                          \
       default:                                                         \
-       abort ();                                                       \
+       ABORT ();                                                       \
       }                                                                        \
   } while (0)
 
index 119109e..3e792de 100644 (file)
@@ -460,7 +460,7 @@ gtk_output_display_block (struct window *w, struct display_line *dl, int block,
                    break;
 
                  case IMAGE_POINTER:
-                   abort ();
+                   ABORT ();
 
                  case IMAGE_WIDGET:
                      if (EQ (XIMAGE_INSTANCE_WIDGET_TYPE (instance),
@@ -484,14 +484,14 @@ gtk_output_display_block (struct window *w, struct display_line *dl, int block,
                    break;
 
                  default:
-                   abort ();
+                   ABORT ();
                  }
 
              xpos += rb->width;
              elt++;
            }
          else
-           abort ();
+           ABORT ();
        }
     }
 
index 62ddceb..e2a2552 100644 (file)
@@ -1216,7 +1216,7 @@ mswindows_output_display_block (struct window *w, struct display_line *dl, int b
                    case IMAGE_TEXT:
                    case IMAGE_POINTER:
                    default:
-                     abort ();
+                     ABORT ();
                    }
                  IMAGE_INSTANCE_OPTIMIZE_OUTPUT 
                    (XIMAGE_INSTANCE (instance)) = 0;
@@ -1225,7 +1225,7 @@ mswindows_output_display_block (struct window *w, struct display_line *dl, int b
              elt++;
            }
          else
-           abort ();
+           ABORT ();
        }
     }
 
index fc0b5c3..7b1c46f 100644 (file)
@@ -334,7 +334,7 @@ get_next_display_block (layout_bounds bounds, display_block_dynarr *dba,
       else if (start_pos <= bounds.right_out)
        *next_start = bounds.right_out;
       else
-       abort ();
+       ABORT ();
     }
 
   for (block = 0; block < Dynarr_length (dba); block++)
@@ -377,7 +377,7 @@ get_cursor_size_and_location (struct window *w, struct display_block *db,
   int defheight, defwidth;
 
   if (Dynarr_length (db->runes) <= cursor_location)
-    abort ();
+    ABORT ();
 
   XSETWINDOW (window, w);
 
@@ -1521,7 +1521,7 @@ redisplay_output_layout (Lisp_Object domain,
 
                case IMAGE_POINTER:
                default:
-                 abort ();
+                 ABORT ();
                }
            }
          IMAGE_INSTANCE_OPTIMIZE_OUTPUT (childii) = 0;
@@ -1633,7 +1633,7 @@ redisplay_clear_region (Lisp_Object locale, face_index findex, int x, int y,
       f = XFRAME (locale);
     }
   else
-    abort ();
+    ABORT ();
 
   d = XDEVICE (f->device);
 
index 80bdcc4..849d974 100644 (file)
@@ -344,7 +344,7 @@ tty_output_display_block (struct window *w, struct display_line *dl, int block,
                    case IMAGE_TEXT:
                    case IMAGE_POINTER:
                    default:
-                     abort ();
+                     ABORT ();
                    }
                  IMAGE_INSTANCE_OPTIMIZE_OUTPUT
                    (XIMAGE_INSTANCE (instance)) = 0;
@@ -354,7 +354,7 @@ tty_output_display_block (struct window *w, struct display_line *dl, int block,
              elt++;
            }
          else
-           abort ();
+           ABORT ();
        }
     }
 
index 711638b..b6a89ba 100644 (file)
@@ -492,7 +492,7 @@ x_output_display_block (struct window *w, struct display_line *dl, int block,
                    case IMAGE_TEXT:
                    case IMAGE_POINTER:
                    default:
-                     abort ();
+                     ABORT ();
                    }
                  IMAGE_INSTANCE_OPTIMIZE_OUTPUT
                    (XIMAGE_INSTANCE (instance)) = 0;
@@ -502,7 +502,7 @@ x_output_display_block (struct window *w, struct display_line *dl, int block,
              elt++;
            }
          else
-           abort ();
+           ABORT ();
        }
     }
 
@@ -982,8 +982,9 @@ x_output_string (struct window *w, struct display_line *dl,
       /* We draw underlines in the same color as the text. */
       if (cachel->underline)
        {
-         unsigned long upos;
-         unsigned long uthick;
+         /* upos is naturally signed, why would anyone think otherwise?
+            uthick is signed to avoid unsigned propagation. */
+         long upos, uthick;
          XFontStruct *xfont;
 
          xfont = FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font));
@@ -1011,7 +1012,9 @@ x_output_string (struct window *w, struct display_line *dl,
        }
 
       if (cachel->strikethru) {
-       unsigned long ascent,descent,upos, uthick;
+       /* ascent, descent, and upos are naturally signed; why would anyone
+          think otherwise?  uthick is signed to avoid unsigned propagation. */
+       long ascent, descent, upos, uthick;
        XFontStruct *xfont;
 
        xfont = FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font));
index e40c348..ac3416f 100644 (file)
@@ -1643,7 +1643,7 @@ add_propagation_runes (prop_block_dynarr **prop, pos_data *data)
          }
          break;
        default:
-         abort ();
+         ABORT ();
        }
     }
 
@@ -1838,7 +1838,7 @@ add_glyph_rune (pos_data *data, struct glyph_block *gb, int pos_type,
 
          /* Otherwise something is screwed up. */
          else
-           abort ();
+           ABORT ();
        }
 
       face = glyph_face (gb->glyph, data->window);
@@ -1946,7 +1946,7 @@ add_glyph_rune (pos_data *data, struct glyph_block *gb, int pos_type,
          return NULL;
        }
       else
-       abort ();       /* there are no unknown types */
+       ABORT ();       /* there are no unknown types */
     }
 
   return NULL;
@@ -2519,7 +2519,7 @@ create_text_block (struct window *w, struct display_line *dl,
 
              /* This had better be a newline but doing it this way
                  we'll see obvious incorrect results if it isn't.  No
-                 need to abort here. */
+                 need to ABORT here. */
              data.ch = BI_BUF_FETCH_CHAR (b, data.bi_bufpos);
 
              goto done;
@@ -2996,7 +2996,7 @@ add_margin_runes (struct display_line *dl, struct display_block *db, int start,
       struct glyph_block *gb = Dynarr_atp (gbd, elt);
 
       if (NILP (gb->extent))
-       abort ();       /* these should have been handled in add_glyph_rune */
+       ABORT ();       /* these should have been handled in add_glyph_rune */
 
       if (gb->active &&
          ((side == LEFT_GLYPHS &&
@@ -3081,7 +3081,7 @@ create_left_glyph_block (struct window *w, struct display_line *dl,
       struct glyph_block *gb = Dynarr_atp (dl->left_glyphs, elt);
 
       if (NILP (gb->extent))
-       abort ();       /* these should have been handled in add_glyph_rune */
+       ABORT ();       /* these should have been handled in add_glyph_rune */
 
       if (extent_begin_glyph_layout (XEXTENT (gb->extent)) == GL_WHITESPACE)
        {
@@ -3133,7 +3133,7 @@ create_left_glyph_block (struct window *w, struct display_line *dl,
        struct glyph_block *gb = Dynarr_atp (dl->left_glyphs, elt);
 
        if (NILP (gb->extent))
-         abort ();     /* these should have been handled in add_glyph_rune */
+         ABORT ();     /* these should have been handled in add_glyph_rune */
 
        if (extent_begin_glyph_layout (XEXTENT (gb->extent)) ==
            GL_INSIDE_MARGIN)
@@ -3202,7 +3202,7 @@ create_left_glyph_block (struct window *w, struct display_line *dl,
        struct glyph_block *gb = Dynarr_atp (dl->left_glyphs, elt);
 
        if (NILP (gb->extent))
-         abort ();     /* these should have been handled in add_glyph_rune */
+         ABORT ();     /* these should have been handled in add_glyph_rune */
 
        if (extent_begin_glyph_layout (XEXTENT (gb->extent)) ==
            GL_INSIDE_MARGIN)
@@ -3244,7 +3244,7 @@ create_left_glyph_block (struct window *w, struct display_line *dl,
       struct glyph_block *gb = Dynarr_atp (dl->left_glyphs, elt);
 
       if (NILP (gb->extent))
-       abort ();       /* these should have been handled in add_glyph_rune */
+       ABORT ();       /* these should have been handled in add_glyph_rune */
 
       if (extent_begin_glyph_layout (XEXTENT (gb->extent)) ==
          GL_OUTSIDE_MARGIN)
@@ -3402,7 +3402,7 @@ create_right_glyph_block (struct window *w, struct display_line *dl)
       struct glyph_block *gb = Dynarr_atp (dl->right_glyphs, elt);
 
       if (NILP (gb->extent))
-       abort ();       /* these should have been handled in add_glyph_rune */
+       ABORT ();       /* these should have been handled in add_glyph_rune */
 
       if (extent_end_glyph_layout (XEXTENT (gb->extent)) == GL_WHITESPACE)
        {
@@ -3452,7 +3452,7 @@ create_right_glyph_block (struct window *w, struct display_line *dl)
        struct glyph_block *gb = Dynarr_atp (dl->right_glyphs, elt);
 
        if (NILP (gb->extent))
-         abort ();     /* these should have been handled in add_glyph_rune */
+         ABORT ();     /* these should have been handled in add_glyph_rune */
 
        if (extent_end_glyph_layout (XEXTENT (gb->extent)) == GL_INSIDE_MARGIN)
          {
@@ -3516,7 +3516,7 @@ create_right_glyph_block (struct window *w, struct display_line *dl)
        struct glyph_block *gb = Dynarr_atp (dl->right_glyphs, elt);
 
        if (NILP (gb->extent))
-         abort ();     /* these should have been handled in add_glyph_rune */
+         ABORT ();     /* these should have been handled in add_glyph_rune */
 
        if (extent_end_glyph_layout (XEXTENT (gb->extent)) == GL_INSIDE_MARGIN)
          {
@@ -3557,7 +3557,7 @@ create_right_glyph_block (struct window *w, struct display_line *dl)
       struct glyph_block *gb = Dynarr_atp (dl->right_glyphs, elt);
 
       if (NILP (gb->extent))
-       abort ();       /* these should have been handled in add_glyph_rune */
+       ABORT ();       /* these should have been handled in add_glyph_rune */
 
       if (extent_end_glyph_layout (XEXTENT (gb->extent)) == GL_OUTSIDE_MARGIN)
        {
@@ -4748,7 +4748,7 @@ create_string_text_block (struct window *w, Lisp_Object disp_string,
          else if (data.bi_bufpos == bi_string_zv)
            goto done;
          else if (data.bi_bufpos < 0)
-           /* #### urk urk urk! Aborts are not very fun! Fix this please! */
+           /* #### urk urk urk! ABORTs are not very fun! Fix this please! */
            data.bi_bufpos = 0;
          else
            INC_CHARBYTIND (string_data (s), data.bi_bufpos);
@@ -5298,7 +5298,7 @@ regenerate_window (struct window *w, Bufpos start_pos, Bufpos point, int type)
 
   /* The lines had better exist by this point. */
   if (!(dla = window_display_lines (w, type)))
-    abort ();
+    ABORT ();
   Dynarr_reset (dla);
   w->max_line_len = 0;
 
@@ -5490,7 +5490,7 @@ regenerate_window (struct window *w, Bufpos start_pos, Bufpos point, int type)
            dla_start = 0;                      \
          }                                     \
        else                                    \
-         abort ();     /* structs differ */    \
+         ABORT ();     /* structs differ */    \
                                                \
        dla_end = Dynarr_length (cdla) - 1;     \
       }                                                \
@@ -6512,7 +6512,7 @@ redisplay_frame (struct frame *f, int preemption_check)
   /* The menubar, toolbar, and icon updates must be done before
      hold_frame_size_changes is called and we are officially
      'in_display'.  They may eval lisp code which may call Fsignal.
-     If in_display is set Fsignal will abort. */
+     If in_display is set Fsignal will ABORT. */
 
 #ifdef HAVE_MENUBARS
   /* Update the menubar.  It is done first since it could change
@@ -6572,10 +6572,10 @@ redisplay_frame (struct frame *f, int preemption_check)
      We need to remove them.
 
      If Fsignal() is called during this critical section, we
-     will abort().
+     will ABORT().
 
      If garbage collection is called during this critical section,
-     we simply return. #### We should abort instead.
+     we simply return. #### We should ABORT instead.
 
      #### If a frame-size change does occur we should probably
      actually be preempting redisplay. */
@@ -7500,7 +7500,7 @@ point_in_line_start_cache (struct window *w, Bufpos point, int min_past)
       int win_char_height = window_char_height (w, 1);
 
       /* Occasionally we get here with a 0 height
-         window. find_next_newline_no_quit will abort if we pass it a
+         window. find_next_newline_no_quit will ABORT if we pass it a
          count of 0 so handle that case. */
       if (!win_char_height)
        win_char_height = 1;
@@ -7652,7 +7652,7 @@ find_point_loop:
       else if (point < start)
        top = pos - 1;
       else
-       abort ();
+       ABORT ();
 
       new_pos = (bottom + top + 1) >> 1;
       if (pos == new_pos)
index eb98c0b..c6f6f36 100644 (file)
@@ -120,6 +120,8 @@ complex_vars_of_regex (void)
 
 #else  /* not emacs */
 
+#define ABORT abort
+
 /* If we are not linking with Emacs proper,
    we can't use the relocating allocator
    even if config.h says that we can.  */
@@ -419,7 +421,7 @@ typedef enum
 
         /* Start remembering the text that is matched, for storing in a
            register.  Followed by one byte with the register number, in
-           the range 0 to one less than the pattern buffer's re_nsub
+           the range 1 to the pattern buffer's re_ngroups
            field.  Then followed by one byte with the number of groups
            inner to this one.  (This last has to be part of the
            start_memory only because we need it in the on_failure_jump
@@ -428,7 +430,7 @@ typedef enum
 
         /* Stop remembering the text that is matched and store it in a
            memory register.  Followed by one byte with the register
-           number, in the range 0 to one less than `re_nsub' in the
+           number, in the range 1 to `re_ngroups' in the
            pattern buffer, and one byte with the number of inner groups,
            just like `start_memory'.  (We need the number of inner
            groups here because we don't have any easy way of finding the
@@ -975,6 +977,7 @@ print_compiled_pattern (struct re_pattern_buffer *bufp)
     }
 
   printf ("re_nsub: %ld\t", (long)bufp->re_nsub);
+  printf ("re_ngroups: %ld\t", (long)bufp->re_ngroups);
   printf ("regs_alloc: %d\t", bufp->regs_allocated);
   printf ("can_be_null: %d\t", bufp->can_be_null);
   printf ("newline_anchor: %d\n", bufp->newline_anchor);
@@ -984,6 +987,20 @@ print_compiled_pattern (struct re_pattern_buffer *bufp)
   printf ("syntax: %d\n", bufp->syntax);
   /* Perhaps we should print the translate table?  */
   /* and maybe the category table? */
+
+  if (bufp->external_to_internal_register)
+    {
+      int i;
+
+      printf ("external_to_internal_register:\n");
+      for (i = 0; i <= bufp->re_nsub; i++)
+       {
+         if (i > 0)
+           printf (", ");
+         printf ("%d -> %d", i, bufp->external_to_internal_register[i]);
+       }
+      printf ("\n");
+    }
 }
 
 
@@ -1694,6 +1711,7 @@ static unsigned char reg_unset_dummy;
    ignore the excess.  */
 typedef unsigned regnum_t;
 
+#define INIT_REG_TRANSLATE_SIZE 5
 
 /* Macros for the compile stack.  */
 
@@ -1844,7 +1862,7 @@ static register_info_type *reg_info_dummy;
 /* Make the register vectors big enough for NUM_REGS registers,
    but don't make them smaller.  */
 
-static
+static void
 regex_grow_registers (int num_regs)
 {
   if (num_regs > regs_allocated_size)
@@ -1877,7 +1895,9 @@ regex_grow_registers (int num_regs)
      `syntax' is set to SYNTAX;
      `used' is set to the length of the compiled pattern;
      `fastmap_accurate' is zero;
-     `re_nsub' is the number of subexpressions in PATTERN;
+     `re_ngroups' is the number of groups/subexpressions (including shy
+        groups) in PATTERN;
+     `re_nsub' is the number of non-shy groups in PATTERN;
      `not_bol' and `not_eol' are zero;
 
    The `fastmap' and `newline_anchor' fields are neither
@@ -1975,6 +1995,25 @@ regex_compile (re_char *pattern, int size, reg_syntax_t syntax,
 
   /* Always count groups, whether or not bufp->no_sub is set.  */
   bufp->re_nsub = 0;
+  bufp->re_ngroups = 0;
+
+  /* Allocate index translation array if needed. */
+  if (bufp->external_to_internal_register == 0)
+    {
+      bufp->external_to_internal_register_size = INIT_REG_TRANSLATE_SIZE;
+      RETALLOC (bufp->external_to_internal_register,
+               bufp->external_to_internal_register_size,
+               int);
+    }
+
+  /* Initialize translations to impossible value to aid debugging. */
+  {
+    int i;
+
+    bufp->external_to_internal_register[0] = 0;
+    for (i = 1; i < bufp->external_to_internal_register_size; i++)
+      bufp->external_to_internal_register[i] = (int) 0xDEADBEEF;
+  }
 
 #if !defined (emacs) && !defined (SYNTAX_TABLE)
   /* Initialize the syntax table.  */
@@ -2557,6 +2596,7 @@ regex_compile (re_char *pattern, int size, reg_syntax_t syntax,
             handle_open:
               {
                 regnum_t r;
+               int shy = 0;
 
                 if (!(syntax & RE_NO_SHY_GROUPS)
                     && p != pend
@@ -2567,7 +2607,7 @@ regex_compile (re_char *pattern, int size, reg_syntax_t syntax,
                     switch (c)
                       {
                       case ':': /* shy groups */
-                        r = MAX_REGNUM + 1;
+                        shy = 1;
                         break;
 
                       /* All others are reserved for future constructs. */
@@ -2575,11 +2615,34 @@ regex_compile (re_char *pattern, int size, reg_syntax_t syntax,
                         FREE_STACK_RETURN (REG_BADPAT);
                       }
                   }
-                else
-                  {
-                    bufp->re_nsub++;
-                    r = ++regnum;
-                  }
+
+               r = ++regnum;
+               bufp->re_ngroups++;
+               if (!shy)
+                 /* Record the translation from capturing group index to
+                    register number, reallocating table as needed. */
+                 {
+                   bufp->re_nsub++;
+                   while (bufp->external_to_internal_register_size <=
+                          bufp->re_nsub)
+                     {
+                       int i;
+                       int old_size =
+                         bufp->external_to_internal_register_size;
+                       bufp->external_to_internal_register_size += 5;
+                       RETALLOC (bufp->external_to_internal_register,
+                                 bufp->external_to_internal_register_size,
+                                 int);
+                       /* debugging */
+                       for (i = old_size;
+                            i < bufp->external_to_internal_register_size; i++)
+                         bufp->external_to_internal_register[i] =
+                           (int) 0xDEADBEEF;
+                     }
+
+                   bufp->external_to_internal_register[bufp->re_nsub] =
+                     bufp->re_ngroups;
+                 }
 
                 if (COMPILE_STACK_FULL)
                   {
@@ -2603,7 +2666,10 @@ regex_compile (re_char *pattern, int size, reg_syntax_t syntax,
                 /* We will eventually replace the 0 with the number of
                    groups inner to this one.  But do not push a
                    start_memory for groups beyond the last one we can
-                   represent in the compiled pattern.  */
+                   represent in the compiled pattern.
+                  #### bad bad bad.  this will fail in lots of ways, if we
+                  ever have to backtrack for these groups.
+               */
                 if (r <= MAX_REGNUM)
                   {
                     COMPILE_STACK_TOP.inner_group_offset
@@ -2993,16 +3059,21 @@ regex_compile (re_char *pattern, int size, reg_syntax_t syntax,
             case '1': case '2': case '3': case '4': case '5':
             case '6': case '7': case '8': case '9':
              {
-               regnum_t reg;
+               int reg;
+
                if (syntax & RE_NO_BK_REFS)
                  goto normal_char;
 
+               /* External register indexing. */
                reg = c - '0';
 
-               if (reg > regnum)
+               if (reg > bufp->re_nsub)
                  FREE_STACK_RETURN (REG_ESUBREG);
 
-               /* Can't back reference to a subexpression if inside of it.  */
+               /* Convert external to internal as soon as possible. */
+               reg = bufp->external_to_internal_register[reg];
+
+               /* Can't back reference to a subexpression if inside it. */
                if (group_in_compile_stack (compile_stack, reg))
                  goto normal_char;
 
@@ -3122,7 +3193,7 @@ regex_compile (re_char *pattern, int size, reg_syntax_t syntax,
      isn't necessary unless we're trying to avoid calling alloca in
      the search and match routines.  */
   {
-    int num_regs = bufp->re_nsub + 1;
+    int num_regs = bufp->re_ngroups + 1;
 
     /* Since DOUBLE_FAIL_STACK refuses to double only if the current size
        is strictly greater than re_max_failures, the largest possible stack
@@ -3885,7 +3956,7 @@ re_compile_fastmap (struct re_pattern_buffer *bufp)
 
 
        default:
-          abort (); /* We have listed all the cases.  */
+          ABORT (); /* We have listed all the cases.  */
         } /* switch *p++ */
 
       /* Getting here means we have found the possible starting
@@ -4421,7 +4492,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1,
   /* We fill all the registers internally, independent of what we
      return, for use in backreferences.  The number here includes
      an element for register zero.  */
-  int num_regs = bufp->re_nsub + 1;
+  int num_regs = bufp->re_ngroups + 1;
 
   /* The currently active registers.  */
   int lowest_active_reg = NO_LOWEST_ACTIVE_REG;
@@ -4507,7 +4578,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1,
      there are groups, we include space for register 0 (the whole
      pattern), even though we never use it, since it simplifies the
      array indexing.  We should fix this.  */
-  if (bufp->re_nsub)
+  if (bufp->re_ngroups)
     {
       regstart       = REGEX_TALLOC (num_regs, re_char *);
       regend         = REGEX_TALLOC (num_regs, re_char *);
@@ -4682,104 +4753,112 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1,
        succeed_label:
           DEBUG_PRINT1 ("Accepting match.\n");
 
-          /* If caller wants register contents data back, do it.  */
-          if (regs && !bufp->no_sub)
-           {
-              /* Have the register data arrays been allocated?  */
-              if (bufp->regs_allocated == REGS_UNALLOCATED)
-                { /* No.  So allocate them with malloc.  We need one
-                     extra element beyond `num_regs' for the `-1' marker
-                     GNU code uses.  */
-                  regs->num_regs = MAX (RE_NREGS, num_regs + 1);
-                  regs->start = TALLOC (regs->num_regs, regoff_t);
-                  regs->end = TALLOC (regs->num_regs, regoff_t);
-                  if (regs->start == NULL || regs->end == NULL)
-                   {
-                     FREE_VARIABLES ();
-                     return -2;
-                   }
-                  bufp->regs_allocated = REGS_REALLOCATE;
-                }
-              else if (bufp->regs_allocated == REGS_REALLOCATE)
-                { /* Yes.  If we need more elements than were already
-                     allocated, reallocate them.  If we need fewer, just
-                     leave it alone.  */
-                  if (regs->num_regs < num_regs + 1)
-                    {
-                      regs->num_regs = num_regs + 1;
-                      RETALLOC (regs->start, regs->num_regs, regoff_t);
-                      RETALLOC (regs->end, regs->num_regs, regoff_t);
-                      if (regs->start == NULL || regs->end == NULL)
-                       {
-                         FREE_VARIABLES ();
-                         return -2;
-                       }
-                    }
-                }
-              else
-               {
-                 /* These braces fend off a "empty body in an else-statement"
-                    warning under GCC when assert expands to nothing.  */
-                 assert (bufp->regs_allocated == REGS_FIXED);
-               }
+         {
+           /* If caller wants register contents data back, fill REGS.  */
+           int num_nonshy_regs = bufp->re_nsub + 1;
+           if (regs && !bufp->no_sub)
+             {
+               /* Have the register data arrays been allocated?  */
+               if (bufp->regs_allocated == REGS_UNALLOCATED)
+                 { /* No.  So allocate them with malloc.  We need one
+                      extra element beyond `num_regs' for the `-1' marker
+                      GNU code uses.  */
+                   regs->num_regs = MAX (RE_NREGS, num_nonshy_regs + 1);
+                   regs->start = TALLOC (regs->num_regs, regoff_t);
+                   regs->end = TALLOC (regs->num_regs, regoff_t);
+                   if (regs->start == NULL || regs->end == NULL)
+                     {
+                       FREE_VARIABLES ();
+                       return -2;
+                     }
+                   bufp->regs_allocated = REGS_REALLOCATE;
+                 }
+               else if (bufp->regs_allocated == REGS_REALLOCATE)
+                 { /* Yes.  If we need more elements than were already
+                      allocated, reallocate them.  If we need fewer, just
+                      leave it alone.  */
+                   if (regs->num_regs < num_nonshy_regs + 1)
+                     {
+                       regs->num_regs = num_nonshy_regs + 1;
+                       RETALLOC (regs->start, regs->num_regs, regoff_t);
+                       RETALLOC (regs->end, regs->num_regs, regoff_t);
+                       if (regs->start == NULL || regs->end == NULL)
+                         {
+                           FREE_VARIABLES ();
+                           return -2;
+                         }
+                     }
+                 }
+               else
+                 {
+                   /* The braces fend off a "empty body in an else-statement"
+                      warning under GCC when assert expands to nothing.  */
+                   assert (bufp->regs_allocated == REGS_FIXED);
+                 }
 
-              /* Convert the pointer data in `regstart' and `regend' to
-                 indices.  Register zero has to be set differently,
-                 since we haven't kept track of any info for it.  */
-              if (regs->num_regs > 0)
-                {
-                  regs->start[0] = pos;
-                  regs->end[0] = (MATCHING_IN_FIRST_STRING
-                                 ? ((regoff_t) (d - string1))
-                                 : ((regoff_t) (d - string2 + size1)));
-                }
+               /* Convert the pointer data in `regstart' and `regend' to
+                  indices.  Register zero has to be set differently,
+                  since we haven't kept track of any info for it.  */
+               if (regs->num_regs > 0)
+                 {
+                   regs->start[0] = pos;
+                   regs->end[0] = (MATCHING_IN_FIRST_STRING
+                                   ? ((regoff_t) (d - string1))
+                                   : ((regoff_t) (d - string2 + size1)));
+                 }
 
-              /* Go through the first `min (num_regs, regs->num_regs)'
-                 registers, since that is all we initialized.  */
-             for (mcnt = 1; mcnt < MIN (num_regs, regs->num_regs); mcnt++)
-               {
-                  if (REG_UNSET (regstart[mcnt]) || REG_UNSET (regend[mcnt]))
-                    regs->start[mcnt] = regs->end[mcnt] = -1;
-                  else
-                    {
-                     regs->start[mcnt]
-                       = (regoff_t) POINTER_TO_OFFSET (regstart[mcnt]);
-                      regs->end[mcnt]
-                       = (regoff_t) POINTER_TO_OFFSET (regend[mcnt]);
-                    }
-               }
-           } /* regs && !bufp->no_sub */
-
-         /* If we have regs and the regs structure has more elements than
-             were in the pattern, set the extra elements to -1.  If we
-            (re)allocated the registers, this is the case, because we
-            always allocate enough to have at least one -1 at the end.
-
-            We do this even when no_sub is set because some applications
-             (XEmacs) reuse register structures which may contain stale
-            information, and permit attempts to access those registers.
-
-            It would be possible to require the caller to do this, but we'd
-            have to change the API for this function to reflect that, and
-            audit all callers. */
-         if (regs && regs->num_regs > 0)
-           for (mcnt = num_regs; mcnt < regs->num_regs; mcnt++)
-             regs->start[mcnt] = regs->end[mcnt] = -1;
-
-          DEBUG_PRINT4 ("%u failure points pushed, %u popped (%u remain).\n",
-                        nfailure_points_pushed, nfailure_points_popped,
-                        nfailure_points_pushed - nfailure_points_popped);
-          DEBUG_PRINT2 ("%u registers pushed.\n", num_regs_pushed);
-
-          mcnt = d - pos - (MATCHING_IN_FIRST_STRING
+               /* Map over the NUM_NONSHY_REGS non-shy internal registers.
+                  Copy each into the corresponding external register.
+                  N.B. MCNT indexes external registers. */
+               for (mcnt = 1;
+                    mcnt < MIN (num_nonshy_regs, regs->num_regs);
+                    mcnt++)
+                 {
+                   int ireg = bufp->external_to_internal_register[mcnt];
+
+                   if (REG_UNSET (regstart[ireg]) || REG_UNSET (regend[ireg]))
+                     regs->start[mcnt] = regs->end[mcnt] = -1;
+                   else
+                     {
+                       regs->start[mcnt]
+                         = (regoff_t) POINTER_TO_OFFSET (regstart[ireg]);
+                       regs->end[mcnt]
+                         = (regoff_t) POINTER_TO_OFFSET (regend[ireg]);
+                     }
+                 }
+             } /* regs && !bufp->no_sub */
+
+           /* If we have regs and the regs structure has more elements than
+              were in the pattern, set the extra elements to -1.  If we
+              (re)allocated the registers, this is the case, because we
+              always allocate enough to have at least one -1 at the end.
+
+              We do this even when no_sub is set because some applications
+              (XEmacs) reuse register structures which may contain stale
+              information, and permit attempts to access those registers.
+
+              It would be possible to require the caller to do this, but we'd
+              have to change the API for this function to reflect that, and
+              audit all callers. */
+           if (regs && regs->num_regs > 0)
+             for (mcnt = num_nonshy_regs; mcnt < regs->num_regs; mcnt++)
+               regs->start[mcnt] = regs->end[mcnt] = -1;
+         }
+
+         DEBUG_PRINT4 ("%u failure points pushed, %u popped (%u remain).\n",
+                       nfailure_points_pushed, nfailure_points_popped,
+                       nfailure_points_pushed - nfailure_points_popped);
+         DEBUG_PRINT2 ("%u registers pushed.\n", num_regs_pushed);
+
+         mcnt = d - pos - (MATCHING_IN_FIRST_STRING
                            ? string1
                            : string2 - size1);
 
-          DEBUG_PRINT2 ("Returning %d from re_match_2.\n", mcnt);
+         DEBUG_PRINT2 ("Returning %d from re_match_2.\n", mcnt);
 
-          FREE_VARIABLES ();
-          return mcnt;
-        }
+         FREE_VARIABLES ();
+         return mcnt;
+       }
 
       /* Otherwise match next pattern command.  */
       switch (SWITCH_ENUM_CAST ((re_opcode_t) *p++))
@@ -5108,11 +5187,15 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1,
 
 
        /* \<digit> has been turned into a `duplicate' command which is
-           followed by the numeric value of <digit> as the register number.  */
+           followed by the numeric value of <digit> as the register number.
+          (Already passed through external-to-internal-register mapping,
+          so it refers to the actual group number, not the non-shy-only
+          numbering used in the external world.) */
         case duplicate:
          {
            REGISTER re_char *d2, *dend2;
-           int regno = *p++;   /* Get which register to match against.  */
+           /* Get which register to match against.  */
+           int regno = *p++;
            DEBUG_PRINT2 ("EXECUTING duplicate %d.\n", regno);
 
            /* Can't back reference a group which we've never matched.  */
@@ -5585,7 +5668,8 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1,
               emch1, emch2 is the character at d, and syn2 is the
               syntax of emch2. */
            Emchar emch1, emch2;
-           int syn1, syn2;
+           /* GCC isn't smart enough to see these are initialized if used. */
+           int syn1 = 0, syn2 = 0;
            re_char *d_before, *d_after;
            int result,
                at_beg = AT_STRINGS_BEG (d),
@@ -5846,7 +5930,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1,
 #endif /* emacs */
 
         default:
-          abort ();
+          ABORT ();
        }
       continue;  /* Successfully executed one pattern command; keep going.  */
 
@@ -5923,7 +6007,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1,
 
 static re_bool
 group_match_null_string_p (unsigned char **p, unsigned char *end,
-                          register_info_type *reg_info)
+                          register_info_type *register_info)
 {
   int mcnt;
   /* Point to after the args to the start_memory.  */
@@ -5972,7 +6056,7 @@ group_match_null_string_p (unsigned char **p, unsigned char *end,
                      its number.  */
 
                   if (!alt_match_null_string_p (p1, p1 + mcnt - 3,
-                                                     reg_info))
+                                                     register_info))
                     return false;
 
                   /* Move to right after this alternative, including the
@@ -6001,7 +6085,7 @@ group_match_null_string_p (unsigned char **p, unsigned char *end,
                  the length of the alternative.  */
               EXTRACT_NUMBER (mcnt, p1 - 2);
 
-              if (!alt_match_null_string_p (p1, p1 + mcnt, reg_info))
+              if (!alt_match_null_string_p (p1, p1 + mcnt, register_info))
                 return false;
 
               p1 += mcnt;      /* Get past the n-th alternative.  */
@@ -6016,7 +6100,7 @@ group_match_null_string_p (unsigned char **p, unsigned char *end,
 
 
         default:
-          if (!common_op_match_null_string_p (&p1, end, reg_info))
+          if (!common_op_match_null_string_p (&p1, end, register_info))
             return false;
         }
     } /* while p1 < end */
@@ -6031,7 +6115,7 @@ group_match_null_string_p (unsigned char **p, unsigned char *end,
 
 static re_bool
 alt_match_null_string_p (unsigned char *p, unsigned char *end,
-                        register_info_type *reg_info)
+                        register_info_type *register_info)
 {
   int mcnt;
   unsigned char *p1 = p;
@@ -6051,7 +6135,7 @@ alt_match_null_string_p (unsigned char *p, unsigned char *end,
           break;
 
        default:
-          if (!common_op_match_null_string_p (&p1, end, reg_info))
+          if (!common_op_match_null_string_p (&p1, end, register_info))
             return false;
         }
     }  /* while p1 < end */
@@ -6067,7 +6151,7 @@ alt_match_null_string_p (unsigned char *p, unsigned char *end,
 
 static re_bool
 common_op_match_null_string_p (unsigned char **p, unsigned char *end,
-                              register_info_type *reg_info)
+                              register_info_type *register_info)
 {
   int mcnt;
   re_bool ret;
@@ -6095,13 +6179,14 @@ common_op_match_null_string_p (unsigned char **p, unsigned char *end,
     case start_memory:
       reg_no = *p1;
       assert (reg_no > 0 && reg_no <= MAX_REGNUM);
-      ret = group_match_null_string_p (&p1, end, reg_info);
+      ret = group_match_null_string_p (&p1, end, register_info);
 
       /* Have to set this here in case we're checking a group which
          contains a group and a back reference to it.  */
 
-      if (REG_MATCH_NULL_STRING_P (reg_info[reg_no]) == MATCH_NULL_UNSET_VALUE)
-        REG_MATCH_NULL_STRING_P (reg_info[reg_no]) = ret;
+      if (REG_MATCH_NULL_STRING_P (register_info[reg_no]) ==
+         MATCH_NULL_UNSET_VALUE)
+        REG_MATCH_NULL_STRING_P (register_info[reg_no]) = ret;
 
       if (!ret)
         return false;
@@ -6132,7 +6217,7 @@ common_op_match_null_string_p (unsigned char **p, unsigned char *end,
       break;
 
     case duplicate:
-      if (!REG_MATCH_NULL_STRING_P (reg_info[*p1]))
+      if (!REG_MATCH_NULL_STRING_P (register_info[*p1]))
         return false;
       break;
 
@@ -6294,6 +6379,8 @@ re_exec (const char *s)
      `newline_anchor' to REG_NEWLINE being set in CFLAGS;
      `fastmap' and `fastmap_accurate' to zero;
      `re_nsub' to the number of subexpressions in PATTERN.
+     (non-shy of course.  POSIX probably doesn't know about
+     shy ones, and in any case they should be invisible.)
 
    PATTERN is the address of the pattern string.
 
@@ -6336,7 +6423,7 @@ regcomp (regex_t *preg, const char *pattern, int cflags)
 
   if (cflags & REG_ICASE)
     {
-      unsigned i;
+      int i;
 
       preg->translate = (char *) malloc (CHAR_SET_SIZE);
       if (preg->translate == NULL)
@@ -6463,7 +6550,7 @@ regerror (int errcode, const regex_t *preg, char *errbuf,
        to this routine.  If we are given anything else, or if other regex
        code generates an invalid error code, then the program has a bug.
        Dump core so we can fix it.  */
-    abort ();
+    ABORT ();
 
   msg = gettext (re_error_msgid[errcode]);
 
index ba76d43..cf98b64 100644 (file)
@@ -1,4 +1,4 @@
-/* scrollbar implementation -- X interface.
+/* scrollbar implementation -- GTK interface.
    Copyright (C) 1994, 1995 Board of Trustees, University of Illinois.
    Copyright (C) 1994 Amdhal Corporation.
    Copyright (C) 1995 Sun Microsystems, Inc.
@@ -98,8 +98,9 @@ gtk_create_scrollbar_instance (struct frame *f, int vertical,
   SCROLLBAR_GTK_VDRAG_ORIG_VALUE (instance) = -1;
   SCROLLBAR_GTK_LAST_VALUE (instance) = adj->value;
 
-  gtk_object_set_data (GTK_OBJECT (adj), "xemacs::gui_id", (void *) SCROLLBAR_GTK_ID (instance));
-  gtk_object_set_data (GTK_OBJECT (adj), "xemacs::frame", f);
+  gtk_object_set_data (GTK_OBJECT (adj), GTK_DATA_GUI_IDENTIFIER,
+                      (void *) SCROLLBAR_GTK_ID (instance));
+  gtk_object_set_data (GTK_OBJECT (adj), GTK_DATA_FRAME_IDENTIFIER, f);
   gtk_object_set_data (GTK_OBJECT (adj), "xemacs::sb_instance", instance);
 
   sb = GTK_SCROLLBAR (vertical ? gtk_vscrollbar_new (adj) : gtk_hscrollbar_new (adj));
@@ -217,6 +218,21 @@ gtk_update_scrollbar_instance_status (struct window *w, int active, int size,
              gtk_widget_set_usize (wid,
                                    pos_data->scrollbar_width,
                                    pos_data->scrollbar_height);
+
+             /*
+               UGLY! UGLY! UGLY!  Changes to wid->allocation are queued and
+               not performed until the GTK event loop.  However, when the
+               fontlock progress bar is run, the vertical scrollbar's height
+               is change and then changed back before events are again
+               processed.  This means that the change back is not seen and
+               the scrollbar is left too short.  Fix this by making the
+               change manually so the test above sees the change.  This does
+               not seem to cause problems in other cases.
+              */
+
+             wid->allocation.width = pos_data->scrollbar_width;
+             wid->allocation.height = pos_data->scrollbar_height;
+
              modified_p = 1;
            }
 
@@ -228,6 +244,21 @@ gtk_update_scrollbar_instance_status (struct window *w, int active, int size,
                              wid,
                              pos_data->scrollbar_x,
                              pos_data->scrollbar_y);
+
+             /*
+               UGLY! UGLY! UGLY!  Changes to wid->allocation are queued and
+               not performed until the GTK event loop.  However, when the
+               fontlock progress bar is run, the horizontal scrollbar's
+               position is change and then changed back before events are
+               again processed.  This means that the change back is not seen
+               and the scrollbar is left in the wrong position.  Fix this by
+               making the change manually so the test above sees the change.
+               This does not seem to cause problems in other cases.
+              */
+
+             wid->allocation.x = pos_data->scrollbar_x;
+             wid->allocation.y = pos_data->scrollbar_y;
+
              modified_p = 1;
            }
 
@@ -333,7 +364,7 @@ gtk_scrollbar_loop (enum gtk_scrollbar_loop type, Lisp_Object window,
                }
              break;
            default:
-             abort ();
+             ABORT ();
            }
        }
 
@@ -359,9 +390,9 @@ scrollbar_cb (GtkAdjustment *adj, gpointer user_data)
 {
   /* This function can GC */
   int vertical = (int) user_data;
-  struct frame *f = gtk_object_get_data (GTK_OBJECT (adj), "xemacs::frame");
+  struct frame *f = gtk_object_get_data (GTK_OBJECT (adj), GTK_DATA_FRAME_IDENTIFIER);
   struct scrollbar_instance *instance = gtk_object_get_data (GTK_OBJECT (adj), "xemacs::sb_instance");
-  GUI_ID id = (GUI_ID) gtk_object_get_data (GTK_OBJECT (adj), "xemacs::gui_id");
+  GUI_ID id = (GUI_ID) gtk_object_get_data (GTK_OBJECT (adj), GTK_DATA_GUI_IDENTIFIER);
   Lisp_Object win, frame;
   struct window_mirror *mirror;
   Lisp_Object event_type = Qnil;
@@ -407,7 +438,7 @@ scrollbar_cb (GtkAdjustment *adj, gpointer user_data)
       event_data = Fcons (win, make_int ((int)adj->value));
       break;
     default:
-      abort();
+      ABORT();
     }
 
   signal_special_gtk_user_event (frame, event_type, event_data);
@@ -431,13 +462,13 @@ gtk_scrollbar_pointer_changed_in_window (struct window *w)
 void
 gtk_update_frame_scrollbars (struct frame *f)
 {
-  /* Consider this code to be "in_display" so that we abort() if Fsignal()
+  /* Consider this code to be "in_display" so that we ABORT() if Fsignal()
      gets called. */
   in_display++;
   gtk_scrollbar_loop (GTK_UPDATE_FRAME_SCROLLBARS, f->root_window, f->root_mirror,
                      0, (GdkWindow *) NULL);
   in_display--;
-  if (in_display < 0) abort ();
+  if (in_display < 0) ABORT ();
 }
 
 #ifdef MEMORY_USAGE_STATS
index 97ae5e1..7ca50a6 100644 (file)
@@ -110,7 +110,6 @@ Lisp_Object Vskip_chars_range_table;
 
 static void set_search_regs (struct buffer *buf, Bufpos beg, Charcount len);
 static void clear_unused_search_regs (struct re_registers *regp, int no_sub);
-/* #### according to comment in 21.5, unnecessary */
 static void save_search_regs (void);
 static Bufpos simple_search (struct buffer *buf, Bufbyte *base_pat,
                             Bytecount len, Bytind pos, Bytind lim,
@@ -1090,7 +1089,7 @@ search_command (Lisp_Object string, Lisp_Object limit, Lisp_Object noerror,
       if (!EQ (noerror, Qt))
        {
          if (lim < BUF_BEGV (buf) || lim > BUF_ZV (buf))
-           abort ();
+           ABORT ();
          BUF_SET_PT (buf, lim);
          return Qnil;
 #if 0 /* This would be clean, but maybe programs depend on
@@ -1103,7 +1102,7 @@ search_command (Lisp_Object string, Lisp_Object limit, Lisp_Object noerror,
     }
 
   if (np < BUF_BEGV (buf) || np > BUF_ZV (buf))
-    abort ();
+    ABORT ();
 
   BUF_SET_PT (buf, np);
 
@@ -2778,9 +2777,9 @@ match_limit (Lisp_Object num, int beginningp)
 
   CHECK_INT (num);
   n = XINT (num);
-  if (n < 0 || n >= search_regs.num_regs)
+  if (n < 0 || search_regs.num_regs <= 0)
     args_out_of_range (num, make_int (search_regs.num_regs));
-  if (search_regs.num_regs == 0 ||
+  if (n >= search_regs.num_regs ||
       search_regs.start[n] < 0)
     return Qnil;
   return make_int (beginningp ? search_regs.start[n] : search_regs.end[n]);
@@ -2859,7 +2858,7 @@ to hold all the values, and if INTEGERS is non-nil, no consing is done.
            }
          else
            /* last_thing_searched must always be Qt, a buffer, or Qnil.  */
-           abort ();
+           ABORT ();
 
          len = i;
        }
@@ -2901,11 +2900,8 @@ LIST should have been created by calling `match-data' previously.
   int num_regs;
   int length;
 
-#if 0
-  /* #### according to 21.5 comment, unnecessary */
   if (running_asynch_code)
     save_search_regs ();
-#endif
 
   CONCHECK_LIST (list);
 
@@ -2968,7 +2964,6 @@ LIST should have been created by calling `match-data' previously.
   return Qnil;
 }
 
-/* #### according to 21.5 comment, unnecessary */
 /* If non-zero the match data have been saved in saved_search_regs
    during the execution of a sentinel or filter. */
 static int search_regs_saved;
@@ -2992,8 +2987,6 @@ save_search_regs (void)
     }
 }
 
-/* #### according to 21.5 comment, unnecessary
-   prototype in lisp.h, all calls in process.c */
 /* Called upon exit from filters and sentinels. */
 void
 restore_match_data (void)
index 835c7a5..bb26cc5 100644 (file)
@@ -382,7 +382,7 @@ motif_clipboard_cb (Widget widget, int *data_id, int *private_id, int *reason)
        Window window = (Window) *private_id;
        Lisp_Object selection = select_convert_out (QCLIPBOARD, Qnil, Qnil);
 
-       /* Whichever lazy git wrote this originally just called abort()
+       /* Whichever lazy git wrote this originally just called ABORT()
           when anything didn't go their way... */
 
        /* Try some other text types */
index 1bdd929..db4fbe4 100644 (file)
@@ -735,7 +735,7 @@ Set SYMBOL's property list to NEWPLIST, and return NEWPLIST.
 #if 0 /* Inserted for debugging 6/28/1997 -slb */
   /* Somebody is setting a property list of integer 0, who? */
   /* Not this way apparently. */
-  if (EQ(newplist, Qzero)) abort();
+  if (EQ(newplist, Qzero)) ABORT();
 #endif
 
   XSYMBOL (symbol)->plist = newplist;
@@ -1118,7 +1118,7 @@ do_symval_forwarding (Lisp_Object valcontents, struct buffer *buffer,
       return valcontents;
 
     default:
-      abort ();
+      ABORT ();
     }
   return Qnil; /* suppress compiler warning */
 }
@@ -1294,7 +1294,7 @@ store_symval_forwarding (Lisp_Object sym, Lisp_Object ovalue,
          return;
 
        default:
-         abort ();
+         ABORT ();
        }
     }
 }
@@ -1890,7 +1890,7 @@ Set SYMBOL's value to NEWVAL, and return NEWVAL.
        break;
       }
     default:
-      abort ();
+      ABORT ();
     }
   store_symval_forwarding (symbol, valcontents, newval);
 
@@ -2159,7 +2159,7 @@ sets it.
          return variable;
 
        default:
-         abort ();
+         ABORT ();
        }
     }
 
@@ -2269,7 +2269,7 @@ Use `make-local-hook' instead.
          }
 
        default:
-         abort ();
+         ABORT ();
        }
     }
 
@@ -2344,7 +2344,7 @@ Use `make-local-hook' instead.
          break;
 
        default:
-         abort ();
+         ABORT ();
        }
     }
 
@@ -2662,7 +2662,7 @@ The returned info will be a symbol, one of
     case SYMVAL_UNBOUND_MARKER:                        return Qnil;
 
     default:
-      abort (); return Qnil;
+      ABORT (); return Qnil;
     }
 }
 
@@ -2860,7 +2860,7 @@ decode_magic_handler_type (Lisp_Object symbol)
   if (EQ (symbol, Qmake_local))      return MAGIC_HANDLER_MAKE_LOCAL;
 
   signal_simple_error ("Unrecognized symbol value handler type", symbol);
-  abort ();
+  ABORT ();
   return MAGIC_HANDLER_MAX;
 }
 
@@ -2893,7 +2893,7 @@ handler_type_from_function_symbol (Lisp_Object funsym, int abort_if_not_found)
     return MAGIC_HANDLER_MAKE_LOCAL;
 
   if (abort_if_not_found)
-    abort ();
+    ABORT ();
   signal_simple_error ("Unrecognized symbol-value function", funsym);
   return MAGIC_HANDLER_MAX;
 }
index 5e495b7..2b3ebf8 100644 (file)
@@ -416,7 +416,7 @@ update_syntax_cache (int pos, int count)
   else
     {
       tmp_table = Qnil;        /* silence compiler */
-      /* Always aborts.  #### Is there another sensible thing to do here? */
+      /* Always ABORTs.  #### Is there another sensible thing to do here? */
       assert (BUFFERP (syntax_cache.object) || STRINGP (syntax_cache.object));
     }
 
index c0b6132..b9c1184 100644 (file)
@@ -389,7 +389,7 @@ gtk_get_button_size (struct frame *f, Lisp_Object window,
        (frame)->right_toolbar_was_visible = flag;                      \
        break;                                                          \
       default:                                                         \
-       abort ();                                                       \
+       ABORT ();                                                       \
       }                                                                        \
   } while (0)
 
index ed6c280..61e7a18 100644 (file)
@@ -401,7 +401,7 @@ x_get_button_size (struct frame *f, Lisp_Object window,
        (frame)->right_toolbar_was_visible = flag;                      \
        break;                                                          \
       default:                                                         \
-       abort ();                                                       \
+       ABORT ();                                                       \
       }                                                                        \
   } while (0)
 
index c7ddd3e..f148803 100644 (file)
@@ -36,6 +36,7 @@ static GHashTable *dll_cache;
 
 Lisp_Object gtk_type_to_lisp (GtkArg *arg);
 int lisp_to_gtk_type (Lisp_Object obj, GtkArg *arg);
+int lisp_to_gtk_ret_type (Lisp_Object obj, GtkArg *arg);
 void describe_gtk_arg (GtkArg *arg);
 guint symbol_to_enum (Lisp_Object obj, GtkType t);
 static guint lisp_to_flag (Lisp_Object obj, GtkType t);
@@ -960,7 +961,7 @@ Lisp_Object build_gtk_object (GtkObject *obj)
   emacs_gtk_object_data *data = NULL;
   GUI_ID id = 0;
 
-  id = (GUI_ID) gtk_object_get_data (obj, "xemacs::gui_id");
+  id = (GUI_ID) gtk_object_get_data (obj, GTK_DATA_GUI_IDENTIFIER);
 
   if (id)
     {
@@ -976,7 +977,7 @@ Lisp_Object build_gtk_object (GtkObject *obj)
       XSETGTK_OBJECT (retval, data);
 
       id = new_gui_id ();
-      gtk_object_set_data (obj, "xemacs::gui_id", (gpointer) id);
+      gtk_object_set_data (obj, GTK_DATA_GUI_IDENTIFIER, (gpointer) id);
       gcpro_popup_callbacks (id, retval);
       gtk_object_ref (obj);
       gtk_signal_connect (obj, "destroy", GTK_SIGNAL_FUNC (__notice_object_destruction), (gpointer)id);
@@ -1035,7 +1036,7 @@ __internal_callback_marshal (GtkObject *obj, gpointer data, guint n_args, GtkArg
   signal_fake_event ();
 
   if (args[n_args].type != GTK_TYPE_NONE)
-    lisp_to_gtk_type (rval, &args[n_args]);
+    lisp_to_gtk_ret_type (rval, &args[n_args]);
 
   UNGCPRO;
 }
@@ -1155,7 +1156,7 @@ Lisp_Object build_gtk_boxed (void *obj, GtkType t)
   emacs_gtk_boxed_data *data = NULL;
 
   if (GTK_FUNDAMENTAL_TYPE (t) != GTK_TYPE_BOXED)
-    abort();
+    ABORT();
 
   data = allocate_emacs_gtk_boxed_data ();
   data->object = obj;
@@ -1420,13 +1421,13 @@ void describe_gtk_arg (GtkArg *arg)
       /* structured types */
     case GTK_TYPE_SIGNAL:
     case GTK_TYPE_ARGS: /* This we can do as a list of values */
-      abort();
+      ABORT();
     case GTK_TYPE_CALLBACK:
       stderr_out ("callback fn: ...\n");
       break;
     case GTK_TYPE_C_CALLBACK:
     case GTK_TYPE_FOREIGN:
-      abort();
+      ABORT();
 
       /* base type of the object system */
     case GTK_TYPE_OBJECT:
@@ -1437,7 +1438,7 @@ void describe_gtk_arg (GtkArg *arg)
       break;
 
     default:
-      abort();
+      ABORT();
     }
 }
 
@@ -1517,7 +1518,7 @@ Lisp_Object gtk_type_to_lisp (GtkArg *arg)
            }
        }
       stderr_out ("Do not know how to convert `%s' to lisp!\n", gtk_type_name (arg->type));
-      abort ();
+      ABORT ();
     }
   /* This is chuck reminding GCC to... SHUT UP! */
   return (Qnil);
@@ -1570,7 +1571,7 @@ int lisp_to_gtk_type (Lisp_Object obj, GtkArg *arg)
       break;
     case GTK_TYPE_LONG:
     case GTK_TYPE_ULONG:
-      abort();
+      ABORT();
     case GTK_TYPE_FLOAT:
       CHECK_INT_OR_FLOAT (obj);
       GTK_VALUE_FLOAT(*arg) = extract_float (obj);
@@ -1788,7 +1789,286 @@ int lisp_to_gtk_type (Lisp_Object obj, GtkArg *arg)
       else
        {
          stderr_out ("Do not know how to convert `%s' from lisp!\n", gtk_type_name (arg->type));
-         abort();
+         ABORT();
+       }
+      break;
+    }
+
+  return (0);
+}
+
+/* Convert lisp types to GTK return types.  This is identical to
+   lisp_to_gtk_type() except that the macro used to set the value is
+   different.
+
+   ### There should be some way of combining these two functions.
+*/
+int lisp_to_gtk_ret_type (Lisp_Object obj, GtkArg *arg)
+{
+  switch (GTK_FUNDAMENTAL_TYPE (arg->type))
+    {
+      /* flag types */
+    case GTK_TYPE_NONE:
+      return (0);
+    case GTK_TYPE_CHAR:
+      {
+       Emchar c;
+
+       CHECK_CHAR_COERCE_INT (obj);
+       c = XCHAR (obj);
+       *(GTK_RETLOC_CHAR (*arg)) = c;
+      }
+      break;
+    case GTK_TYPE_UCHAR:
+      {
+       Emchar c;
+
+       CHECK_CHAR_COERCE_INT (obj);
+       c = XCHAR (obj);
+       *(GTK_RETLOC_CHAR (*arg)) = c;
+      }
+      break;
+    case GTK_TYPE_BOOL:
+      *(GTK_RETLOC_BOOL (*arg)) = NILP (obj) ? FALSE : TRUE;
+      break;
+    case GTK_TYPE_INT:
+    case GTK_TYPE_UINT:
+      if (NILP (obj) || EQ (Qt, obj))
+       {
+         /* For we are a kind mistress and allow sending t/nil for
+             1/0 to stupid GTK functions that say they take guint or
+             gint in the header files, but actually treat it like a
+             bool.  *sigh*
+         */
+         *(GTK_RETLOC_INT(*arg)) = NILP (obj) ? 0 : 1;
+       }
+      else
+       {
+         CHECK_INT (obj);
+         *(GTK_RETLOC_INT(*arg)) = XINT (obj);
+       }
+      break;
+    case GTK_TYPE_LONG:
+    case GTK_TYPE_ULONG:
+      ABORT();
+    case GTK_TYPE_FLOAT:
+      CHECK_INT_OR_FLOAT (obj);
+      *(GTK_RETLOC_FLOAT(*arg)) = extract_float (obj);
+      break;
+    case GTK_TYPE_DOUBLE:
+      CHECK_INT_OR_FLOAT (obj);
+      *(GTK_RETLOC_DOUBLE(*arg)) = extract_float (obj);
+      break;
+    case GTK_TYPE_STRING:
+      if (NILP (obj))
+       *(GTK_RETLOC_STRING (*arg)) = NULL;
+      else
+       {
+         CHECK_STRING (obj);
+         *(GTK_RETLOC_STRING (*arg)) = (char *) XSTRING_DATA (obj);
+       }
+      break;
+    case GTK_TYPE_ENUM:
+    case GTK_TYPE_FLAGS:
+      /* Convert a lisp symbol to a GTK enum */
+      *(GTK_RETLOC_ENUM(*arg)) = lisp_to_flag (obj, arg->type);
+      break;
+    case GTK_TYPE_BOXED:
+      if (NILP (obj))
+       {
+         *(GTK_RETLOC_BOXED(*arg)) = NULL;
+       }
+      else if (GTK_BOXEDP (obj))
+       {
+         *(GTK_RETLOC_BOXED(*arg)) = XGTK_BOXED (obj)->object;
+       }
+      else if (arg->type == GTK_TYPE_STYLE)
+       {
+         obj = Ffind_face (obj);
+         CHECK_FACE (obj);
+         *(GTK_RETLOC_BOXED(*arg)) = face_to_style (obj);
+       }
+      else if (arg->type == GTK_TYPE_GDK_GC)
+       {
+         obj = Ffind_face (obj);
+         CHECK_FACE (obj);
+         *(GTK_RETLOC_BOXED(*arg)) = face_to_gc (obj);
+       }
+      else if (arg->type == GTK_TYPE_GDK_WINDOW)
+       {
+         if (GLYPHP (obj))
+           {
+             Lisp_Object window = Fselected_window (Qnil);
+             Lisp_Object instance = glyph_image_instance (obj, window, ERROR_ME_NOT, 1);
+             struct Lisp_Image_Instance *p = XIMAGE_INSTANCE (instance);
+
+             switch (XIMAGE_INSTANCE_TYPE (instance))
+               {
+               case IMAGE_TEXT:
+               case IMAGE_POINTER:
+               case IMAGE_SUBWINDOW:
+               case IMAGE_NOTHING:
+                 *(GTK_RETLOC_BOXED(*arg)) = NULL;
+                 break;
+
+               case IMAGE_MONO_PIXMAP:
+               case IMAGE_COLOR_PIXMAP:
+                 *(GTK_RETLOC_BOXED(*arg)) = IMAGE_INSTANCE_GTK_PIXMAP (p);
+                 break;
+               }
+           }
+         else if (GTK_OBJECTP (obj) && GTK_IS_WIDGET (XGTK_OBJECT (obj)->object))
+           {
+             *(GTK_RETLOC_BOXED(*arg)) = GTK_WIDGET (XGTK_OBJECT (obj))->window;
+           }
+         else
+           {
+             signal_simple_error ("Don't know how to convert object to GDK_WINDOW", obj);
+           }
+         break;
+       }
+      else if (arg->type == GTK_TYPE_GDK_COLOR)
+       {
+         if (COLOR_SPECIFIERP (obj))
+           {
+             /* If it is a specifier, we just convert it to an
+                 instance, and let the ifs below handle it.
+             */
+             obj = Fspecifier_instance (obj, Qnil, Qnil, Qnil);
+           }
+         
+         if (COLOR_INSTANCEP (obj))
+           {
+             /* Easiest one */
+             *(GTK_RETLOC_BOXED(*arg)) = COLOR_INSTANCE_GTK_COLOR (XCOLOR_INSTANCE (obj));
+           }
+         else if (STRINGP (obj))
+           {
+             signal_simple_error ("Please use a color specifier or instance, not a string", obj);
+           }
+         else
+           {
+             signal_simple_error ("Don't know hot to convert to GdkColor", obj);
+           }
+       }
+      else if (arg->type == GTK_TYPE_GDK_FONT)
+       {
+         if (SYMBOLP (obj))
+           {
+             /* If it is a symbol, we treat that as a face name */
+             obj = Ffind_face (obj);
+           }
+
+         if (FACEP (obj))
+           {
+             /* If it is a face, we just grab the font specifier, and
+                 cascade down until we finally reach a FONT_INSTANCE
+             */
+             obj = Fget (obj, Qfont, Qnil);
+           }
+
+         if (FONT_SPECIFIERP (obj))
+           {
+             /* If it is a specifier, we just convert it to an
+                 instance, and let the ifs below handle it
+             */
+             obj = Fspecifier_instance (obj, Qnil, Qnil, Qnil);
+           }
+
+         if (FONT_INSTANCEP (obj))
+           {
+             /* Easiest one */
+             *(GTK_RETLOC_BOXED(*arg)) = FONT_INSTANCE_GTK_FONT (XFONT_INSTANCE (obj));
+           }
+         else if (STRINGP (obj))
+           {
+             signal_simple_error ("Please use a font specifier or instance, not a string", obj);
+           }
+         else
+           {
+             signal_simple_error ("Don't know hot to convert to GdkColor", obj);
+           }
+       }
+      else
+       {
+         /* Unknown type to convert to boxed */
+         stderr_out ("Don't know how to convert to boxed!\n");
+         *(GTK_RETLOC_BOXED(*arg)) = NULL;
+       }
+      break;
+
+    case GTK_TYPE_POINTER:
+      if (NILP (obj))
+       *(GTK_RETLOC_POINTER(*arg)) = NULL;
+      else
+       *(GTK_RETLOC_POINTER(*arg)) = LISP_TO_VOID (obj);
+      break;
+
+      /* structured types */
+    case GTK_TYPE_SIGNAL:
+    case GTK_TYPE_ARGS: /* This we can do as a list of values */
+    case GTK_TYPE_C_CALLBACK:
+    case GTK_TYPE_FOREIGN:
+      stderr_out ("Do not know how to convert `%s' from lisp!\n", gtk_type_name (arg->type));
+      return (-1);
+
+#if 0
+      /* #### BILL! */
+      /* This is not used, and does not work with union type */
+    case GTK_TYPE_CALLBACK:
+      {
+       GUI_ID id;
+
+       id = new_gui_id ();
+       obj = Fcons (Qnil, obj); /* Empty data */
+       obj = Fcons (make_int (id), obj);
+
+       gcpro_popup_callbacks (id, obj);
+
+       *(GTK_RETLOC_CALLBACK(*arg)).marshal = __internal_callback_marshal;
+       *(GTK_RETLOC_CALLBACK(*arg)).data = (gpointer) obj;
+       *(GTK_RETLOC_CALLBACK(*arg)).notify = __internal_callback_destroy;
+      }
+      break;
+#endif
+
+      /* base type of the object system */
+    case GTK_TYPE_OBJECT:
+      if (NILP (obj))
+       *(GTK_RETLOC_OBJECT (*arg)) = NULL;
+      else
+       {
+         CHECK_GTK_OBJECT (obj);
+         if (XGTK_OBJECT (obj)->alive_p)
+           *(GTK_RETLOC_OBJECT (*arg)) = XGTK_OBJECT (obj)->object;
+         else
+           signal_simple_error ("Attempting to pass dead object to GTK function", obj);
+       }
+      break;
+
+    default:
+      if (GTK_FUNDAMENTAL_TYPE (arg->type) == GTK_TYPE_ARRAY)
+       {
+         if (NILP (obj))
+           *(GTK_RETLOC_POINTER(*arg)) = NULL;
+         else
+           {
+             xemacs_list_to_array (obj, arg);
+           }
+       }
+      else if (GTK_FUNDAMENTAL_TYPE (arg->type) == GTK_TYPE_LISTOF)
+       {
+         if (NILP (obj))
+           *(GTK_RETLOC_POINTER(*arg)) = NULL;
+         else
+           {
+             xemacs_list_to_gtklist (obj, arg);
+           }
+       }
+      else
+       {
+         stderr_out ("Do not know how to convert `%s' from lisp!\n", gtk_type_name (arg->type));
+         ABORT();
        }
       break;
     }
@@ -1863,7 +2143,7 @@ lisp_to_flag (Lisp_Object obj, GtkType t)
     }
   else
     {
-      /* abort ()? */
+      /* ABORT ()? */
     }
   return (val);
 }
index 4d962b3..c3eaffb 100644 (file)
@@ -233,7 +233,7 @@ the Assert macro checks for correctness."
   ;; Test strings waxing and waning across the 8k BIG_STRING limit (see alloc.c)
   ;;---------------------------------------------------------------
   (defun charset-char-string (charset)
-    (let (lo hi string n)
+    (let (lo hi string n (gc-cons-threshold most-positive-fixnum))
       (if (= (charset-chars charset) 94)
          (setq lo 33 hi 126)
        (setq lo 32 hi 127))
@@ -245,6 +245,7 @@ the Assert macro checks for correctness."
              (progn
                (aset string n (make-char charset j))
                (incf n)))
+           (garbage-collect)
            string)
        (progn
          (setq string (make-string (* (1+ (- hi lo)) (1+ (- hi lo))) ??))
@@ -254,6 +255,7 @@ the Assert macro checks for correctness."
              (progn
                (aset string n (make-char charset j k))
                (incf n))))
+         (garbage-collect)
          string))))
 
   ;; The following two used to crash xemacs!
@@ -302,6 +304,12 @@ the Assert macro checks for correctness."
     ;; This is how you suppress output from `message', called by `write-region'
     (flet ((append-message (&rest args) ()))
       (Assert (not (equal name1 name2)))
+      ;; Kludge to handle Mac OS X which groks only UTF-8.
+      (cond ((eq system-type 'darwin)
+            (Check-Error-Message 'file-error "Opening output file"
+             (write-region (point-min) (point-max) name1))
+            (require 'un-define)
+            (setq file-name-coding-system 'utf-8)))
       (Assert (not (file-exists-p name1)))
       (write-region (point-min) (point-max) name1)
       (Assert (file-exists-p name1))
index fde7991..816868f 100644 (file)
@@ -385,3 +385,67 @@ baaaa
                          (string-match "b" a)
                          (match-string 1 a))
                   a)))
+
+;; bug identified by Katsumi Yamaoka 2004-09-03 <b9ywtzbbpue.fsf_-_@jpl.org>
+;; fix submitted by sjt 2004-09-08
+;; trailing comments are values from buggy 21.4.15
+(let ((text "abc"))
+  (Assert (eq 0 (string-match "\\(?:ab+\\)*c" text)))  ; 2
+  (Assert (eq 0 (string-match "^\\(?:ab+\\)*c" text))) ; nil
+  (Assert (eq 0 (string-match "^\\(?:ab+\\)*" text)))  ; 0
+  (Assert (eq 0 (string-match "^\\(?:ab+\\)c" text)))  ; 0
+  (Assert (eq 0 (string-match "^\\(?:ab\\)*c" text)))  ; 0
+  (Assert (eq 0 (string-match "^\\(?:a+\\)*b" text)))  ; nil
+  (Assert (eq 0 (string-match "^\\(?:a\\)*b" text)))   ; 0
+)
+
+;; per Steve Youngs 2004-09-30 <microsoft-free.87ekkjhj7t.fsf@youngs.au.com>
+;; fix submitted by sjt 2004-10-07
+;; trailing comments are values from buggy 21.4.pre16
+(let ((text "abc"))
+  (Assert (eq 0 (string-match "\\(?:a\\(b\\)\\)" text)))       ; 0
+  (Assert (string= (match-string 1 text) "b"))                 ; ab
+  (Assert (null (match-string 2 text)))                                ; b
+  (Assert (null (match-string 3 text)))                                ; nil
+  (Assert (eq 0 (string-match "\\(?:a\\(?:b\\(c\\)\\)\\)" text)))      ; 0
+  (Assert (string= (match-string 1 text) "c"))                 ; abc
+  (Assert (null (match-string 2 text)))                                ; ab
+  (Assert (null (match-string 3 text)))                                ; c
+  (Assert (null (match-string 4 text)))                                ; nil
+)
+
+;; trivial subpatterns and backreferences with shy groups
+(let ((text1 "abb")
+      (text2 "aba")
+      (re0 "\\(a\\)\\(b\\)\\2")
+      (re1 "\\(?:a\\)\\(b\\)\\2")
+      (re2 "\\(?:a\\)\\(b\\)\\1")
+      (re3 "\\(a\\)\\(?:b\\)\\1"))
+
+  (Assert (eq 0 (string-match re0 text1)))
+  (Assert (string= text1 (match-string 0 text1)))
+  (Assert (string= "a" (match-string 1 text1)))
+  (Assert (string= "b" (match-string 2 text1)))
+  (Assert (null (string-match re0 text2)))
+
+  (Check-Error-Message 'invalid-regexp "Invalid back reference"
+                      (string-match re1 text1))
+
+  (Assert (eq 0 (string-match re2 text1)))
+  (Assert (string= text1 (match-string 0 text1)))
+  (Assert (string= "b" (match-string 1 text1)))
+  (Assert (null (match-string 2 text1)))
+  (Assert (null (string-match re2 text2)))
+
+  (Assert (null (string-match re3 text1)))
+  (Assert (eq 0 (string-match re3 text2)))
+  (Assert (string= text2 (match-string 0 text2)))
+  (Assert (string= "a" (match-string 1 text2)))
+  (Assert (null (match-string 2 text2)))
+
+  ;; Test Arnaud Giersch's shy group fix
+  (Assert (progn (string-match "\\(a\\)" "a")  
+                (string-match "\\(?:a\\)" "a")  
+                (not (match-beginning 1))))
+)
+