Sync up with r21-4-15-chise-0_21-30. r21-4-15-u2km-0_21-30
authortomo <tomo>
Sat, 24 Jul 2004 10:39:28 +0000 (10:39 +0000)
committertomo <tomo>
Sat, 24 Jul 2004 10:39:28 +0000 (10:39 +0000)
79 files changed:
ChangeLog
PROBLEMS
aclocal.m4
configure
configure.in
configure.usage
etc/OXYMORONS
etc/PACKAGES
etc/package-index.LATEST.pgp [deleted file]
lib-src/ChangeLog
lib-src/Makefile.in.in
lisp/ChangeLog
lisp/about.el
lisp/auto-autoloads.el
lisp/bytecomp.el
lisp/dumped-lisp.el
lisp/files.el
lisp/help.el
lisp/info.el
lisp/itimer.el
lisp/menubar-items.el
lisp/mule/mule-charset.el
lisp/obsolete.el
lisp/package-admin.el
lisp/package-get.el
lisp/package-info.el
lisp/package-net.el
lisp/package-ui.el
lisp/packages.el
lisp/specifier.el
lisp/update-elc.el
lisp/utf-2000/README.en
lisp/win32-native.el
lisp/window-xemacs.el
lwlib/ChangeLog
man/ChangeLog
man/custom.texi
man/internals/internals.texi
man/lispref/backups.texi
man/lispref/display.texi
man/lispref/ldap.texi
man/lispref/lispref.texi
man/lispref/markers.texi
man/lispref/menus.texi
man/lispref/numbers.texi
man/lispref/packaging.texi
man/lispref/postgresql.texi
man/lispref/specifiers.texi
man/lispref/tips.texi
man/new-users-guide/custom2.texi
man/new-users-guide/files.texi
man/new-users-guide/search.texi
man/xemacs-faq.texi
man/xemacs/custom.texi
man/xemacs/packages.texi
man/xemacs/reading.texi
man/xemacs/xemacs.texi
netinstall/ChangeLog
nt/ChangeLog
nt/minitar.c
nt/xemacs.mak
src/ChangeLog
src/buffer.c
src/data.c
src/device-x.c
src/elhash.c
src/event-msw.c
src/frame-x.c
src/opaque.h
src/regex.c
src/s/sol2.h
src/search.c
src/symbols.c
src/window.c
tests/ChangeLog
tests/automated/hash-table-tests.el
tests/automated/regexp-tests.el
tests/automated/test-harness.el
version.sh

index c0b7b52..efffe4c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
        * configure.in: Add new option `--with-utf-2000'; define `UTF2000'
        if it is specified.
 
+2004-02-02  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.15 is released
+
+2004-01-30  Vin Shelton  <acs@xemacs.org>
+
+       * etc/OXYMORONS: Inserted "Corporate Culture" for 21.4.15.
+
+2004-01-25  Steve Youngs  <youngs@xemacs.org>
+
+       * etc/package-index.LATEST.gpg: New, replaces
+       `package-index.LATEST.pgp'. 
+
+       * etc/package-index.LATEST.pgp: Removed, replaced with
+       `package-index.LATEST.gpg'. 
+
+2004-01-20  Jerry James  <james@xemacs.org>
+
+       * configure.in: The icc compiler pretends to be gcc.  It isn't.
+
+2003-11-28  Norbert Koch  <viteno@xemacs.org>
+
+       * etc/PACKAGES (ERC): new.
+
+2003-11-19  Vin Shelton  <acs@xemacs.org>
+
+       * configure.usage (--with-widgets): widgets now defaults to
+       --with-widgets=no.  Patch inspired by Jim Schumacher.
+
+2003-10-25  Norbert Koch  <viteno@xemacs.org>
+
+       * etc/PACKAGES (riece): New package.
+       * etc/PACKAGES (liece): Mark as deprecated.
+
+2003-10-26  Vin Shelton  <acs@xemacs.org>
+
+       * configure.in: Add Intel C++ compiler detection to compiler
+       version reporting.
+
+2003-10-16  Valdis Kletnieks <valdis.kletnieks@vt.edu>
+       * configure.in: record additional info about compiler and libc
+       versions, to assist in debugging.
+
+2003-08-28  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * configure.in (line 3573):
+       (Mule input methods):
+       Deprecate Motif for Linux.
+       (Installation): Report when LessTif is used.
+
+2003-10-11  Jerry James  <james@xemacs.org>
+
+       * configure.in: installexe.sh is under srcdir, not blddir.
+
+2003-10-16  Jerry James  <james@xemacs.org>
+       * aclocal.m4: Add icc (Intel compiler) support.
+       * configure.in: Ditto.
+
+2003-09-13  Martin Buchholz  <martin@xemacs.org>
+
+       * configure.in (OS_RELEASE): Add support for SunOS 5.10.
+       On current OSes produced by Sun, `uname -r' prints "5.9".
+       It seems likely that on future OSes, `uname -r' will print "5.10".
+       We need to accept multi-digit release numbers.
+
+2003-09-12  Rodney Sparapani <rsparapa@mcw.edu>
+
+       * PROBLEMS: Propose bash as an alternative to buggy Solaris
+       /bin/sh.
+
+2003-09-10  Martin Buchholz  <martin@xemacs.org>
+
+       * configure.in: XEmacs failed to build on Solaris9.
+       Solaris9 comes with /usr/demo/SOUND, but no headers or libraries
+       therein.
+
 2003-09-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.14 is released
index 7dca91c..93f8825 100644 (file)
--- a/PROBLEMS
+++ b/PROBLEMS
@@ -445,7 +445,14 @@ for just those modules.  (Or use gcc).
 
 This only occurs if you have LANG != C.  This is a known bug with
 /bin/sh fixed by installing Patch-ID# 101613-01.  Or, you can use
-bash, as a workaround.
+bash by setting the environment variable CONFIG_SHELL to /bin/bash
+
+*** Solaris 2.x configure fails: ./config.status: test: argument expected
+
+This is a known bug with /bin/sh and /bin/test, i.e. they do not
+support the XPG4 standard.  You can use bash as a workaround or an
+XPG4-compliant Bourne shell such as the Sun-supplied /usr/xpg4/bin/sh
+by setting the environment variable CONFIG_SHELL to /usr/xpg4/bin/sh
 
 *** On SunOS, you get linker errors
     ld: Undefined symbol
index 08c81c1..0dcfd2e 100644 (file)
@@ -84,7 +84,7 @@ AC_MSG_CHECKING(how to produce PIC code)
 wl=
 
 can_build_shared=yes
-if test "$XEGCC" = yes; then
+if test "$XEGCC" = yes -o "$__ICC" = yes; then
   wl='-Wl,'
 
   case "$xehost_os" in
@@ -243,7 +243,7 @@ cc_produces_so=no
 xldf=
 xcldf=
 AC_MSG_CHECKING(if C compiler can produce shared libraries)
-if test "$XEGCC" = yes; then
+if test "$XEGCC" = yes -o "$__ICC" = yes; then
   xcldf="-shared"
   xldf="-shared"
 else # Not using GCC
index 2af3f36..5398d7d 100755 (executable)
--- a/configure
+++ b/configure
@@ -1426,9 +1426,14 @@ case "$canonical" in
     esac
 
     case "$canonical" in
-      *-solaris*         )
+      *-solaris* )
        opsys=sol2
-       os_release=`uname -r | sed -e 's/^\([0-9]\)\.\([0-9]\).*/\1\2/'`
+       os_release_major=`uname -r | sed -e 's/^\([0-9]\{1,\}\)\.\([0-9]\{1,\}\).*/\1/'`
+       os_release_minor=`uname -r | sed -e 's/^\([0-9]\{1,\}\)\.\([0-9]\{1,\}\).*/\2/'`
+       case "$os_release_minor" in [0-9])
+         os_release_minor="0${os_release_minor}";;
+       esac
+       os_release="${os_release_major}${os_release_minor}"
        { test "$extra_verbose" = "yes" && cat << EOF
     Defining OS_RELEASE = $os_release
 EOF
@@ -1652,7 +1657,7 @@ xe_save_CFLAGS="$CFLAGS"
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1656: checking for $ac_word" >&5
+echo "configure:1661: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1679,7 +1684,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1683: checking for $ac_word" >&5
+echo "configure:1688: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1727,7 +1732,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1731: checking for $ac_word" >&5
+echo "configure:1736: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1756,7 +1761,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1760: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1765: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
@@ -1769,12 +1774,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 1773 "configure"
+#line 1778 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1802,19 +1807,19 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1806: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1811: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1811: checking whether we are using GNU C" >&5
+echo "configure:1816: checking whether we are using GNU C" >&5
 
 cat > conftest.c <<EOF
 #ifdef __GNUC__
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1818: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1823: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1832,7 +1837,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1836: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1841: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -1865,7 +1870,7 @@ if   test "$with_gcc" = "no"  -a "$GCC" = "yes"; then
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1869: checking for $ac_word" >&5
+echo "configure:1874: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1892,7 +1897,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1896: checking for $ac_word" >&5
+echo "configure:1901: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1940,7 +1945,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1944: checking for $ac_word" >&5
+echo "configure:1949: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1969,7 +1974,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1973: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1978: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
@@ -1982,12 +1987,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 1986 "configure"
+#line 1991 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1991: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -2015,19 +2020,19 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:2019: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:2024: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:2024: checking whether we are using GNU C" >&5
+echo "configure:2029: checking whether we are using GNU C" >&5
 
 cat > conftest.c <<EOF
 #ifdef __GNUC__
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2031: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2036: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -2045,7 +2050,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:2049: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2054: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -2078,7 +2083,7 @@ elif test "$with_gcc" = "yes" -a "$GCC" != "yes" ; then
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2082: checking for $ac_word" >&5
+echo "configure:2087: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2105,7 +2110,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2109: checking for $ac_word" >&5
+echo "configure:2114: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2153,7 +2158,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2157: checking for $ac_word" >&5
+echo "configure:2162: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2182,7 +2187,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:2186: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:2191: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
@@ -2195,12 +2200,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 2199 "configure"
+#line 2204 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:2204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -2228,19 +2233,19 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:2232: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:2237: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:2237: checking whether we are using GNU C" >&5
+echo "configure:2242: checking whether we are using GNU C" >&5
 
 cat > conftest.c <<EOF
 #ifdef __GNUC__
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2244: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2249: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -2258,7 +2263,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:2262: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2267: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -2295,7 +2300,7 @@ test -n "$CPP" -a -d "$CPP" && CPP=
 test -n "$NON_GNU_CPP" -a "$GCC" != "yes" -a -z "$CPP" && CPP="$NON_GNU_CPP"
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:2299: checking how to run the C preprocessor" >&5
+echo "configure:2304: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -2308,13 +2313,13 @@ if test -z "$CPP"; then
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 2312 "configure"
+#line 2317 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2318: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2323: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -2325,13 +2330,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 2329 "configure"
+#line 2334 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2335: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2340: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -2342,13 +2347,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 2346 "configure"
+#line 2351 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2352: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2357: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -2374,9 +2379,9 @@ echo "$ac_t""$CPP" 1>&6
 
 
 echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:2378: checking for AIX" >&5
+echo "configure:2383: checking for AIX" >&5
 cat > conftest.$ac_ext <<EOF
-#line 2380 "configure"
+#line 2385 "configure"
 #include "confdefs.h"
 #ifdef _AIX
   yes
@@ -2403,9 +2408,9 @@ rm -f conftest*
  
 
 echo $ac_n "checking for GNU libc""... $ac_c" 1>&6
-echo "configure:2407: checking for GNU libc" >&5
+echo "configure:2412: checking for GNU libc" >&5
 cat > conftest.$ac_ext <<EOF
-#line 2409 "configure"
+#line 2414 "configure"
 #include "confdefs.h"
 #include <features.h>
 int main() {
@@ -2417,7 +2422,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2421: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2426: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   have_glibc=yes
 else
@@ -2447,7 +2452,7 @@ cat >> confdefs.h <<\EOF
 EOF
 }
 
-      if test "$os_release" -ge 55; then
+      if test "$os_release" -ge 505; then
      { test "$extra_verbose" = "yes" && cat << \EOF
     Defining _XOPEN_SOURCE = 500
 EOF
@@ -2494,7 +2499,7 @@ EOF
 esac
 
 cat > conftest.$ac_ext <<EOF
-#line 2498 "configure"
+#line 2503 "configure"
 #include "confdefs.h"
 int main () {
 #if defined __SUNPRO_C
@@ -2503,12 +2508,14 @@ return 11;
 return 12;
 #elif defined __USLC__ && defined __SCO_VERSION__
 return 13;
+#elif defined __INTEL_COMPILER
+return 14;
 #else
 return 0;
 #endif
 }
 EOF
-if { (eval echo configure:2512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:2519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -2517,9 +2524,11 @@ else
   cat conftest.$ac_ext >&5
   rm -fr conftest*
   case "$conftest_rc" in
-  11) echo "You appear to be using the SunPro C compiler."; __SUNPRO_C=yes ;;
-  12) echo "You appear to be using the DEC C compiler."   ; __DECC=yes ;;
-  13) echo "You appear to be using the SCO C compiler."   ; __USLC__=yes ;;
+  11) echo "You appear to be using the SunPro C compiler." ; __SUNPRO_C=yes ;;
+  12) echo "You appear to be using the DEC C compiler."    ; __DECC=yes ;;
+  13) echo "You appear to be using the SCO C compiler."    ; __USLC__=yes ;;
+  14) echo "You appear to be using the Intel C++ compiler."; __ICC=yes
+            GCC=no ;;
 esac
 fi
 rm -fr conftest*
@@ -2742,17 +2751,17 @@ test "$__DECC" = "yes" && c_switch_site="$c_switch_site -std1" &&  if test "$ext
 
 if test "$__USLC__" = yes; then
   echo $ac_n "checking for whether the -Kalloca compiler flag is needed""... $ac_c" 1>&6
-echo "configure:2746: checking for whether the -Kalloca compiler flag is needed" >&5
+echo "configure:2755: checking for whether the -Kalloca compiler flag is needed" >&5
   need_kalloca=no
   cat > conftest.$ac_ext <<EOF
-#line 2749 "configure"
+#line 2758 "configure"
 #include "confdefs.h"
 
 int main() {
 void *x = alloca(4);
 ; return 0; }
 EOF
-if { (eval echo configure:2756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   :
 else
@@ -2763,14 +2772,14 @@ else
     xe_save_c_switch_system="$c_switch_system"
     c_switch_system="$c_switch_system -Kalloca"
     cat > conftest.$ac_ext <<EOF
-#line 2767 "configure"
+#line 2776 "configure"
 #include "confdefs.h"
 
 int main() {
 void *x = alloca(4);
 ; return 0; }
 EOF
-if { (eval echo configure:2774: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
    need_kalloca=yes 
 else
@@ -2805,13 +2814,15 @@ if test "$cflags_specified" = "no"; then
     CFLAGS="-O3"
   elif test "$CC" = "xlc"; then
     CFLAGS="-g -O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000"
+  elif test "$__ICC" = "yes"; then
+    CFLAGS="-g -O3 -Ob2 -Wall -W1"
     else
     CFLAGS="-O" ;  fi
 fi
 
 if test "$GCC" = "yes"; then
 echo $ac_n "checking for buggy gcc versions""... $ac_c" 1>&6
-echo "configure:2815: checking for buggy gcc versions" >&5
+echo "configure:2826: checking for buggy gcc versions" >&5
 GCC_VERSION=`$CC --version`
 case `uname -s`:`uname -m`:$GCC_VERSION in
                    *:sun4*:2.8.1|*:sun4*:egcs-2.90.*)
@@ -2869,7 +2880,7 @@ fi
 
 if test "$pdump" != "yes"; then
   echo $ac_n "checking for \"-z nocombreloc\" linker flag""... $ac_c" 1>&6
-echo "configure:2873: checking for \"-z nocombreloc\" linker flag" >&5
+echo "configure:2884: checking for \"-z nocombreloc\" linker flag" >&5
   case "`ld --help 2>&1`" in
     *-z\ nocombreloc* ) echo "$ac_t""yes" 1>&6
       ld_switch_site="-z nocombreloc $ld_switch_site" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-z nocombreloc\" to \$ld_switch_site"; fi ;;
@@ -2958,7 +2969,7 @@ test "$pdump" = "yes" && extra_objs="$extra_objs dumper.o" &&  if test "$extra_v
  fi
 
 echo $ac_n "checking for dynodump""... $ac_c" 1>&6
-echo "configure:2962: checking for dynodump" >&5
+echo "configure:2973: checking for dynodump" >&5
 if test "$unexec" != "unexsol2.o"; then
   echo "$ac_t""no" 1>&6
 else
@@ -2996,12 +3007,12 @@ if test "$unexec" = "unexaix.o"; then
   done
   
 echo $ac_n "checking for terminateAndUnload in -lC""... $ac_c" 1>&6
-echo "configure:3000: checking for terminateAndUnload in -lC" >&5
+echo "configure:3011: 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 3005 "configure"
+#line 3016 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3012,7 +3023,7 @@ int main() {
 terminateAndUnload()
 ; return 0; }
 EOF
-if { (eval echo configure:3016: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3120,7 +3131,7 @@ fi
 
 if test "$add_runtime_path" = "yes"; then
       echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6
-echo "configure:3124: checking "for runtime libraries flag"" >&5
+echo "configure:3135: checking "for runtime libraries flag"" >&5
   case "$opsys" in
     sol2 ) dash_r="-R" ;;
     decosf* | linux* | irix*) dash_r="-rpath " ;;
@@ -3142,14 +3153,14 @@ if test "$GCC" = "yes"; then
   done
 fi
         cat > conftest.$ac_ext <<EOF
-#line 3146 "configure"
+#line 3157 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   dash_r="$try_dash_r"
 else
@@ -3216,7 +3227,7 @@ xe_runpath_dir=`echo '' "$arg" | sed -e 's:^ ::' -e 's/^-L//'`
   eval "$xe_add_unique_runpath_dir"
 };; esac
     done
-        if test "$opsys $need_motif" = "sol2 yes"; then
+            if test "$opsys $need_motif" = "sol2 yes"; then
       xe_runpath_dir="/opt/SUNWdt/lib";
       eval "$xe_add_unique_runpath_dir";
     fi
@@ -3250,10 +3261,10 @@ else
 fi
 after_morecore_hook_exists=yes
 echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6
-echo "configure:3254: checking for malloc_set_state" >&5
+echo "configure:3265: checking for malloc_set_state" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3257 "configure"
+#line 3268 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char malloc_set_state(); below.  */
@@ -3276,7 +3287,7 @@ malloc_set_state();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3280: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3291: \"$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
@@ -3296,16 +3307,16 @@ doug_lea_malloc=no
 fi
 
 echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6
-echo "configure:3300: checking whether __after_morecore_hook exists" >&5
+echo "configure:3311: checking whether __after_morecore_hook exists" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3302 "configure"
+#line 3313 "configure"
 #include "confdefs.h"
 extern void (* __after_morecore_hook)();
 int main() {
 __after_morecore_hook = 0
 ; return 0; }
 EOF
-if { (eval echo configure:3309: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3320: \"$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
@@ -3361,7 +3372,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:3365: checking for $ac_word" >&5
+echo "configure:3376: checking for $ac_word" >&5
 
 if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
@@ -3416,7 +3427,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:3420: checking for a BSD compatible install" >&5
+echo "configure:3431: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 
   IFS="${IFS=  }"; ac_save_IFS="$IFS"; IFS=":"
@@ -3470,7 +3481,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:3474: checking for $ac_word" >&5
+echo "configure:3485: checking for $ac_word" >&5
 
 if test -n "$YACC"; then
   ac_cv_prog_YACC="$YACC" # Let the user override the test.
@@ -3502,15 +3513,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:3506: checking for $ac_hdr" >&5
+echo "configure:3517: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3509 "configure"
+#line 3520 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3514: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3525: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3540,10 +3551,10 @@ fi
 done
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:3544: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:3555: checking for sys/wait.h that is POSIX.1 compatible" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3547 "configure"
+#line 3558 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -3559,7 +3570,7 @@ wait (&s);
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:3563: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3574: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -3583,10 +3594,10 @@ EOF
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3587: checking for ANSI C header files" >&5
+echo "configure:3598: checking for ANSI C header files" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3590 "configure"
+#line 3601 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3594,7 +3605,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:3598: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3609: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3611,7 +3622,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 3615 "configure"
+#line 3626 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -3629,7 +3640,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 3633 "configure"
+#line 3644 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -3647,7 +3658,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 3651 "configure"
+#line 3662 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3658,7 +3669,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:3662: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:3673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -3684,10 +3695,10 @@ EOF
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:3688: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:3699: checking whether time.h and sys/time.h may both be included" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3691 "configure"
+#line 3702 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -3696,7 +3707,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:3700: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3711: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -3720,10 +3731,10 @@ EOF
 fi
 
 echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
-echo "configure:3724: checking for sys_siglist declaration in signal.h or unistd.h" >&5
+echo "configure:3735: checking for sys_siglist declaration in signal.h or unistd.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3727 "configure"
+#line 3738 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3735,7 +3746,7 @@ int main() {
 char *msg = *(sys_siglist + 1);
 ; return 0; }
 EOF
-if { (eval echo configure:3739: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3750: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_decl_sys_siglist=yes
 else
@@ -3761,9 +3772,9 @@ fi
 
 
 echo $ac_n "checking for utime""... $ac_c" 1>&6
-echo "configure:3765: checking for utime" >&5
+echo "configure:3776: checking for utime" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3767 "configure"
+#line 3778 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <utime.h>
@@ -3771,7 +3782,7 @@ int main() {
 struct utimbuf x; x.actime = x.modtime = 0; utime ("/", &x);
 ; return 0; }
 EOF
-if { (eval echo configure:3775: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3786: \"$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
@@ -3790,10 +3801,10 @@ else
       for ac_func in utimes
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3794: checking for $ac_func" >&5
+echo "configure:3805: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3797 "configure"
+#line 3808 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3816,7 +3827,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3831: \"$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
@@ -3848,10 +3859,10 @@ rm -f conftest*
 
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3852: checking return type of signal handlers" >&5
+echo "configure:3863: checking return type of signal handlers" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3855 "configure"
+#line 3866 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3868,7 +3879,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:3872: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3883: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -3890,10 +3901,10 @@ EOF
 
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3894: checking for size_t" >&5
+echo "configure:3905: checking for size_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3897 "configure"
+#line 3908 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3924,10 +3935,10 @@ EOF
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3928: checking for pid_t" >&5
+echo "configure:3939: checking for pid_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3931 "configure"
+#line 3942 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3958,10 +3969,10 @@ EOF
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3962: checking for uid_t in sys/types.h" >&5
+echo "configure:3973: checking for uid_t in sys/types.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3965 "configure"
+#line 3976 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -3997,10 +4008,10 @@ EOF
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:4001: checking for mode_t" >&5
+echo "configure:4012: checking for mode_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4004 "configure"
+#line 4015 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -4031,10 +4042,10 @@ EOF
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:4035: checking for off_t" >&5
+echo "configure:4046: checking for off_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4038 "configure"
+#line 4049 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -4065,10 +4076,10 @@ EOF
 fi
 
 echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:4069: checking for ssize_t" >&5
+echo "configure:4080: checking for ssize_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4072 "configure"
+#line 4083 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -4100,9 +4111,9 @@ fi
 
 
 echo $ac_n "checking for socklen_t""... $ac_c" 1>&6
-echo "configure:4104: checking for socklen_t" >&5
+echo "configure:4115: checking for socklen_t" >&5
 cat > conftest.$ac_ext <<EOF
-#line 4106 "configure"
+#line 4117 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -4112,7 +4123,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4127: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 else
@@ -4121,7 +4132,7 @@ else
   rm -rf conftest*
   
 cat > conftest.$ac_ext <<EOF
-#line 4125 "configure"
+#line 4136 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -4131,7 +4142,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4135: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4146: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
 echo "$ac_t""size_t" 1>&6
@@ -4163,9 +4174,9 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking for struct timeval""... $ac_c" 1>&6
-echo "configure:4167: checking for struct timeval" >&5
+echo "configure:4178: checking for struct timeval" >&5
 cat > conftest.$ac_ext <<EOF
-#line 4169 "configure"
+#line 4180 "configure"
 #include "confdefs.h"
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
@@ -4181,7 +4192,7 @@ int main() {
 static struct timeval x; x.tv_sec = x.tv_usec;
 ; return 0; }
 EOF
-if { (eval echo configure:4185: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4196: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
   HAVE_TIMEVAL=yes
@@ -4203,10 +4214,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:4207: checking whether struct tm is in sys/time.h or time.h" >&5
+echo "configure:4218: checking whether struct tm is in sys/time.h or time.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4210 "configure"
+#line 4221 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <time.h>
@@ -4214,7 +4225,7 @@ int main() {
 struct tm *tp; tp->tm_sec;
 ; return 0; }
 EOF
-if { (eval echo configure:4218: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4229: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm=time.h
 else
@@ -4238,10 +4249,10 @@ EOF
 fi
 
 echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
-echo "configure:4242: checking for tm_zone in struct tm" >&5
+echo "configure:4253: checking for tm_zone in struct tm" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4245 "configure"
+#line 4256 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_cv_struct_tm>
@@ -4249,7 +4260,7 @@ int main() {
 struct tm tm; tm.tm_zone;
 ; return 0; }
 EOF
-if { (eval echo configure:4253: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4264: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm_zone=yes
 else
@@ -4272,10 +4283,10 @@ EOF
 
 else
   echo $ac_n "checking for tzname""... $ac_c" 1>&6
-echo "configure:4276: checking for tzname" >&5
+echo "configure:4287: checking for tzname" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4279 "configure"
+#line 4290 "configure"
 #include "confdefs.h"
 #include <time.h>
 #ifndef tzname /* For SGI.  */
@@ -4285,7 +4296,7 @@ int main() {
 atoi(*tzname);
 ; return 0; }
 EOF
-if { (eval echo configure:4289: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_var_tzname=yes
 else
@@ -4311,10 +4322,10 @@ fi
 
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:4315: checking for working const" >&5
+echo "configure:4326: checking for working const" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4318 "configure"
+#line 4329 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -4363,7 +4374,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:4367: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4378: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -4388,7 +4399,7 @@ fi
 
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:4392: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:4403: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 
 cat > conftestmake <<\EOF
@@ -4413,12 +4424,12 @@ fi
 
 
 echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:4417: checking whether byte ordering is bigendian" >&5
+echo "configure:4428: 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 4422 "configure"
+#line 4433 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4429,11 +4440,11 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4433: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4444: \"$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 4437 "configure"
+#line 4448 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4444,7 +4455,7 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4459: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -4461,7 +4472,7 @@ fi
 rm -f conftest*
 if test $ac_cv_c_bigendian = unknown; then
 cat > conftest.$ac_ext <<EOF
-#line 4465 "configure"
+#line 4476 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -4474,7 +4485,7 @@ main () {
   exit (u.c[sizeof (long) - 1] == 1);
 }
 EOF
-if { (eval echo configure:4478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_c_bigendian=no
 else
@@ -4501,10 +4512,10 @@ fi
 
 
 echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:4505: checking size of short" >&5
+echo "configure:4516: checking size of short" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4508 "configure"
+#line 4519 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4515,7 +4526,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_short=`cat conftestval`
 else
@@ -4543,10 +4554,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:4547: checking size of int" >&5
+echo "configure:4558: checking size of int" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4550 "configure"
+#line 4561 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4557,7 +4568,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4561: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4572: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_int=`cat conftestval`
 else
@@ -4579,10 +4590,10 @@ EOF
 
 
 echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:4583: checking size of long" >&5
+echo "configure:4594: checking size of long" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4586 "configure"
+#line 4597 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4593,7 +4604,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4597: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_long=`cat conftestval`
 else
@@ -4615,10 +4626,10 @@ EOF
 
 
 echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:4619: checking size of long long" >&5
+echo "configure:4630: checking size of long long" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4622 "configure"
+#line 4633 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4629,7 +4640,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4633: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4644: \"$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
@@ -4651,10 +4662,10 @@ EOF
 
 
 echo $ac_n "checking size of void *""... $ac_c" 1>&6
-echo "configure:4655: checking size of void *" >&5
+echo "configure:4666: checking size of void *" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4658 "configure"
+#line 4669 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4665,7 +4676,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4680: \"$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
@@ -4689,7 +4700,7 @@ EOF
 
 case $opsys in
   cygwin* ) cat > conftest.$ac_ext <<EOF
-#line 4693 "configure"
+#line 4704 "configure"
 #include "confdefs.h"
 #include <cygwin/types.h>
 EOF
@@ -4714,7 +4725,7 @@ rm -f conftest*
 esac
 
 echo $ac_n "checking for long file names""... $ac_c" 1>&6
-echo "configure:4718: checking for long file names" >&5
+echo "configure:4729: 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:
@@ -4760,10 +4771,10 @@ fi
 
 
 echo $ac_n "checking for sin""... $ac_c" 1>&6
-echo "configure:4764: checking for sin" >&5
+echo "configure:4775: checking for sin" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4767 "configure"
+#line 4778 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char sin(); below.  */
@@ -4786,7 +4797,7 @@ sin();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4801: \"$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
@@ -4804,12 +4815,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-echo "configure:4808: checking for sin in -lm" >&5
+echo "configure:4819: 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 4813 "configure"
+#line 4824 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4820,7 +4831,7 @@ int main() {
 sin()
 ; return 0; }
 EOF
-if { (eval echo configure:4824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4864,14 +4875,14 @@ EOF
 
 
 cat > conftest.$ac_ext <<EOF
-#line 4868 "configure"
+#line 4879 "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:4875: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4886: \"$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
@@ -4888,14 +4899,14 @@ fi
 rm -f conftest*
 
 echo "checking type of mail spool file locking" 1>&6
-echo "configure:4892: checking type of mail spool file locking" >&5
+echo "configure:4903: 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:4896: checking for $ac_func" >&5
+echo "configure:4907: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4899 "configure"
+#line 4910 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4918,7 +4929,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4933: \"$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
@@ -5000,12 +5011,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:5004: checking for cma_open in -lpthreads" >&5
+echo "configure:5015: 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 5009 "configure"
+#line 5020 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5016,7 +5027,7 @@ int main() {
 cma_open()
 ; return 0; }
 EOF
-if { (eval echo configure:5020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5031: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5053,7 +5064,7 @@ esac
 
 
 echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6
-echo "configure:5057: checking whether the -xildoff compiler flag is required" >&5
+echo "configure:5068: 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;
@@ -5063,9 +5074,9 @@ if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/nu
 fi
 
 if test "$opsys" = "sol2"; then
-  if test "$os_release" -ge 56; then
+  if test "$os_release" -ge 506; then
     echo $ac_n "checking for \"-z ignore\" linker flag""... $ac_c" 1>&6
-echo "configure:5069: checking for \"-z ignore\" linker flag" >&5
+echo "configure:5080: 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 ;;
@@ -5076,7 +5087,7 @@ fi
 
 
 echo "checking "for specified window system"" 1>&6
-echo "configure:5080: checking "for specified window system"" >&5
+echo "configure:5091: checking "for specified window system"" >&5
 
 
 GNOME_CONFIG=no
@@ -5084,7 +5095,7 @@ GTK_CONFIG=no
 
 if test "$with_gnome" != "no"; then
    echo $ac_n "checking for GNOME configuration script""... $ac_c" 1>&6
-echo "configure:5088: checking for GNOME configuration script" >&5
+echo "configure:5099: checking for GNOME configuration script" >&5
    for possible in gnome-config
    do
       possible_version=`${possible} --version 2> /dev/null`
@@ -5115,7 +5126,7 @@ fi
 
 if test "$with_gtk" != "no";then
    echo $ac_n "checking for GTK configuration script""... $ac_c" 1>&6
-echo "configure:5119: checking for GTK configuration script" >&5
+echo "configure:5130: checking for GTK configuration script" >&5
    for possible in gtk12-config gtk14-config gtk-config
    do
       possible_version=`${possible} --version 2> /dev/null`
@@ -5137,18 +5148,18 @@ fi
 
 if test "${GTK_CONFIG}" != "no"; then
       echo $ac_n "checking gtk version""... $ac_c" 1>&6
-echo "configure:5141: checking gtk version" >&5
+echo "configure:5152: 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:5146: checking gtk libs" >&5
+echo "configure:5157: 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:5152: checking gtk cflags" >&5
+echo "configure:5163: checking gtk cflags" >&5
       GTK_CFLAGS=`${GTK_CONFIG} --cflags`
       if test "$GCC" = "yes"; then
        GTK_CFLAGS="${GTK_CFLAGS} -Wno-shadow"
@@ -5158,19 +5169,19 @@ echo "configure:5152: checking gtk cflags" >&5
 
       
 echo $ac_n "checking for main in -lgdk_imlib""... $ac_c" 1>&6
-echo "configure:5162: checking for main in -lgdk_imlib" >&5
+echo "configure:5173: 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 5167 "configure"
+#line 5178 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:5174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5192,12 +5203,12 @@ fi
 
       
 echo $ac_n "checking for Imlib_init in -lImlib""... $ac_c" 1>&6
-echo "configure:5196: checking for Imlib_init in -lImlib" >&5
+echo "configure:5207: 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 5201 "configure"
+#line 5212 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5208,7 +5219,7 @@ int main() {
 Imlib_init()
 ; return 0; }
 EOF
-if { (eval echo configure:5212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5231,10 +5242,10 @@ fi
       for ac_func in gdk_imlib_init
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5235: checking for $ac_func" >&5
+echo "configure:5246: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5238 "configure"
+#line 5249 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5257,7 +5268,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5261: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5272: \"$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
@@ -5336,15 +5347,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5340: checking for $ac_hdr" >&5
+echo "configure:5351: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5343 "configure"
+#line 5354 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5348: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5359: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5375,19 +5386,19 @@ done
 
       
 echo $ac_n "checking for main in -lxml""... $ac_c" 1>&6
-echo "configure:5379: checking for main in -lxml" >&5
+echo "configure:5390: 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 5384 "configure"
+#line 5395 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:5391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5409,19 +5420,19 @@ fi
 
       
 echo $ac_n "checking for main in -lglade""... $ac_c" 1>&6
-echo "configure:5413: checking for main in -lglade" >&5
+echo "configure:5424: 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 5418 "configure"
+#line 5429 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:5425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5443,19 +5454,19 @@ fi
 
       
 echo $ac_n "checking for main in -lglade-gnome""... $ac_c" 1>&6
-echo "configure:5447: checking for main in -lglade-gnome" >&5
+echo "configure:5458: 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 5452 "configure"
+#line 5463 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:5459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5476,7 +5487,7 @@ fi
 
 
       cat > conftest.$ac_ext <<EOF
-#line 5480 "configure"
+#line 5491 "configure"
 #include "confdefs.h"
 #include <glade/glade-xml.h>
 EOF
@@ -5535,7 +5546,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:5539: checking for X" >&5
+echo "configure:5550: checking for X" >&5
 
 # Check whether --with-x or --without-x was given.
 if test "${with_x+set}" = set; then
@@ -5595,12 +5606,12 @@ if test "$ac_x_includes" = NO; then
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 5599 "configure"
+#line 5610 "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:5604: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5615: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5669,14 +5680,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 5673 "configure"
+#line 5684 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:5680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5691: \"$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.
@@ -5785,17 +5796,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:5789: checking whether -R must be followed by a space" >&5
+echo "configure:5800: 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 5792 "configure"
+#line 5803 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5799: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_nospace=yes
 else
@@ -5811,14 +5822,14 @@ rm -f conftest*
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat > conftest.$ac_ext <<EOF
-#line 5815 "configure"
+#line 5826 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5822: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_space=yes
 else
@@ -5854,12 +5865,12 @@ ac_cv_lib_dnet_dnet_ntoa=no
 else
 
 echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
-echo "configure:5858: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:5869: 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 5863 "configure"
+#line 5874 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5870,7 +5881,7 @@ int main() {
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:5874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5894,12 +5905,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:5898: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:5909: 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 5903 "configure"
+#line 5914 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5910,7 +5921,7 @@ int main() {
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:5914: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5939,10 +5950,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:5943: checking for gethostbyname" >&5
+echo "configure:5954: checking for gethostbyname" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5946 "configure"
+#line 5957 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname(); below.  */
@@ -5965,7 +5976,7 @@ gethostbyname();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5980: \"$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
@@ -5986,12 +5997,12 @@ fi
     if test $ac_cv_func_gethostbyname = no; then
       
 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:5990: checking for gethostbyname in -lnsl" >&5
+echo "configure:6001: 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 5995 "configure"
+#line 6006 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6002,7 +6013,7 @@ int main() {
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:6006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6032,10 +6043,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:6036: checking for connect" >&5
+echo "configure:6047: checking for connect" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6039 "configure"
+#line 6050 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect(); below.  */
@@ -6058,7 +6069,7 @@ connect();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6062: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6073: \"$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
@@ -6081,12 +6092,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:6085: checking "$xe_msg_checking"" >&5
+echo "configure:6096: 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 6090 "configure"
+#line 6101 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6097,7 +6108,7 @@ int main() {
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:6101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6121,10 +6132,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:6125: checking for remove" >&5
+echo "configure:6136: checking for remove" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6128 "configure"
+#line 6139 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove(); below.  */
@@ -6147,7 +6158,7 @@ remove();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6162: \"$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
@@ -6168,12 +6179,12 @@ fi
     if test $ac_cv_func_remove = no; then
       
 echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:6172: checking for remove in -lposix" >&5
+echo "configure:6183: 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 6177 "configure"
+#line 6188 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6184,7 +6195,7 @@ int main() {
 remove()
 ; return 0; }
 EOF
-if { (eval echo configure:6188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6208,10 +6219,10 @@ fi
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:6212: checking for shmat" >&5
+echo "configure:6223: checking for shmat" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6215 "configure"
+#line 6226 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat(); below.  */
@@ -6234,7 +6245,7 @@ shmat();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6249: \"$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
@@ -6255,12 +6266,12 @@ fi
     if test $ac_cv_func_shmat = no; then
       
 echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:6259: checking for shmat in -lipc" >&5
+echo "configure:6270: 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 6264 "configure"
+#line 6275 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6271,7 +6282,7 @@ int main() {
 shmat()
 ; return 0; }
 EOF
-if { (eval echo configure:6275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6307,12 +6318,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:6311: checking "$xe_msg_checking"" >&5
+echo "configure:6322: 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 6316 "configure"
+#line 6327 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6323,7 +6334,7 @@ int main() {
 IceConnectionNumber()
 ; return 0; }
 EOF
-if { (eval echo configure:6327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6369,15 +6380,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:6373: checking for Xm/Xm.h" >&5
+echo "configure:6384: checking for Xm/Xm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6376 "configure"
+#line 6387 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6381: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6392: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6394,12 +6405,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:6398: checking for XmStringFree in -lXm" >&5
+echo "configure:6409: 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 6403 "configure"
+#line 6414 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6410,7 +6421,7 @@ int main() {
 XmStringFree()
 ; return 0; }
 EOF
-if { (eval echo configure:6414: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6509,7 +6520,7 @@ xe_runpath_dir=`echo '' "$arg" | sed -e 's:^ ::' -e 's/^-L//'`
   eval "$xe_add_unique_runpath_dir"
 };; esac
     done
-        if test "$opsys $need_motif" = "sol2 yes"; then
+            if test "$opsys $need_motif" = "sol2 yes"; then
       xe_runpath_dir="/opt/SUNWdt/lib";
       eval "$xe_add_unique_runpath_dir";
     fi
@@ -6562,7 +6573,7 @@ EOF
 
 
     echo "checking for X defines extracted by xmkmf" 1>&6
-echo "configure:6566: checking for X defines extracted by xmkmf" >&5
+echo "configure:6577: checking for X defines extracted by xmkmf" >&5
   rm -fr conftestdir
   if mkdir conftestdir; then
     cd conftestdir
@@ -6611,15 +6622,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:6615: checking for X11/Intrinsic.h" >&5
+echo "configure:6626: checking for X11/Intrinsic.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6618 "configure"
+#line 6629 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6623: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6634: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6643,12 +6654,12 @@ fi
 
       
 echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
-echo "configure:6647: checking for XOpenDisplay in -lX11" >&5
+echo "configure:6658: 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 6652 "configure"
+#line 6663 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6659,7 +6670,7 @@ int main() {
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:6663: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6684,12 +6695,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:6688: checking "$xe_msg_checking"" >&5
+echo "configure:6699: 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 6693 "configure"
+#line 6704 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6700,7 +6711,7 @@ int main() {
 XGetFontProperty()
 ; return 0; }
 EOF
-if { (eval echo configure:6704: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6727,12 +6738,12 @@ fi
 
     
 echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6
-echo "configure:6731: checking for XShapeSelectInput in -lXext" >&5
+echo "configure:6742: 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 6736 "configure"
+#line 6747 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6743,7 +6754,7 @@ int main() {
 XShapeSelectInput()
 ; return 0; }
 EOF
-if { (eval echo configure:6747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6766,12 +6777,12 @@ fi
 
     
 echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6
-echo "configure:6770: checking for XtOpenDisplay in -lXt" >&5
+echo "configure:6781: 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 6775 "configure"
+#line 6786 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6782,7 +6793,7 @@ int main() {
 XtOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:6786: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6805,14 +6816,14 @@ fi
 
 
   echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6
-echo "configure:6809: checking the version of X11 being used" >&5
+echo "configure:6820: checking the version of X11 being used" >&5
   cat > conftest.$ac_ext <<EOF
-#line 6811 "configure"
+#line 6822 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
     int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }
 EOF
-if { (eval echo configure:6816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:6827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ./conftest foobar; x11_release=$?
 else
@@ -6843,10 +6854,10 @@ EOF
   for ac_func in XConvertCase
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6847: checking for $ac_func" >&5
+echo "configure:6858: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6850 "configure"
+#line 6861 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6869,7 +6880,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6873: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6884: \"$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
@@ -6901,15 +6912,15 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6905: checking for $ac_hdr" >&5
+echo "configure:6916: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6908 "configure"
+#line 6919 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6913: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6924: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6942,10 +6953,10 @@ done
     for ac_func in XRegisterIMInstantiateCallback
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6946: checking for $ac_func" >&5
+echo "configure:6957: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6949 "configure"
+#line 6960 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6968,7 +6979,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6983: \"$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
@@ -6996,9 +7007,9 @@ fi
 done
 
   echo $ac_n "checking for standard XRegisterIMInstantiateCallback prototype""... $ac_c" 1>&6
-echo "configure:7000: checking for standard XRegisterIMInstantiateCallback prototype" >&5
+echo "configure:7011: checking for standard XRegisterIMInstantiateCallback prototype" >&5
   cat > conftest.$ac_ext <<EOF
-#line 7002 "configure"
+#line 7013 "configure"
 #include "confdefs.h"
 
 #define NeedFunctionPrototypes 1
@@ -7010,7 +7021,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:7014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7025: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 else
@@ -7031,12 +7042,12 @@ rm -f conftest*
 
     test -z "$with_xmu" && { 
 echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6
-echo "configure:7035: checking for XmuReadBitmapDataFromFile in -lXmu" >&5
+echo "configure:7046: 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 7040 "configure"
+#line 7051 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7047,7 +7058,7 @@ int main() {
 XmuReadBitmapDataFromFile()
 ; return 0; }
 EOF
-if { (eval echo configure:7051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7062: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7086,19 +7097,19 @@ EOF
 
       
 echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6
-echo "configure:7090: checking for main in -lXbsd" >&5
+echo "configure:7101: 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 7095 "configure"
+#line 7106 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:7102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7122,7 +7133,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:7126: checking for name of AIX gcc threads option" >&5
+echo "configure:7137: checking for name of AIX gcc threads option" >&5
       case `$CC -v --help 2>&1` in
         *-mthreads*) aix_threads=-mthreads ;;
                   *) aix_threads=-pthread  ;;
@@ -7136,10 +7147,10 @@ echo "configure:7126: 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:7140: checking size of short" >&5
+echo "configure:7151: checking size of short" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7143 "configure"
+#line 7154 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -7150,7 +7161,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:7154: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:7165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_short=`cat conftestval`
 else
@@ -7179,22 +7190,22 @@ EOF
 fi 
 if test "$with_msw" != "no"; then
   echo "checking for MS-Windows" 1>&6
-echo "configure:7183: checking for MS-Windows" >&5
+echo "configure:7194: checking for MS-Windows" >&5
   
 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6
-echo "configure:7186: checking for main in -lgdi32" >&5
+echo "configure:7197: 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 7191 "configure"
+#line 7202 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:7198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7230,7 +7241,7 @@ EOF
       INSTALL_ARCH_DEP_SUBDIR="$INSTALL_ARCH_DEP_SUBDIR netinstall" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"netinstall\" to \$INSTALL_ARCH_DEP_SUBDIR"; fi
     fi
 
-    install_pp="$blddir/lib-src/installexe.sh"
+    install_pp="$srcdir/lib-src/installexe.sh"
     libs_system="$libs_system -lshell32 -lgdi32 -luser32 -lcomdlg32 -lcomctl32 -lkernel32 -lwinspool" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"-lshell32 -lgdi32 -luser32 -lcomdlg32 -lcomctl32 -lkernel32 -lwinspool\" to \$libs_system"; fi
     test "$with_dragndrop" != no && dragndrop_proto="$dragndrop_proto msw" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"msw\" to \$dragndrop_proto"; fi
     if test "$window_system" != x11; then
@@ -7267,12 +7278,12 @@ EOF
  fi
     fi
         cat > conftest.$ac_ext <<EOF
-#line 7271 "configure"
+#line 7282 "configure"
 #include "confdefs.h"
 #include <fcntl.h>
     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }
 EOF
-if { (eval echo configure:7276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:7287: \"$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
@@ -7336,15 +7347,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:7340: checking for X11/extensions/shape.h" >&5
+echo "configure:7351: checking for X11/extensions/shape.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7343 "configure"
+#line 7354 "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:7348: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7359: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7396,7 +7407,7 @@ case "$x_libraries" in *X11R4* )
 esac
 
 echo "checking for WM_COMMAND option" 1>&6
-echo "configure:7400: checking for WM_COMMAND option" >&5;
+echo "configure:7411: checking for WM_COMMAND option" >&5;
 if test "$with_wmcommand" != "no"; then
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_WMCOMMAND
@@ -7411,15 +7422,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:7415: checking for X11/Xauth.h" >&5
+echo "configure:7426: checking for X11/Xauth.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7418 "configure"
+#line 7429 "configure"
 #include "confdefs.h"
 #include <X11/Xauth.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7423: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7434: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7442,12 +7453,12 @@ fi
  }
 test -z "$with_xauth" && { 
 echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6
-echo "configure:7446: checking for XauGetAuthByAddr in -lXau" >&5
+echo "configure:7457: 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 7451 "configure"
+#line 7462 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7458,7 +7469,7 @@ int main() {
 XauGetAuthByAddr()
 ; return 0; }
 EOF
-if { (eval echo configure:7462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7503,15 +7514,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:7507: checking for ${dir}tt_c.h" >&5
+echo "configure:7518: checking for ${dir}tt_c.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7510 "configure"
+#line 7521 "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:7515: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7526: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7547,12 +7558,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:7551: checking "$xe_msg_checking"" >&5
+echo "configure:7562: 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 7556 "configure"
+#line 7567 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7563,7 +7574,7 @@ int main() {
 tt_message_create()
 ; return 0; }
 EOF
-if { (eval echo configure:7567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7620,15 +7631,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:7624: checking for Dt/Dt.h" >&5
+echo "configure:7635: checking for Dt/Dt.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7627 "configure"
+#line 7638 "configure"
 #include "confdefs.h"
 #include <Dt/Dt.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7632: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7643: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7651,12 +7662,12 @@ fi
  }
 test -z "$with_cde" && { 
 echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6
-echo "configure:7655: checking for DtDndDragStart in -lDtSvc" >&5
+echo "configure:7666: 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 7660 "configure"
+#line 7671 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7667,7 +7678,7 @@ int main() {
 DtDndDragStart()
 ; return 0; }
 EOF
-if { (eval echo configure:7671: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7682: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7740,7 +7751,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:7744: checking if drag and drop API is needed" >&5
+echo "configure:7755: 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
@@ -7760,18 +7771,18 @@ EOF
 fi
 
 echo "checking for LDAP" 1>&6
-echo "configure:7764: checking for LDAP" >&5
+echo "configure:7775: 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:7767: checking for ldap.h" >&5
+echo "configure:7778: checking for ldap.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7770 "configure"
+#line 7781 "configure"
 #include "confdefs.h"
 #include <ldap.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7775: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7786: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7794,15 +7805,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:7798: checking for lber.h" >&5
+echo "configure:7809: checking for lber.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7801 "configure"
+#line 7812 "configure"
 #include "confdefs.h"
 #include <lber.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7806: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7817: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7826,12 +7837,12 @@ fi
 if test "$with_ldap" != "no"; then
   
 echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6
-echo "configure:7830: checking for ldap_search in -lldap" >&5
+echo "configure:7841: 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 7835 "configure"
+#line 7846 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7842,7 +7853,7 @@ int main() {
 ldap_search()
 ; return 0; }
 EOF
-if { (eval echo configure:7846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7857: \"$ac_link\") 1>&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,12 +7878,12 @@ fi
 xe_msg_checking="for ldap_open in -lldap"
 test -n "-llber" && xe_msg_checking="$xe_msg_checking using extra libs -llber"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:7871: checking "$xe_msg_checking"" >&5
+echo "configure:7882: 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 7876 "configure"
+#line 7887 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7883,7 +7894,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:7887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7898: \"$ac_link\") 1>&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,12 +7919,12 @@ fi
 xe_msg_checking="for ldap_open in -lldap"
 test -n "-llber -lkrb" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:7912: checking "$xe_msg_checking"" >&5
+echo "configure:7923: 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 7917 "configure"
+#line 7928 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7924,7 +7935,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:7928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7939: \"$ac_link\") 1>&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,12 +7960,12 @@ fi
 xe_msg_checking="for ldap_open in -lldap"
 test -n "-llber -lkrb -ldes" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb -ldes"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:7953: checking "$xe_msg_checking"" >&5
+echo "configure:7964: 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 7958 "configure"
+#line 7969 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7965,7 +7976,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:7969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8016,10 +8027,10 @@ EOF
   for ac_func in ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8020: checking for $ac_func" >&5
+echo "configure:8031: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8023 "configure"
+#line 8034 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8042,7 +8053,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8046: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8057: \"$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
@@ -8073,20 +8084,20 @@ fi
 
 if test "$with_postgresql" != "no"; then
   echo "checking for PostgreSQL" 1>&6
-echo "configure:8077: checking for PostgreSQL" >&5
+echo "configure:8088: 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:8082: checking for ${header_dir}libpq-fe.h" >&5
+echo "configure:8093: checking for ${header_dir}libpq-fe.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8085 "configure"
+#line 8096 "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:8090: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8101: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8110,12 +8121,12 @@ fi
 
   test -n "$libpq_fe_h_file" && { 
 echo $ac_n "checking for PQconnectdb in -lpq""... $ac_c" 1>&6
-echo "configure:8114: checking for PQconnectdb in -lpq" >&5
+echo "configure:8125: 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 8119 "configure"
+#line 8130 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8126,7 +8137,7 @@ int main() {
 PQconnectdb()
 ; return 0; }
 EOF
-if { (eval echo configure:8130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8159,12 +8170,12 @@ EOF
 
     
 echo $ac_n "checking for PQconnectStart in -lpq""... $ac_c" 1>&6
-echo "configure:8163: checking for PQconnectStart in -lpq" >&5
+echo "configure:8174: 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 8168 "configure"
+#line 8179 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8175,7 +8186,7 @@ int main() {
 PQconnectStart()
 ; return 0; }
 EOF
-if { (eval echo configure:8179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8223,7 +8234,7 @@ fi
 
 if test "$window_system" != "none"; then
   echo "checking for graphics libraries" 1>&6
-echo "configure:8227: checking for graphics libraries" >&5
+echo "configure:8238: checking for graphics libraries" >&5
 
       libpath_xpm=
   incpath_xpm=
@@ -8249,10 +8260,10 @@ echo "configure:8227: 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:8253: checking for Xpm - no older than 3.4f" >&5
+echo "configure:8264: checking for Xpm - no older than 3.4f" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 8256 "configure"
+#line 8267 "configure"
 #include "confdefs.h"
 #define XPM_NUMBERS
 #include <X11/xpm.h>
@@ -8261,7 +8272,7 @@ echo "configure:8253: checking for Xpm - no older than 3.4f" >&5
       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
       XpmIncludeVersion < 30406 ? 2 : 0 ;}
 EOF
-if { (eval echo configure:8265: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:8276: \"$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
@@ -8305,17 +8316,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:8309: checking for \"FOR_MSW\" xpm" >&5
+echo "configure:8320: checking for \"FOR_MSW\" xpm" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 8312 "configure"
+#line 8323 "configure"
 #include "confdefs.h"
 
 int main() {
 XpmCreatePixmapFromData()
 ; return 0; }
 EOF
-if { (eval echo configure:8319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   xpm_for_msw=no
 else
@@ -8341,15 +8352,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:8345: checking for compface.h" >&5
+echo "configure:8356: checking for compface.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8348 "configure"
+#line 8359 "configure"
 #include "confdefs.h"
 #include <compface.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8353: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8364: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8372,12 +8383,12 @@ fi
  }
   test -z "$with_xface" && { 
 echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
-echo "configure:8376: checking for UnGenFace in -lcompface" >&5
+echo "configure:8387: 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 8381 "configure"
+#line 8392 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8388,7 +8399,7 @@ int main() {
 UnGenFace()
 ; return 0; }
 EOF
-if { (eval echo configure:8392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8440,12 +8451,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:8444: checking for inflate in -lc" >&5
+echo "configure:8455: 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 8449 "configure"
+#line 8460 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8456,7 +8467,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:8460: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8475,12 +8486,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6
-echo "configure:8479: checking for inflate in -lz" >&5
+echo "configure:8490: 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 8484 "configure"
+#line 8495 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8491,7 +8502,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:8495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8506: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8510,12 +8521,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6
-echo "configure:8514: checking for inflate in -lgz" >&5
+echo "configure:8525: 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 8519 "configure"
+#line 8530 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8526,7 +8537,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:8530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8556,15 +8567,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:8560: checking for jpeglib.h" >&5
+echo "configure:8571: checking for jpeglib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8563 "configure"
+#line 8574 "configure"
 #include "confdefs.h"
 #include <jpeglib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8568: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8579: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8587,12 +8598,12 @@ fi
  }
   test -z "$with_jpeg" && { 
 echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6
-echo "configure:8591: checking for jpeg_destroy_decompress in -ljpeg" >&5
+echo "configure:8602: 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 8596 "configure"
+#line 8607 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8603,7 +8614,7 @@ int main() {
 jpeg_destroy_decompress()
 ; return 0; }
 EOF
-if { (eval echo configure:8607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8639,10 +8650,10 @@ EOF
 
     png_problem=""
   test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6
-echo "configure:8643: checking for pow" >&5
+echo "configure:8654: checking for pow" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8646 "configure"
+#line 8657 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char pow(); below.  */
@@ -8665,7 +8676,7 @@ pow();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8680: \"$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
@@ -8686,15 +8697,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:8690: checking for png.h" >&5
+echo "configure:8701: checking for png.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8693 "configure"
+#line 8704 "configure"
 #include "confdefs.h"
 #include <png.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8698: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8709: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8717,12 +8728,12 @@ fi
  }
   test -z "$with_png" && { 
 echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6
-echo "configure:8721: checking for png_read_image in -lpng" >&5
+echo "configure:8732: 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 8726 "configure"
+#line 8737 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8733,7 +8744,7 @@ int main() {
 png_read_image()
 ; return 0; }
 EOF
-if { (eval echo configure:8737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8756,10 +8767,10 @@ fi
  }
   if test -z "$with_png"; then
     echo $ac_n "checking for workable png version information""... $ac_c" 1>&6
-echo "configure:8760: checking for workable png version information" >&5
+echo "configure:8771: checking for workable png version information" >&5
     xe_check_libs="-lpng -lz"
     cat > conftest.$ac_ext <<EOF
-#line 8763 "configure"
+#line 8774 "configure"
 #include "confdefs.h"
 #include <png.h>
     int main(int c, char **v) {
@@ -8767,7 +8778,7 @@ echo "configure:8760: 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:8771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:8782: \"$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
@@ -8810,15 +8821,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:8814: checking for tiffio.h" >&5
+echo "configure:8825: checking for tiffio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8817 "configure"
+#line 8828 "configure"
 #include "confdefs.h"
 #include <tiffio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8822: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8833: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8841,12 +8852,12 @@ fi
  }
   test -z "$with_tiff" && { 
 echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6
-echo "configure:8845: checking for TIFFClientOpen in -ltiff" >&5
+echo "configure:8856: 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 8850 "configure"
+#line 8861 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8857,7 +8868,7 @@ int main() {
 TIFFClientOpen()
 ; return 0; }
 EOF
-if { (eval echo configure:8861: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8896,15 +8907,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:8900: checking for compface.h" >&5
+echo "configure:8911: checking for compface.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8903 "configure"
+#line 8914 "configure"
 #include "confdefs.h"
 #include <compface.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8908: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8919: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8927,12 +8938,12 @@ fi
  }
   test -z "$with_xface" && { 
 echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
-echo "configure:8931: checking for UnGenFace in -lcompface" >&5
+echo "configure:8942: 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 8936 "configure"
+#line 8947 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8943,7 +8954,7 @@ int main() {
 UnGenFace()
 ; return 0; }
 EOF
-if { (eval echo configure:8947: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8958: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8982,12 +8993,12 @@ fi
 
 if test "$with_x11" = "yes"; then
   echo "checking for X11 graphics libraries" 1>&6
-echo "configure:8986: checking for X11 graphics libraries" >&5
+echo "configure:8997: checking for X11 graphics libraries" >&5
 fi
 
 if test "$with_x11" = "yes"; then
   echo "checking for the Athena widgets" 1>&6
-echo "configure:8991: checking for the Athena widgets" >&5
+echo "configure:9002: checking for the Athena widgets" >&5
 
     case "$with_athena" in
         "xaw" | "")    athena_variant=Xaw      athena_3d=no  ;;
@@ -9003,12 +9014,12 @@ echo "configure:8991: 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:9007: checking for XawScrollbarSetThumb in -l$athena_variant" >&5
+echo "configure:9018: 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 9012 "configure"
+#line 9023 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9019,7 +9030,7 @@ int main() {
 XawScrollbarSetThumb()
 ; return 0; }
 EOF
-if { (eval echo configure:9023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9035,12 +9046,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:9039: checking for $athena_3d_function in -l$athena_variant" >&5
+echo "configure:9050: 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 9044 "configure"
+#line 9055 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9051,7 +9062,7 @@ int main() {
 $athena_3d_function()
 ; return 0; }
 EOF
-if { (eval echo configure:9055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9082,12 +9093,12 @@ fi
   else
         
 echo $ac_n "checking for $athena_3d_function in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:9086: checking for $athena_3d_function in -l$athena_variant" >&5
+echo "configure:9097: 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 9091 "configure"
+#line 9102 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9098,7 +9109,7 @@ int main() {
 $athena_3d_function()
 ; return 0; }
 EOF
-if { (eval echo configure:9102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9116,12 +9127,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:9120: checking for $athena_3d_function in -lXaw" >&5
+echo "configure:9131: 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 9125 "configure"
+#line 9136 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9132,7 +9143,7 @@ int main() {
 $athena_3d_function()
 ; return 0; }
 EOF
-if { (eval echo configure:9136: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9163,15 +9174,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:9167: checking for X11/Xaw/ThreeD.h" >&5
+echo "configure:9178: checking for X11/Xaw/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9170 "configure"
+#line 9181 "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:9175: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9186: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9191,15 +9202,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:9195: checking for X11/Xaw/XawInit.h" >&5
+echo "configure:9206: checking for X11/Xaw/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9198 "configure"
+#line 9209 "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:9203: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9214: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9225,15 +9236,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:9229: checking for X11/$athena_variant/XawInit.h" >&5
+echo "configure:9240: checking for X11/$athena_variant/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9232 "configure"
+#line 9243 "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:9237: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9248: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9250,15 +9261,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:9254: checking for X11/$athena_variant/ThreeD.h" >&5
+echo "configure:9265: checking for X11/$athena_variant/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9257 "configure"
+#line 9268 "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:9262: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9273: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9286,15 +9297,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:9290: checking for $athena_variant/XawInit.h" >&5
+echo "configure:9301: checking for $athena_variant/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9293 "configure"
+#line 9304 "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:9298: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9309: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9311,15 +9322,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:9315: checking for $athena_variant/ThreeD.h" >&5
+echo "configure:9326: checking for $athena_variant/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9318 "configure"
+#line 9329 "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:9323: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9334: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9348,15 +9359,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:9352: checking for X11/Xaw3d/XawInit.h" >&5
+echo "configure:9363: checking for X11/Xaw3d/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9355 "configure"
+#line 9366 "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:9360: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9371: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9373,15 +9384,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:9377: checking for X11/Xaw3d/ThreeD.h" >&5
+echo "configure:9388: checking for X11/Xaw3d/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9380 "configure"
+#line 9391 "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:9385: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9396: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9413,15 +9424,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:9417: checking for Xaw3d/XawInit.h" >&5
+echo "configure:9428: checking for Xaw3d/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9420 "configure"
+#line 9431 "configure"
 #include "confdefs.h"
 #include <Xaw3d/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9425: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9436: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9438,15 +9449,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:9442: checking for Xaw3d/ThreeD.h" >&5
+echo "configure:9453: checking for Xaw3d/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9445 "configure"
+#line 9456 "configure"
 #include "confdefs.h"
 #include <Xaw3d/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9450: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9461: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9478,15 +9489,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:9482: checking for X11/Xaw/ThreeD.h" >&5
+echo "configure:9493: checking for X11/Xaw/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9485 "configure"
+#line 9496 "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:9490: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9501: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9525,15 +9536,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:9529: checking for Xm/Xm.h" >&5
+echo "configure:9540: checking for Xm/Xm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9532 "configure"
+#line 9543 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9537: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9548: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9550,12 +9561,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:9554: checking for XmStringFree in -lXm" >&5
+echo "configure:9565: 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 9559 "configure"
+#line 9570 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9566,7 +9577,7 @@ int main() {
 XmStringFree()
 ; return 0; }
 EOF
-if { (eval echo configure:9570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9595,9 +9606,9 @@ fi
 
   if test "$have_motif" = "yes"; then
         echo $ac_n "checking for Lesstif""... $ac_c" 1>&6
-echo "configure:9599: checking for Lesstif" >&5
+echo "configure:9610: checking for Lesstif" >&5
     cat > conftest.$ac_ext <<EOF
-#line 9601 "configure"
+#line 9612 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 #ifdef LESSTIF_VERSION
@@ -9620,13 +9631,25 @@ rm -f conftest*
 
 fi 
 
+case "$opsys" in
+  *linux* )  lucid_prefers_motif = "no"  ;;
+  * )        lucid_prefers_motif = "yes" ;;
+esac
+
 case "$with_menubars" in "" | "yes" | "athena" )
   with_menubars="lucid" ;;
 esac
 case "$with_dialogs" in "" | "yes" | "lucid" )
-  if   test "$have_motif"     = "yes"; then with_dialogs="motif"
-  elif test "$have_xaw"       = "yes"; then with_dialogs="athena"
-  else with_dialogs=no
+  if test "$lucid_prefers_motif" = "yes"; then
+    if   test "$have_motif"     = "yes"; then with_dialogs="motif"
+    elif test "$have_xaw"       = "yes"; then with_dialogs="athena"
+    else with_dialogs=no
+    fi
+  else
+    if   test "$have_xaw"       = "yes"; then with_dialogs="athena"
+    elif test "$have_motif"     = "yes"; then with_dialogs="motif"
+    else with_dialogs=no
+    fi
   fi ;;
 esac
 case "$with_scrollbars" in "" | "yes" )
@@ -9634,9 +9657,16 @@ case "$with_scrollbars" in "" | "yes" )
 esac
 case "$with_widgets" in
   "yes" | "lucid")
-    if   test "$have_motif" = "yes"; then with_widgets="motif"
-    elif test "$have_xaw"   = "yes"; then with_widgets="athena"
-    else with_widgets=no
+    if test "$lucid_prefers_motif" = "yes"; then
+      if   test "$have_motif" = "yes"; then with_widgets="motif"
+      elif test "$have_xaw"   = "yes"; then with_widgets="athena"
+      else with_widgets=no
+      fi
+    else
+      if   test "$have_xaw"   = "yes"; then with_widgets="athena"
+      elif test "$have_motif" = "yes"; then with_widgets="motif"
+      else with_widgets=no
+      fi
     fi ;;
   "" )
     with_widgets=no ;;
@@ -10031,7 +10061,7 @@ fi
 
 if test "$with_mule" = "yes" ; then
   echo "checking for Mule-related features" 1>&6
-echo "configure:10035: checking for Mule-related features" >&5
+echo "configure:10065: checking for Mule-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining MULE
 EOF
@@ -10045,15 +10075,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:10049: checking for chise.h" >&5
+echo "configure:10079: checking for chise.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10052 "configure"
+#line 10082 "configure"
 #include "confdefs.h"
 #include <chise.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10057: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10087: \"$ac_try\") 1>&5; (eval $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:10085: checking for chise.h" >&5
+echo "configure:10115: checking for chise.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10088 "configure"
+#line 10118 "configure"
 #include "confdefs.h"
 #include <chise.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10093: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10123: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10168,15 +10198,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10172: checking for $ac_hdr" >&5
+echo "configure:10202: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10175 "configure"
+#line 10205 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10180: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10210: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10207,12 +10237,12 @@ done
 
   
 echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6
-echo "configure:10211: checking for strerror in -lintl" >&5
+echo "configure:10241: 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 10216 "configure"
+#line 10246 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10223,7 +10253,7 @@ int main() {
 strerror()
 ; return 0; }
 EOF
-if { (eval echo configure:10227: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10277,18 +10307,18 @@ EOF
   fi
 
   echo "checking for Mule input methods" 1>&6
-echo "configure:10281: checking for Mule input methods" >&5
+echo "configure:10311: checking for Mule input methods" >&5
         case "$with_xim" in "" | "yes" )
     echo "checking for XIM" 1>&6
-echo "configure:10284: checking for XIM" >&5
+echo "configure:10314: checking for XIM" >&5
     
 echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6
-echo "configure:10287: checking for XOpenIM in -lX11" >&5
+echo "configure:10317: 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 10292 "configure"
+#line 10322 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10299,7 +10329,7 @@ int main() {
 XOpenIM()
 ; return 0; }
 EOF
-if { (eval echo configure:10303: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10333: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10320,15 +10350,54 @@ with_xim=no
 fi
 
 
-        if test "$have_motif $have_lesstif" = "yes no"; then
+            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
+ac_lib_var=`echo Xm'_'XmImMbLookupString | sed 'y%./+-%__p_%'`
+
+xe_check_libs=" -lXm "
+cat > conftest.$ac_ext <<EOF
+#line 10362 "configure"
+#include "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 XmImMbLookupString();
+
+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
+  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_xim=motif
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+    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:10327: checking for XmImMbLookupString in -lXm" >&5
+echo "configure:10396: 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 10332 "configure"
+#line 10401 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10339,7 +10408,7 @@ int main() {
 XmImMbLookupString()
 ; return 0; }
 EOF
-if { (eval echo configure:10343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10404,15 +10473,15 @@ EOF
 
     if test "$with_xfs" = "yes" ; then
     echo "checking for XFontSet" 1>&6
-echo "configure:10408: checking for XFontSet" >&5
+echo "configure:10477: checking for XFontSet" >&5
     
 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6
-echo "configure:10411: checking for XmbDrawString in -lX11" >&5
+echo "configure:10480: 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 10416 "configure"
+#line 10485 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10423,7 +10492,7 @@ int main() {
 XmbDrawString()
 ; return 0; }
 EOF
-if { (eval echo configure:10427: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10496: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10463,15 +10532,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:10467: checking for wnn/jllib.h" >&5
+echo "configure:10536: checking for wnn/jllib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10470 "configure"
+#line 10539 "configure"
 #include "confdefs.h"
 #include <wnn/jllib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10475: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10544: \"$ac_try\") 1>&5; (eval $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:10498: checking for wnn/commonhd.h" >&5
+echo "configure:10567: checking for wnn/commonhd.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10501 "configure"
+#line 10570 "configure"
 #include "confdefs.h"
 #include <wnn/commonhd.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10506: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10575: \"$ac_try\") 1>&5; (eval $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:10531: checking for $ac_func" >&5
+echo "configure:10600: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10534 "configure"
+#line 10603 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -10553,7 +10622,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10626: \"$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
@@ -10582,12 +10651,12 @@ done
 
     test "$ac_cv_func_crypt" != "yes" && { 
 echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:10586: checking for crypt in -lcrypt" >&5
+echo "configure:10655: 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 10591 "configure"
+#line 10660 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10598,7 +10667,7 @@ int main() {
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:10602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10671: \"$ac_link\") 1>&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:10637: checking for jl_dic_list_e in -lwnn" >&5
+echo "configure:10706: 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 10642 "configure"
+#line 10711 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10649,7 +10718,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:10653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10667,12 +10736,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:10671: checking for jl_dic_list_e in -lwnn4" >&5
+echo "configure:10740: 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 10676 "configure"
+#line 10745 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10683,7 +10752,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:10687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10701,12 +10770,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:10705: checking for jl_dic_list_e in -lwnn6" >&5
+echo "configure:10774: 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 10710 "configure"
+#line 10779 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10717,7 +10786,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:10721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10735,12 +10804,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:10739: checking for dic_list_e in -lwnn6_fromsrc" >&5
+echo "configure:10808: 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 10744 "configure"
+#line 10813 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10751,7 +10820,7 @@ int main() {
 dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:10755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10799,12 +10868,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:10803: checking for jl_fi_dic_list in -l$libwnn" >&5
+echo "configure:10872: 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 10808 "configure"
+#line 10877 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10815,7 +10884,7 @@ int main() {
 jl_fi_dic_list()
 ; return 0; }
 EOF
-if { (eval echo configure:10819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10850,15 +10919,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:10854: checking for canna/jrkanji.h" >&5
+echo "configure:10923: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10857 "configure"
+#line 10926 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10862: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10931: \"$ac_try\") 1>&5; (eval $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:10889: checking for canna/jrkanji.h" >&5
+echo "configure:10958: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10892 "configure"
+#line 10961 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10897: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10966: \"$ac_try\") 1>&5; (eval $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:10925: checking for canna/RK.h" >&5
+echo "configure:10994: checking for canna/RK.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10928 "configure"
+#line 10997 "configure"
 #include "confdefs.h"
 #include <canna/RK.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10933: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11002: \"$ac_try\") 1>&5; (eval $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:10956: checking for RkBgnBun in -lRKC" >&5
+echo "configure:11025: 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 10961 "configure"
+#line 11030 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10968,7 +11037,7 @@ int main() {
 RkBgnBun()
 ; return 0; }
 EOF
-if { (eval echo configure:10972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11041: \"$ac_link\") 1>&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:10995: checking for jrKanjiControl in -lcanna" >&5
+echo "configure:11064: 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 11000 "configure"
+#line 11069 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11007,7 +11076,7 @@ int main() {
 jrKanjiControl()
 ; return 0; }
 EOF
-if { (eval echo configure:11011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11080: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11056,12 +11125,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:11060: checking for layout_object_getvalue in -li18n" >&5
+echo "configure:11129: 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 11065 "configure"
+#line 11134 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11072,7 +11141,7 @@ int main() {
 layout_object_getvalue()
 ; return 0; }
 EOF
-if { (eval echo configure:11076: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11129,7 +11198,7 @@ xe_runpath_dir=`echo '' "$arg" | sed -e 's:^ ::' -e 's/^-L//'`
   eval "$xe_add_unique_runpath_dir"
 };; esac
     done
-        if test "$opsys $need_motif" = "sol2 yes"; then
+            if test "$opsys $need_motif" = "sol2 yes"; then
       xe_runpath_dir="/opt/SUNWdt/lib";
       eval "$xe_add_unique_runpath_dir";
     fi
 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:11163: checking for $ac_func" >&5
+echo "configure:11232: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11166 "configure"
+#line 11235 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11185,7 +11254,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11258: \"$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:11230: checking for $ac_func" >&5
+echo "configure:11299: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11233 "configure"
+#line 11302 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11252,7 +11321,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11256: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11325: \"$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
@@ -11281,10 +11350,10 @@ done
 
 
 echo $ac_n "checking for openpty""... $ac_c" 1>&6
-echo "configure:11285: checking for openpty" >&5
+echo "configure:11354: checking for openpty" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11288 "configure"
+#line 11357 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char openpty(); below.  */
@@ -11307,7 +11376,7 @@ openpty();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11380: \"$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
@@ -11326,12 +11395,12 @@ else
 
   
 echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6
-echo "configure:11330: checking for openpty in -lutil" >&5
+echo "configure:11399: 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 11335 "configure"
+#line 11404 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11342,7 +11411,7 @@ int main() {
 openpty()
 ; return 0; }
 EOF
-if { (eval echo configure:11346: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11377,15 +11446,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11381: checking for $ac_hdr" >&5
+echo "configure:11450: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11384 "configure"
+#line 11453 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11389: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11458: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11421,15 +11490,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:11425: checking for $ac_hdr" >&5
+echo "configure:11494: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11428 "configure"
+#line 11497 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11433: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11502: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11462,10 +11531,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:11466: checking for $ac_func" >&5
+echo "configure:11535: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11469 "configure"
+#line 11538 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11488,7 +11557,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11492: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11561: \"$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
@@ -11519,15 +11588,15 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11523: checking for $ac_hdr" >&5
+echo "configure:11592: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11526 "configure"
+#line 11595 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11531: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11600: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11564,10 +11633,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:11568: checking for $ac_func" >&5
+echo "configure:11637: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11571 "configure"
+#line 11640 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11590,7 +11659,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11663: \"$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
@@ -11623,15 +11692,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:11627: checking for $ac_hdr" >&5
+echo "configure:11696: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11630 "configure"
+#line 11699 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11635: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11704: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11667,12 +11736,12 @@ else
 
     
 echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6
-echo "configure:11671: checking for kstat_open in -lkstat" >&5
+echo "configure:11740: 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 11676 "configure"
+#line 11745 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11683,7 +11752,7 @@ int main() {
 kstat_open()
 ; return 0; }
 EOF
-if { (eval echo configure:11687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11756: \"$ac_link\") 1>&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:11722: checking for $ac_hdr" >&5
+echo "configure:11791: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11725 "configure"
+#line 11794 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11730: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11799: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11758,12 +11827,12 @@ done
 
     
 echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6
-echo "configure:11762: checking for kvm_read in -lkvm" >&5
+echo "configure:11831: 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 11767 "configure"
+#line 11836 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11774,7 +11843,7 @@ int main() {
 kvm_read()
 ; return 0; }
 EOF
-if { (eval echo configure:11778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11847: \"$ac_link\") 1>&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:11812: checking whether netdb declares h_errno" >&5
+echo "configure:11881: checking whether netdb declares h_errno" >&5
 cat > conftest.$ac_ext <<EOF
-#line 11814 "configure"
+#line 11883 "configure"
 #include "confdefs.h"
 #include <netdb.h>
 int main() {
 return h_errno;
 ; return 0; }
 EOF
-if { (eval echo configure:11821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11890: \"$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:11841: checking for sigsetjmp" >&5
+echo "configure:11910: checking for sigsetjmp" >&5
 cat > conftest.$ac_ext <<EOF
-#line 11843 "configure"
+#line 11912 "configure"
 #include "confdefs.h"
 #include <setjmp.h>
 int main() {
 sigjmp_buf bar; sigsetjmp (bar, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:11850: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11919: \"$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:11870: checking whether localtime caches TZ" >&5
+echo "configure:11939: checking whether localtime caches TZ" >&5
 
 if test "$ac_cv_func_tzset" = "yes"; then
 cat > conftest.$ac_ext <<EOF
-#line 11874 "configure"
+#line 11943 "configure"
 #include "confdefs.h"
 #include <time.h>
 #if STDC_HEADERS
@@ -11905,7 +11974,7 @@ main()
   exit (0);
 }
 EOF
-if { (eval echo configure:11909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:11978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   emacs_cv_localtime_cache=no
 else
@@ -11935,9 +12004,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:11939: checking whether gettimeofday accepts one or two arguments" >&5
+echo "configure:12008: checking whether gettimeofday accepts one or two arguments" >&5
 cat > conftest.$ac_ext <<EOF
-#line 11941 "configure"
+#line 12010 "configure"
 #include "confdefs.h"
 
 #ifdef TIME_WITH_SYS_TIME
@@ -11958,7 +12027,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:11962: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12031: \"$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:11984: checking for inline" >&5
+echo "configure:12053: checking for inline" >&5
 
 ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 11989 "configure"
+#line 12058 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:11996: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12065: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -12033,17 +12102,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:12037: checking for working alloca.h" >&5
+echo "configure:12106: checking for working alloca.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12040 "configure"
+#line 12109 "configure"
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
 char *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:12047: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12116: \"$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
@@ -12067,10 +12136,10 @@ EOF
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:12071: checking for alloca" >&5
+echo "configure:12140: checking for alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12074 "configure"
+#line 12143 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -12098,7 +12167,7 @@ int main() {
 char *p = (char *) alloca(1);
 ; return 0; }
 EOF
-if { (eval echo configure:12102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12171: \"$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
@@ -12137,10 +12206,10 @@ EOF
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:12141: checking whether alloca needs Cray hooks" >&5
+echo "configure:12210: checking whether alloca needs Cray hooks" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12144 "configure"
+#line 12213 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -12164,10 +12233,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:12168: checking for $ac_func" >&5
+echo "configure:12237: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12171 "configure"
+#line 12240 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -12190,7 +12259,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12194: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12263: \"$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
@@ -12220,10 +12289,10 @@ done
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:12224: checking stack direction for C alloca" >&5
+echo "configure:12293: checking stack direction for C alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12227 "configure"
+#line 12296 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -12242,7 +12311,7 @@ main ()
   exit (find_stack_direction() < 0);
 }
 EOF
-if { (eval echo configure:12246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12315: \"$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:12276: checking for vfork.h" >&5
+echo "configure:12345: checking for vfork.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12279 "configure"
+#line 12348 "configure"
 #include "confdefs.h"
 #include <vfork.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12353: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -12308,10 +12377,10 @@ else
 fi
 
 echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:12312: checking for working vfork" >&5
+echo "configure:12381: checking for working vfork" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12315 "configure"
+#line 12384 "configure"
 #include "confdefs.h"
 /* Thanks to Paul Eggert for this test.  */
 #include <stdio.h>
@@ -12406,7 +12475,7 @@ main() {
   }
 }
 EOF
-if { (eval echo configure:12410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12479: \"$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:12436: checking for working strcoll" >&5
+echo "configure:12505: checking for working strcoll" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12439 "configure"
+#line 12508 "configure"
 #include "confdefs.h"
 #include <string.h>
 main ()
@@ -12445,7 +12514,7 @@ main ()
        strcoll ("123", "456") >= 0);
 }
 EOF
-if { (eval echo configure:12449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12518: \"$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:12477: checking for $ac_func" >&5
+echo "configure:12546: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12480 "configure"
+#line 12549 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -12499,7 +12568,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12503: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12572: \"$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:12531: checking whether getpgrp takes no argument" >&5
+echo "configure:12600: checking whether getpgrp takes no argument" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12534 "configure"
+#line 12603 "configure"
 #include "confdefs.h"
 
 /*
@@ -12585,7 +12654,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:12589: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12658: \"$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:12616: checking for working mmap" >&5
+echo "configure:12685: checking for working mmap" >&5
 case "$opsys" in ultrix* ) have_mmap=no ;; *)
 cat > conftest.$ac_ext <<EOF
-#line 12619 "configure"
+#line 12688 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <unistd.h>
@@ -12648,7 +12717,7 @@ int main (int argc, char *argv[])
   return 1;
 }
 EOF
-if { (eval echo configure:12652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   have_mmap=yes
 else
@@ -12677,9 +12746,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:12681: checking for M_MMAP_THRESHOLD" >&5
+echo "configure:12750: checking for M_MMAP_THRESHOLD" >&5
     cat > conftest.$ac_ext <<EOF
-#line 12683 "configure"
+#line 12752 "configure"
 #include "confdefs.h"
 #include <malloc.h>
 int main() {
@@ -12691,7 +12760,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12695: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12764: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   rel_alloc=no; echo "$ac_t""yes" 1>&6;
 else
@@ -12716,15 +12785,15 @@ EOF
 
 ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for termios.h""... $ac_c" 1>&6
-echo "configure:12720: checking for termios.h" >&5
+echo "configure:12789: checking for termios.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12723 "configure"
+#line 12792 "configure"
 #include "confdefs.h"
 #include <termios.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12728: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12797: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -12767,15 +12836,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:12771: checking for termio.h" >&5
+echo "configure:12840: checking for termio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12774 "configure"
+#line 12843 "configure"
 #include "confdefs.h"
 #include <termio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12779: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12848: \"$ac_try\") 1>&5; (eval $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:12811: checking for socket" >&5
+echo "configure:12880: checking for socket" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12814 "configure"
+#line 12883 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char socket(); below.  */
@@ -12833,7 +12902,7 @@ socket();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12837: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12906: \"$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
@@ -12848,15 +12917,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:12852: checking for netinet/in.h" >&5
+echo "configure:12921: checking for netinet/in.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12855 "configure"
+#line 12924 "configure"
 #include "confdefs.h"
 #include <netinet/in.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12929: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -12873,15 +12942,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:12877: checking for arpa/inet.h" >&5
+echo "configure:12946: checking for arpa/inet.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12880 "configure"
+#line 12949 "configure"
 #include "confdefs.h"
 #include <arpa/inet.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12885: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12954: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -12906,9 +12975,9 @@ EOF
 }
 
       echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6
-echo "configure:12910: checking "for sun_len member in struct sockaddr_un"" >&5
+echo "configure:12979: checking "for sun_len member in struct sockaddr_un"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 12912 "configure"
+#line 12981 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -12919,7 +12988,7 @@ int main() {
 static struct sockaddr_un x; x.sun_len = 1;
 ; return 0; }
 EOF
-if { (eval echo configure:12923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12992: \"$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
@@ -12937,9 +13006,9 @@ else
 fi
 rm -f conftest*
       echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6
-echo "configure:12941: checking "for ip_mreq struct in netinet/in.h"" >&5
+echo "configure:13010: checking "for ip_mreq struct in netinet/in.h"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 12943 "configure"
+#line 13012 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -12949,7 +13018,7 @@ int main() {
 static struct ip_mreq x;
 ; return 0; }
 EOF
-if { (eval echo configure:12953: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13022: \"$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:12984: checking for msgget" >&5
+echo "configure:13053: checking for msgget" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12987 "configure"
+#line 13056 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char msgget(); below.  */
@@ -13006,7 +13075,7 @@ msgget();
 
 ; return 0; }
 EOF
-if { (eval echo configure:13010: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13079: \"$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
@@ -13021,15 +13090,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:13025: checking for sys/ipc.h" >&5
+echo "configure:13094: checking for sys/ipc.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13028 "configure"
+#line 13097 "configure"
 #include "confdefs.h"
 #include <sys/ipc.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13033: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13102: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -13046,15 +13115,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:13050: checking for sys/msg.h" >&5
+echo "configure:13119: checking for sys/msg.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13053 "configure"
+#line 13122 "configure"
 #include "confdefs.h"
 #include <sys/msg.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13058: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13127: \"$ac_try\") 1>&5; (eval $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:13096: checking for dirent.h" >&5
+echo "configure:13165: checking for dirent.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13099 "configure"
+#line 13168 "configure"
 #include "confdefs.h"
 #include <dirent.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13104: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13173: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -13127,15 +13196,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:13131: checking for sys/dir.h" >&5
+echo "configure:13200: checking for sys/dir.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13134 "configure"
+#line 13203 "configure"
 #include "confdefs.h"
 #include <sys/dir.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13139: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13208: \"$ac_try\") 1>&5; (eval $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:13172: checking for nlist.h" >&5
+echo "configure:13241: checking for nlist.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13175 "configure"
+#line 13244 "configure"
 #include "confdefs.h"
 #include <nlist.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13180: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13249: \"$ac_try\") 1>&5; (eval $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:13210: checking "for sound support"" >&5
+echo "configure:13279: 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:13217: checking for multimedia/audio_device.h" >&5
+echo "configure:13286: checking for multimedia/audio_device.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13220 "configure"
+#line 13289 "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:13225: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13294: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
   fi
 
     if test -z "$sound_found" -a -d "/usr/demo/SOUND"; then
-    sound_found=yes
-    extra_objs="$extra_objs sunplay.o" &&  if test "$extra_verbose" = "yes"; then
+    if test -d "/usr/demo/SOUND/include/multimedia"; then
+      sun_sound_cflags="-I/usr/demo/SOUND/include"
+    elif test -d "/usr/demo/SOUND/multimedia"; then
+      sun_sound_cflags="-I/usr/demo/SOUND"
+    fi
+
+    if test -n "$native_sound_lib"; then
+      sun_sound_lib="$native_sound_lib"
+    elif test -r "/usr/demo/SOUND/lib/libaudio.a"; then
+      sun_sound_lib="/usr/demo/SOUND/lib/libaudio.a"
+    elif test -r "/usr/demo/SOUND/libaudio.a"; then
+      sun_sound_lib="/usr/demo/SOUND/libaudio.a"
+    fi
+
+    if test -n "$sun_sound_cflags" -a -n "$sun_sound_lib"; then
+      native_sound_lib="$sun_sound_lib"
+      sound_cflags="$sun_sound_cflags"
+      sound_found=yes
+      extra_objs="$extra_objs sunplay.o" &&  if test "$extra_verbose" = "yes"; then
    echo "    xemacs will be linked with \"sunplay.o\""
  fi
-    if test -d "/usr/demo/SOUND/include"
-      then sound_cflags="-I/usr/demo/SOUND/include"
-      else sound_cflags="-I/usr/demo/SOUND"
-    fi
-    if test -z "$native_sound_lib" ; then
-      if test -r "/usr/demo/SOUND/lib/libaudio.a"
-        then native_sound_lib="/usr/demo/SOUND/lib/libaudio.a"
-        else native_sound_lib="/usr/demo/SOUND/libaudio.a"
-      fi
     fi
   fi
 
       if test -z "$native_sound_lib"; then
         
 echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6
-echo "configure:13273: checking for ALopenport in -laudio" >&5
+echo "configure:13350: 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 13278 "configure"
+#line 13355 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13285,7 +13362,7 @@ int main() {
 ALopenport()
 ; return 0; }
 EOF
-if { (eval echo configure:13289: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13366: \"$ac_link\") 1>&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:13320: checking for AOpenAudio in -lAlib" >&5
+echo "configure:13397: 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 13325 "configure"
+#line 13402 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13332,7 +13409,7 @@ int main() {
 AOpenAudio()
 ; return 0; }
 EOF
-if { (eval echo configure:13336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13413: \"$ac_link\") 1>&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:13381: checking for ${dir}/soundcard.h" >&5
+echo "configure:13458: checking for ${dir}/soundcard.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13384 "configure"
+#line 13461 "configure"
 #include "confdefs.h"
 #include <${dir}/soundcard.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13389: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13466: \"$ac_try\") 1>&5; (eval $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:13443: checking for audio/audiolib.h" >&5
+echo "configure:13520: checking for audio/audiolib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13446 "configure"
+#line 13523 "configure"
 #include "confdefs.h"
 #include <audio/audiolib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13451: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13528: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -13465,12 +13542,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:13469: checking for AuOpenServer in -laudio" >&5
+echo "configure:13546: 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 13474 "configure"
+#line 13551 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13481,7 +13558,7 @@ int main() {
 AuOpenServer()
 ; return 0; }
 EOF
-if { (eval echo configure:13485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -13520,7 +13597,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 13524 "configure"
+#line 13601 "configure"
 #include "confdefs.h"
 #include <audio/Xtutil.h>
 EOF
@@ -13551,7 +13628,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:13555: checking for $ac_word" >&5
+echo "configure:13632: 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:13584: checking for esd_play_stream" >&5
+echo "configure:13661: checking for esd_play_stream" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13587 "configure"
+#line 13664 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char esd_play_stream(); below.  */
@@ -13606,7 +13683,7 @@ esd_play_stream();
 
 ; return 0; }
 EOF
-if { (eval echo configure:13610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13687: \"$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
@@ -13657,7 +13734,7 @@ test -z "$with_tty" && with_tty=yes
 
 if test "$with_tty" = "yes"  ; then
   echo "checking for TTY-related features" 1>&6
-echo "configure:13661: checking for TTY-related features" >&5
+echo "configure:13738: checking for TTY-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_TTY
 EOF
@@ -13673,12 +13750,12 @@ EOF
     if test -z "$with_ncurses"; then
     
 echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
-echo "configure:13677: checking for tgetent in -lncurses" >&5
+echo "configure:13754: 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 13682 "configure"
+#line 13759 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13689,7 +13766,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:13693: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -13722,15 +13799,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:13726: checking for ncurses/curses.h" >&5
+echo "configure:13803: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13729 "configure"
+#line 13806 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13734: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13811: \"$ac_try\") 1>&5; (eval $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:13756: checking for ncurses/term.h" >&5
+echo "configure:13833: checking for ncurses/term.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13759 "configure"
+#line 13836 "configure"
 #include "confdefs.h"
 #include <ncurses/term.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13764: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13841: \"$ac_try\") 1>&5; (eval $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:13794: checking for ncurses/curses.h" >&5
+echo "configure:13871: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13797 "configure"
+#line 13874 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:13802: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13879: \"$ac_try\") 1>&5; (eval $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:13837: checking for tgetent in -l$lib" >&5
+echo "configure:13914: 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 13842 "configure"
+#line 13919 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13849,7 +13926,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:13853: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13930: \"$ac_link\") 1>&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:13878: checking for tgoto in -ltermcap" >&5
+echo "configure:13955: 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 13883 "configure"
+#line 13960 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13890,7 +13967,7 @@ int main() {
 tgoto()
 ; return 0; }
 EOF
-if { (eval echo configure:13894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13971: \"$ac_link\") 1>&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:13939: checking for tgetent in -lcurses" >&5
+echo "configure:14016: 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 13944 "configure"
+#line 14021 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13951,7 +14028,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:13955: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -13969,12 +14046,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:13973: checking for tgetent in -ltermcap" >&5
+echo "configure:14050: 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 13978 "configure"
+#line 14055 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -13985,7 +14062,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:13989: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14033,15 +14110,15 @@ EOF
 
     test -z "$with_gpm" && { ac_safe=`echo "gpm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for gpm.h""... $ac_c" 1>&6
-echo "configure:14037: checking for gpm.h" >&5
+echo "configure:14114: checking for gpm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14040 "configure"
+#line 14117 "configure"
 #include "confdefs.h"
 #include <gpm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:14045: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:14122: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
  }
   test -z "$with_gpm" && { 
 echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
-echo "configure:14068: checking for Gpm_Open in -lgpm" >&5
+echo "configure:14145: 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 14073 "configure"
+#line 14150 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -14080,7 +14157,7 @@ int main() {
 Gpm_Open()
 ; return 0; }
 EOF
-if { (eval echo configure:14084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14130,20 +14207,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:14134: checking for database support" >&5
+echo "configure:14211: 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:14139: checking for ndbm.h" >&5
+echo "configure:14216: checking for ndbm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14142 "configure"
+#line 14219 "configure"
 #include "confdefs.h"
 #include <ndbm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:14147: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:14224: \"$ac_try\") 1>&5; (eval $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:14177: checking for dbm_open in -lgdbm" >&5
+echo "configure:14254: 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 14182 "configure"
+#line 14259 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -14189,7 +14266,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:14193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14270: \"$ac_link\") 1>&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:14221: checking for dbm_open" >&5
+echo "configure:14298: checking for dbm_open" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14224 "configure"
+#line 14301 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbm_open(); below.  */
@@ -14243,7 +14320,7 @@ dbm_open();
 
 ; return 0; }
 EOF
-if { (eval echo configure:14247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14324: \"$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
@@ -14262,12 +14339,12 @@ else
 
     
 echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
-echo "configure:14266: checking for dbm_open in -ldbm" >&5
+echo "configure:14343: 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 14271 "configure"
+#line 14348 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -14278,7 +14355,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:14282: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14319,12 +14396,12 @@ EOF
 
 if test "$with_database_berkdb" != "no"; then
   echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6
-echo "configure:14323: checking for Berkeley db.h" >&5
+echo "configure:14400: 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 14328 "configure"
+#line 14405 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -14340,7 +14417,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14344: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14421: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   db_h_file="$header"; break
 else
@@ -14351,7 +14428,7 @@ rm -f conftest*
         ;;
         *)
     cat > conftest.$ac_ext <<EOF
-#line 14355 "configure"
+#line 14432 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -14373,7 +14450,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14377: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   db_h_file="$header"; break
 else
@@ -14391,9 +14468,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:14395: checking for Berkeley DB version" >&5
+echo "configure:14472: checking for Berkeley DB version" >&5
     cat > conftest.$ac_ext <<EOF
-#line 14397 "configure"
+#line 14474 "configure"
 #include "confdefs.h"
 #include <$db_h_file>
 #if DB_VERSION_MAJOR > 1
@@ -14405,7 +14482,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 14409 "configure"
+#line 14486 "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:14436: checking for $dbfunc" >&5
+echo "configure:14513: checking for $dbfunc" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14439 "configure"
+#line 14516 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $dbfunc(); below.  */
@@ -14458,7 +14535,7 @@ $dbfunc();
 
 ; return 0; }
 EOF
-if { (eval echo configure:14462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14539: \"$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
@@ -14477,12 +14554,12 @@ else
 
     
 echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6
-echo "configure:14481: checking for $dbfunc in -ldb" >&5
+echo "configure:14558: 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 14486 "configure"
+#line 14563 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -14493,7 +14570,7 @@ int main() {
 $dbfunc()
 ; return 0; }
 EOF
-if { (eval echo configure:14497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14574: \"$ac_link\") 1>&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:14571: checking for SOCKSinit in -lsocks" >&5
+echo "configure:14648: 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 14576 "configure"
+#line 14653 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -14583,7 +14660,7 @@ int main() {
 SOCKSinit()
 ; return 0; }
 EOF
-if { (eval echo configure:14587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14664: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14638,7 +14715,7 @@ fi
 
 if test "$with_modules" != "no"; then
   echo "checking for module support" 1>&6
-echo "configure:14642: checking for module support" >&5
+echo "configure:14719: checking for module support" >&5
 
     if test "$with_msw" = "yes"; then
     have_dl=yes;
@@ -14654,15 +14731,15 @@ EOF
  ;;
       *)          ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
-echo "configure:14658: checking for dlfcn.h" >&5
+echo "configure:14735: checking for dlfcn.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 14661 "configure"
+#line 14738 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:14666: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:14743: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -14679,16 +14756,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:14683: checking for dlopen in -lc" >&5
+echo "configure:14760: checking for dlopen in -lc" >&5
            cat > conftest.$ac_ext <<EOF
-#line 14685 "configure"
+#line 14762 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 int main() {
              dlopen ("", 0);
 ; return 0; }
 EOF
-if { (eval echo configure:14692: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14769: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
    have_dl=yes 
 else
@@ -14697,18 +14774,18 @@ else
   rm -rf conftest*
   
                echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:14701: checking for dlopen in -ldl" >&5
+echo "configure:14778: checking for dlopen in -ldl" >&5
                ac_save_LIBS="$LIBS"
                LIBS="-ldl $LIBS"
                cat > conftest.$ac_ext <<EOF
-#line 14705 "configure"
+#line 14782 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 int main() {
                 dlopen ("", 0);
 ; return 0; }
 EOF
-if { (eval echo configure:14712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14789: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
    have_dl=yes 
 else
@@ -14737,12 +14814,12 @@ EOF
         else
            
 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:14741: checking for shl_load in -ldld" >&5
+echo "configure:14818: 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 14746 "configure"
+#line 14823 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -14753,7 +14830,7 @@ int main() {
 shl_load()
 ; return 0; }
 EOF
-if { (eval echo configure:14757: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14780,12 +14857,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6
-echo "configure:14784: checking for dld_init in -ldld" >&5
+echo "configure:14861: 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 14789 "configure"
+#line 14866 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -14796,7 +14873,7 @@ int main() {
 dld_init()
 ; return 0; }
 EOF
-if { (eval echo configure:14800: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -14843,7 +14920,7 @@ xehost=$canonical
 xealias=$internal_configuration
 
 echo "checking how to build dynamic libraries for ${xehost}" 1>&6
-echo "configure:14847: checking how to build dynamic libraries for ${xehost}" >&5
+echo "configure:14924: checking how to build dynamic libraries for ${xehost}" >&5
 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts.
 case "$xehost" in
 *-*-linux-gnu*) ;;
@@ -14871,9 +14948,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:14875: checking checking whether we are using GNU C" >&5
+echo "configure:14952: checking checking whether we are using GNU C" >&5
   cat > conftest.$ac_ext <<EOF
-#line 14877 "configure"
+#line 14954 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -14895,11 +14972,11 @@ rm -f conftest*
 fi
 
 echo $ac_n "checking how to produce PIC code""... $ac_c" 1>&6
-echo "configure:14899: checking how to produce PIC code" >&5
+echo "configure:14976: checking how to produce PIC code" >&5
 wl=
 
 can_build_shared=yes
-if test "$XEGCC" = yes; then
+if test "$XEGCC" = yes -o "$__ICC" = yes; then
   wl='-Wl,'
 
   case "$xehost_os" in
@@ -14996,18 +15073,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:15000: checking if PIC flag ${dll_cflags} really works" >&5
+echo "configure:15077: checking if PIC flag ${dll_cflags} really works" >&5
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $dll_cflags -DPIC"
   cat > conftest.$ac_ext <<EOF
-#line 15004 "configure"
+#line 15081 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:15011: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15088: \"$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
@@ -15038,8 +15115,8 @@ cc_produces_so=no
 xldf=
 xcldf=
 echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6
-echo "configure:15042: checking if C compiler can produce shared libraries" >&5
-if test "$XEGCC" = yes; then
+echo "configure:15119: checking if C compiler can produce shared libraries" >&5
+if test "$XEGCC" = yes -o "$__ICC" = yes; then
   xcldf="-shared"
   xldf="-shared"
 else # Not using GCC
@@ -15089,14 +15166,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 15093 "configure"
+#line 15170 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:15100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cc_produces_so=yes
 else
@@ -15121,7 +15198,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:15125: checking for ld used by GCC" >&5
+echo "configure:15202: checking for ld used by GCC" >&5
     ac_prog=`($CC -print-prog-name=ld) 2>&5`
     case "$ac_prog" in
     # Accept absolute paths.
@@ -15147,7 +15224,7 @@ echo "configure:15125: checking for ld used by GCC" >&5
     esac
   else
     echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:15151: checking for GNU ld" >&5
+echo "configure:15228: checking for GNU ld" >&5
   fi
 
   if test -z "$LTLD"; then
@@ -15185,7 +15262,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:15189: checking if the linker is GNU ld" >&5
+echo "configure:15266: 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
@@ -15213,7 +15290,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:15217: checking whether the linker supports shared libraries" >&5
+echo "configure:15294: checking whether the linker supports shared libraries" >&5
   dll_ld=$CC
   dll_ldflags=$LDFLAGS
   ld_shlibs=yes
@@ -15424,10 +15501,10 @@ EOF
     for ac_func in dlerror _dlerror
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15428: checking for $ac_func" >&5
+echo "configure:15505: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 15431 "configure"
+#line 15508 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -15450,7 +15527,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:15454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15531: \"$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
@@ -15489,11 +15566,11 @@ done
 fi
 
 cat > conftest.$ac_ext <<EOF
-#line 15493 "configure"
+#line 15570 "configure"
 #include "confdefs.h"
 int main(int c,char *v[]){return 0;}
 EOF
-if { (eval echo configure:15497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:15574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -16133,6 +16210,66 @@ else echo "  Not using any machine description file"
 fi
 
 echo "  Compiler:                          $CC $CFLAGS"
+case "$CC" in
+  gcc*)        echo "  Compiler version:                  `$CC --version | head -1`"
+        echo "  Compiler specs file:               `$CC -v 2>&1 | sed 's/.* \([^ ]\)/\1/' | head -1`"
+       ;;
+  *) case "$canonical" in
+       *-*-aix*   ) 
+                 realcc=`which $CC`
+                 if test -L $realcc ; then
+           ccdir=`dirname $realcc`
+           ccprog=`/bin/ls -l $realcc | sed 's/.* \([^ ]\)/\1/'`
+                   case $ccprog in
+               */*) realcc=$ccprog;;
+               *) realcc=$ccdir/$ccprog;;
+           esac
+         fi
+         lpp=`lslpp -wqc $realcc | cut -f2 -d:`
+         if test ! -z "$lpp" ; then
+           lppstr=`lslpp -Lqc $lpp`
+           lpplev=`echo "$lppstr" | cut -f3 -d:`
+           lppdesc=`echo "$lppstr" | cut -f8 -d:`
+         fi
+         if test ! -z "$lpplev" ; then
+           echo "  Compiler version:                  $lpp $lpplev - $lppdesc"
+         else
+           echo "  Compiler version:                  (unknown version)"
+         fi
+       ;;
+       
+       *-*-solaris*)
+         ccvers=`$CC -V 2>&1 | head -1`
+         if test ! -z "$ccvers" ; then
+           echo "  Compiler version:                  $ccvers"
+         fi
+       ;;
+
+       alpha*-dec-osf*)
+         ccvers=`$CC -V | tr '\n' ' '`
+         if test ! -z "$ccvers" ; then
+           echo "  Compiler version:                  $ccvers"
+         fi
+       ;;
+
+       mips-sgi-irix*)
+         ccvers=`$CC -version`
+         if test ! -z "$ccvers" ; then
+           echo "  Compiler version:                  $ccvers"
+         fi
+       ;;
+
+               i[3-9]86-pc-linux)
+         ccvers=`$CC -V 2>&1 | sed -n 's@^Intel.*Version @@'p`
+         if test ! -z "$ccvers" ; then
+           echo "  Compiler version:                  $ccvers"
+         fi
+       ;;
+         
+       *) echo "  Compiler version:                  $CC on $canonical";;
+  esac
+esac
+
 echo "  Relocating allocator for buffers:  $rel_alloc"
 echo "  GNU version of malloc:             ${GNU_MALLOC}${GNU_MALLOC_reason}"
 case "$ld_switch_site" in
@@ -16140,6 +16277,42 @@ case "$ld_switch_site" in
     - Consider configuring with --pdump." ;;
 esac
 
+case "$canonical" in
+       *-*-linux*) 
+         if test -f /etc/redhat-release ; then
+           echo "  libc:                              `rpm -q glibc`";
+          else
+           echo "Need to guess glibc1/2/etc here";
+          fi
+       ;;
+
+       *-*-aix*) 
+         echo "  libc:                              bos.rte.libc `lslpp -Lqc bos.rte.libc | cut -f3 -d:`" 
+       ;;
+
+       *-*-solaris*)
+         libc=`pkginfo -l SUNWcsl | grep VERSION: | awk '{print $2}'`
+         echo "  libc:                              SUNWcsl $libc"
+
+       ;;
+
+       mips-sgi-irix*)
+         echo "  IRIX version:                      `uname -sRm`'"
+       ;;
+         
+
+       alpha*-dec-osf*)
+                 (cd /usr/.smdb.;
+               libc=` grep -h libc.so *.inv | awk '$9 == "f" {print $12}' | tr '\n' ','`
+               echo "  libc:                              $libc"
+               
+         )
+       ;;
+
+       *) echo "  libc:                              system-provided libc on $canonical" ;;
+esac
+
+
 echo "
 Window System:"
 if test "$with_msw" = "yes"; then
@@ -16161,6 +16334,9 @@ if test "$with_x11" = "yes"; then
 fi
 if test "$need_motif" = "yes" ; then
   echo "  Compiling in support for Motif."
+  if test "$have_lesstif" = "yes"; then
+    echo "    - Using LessTif implementation."
+  fi
   echo "  *WARNING*  Many versions of Motif are buggy, requiring workarounds."
   echo "             You are likely to experience slow redisplay."
   echo "             You may need to install vendor patches to Motif."
index d27f8ab..2d1847b 100644 (file)
@@ -348,6 +348,7 @@ with_site_lisp='no'
 with_site_modules='yes'
 with_menubars=''
 with_scrollbars=''
+dnl can't turn off widgets here because of systems where they are demanded
 with_widgets=''
 with_dialogs=''
 with_file_coding=''
@@ -1454,9 +1455,14 @@ case "$canonical" in
     esac
 
     case "$canonical" in
-      *-solaris*         )
+      *-solaris* )
        opsys=sol2
-       os_release=`uname -r | sed -e 's/^\([[0-9]]\)\.\([[0-9]]\).*/\1\2/'`
+       os_release_major=`uname -r | sed -e 's/^\([[0-9]]\{1,\}\)\.\([[0-9]]\{1,\}\).*/\1/'`
+       os_release_minor=`uname -r | sed -e 's/^\([[0-9]]\{1,\}\)\.\([[0-9]]\{1,\}\).*/\2/'`
+       case "$os_release_minor" in [[0-9]])
+         os_release_minor="0${os_release_minor}";;
+       esac
+       os_release="${os_release_major}${os_release_minor}"
        AC_DEFINE_UNQUOTED(OS_RELEASE, $os_release) ;;
 
       dnl The last Sun386 ran 4.0.
@@ -1706,7 +1712,7 @@ case "$opsys" in
   sol2)
    AC_DEFINE(__EXTENSIONS__)
    dnl Solaris 2 before 2.5 had some bugs with feature test macro interaction.
-   if test "$os_release" -ge 55; then
+   if test "$os_release" -ge 505; then
      AC_DEFINE(_XOPEN_SOURCE,500)
      AC_DEFINE(_XOPEN_SOURCE_EXTENDED)
    fi ;;
@@ -1727,14 +1733,19 @@ return 11;
 return 12;
 #elif defined __USLC__ && defined __SCO_VERSION__
 return 13;
+#elif defined __INTEL_COMPILER
+return 14;
 #else
 return 0;
 #endif
 }], [],
 [case "$conftest_rc" in
-  11) echo "You appear to be using the SunPro C compiler."; __SUNPRO_C=yes ;;
-  12) echo "You appear to be using the DEC C compiler."   ; __DECC=yes ;;
-  13) echo "You appear to be using the SCO C compiler."   ; __USLC__=yes ;;
+  11) echo "You appear to be using the SunPro C compiler." ; __SUNPRO_C=yes ;;
+  12) echo "You appear to be using the DEC C compiler."    ; __DECC=yes ;;
+  13) echo "You appear to be using the SCO C compiler."    ; __USLC__=yes ;;
+  14) echo "You appear to be using the Intel C++ compiler."; __ICC=yes
+      dnl Newer versions of icc claim to be GCC
+      GCC=no ;;
 esac])
 
 
@@ -1953,6 +1964,8 @@ if test "$cflags_specified" = "no"; then
     CFLAGS="-O3"
   elif test "$CC" = "xlc"; then
     CFLAGS="-g -O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000"
+  elif test "$__ICC" = "yes"; then
+    CFLAGS="-g -O3 -Ob2 -Wall -W1"
   dnl ### Add optimal CFLAGS support for other compilers HERE!
   else
     CFLAGS="-O" ;dnl The only POSIX-approved flag
@@ -2304,6 +2317,7 @@ if test "$add_runtime_path" = "yes" -a -n "$dash_r"; then
       case "$arg" in -L*) XE_ADD_RUNPATH_DIR(`echo '' "$arg" | sed -e 's:^ ::' -e 's/^-L//'`);; esac
     done
     dnl Sometimes /opt/SUNWdt/lib is the only installed Motif available
+    dnl #### this test always fails here as need_motif is null
     if test "$opsys $need_motif" = "sol2 yes"; then
       xe_runpath_dir="/opt/SUNWdt/lib";
       eval "$xe_add_unique_runpath_dir";
@@ -2566,7 +2580,7 @@ fi
 
 dnl Link with "-z ignore" on Solaris if supported
 if test "$opsys" = "sol2"; then
-  if test "$os_release" -ge 56; then
+  if test "$os_release" -ge 506; then
     AC_MSG_CHECKING(for \"-z ignore\" linker flag)
     case "`ld -h 2>&1`" in
       *-z\ ignore\|record* ) AC_MSG_RESULT(yes)
@@ -2971,7 +2985,7 @@ if test "$with_msw" != "no"; then
       XE_APPEND(netinstall, INSTALL_ARCH_DEP_SUBDIR)
     fi
 
-    install_pp="$blddir/lib-src/installexe.sh"
+    install_pp="$srcdir/lib-src/installexe.sh"
     XE_APPEND(-lshell32 -lgdi32 -luser32 -lcomdlg32 -lcomctl32 -lkernel32 -lwinspool, libs_system)
     test "$with_dragndrop" != no && XE_APPEND(msw, dragndrop_proto)
     if test "$window_system" != x11; then
@@ -3573,15 +3587,27 @@ fi dnl "$with_x11" = "yes"
 
 dnl Finish ensuring that we have values for the various toolkit items.
 dnl Not all toolkits support all widgets
-dnl if Motif is available we use it for the dialog boxes.
+
+dnl Avoid using Motif :-(
+case "$opsys" in
+  *linux* )  lucid_prefers_motif = "no"  ;;
+  * )        lucid_prefers_motif = "yes" ;;
+esac
 
 case "$with_menubars" in "" | "yes" | "athena" )
   with_menubars="lucid" ;;
 esac
 case "$with_dialogs" in "" | "yes" | "lucid" )
-  if   test "$have_motif"     = "yes"; then with_dialogs="motif"
-  elif test "$have_xaw"       = "yes"; then with_dialogs="athena"
-  else with_dialogs=no
+  if test "$lucid_prefers_motif" = "yes"; then
+    if   test "$have_motif"     = "yes"; then with_dialogs="motif"
+    elif test "$have_xaw"       = "yes"; then with_dialogs="athena"
+    else with_dialogs=no
+    fi
+  else
+    if   test "$have_xaw"       = "yes"; then with_dialogs="athena"
+    elif test "$have_motif"     = "yes"; then with_dialogs="motif"
+    else with_dialogs=no
+    fi
   fi ;;
 esac
 case "$with_scrollbars" in "" | "yes" )
@@ -3589,9 +3615,16 @@ case "$with_scrollbars" in "" | "yes" )
 esac
 case "$with_widgets" in
   "yes" | "lucid")
-    if   test "$have_motif" = "yes"; then with_widgets="motif"
-    elif test "$have_xaw"   = "yes"; then with_widgets="athena"
-    else with_widgets=no
+    if test "$lucid_prefers_motif" = "yes"; then
+      if   test "$have_motif" = "yes"; then with_widgets="motif"
+      elif test "$have_xaw"   = "yes"; then with_widgets="athena"
+      else with_widgets=no
+      fi
+    else
+      if   test "$have_xaw"   = "yes"; then with_widgets="athena"
+      elif test "$have_motif" = "yes"; then with_widgets="motif"
+      else with_widgets=no
+      fi
     fi ;;
   "" )
     with_widgets=no ;;
@@ -3785,7 +3818,10 @@ if test "$with_mule" = "yes" ; then
     AC_CHECKING(for XIM)
     AC_CHECK_LIB(X11, XOpenIM, with_xim=xlib, with_xim=no)
     dnl XIM + Lesstif is not (yet?) usable
-    if test "$have_motif $have_lesstif" = "yes no"; then
+    dnl Only use Motif if linking Motif anyway, or don't have xlib XIM
+    if test "$need_motif $have_lesstif" = "yes no"; then
+      AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif)
+    elif test "$have_motif $have_lesstif $with_xim" = "yes no no"; then
       AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif)
     fi ;;
   esac
@@ -4196,17 +4232,25 @@ if test "$with_native_sound" != "no"; then
 
   dnl Autodetect Sun native sound from SUNWaudmo package
   if test -z "$sound_found" -a -d "/usr/demo/SOUND"; then
-    sound_found=yes
-    XE_ADD_OBJS(sunplay.o)
-    if test -d "/usr/demo/SOUND/include"
-      then sound_cflags="-I/usr/demo/SOUND/include"
-      else sound_cflags="-I/usr/demo/SOUND"
+    if test -d "/usr/demo/SOUND/include/multimedia"; then
+      sun_sound_cflags="-I/usr/demo/SOUND/include"
+    elif test -d "/usr/demo/SOUND/multimedia"; then
+      sun_sound_cflags="-I/usr/demo/SOUND"
     fi
-    if test -z "$native_sound_lib" ; then
-      if test -r "/usr/demo/SOUND/lib/libaudio.a"
-        then native_sound_lib="/usr/demo/SOUND/lib/libaudio.a"
-        else native_sound_lib="/usr/demo/SOUND/libaudio.a"
-      fi
+
+    if test -n "$native_sound_lib"; then
+      sun_sound_lib="$native_sound_lib"
+    elif test -r "/usr/demo/SOUND/lib/libaudio.a"; then
+      sun_sound_lib="/usr/demo/SOUND/lib/libaudio.a"
+    elif test -r "/usr/demo/SOUND/libaudio.a"; then
+      sun_sound_lib="/usr/demo/SOUND/libaudio.a"
+    fi
+
+    if test -n "$sun_sound_cflags" -a -n "$sun_sound_lib"; then
+      native_sound_lib="$sun_sound_lib"
+      sound_cflags="$sun_sound_cflags"
+      sound_found=yes
+      XE_ADD_OBJS(sunplay.o)
     fi
   fi
 
@@ -5019,6 +5063,73 @@ else echo "  Not using any machine description file"
 fi
 
 echo "  Compiler:                          $CC $CFLAGS"
+dnl Let's save some helpful-for-debugging info like compiler and libc versions..
+dnl First, see if it's gcc - the same check works everyplace...
+case "$CC" in
+  gcc*)        echo "  Compiler version:                  `$CC --version | head -1`"
+        echo "  Compiler specs file:               `$CC -v 2>&1 | sed 's/.* \([[^ ]]\)/\1/' | head -1`"
+       ;;
+dnl non-gcc machine-specific magic - contributions welcome
+  *) case "$canonical" in
+       *-*-aix*   ) 
+          dnl Yes, it's this ugly for AIX...
+         realcc=`which $CC`
+         dnl Might be a symlink created by replaceCset command
+         if test -L $realcc ; then
+           ccdir=`dirname $realcc`
+           ccprog=`/bin/ls -l $realcc | sed 's/.* \([[^ ]]\)/\1/'`
+           dnl This doesn't handle ../../xlc type stuff, but I've not seen one...
+           case $ccprog in
+               */*) realcc=$ccprog;;
+               *) realcc=$ccdir/$ccprog;;
+           esac
+         fi
+         lpp=`lslpp -wqc $realcc | cut -f2 -d:`
+         if test ! -z "$lpp" ; then
+           lppstr=`lslpp -Lqc $lpp`
+           lpplev=`echo "$lppstr" | cut -f3 -d:`
+           lppdesc=`echo "$lppstr" | cut -f8 -d:`
+         fi
+         if test ! -z "$lpplev" ; then
+           echo "  Compiler version:                  $lpp $lpplev - $lppdesc"
+         else
+           echo "  Compiler version:                  (unknown version)"
+         fi
+       ;;
+       
+       *-*-solaris*)
+         ccvers=`$CC -V 2>&1 | head -1`
+         if test ! -z "$ccvers" ; then
+           echo "  Compiler version:                  $ccvers"
+         fi
+       ;;
+
+       alpha*-dec-osf*)
+         ccvers=`$CC -V | tr '\n' ' '`
+         if test ! -z "$ccvers" ; then
+           echo "  Compiler version:                  $ccvers"
+         fi
+       ;;
+
+       mips-sgi-irix*)
+         ccvers=`$CC -version`
+         if test ! -z "$ccvers" ; then
+           echo "  Compiler version:                  $ccvers"
+         fi
+       ;;
+
+       dnl Intel C++ Compiler on Linux
+       i[[3-9]]86-pc-linux)
+         ccvers=`$CC -V 2>&1 | sed -n 's@^Intel.*Version @@'p`
+         if test ! -z "$ccvers" ; then
+           echo "  Compiler version:                  $ccvers"
+         fi
+       ;;
+         
+       *) echo "  Compiler version:                  $CC on $canonical";;
+  esac
+esac
+
 echo "  Relocating allocator for buffers:  $rel_alloc"
 echo "  GNU version of malloc:             ${GNU_MALLOC}${GNU_MALLOC_reason}"
 case "$ld_switch_site" in
@@ -5026,6 +5137,45 @@ case "$ld_switch_site" in
     - Consider configuring with --pdump." ;;
 esac
 
+dnl Now get the libc version - contributions welcome
+case "$canonical" in
+       *-*-linux*) 
+         if test -f /etc/redhat-release ; then
+           echo "  libc:                              `rpm -q glibc`";
+dnl need a Debian and Suse check here...
+          else
+           echo "Need to guess glibc1/2/etc here";
+          fi
+       ;;
+
+       *-*-aix*) 
+         echo "  libc:                              bos.rte.libc `lslpp -Lqc bos.rte.libc | cut -f3 -d:`" 
+       ;;
+
+       *-*-solaris*)
+         libc=`pkginfo -l SUNWcsl | grep VERSION: | awk '{print $2}'`
+         echo "  libc:                              SUNWcsl $libc"
+
+       ;;
+
+       mips-sgi-irix*)
+         echo "  IRIX version:                      `uname -sRm`'"
+       ;;
+         
+
+       alpha*-dec-osf*)
+       dnl Another ugly case
+         (cd /usr/.smdb.;
+               libc=` grep -h libc.so *.inv | awk '$9 == "f" {print $12}' | tr '\n' ','`
+               echo "  libc:                              $libc"
+               
+         )
+       ;;
+
+       *) echo "  libc:                              system-provided libc on $canonical" ;;
+esac
+
+
 echo "
 Window System:"
 if test "$with_msw" = "yes"; then
@@ -5047,6 +5197,9 @@ if test "$with_x11" = "yes"; then
 fi
 if test "$need_motif" = "yes" ; then
   echo "  Compiling in support for Motif."
+  if test "$have_lesstif" = "yes"; then
+    echo "    - Using LessTif implementation."
+  fi
   echo "  *WARNING*  Many versions of Motif are buggy, requiring workarounds."
   echo "             You are likely to experience slow redisplay."
   echo "             You may need to install vendor patches to Motif."
index 0983d73..2647128 100644 (file)
@@ -139,7 +139,7 @@ explicitly specify which library to link against.
                         *WARNING*  The Motif menubar is currently broken.
 --with-scrollbars=TYPE  (Enum) Types: `lucid'(*), `motif', `athena', or `no'.
 --with-dialogs=TYPE     (Enum) Types: `lucid'(*), `motif', `athena', or `no'.
---with-widgets=TYPE     (Enum) Types: `lucid'(*), `motif', `athena', or `no'.
+--with-widgets=TYPE     (Enum) Types: `lucid', `motif', `athena', or `no'(*).
 --with-athena=TYPE      (Enum) Link with the TYPE Athena library.  Types:
                         `xaw' [flat], `3d', `next', `95', or `xpm'.
 --with-dragndrop (*)    Support generic drag and drop API. (EXPERIMENTAL)
index b54c142..6eaad69 100644 (file)
@@ -36,14 +36,15 @@ theme for the releases following the promotion of 21.4 from "gamma" to
 21.4.13: Rational FORTRAN
 21.4.14: Reasonable Discussion
 21.4.15: Security Through Obscurity
-21.4.16: Social Property
-21.4.17: Stable Release Maintainer
-21.4.18: Standard C
-21.4.19: Successful IPO
-21.4.20: Sufficiently Smart Compiler
-21.4.21: The Gift Economy
-21.4.22: Too Much Mozart
-21.4.23: UTF-8 BOM
+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
 
 N.B.  Only incredibly redeeming suggestions can be accepted now.
 
index fddf29b..5d30487 100644 (file)
@@ -97,6 +97,9 @@ Portable Emacs Lisp utilities library.
 *** emerge
 Another interface over GNU patch.
 
+*** erc
+ERC is an Emacs InternetRelayChat client.
+
 *** eshell
 Command shell implemented entirely in Emacs Lisp.
 
@@ -161,7 +164,8 @@ Spell-checking with GNU ispell.
 Integrated Development Environment for Java.
 
 *** liece
-IRC (Internet Relay Chat) client for Emacs.
+IRC (Internet Relay Chat) client for Emacs.  Note, this package is
+deprecated and will be removed, use riece instead.
 
 *** mail-lib
 Fundamental lisp files for providing email support.
@@ -173,7 +177,7 @@ Support for messaging encryption with PGP.
 Messaging in an Emacs World.
 
 *** mh-e
-Front end support for MH.
+The XEmacs Interface to the MH Mail System.
 
 *** mine
 Minehunt Game.
@@ -230,6 +234,9 @@ Python support.
 *** reftex
 Emacs support for LaTeX cross-references, citations.
 
+*** riece
+IRC (Internet Relay Chat) client for Emacs.
+
 *** rmail
 An obsolete Emacs mailer.  If you do not already use it don't start.
 
diff --git a/etc/package-index.LATEST.pgp b/etc/package-index.LATEST.pgp
deleted file mode 100644 (file)
index 2fafcc9..0000000
+++ /dev/null
@@ -1,2512 +0,0 @@
-;; Package Index file -- Do not edit manually.
-;;;@@@
-(package-get-update-base-entry (quote
-(ecb
-  (standards-version 1.1
-   version "1.08"
-   author-version "1.94"
-   date "2003-06-27"
-   build-date "2003-06-27"
-   maintainer "Klaus Berndl <klaus.berndl@sdm.de>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Emacs source code browser."
-   filename "ecb-1.08-pkg.tar.gz"
-   md5sum "840dabab1055bd61a3c2ecd5d1b5a7a0"
-   size 463303
-   provides (ecb-buffertab ecb-compilation ecb-create-layout ecb-cycle ecb ecb-eshell ecb-examples ecb-face ecb-help ecb-layout ecb-layout-defs ecb-mode-line ecb-navigate ecb-speedbar ecb-tod ecb-autogen ecb-jde ecb-upgrade ecb-util silentcomp tree-buffer)
-   requires (xemacs-base semantic eieio fsf-compat edit-utils jde mail-lib eshell ediff xemacs-devel speedbar)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(pgg
-  (standards-version 1.1
-   version "1.03"
-   author-version "0.1"
-   date "2003-05-14"
-   build-date "2003-05-14"
-   maintainer "Simon Josefsson <simon@josefsson.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Emacs interface to various PGP implementations."
-   filename "pgg-1.03-pkg.tar.gz"
-   md5sum "d5f112441b77a17e23fabd6bf4f17f49"
-   size 31526
-   provides (pgg pgg-def pgg-parse pgg-gpg pgg-pgp pgg-pgp5)
-   requires (xemacs-base fsf-compat edebug)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(perl-modes
-  (standards-version 1.1
-   version "1.04"
-   author-version "21.4"
-   date "2003-01-18"
-   build-date "2003-01-18"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Perl support."
-   filename "perl-modes-1.04-pkg.tar.gz"
-   md5sum "13cd4e312af571aefbf5415cfefc4fad"
-   size 161021
-   provides (cperl-mode perl-mode)
-   requires (xemacs-base ispell ps-print edit-utils fsf-compat)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(python-modes
-  (standards-version 1.1
-   version "1.02"
-   author-version "21.4"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Python support."
-   filename "python-modes-1.02-pkg.tar.gz"
-   md5sum "738bbb00e9bd21d3091ae41aedaac2f9"
-   size 81943
-   provides (pydoc python-mode)
-   requires (xemacs-base mail-lib)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(ruby-modes
-  (standards-version 1.1
-   version "1.01"
-   author-version "1.6.8"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Ruby support."
-   filename "ruby-modes-1.01-pkg.tar.gz"
-   md5sum "923181c6dd43210e7c85c971c754f38a"
-   size 21775
-   provides (inf-ruby ruby-mode rubydb)
-   requires (xemacs-base debug)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(fortran-modes
-  (standards-version 1.1
-   version "1.02"
-   author-version "21.4"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Fortran support."
-   filename "fortran-modes-1.02-pkg.tar.gz"
-   md5sum "ae3d346c19382f07227dd8756da53134"
-   size 66600
-   provides (f90 fortran)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(psgml-dtds
-  (standards-version 1.1
-   version "1.02"
-   author-version "21.4"
-   date "2002-08-29"
-   build-date "2002-08-29"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Deprecated collection of DTDs for psgml."
-   filename "psgml-dtds-1.02-pkg.tar.gz"
-   md5sum "90100411b64045dae38166116d1f8e3f"
-   size 367102
-   provides ()
-   requires (xemacs-base psgml edit-utils mail-lib fsf-compat eterm sh-script)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(docbookide
-  (standards-version 1.1
-   version "0.06"
-   author-version "0.1"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "DocBook editing support."
-   filename "docbookide-0.06-pkg.tar.gz"
-   md5sum "625c9ef5bb10c655b6f6dcba1b42ba2a"
-   size 31968
-   provides (dbide-abbrev dbide-data dbide-font dbide-process docbookide)
-   requires (xemacs-base ispell mail-lib)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(ecrypto
-  (standards-version 1.1
-   version "0.13"
-   author-version "2.0"
-   date "2003-06-22"
-   build-date "2003-06-22"
-   maintainer "Simon Josefsson <simon@josefsson.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Crypto functionality in Emacs Lisp."
-   filename "ecrypto-0.13-pkg.tar.gz"
-   md5sum "b05bf91a006f1778c6199ce263548e7e"
-   size 68668
-   provides (ascii-armor blowfish des hex-util md4 md5-dl md5-el md5 paranoid rander rc16 rijndael sha1-dl sha1-el sha1)
-   requires ()
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(ocaml
-  (standards-version 1.1
-   version "0.04"
-   author-version "3.06"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Objective Caml editing support."
-   filename "ocaml-0.04-pkg.tar.gz"
-   md5sum "3b2bc2c431e334050074aebcf260d06e"
-   size 64814
-   provides (caml-compat camldebug caml caml-font caml-help inf-caml)
-   requires (xemacs-base fsf-compat)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(sasl
-  (standards-version 1.1
-   version "1.13"
-   author-version "1.14.4"
-   date "2003-05-28"
-   build-date "2003-05-28"
-   maintainer "Simon Josefsson <simon@josefsson.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Simple Authentication and Security Layer (SASL) library."
-   filename "sasl-1.13-pkg.tar.gz"
-   md5sum "d6121fb31ab47213f97862dc0d0ec7a1"
-   size 27008
-   provides (hmac-def hmac-md5 hmac-sha1 ntlm sasl sasl-cram sasl-digest sasl-ntlm sasl-plain sasl-login sasl-anonymous)
-   requires (ecrypto)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(sml-mode
-  (standards-version 1.1
-   version "0.09"
-   author-version "3.9.5"
-   date "2003-01-18"
-   build-date "2003-01-18"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "SML editing support."
-   filename "sml-mode-0.09-pkg.tar.gz"
-   md5sum "2022d71197f600716f0b41da3794c19b"
-   size 81547
-   provides (sml-compat sml-defs sml-mode sml-move sml-proc sml-util)
-   requires (xemacs-base edebug fsf-compat)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(ess
-  (standards-version 1.1
-   version "1.04"
-   author-version "5.1.21"
-   date "2003-06-11"
-   build-date "2003-06-11"
-   maintainer "A.J. Rossini <rossini@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "ESS: Emacs Speaks Statistics."
-   filename "ess-1.04-pkg.tar.gz"
-   md5sum "ea46dcb7f35e56d9426c1749ee6c3fb5"
-   size 446476
-   provides (ess-batch ess-comp ess-cust ess-dump ess-emcs ess-font-lock ess-help ess-inf ess-iw32 ess-latex-mode ess-menu ess-mode ess-mous ess-noweb ess-site ess-sysdp ess-utils ess-vars ess essa-r essa-sas essd-arc essd-els essd-r essd-omg essd-r essd-s3 essd-s4 essd-sas essd-sp3 essd-sp4 essd-sp5 essd-sp6 essd-sta essd-vst essd-xls essddr essdsp6w essl-bug essl-lsp essl-omg essl-py essl-s essl-sas essl-sta make-regexp mouseme msdos noweb-font-lock-mode noweb-mode)
-   requires (xemacs-base mail-lib fsf-compat edit-utils speedbar sh-script eterm)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(haskell-mode
-  (standards-version 1.1
-   version "1.05"
-   author-version "1.44"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Haskell editing support."
-   filename "haskell-mode-1.05-pkg.tar.gz"
-   md5sum "198a9d68d1b4115c9faf45e14c264f54"
-   size 94162
-   provides (haskell-decl-scan haskell-doc haskell-font-lock haskell-indent haskell-mode haskell-simple-indent)
-   requires (dired mail-lib xemacs-base edit-utils)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(xslide
-  (standards-version 1.1
-   version "1.07"
-   author-version "0.2.1"
-   date "2003-06-28"
-   build-date "2003-06-28"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "XSL editing support."
-   filename "xslide-1.07-pkg.tar.gz"
-   md5sum "1e07a704f0aba2774feb20ee36065c36"
-   size 37872
-   provides (xslide-abbrev xslide-data xslide-font xslide-process xslide)
-   requires (ispell mail-lib xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(liece
-  (standards-version 1.1
-   version "1.12"
-   author-version "1.4.9"
-   date "2003-04-22"
-   build-date "2003-04-22"
-   maintainer "Daiki Ueno <ueno@unixuser.org>"
-   distribution xemacs
-   priority high
-   category "standard"
-   dump nil
-   description "IRC (Internet Relay Chat) client for Emacs."
-   filename "liece-1.12-pkg.tar.gz"
-   md5sum "c7f2aab45f8ada9398d4b0807e80433a"
-   size 199275
-   provides (liece-xemacs gettext liece-clfns liece-handler liece-compat liece-version liece-vars liece-globals liece-inlines liece-filter liece-coding liece-dcc liece-menu liece-000 liece-200 liece-300 liece-400 liece-500 liece-nick liece-channel liece-commands liece-ctcp liece-q-el liece-message liece-handle liece-hilit liece-intl liece-mail liece-minibuf liece-misc liece-tcp liece-url liece-x-face liece-window liece)
-   requires (apel mail-lib fsf-compat xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(latin-unity
-  (standards-version 1.1
-   version "1.07"
-   author-version "1.07"
-   date "2002-11-01"
-   build-date "2002-11-01"
-   maintainer "Stephen J. Turnbull <stephen@xemacs.org>"
-   distribution mule
-   priority high
-   category "mule"
-   dump nil
-   description "MULE: find single ISO 8859 character set to encode a buffer."
-   filename "latin-unity-1.07-pkg.tar.gz"
-   md5sum "7d4f163e1d98af367fab9f4ea5d01d8d"
-   size 116377
-   provides (latin-unity latin-unity-tables latin-unity-utils)
-   requires (mule-base mule-ucs leim fsf-compat dired)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(mmm-mode
-  (standards-version 1.1
-   version "1.00"
-   author-version "0.4.7"
-   date "2002-02-24"
-   build-date "2002-02-28"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "Multiple major modes in a single buffer"
-   filename "mmm-mode-1.00-pkg.tar.gz"
-   md5sum "c07c752ffd029d9a430c2fb118127e88"
-   size 176080
-   provides (mmm-auto mmm-class mmm-cmds mmm-compat mmm-mason mmm-mode mmm-region mmm-rpm mmm-sample mmm-univ mmm-utils mmm-vars)
-   requires (xemacs-base fsf-compat )
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(ibuffer
-  (standards-version 1.1
-   version "1.08"
-   author-version "21.5b6"
-   date "2002-07-14"
-   build-date "2002-07-14"
-   maintainer "John Paul Wallington <jpw@shootybangbang.com>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "Advanced replacement for buffer-menu"
-   filename "ibuffer-1.08-pkg.tar.gz"
-   md5sum "e7203eeeca98a89c2bfe051d81c729de"
-   size 87113
-   provides (ibuf-ext ibuf-macs ibuffer)
-   requires (ibuffer xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(xemacs-base
-  (standards-version 1.1
-   version "1.78"
-   author-version "21.4"
-   date "2003-06-11"
-   build-date "2003-06-11"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority high
-   category "standard"
-   dump nil
-   description "Fundamental XEmacs support, you almost certainly need this."
-   filename "xemacs-base-1.78-pkg.tar.gz"
-   md5sum "2f49dd65c93ced29f2a9d97bf3c4c9b3"
-   size 469861
-   provides (add-log advice-preload advice annotations assoc case-table chistory comint-xemacs comint compile debug ebuff-menu echistory edmacro ehelp electric enriched env facemenu ffap helper imenu iso-syntax macros novice outline passwd pp regexp-opt regi ring shell skeleton sort thing time-stamp timezone tq xbm-button xpm-button)
-   requires ()
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(tramp
-  (standards-version 1.1
-   version "1.15"
-   author-version "2.0.35"
-   date "2003-06-20"
-   build-date "2003-06-20"
-   maintainer "Kai Großjohann <kai.grossjohann@gmx.net>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Remote shell-based file editing."
-   filename "tramp-1.15-pkg.tar.gz"
-   md5sum "239ea97dafee64640e7c10082dd131d9"
-   size 247697
-   provides (tramp tramp-efs tramp-ftp tramp-smb tramp-util tramp-uu
-             tramp-vc trampcache)
-   requires (tramp xemacs-base vc fsf-compat efs dired mail-lib gnus ediff)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(text-modes
-  (standards-version 1.1
-   version "1.61"
-   author-version "21.4"
-   date "2003-06-08"
-   build-date "2003-06-08"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority high
-   category "standard"
-   dump nil
-   description "Miscellaneous support for editing text files."
-   filename "text-modes-1.61-pkg.tar.gz"
-   md5sum "d558a6d3137209ac2dac8dfb9259129a"
-   size 359003
-   provides (ansi-color autoinsert crontab-edit filladapt flyspell folding fold-isearch hexl htmlize image-mode iso-acc iso-ascii iso-cvt iso-insert iso-swed rtf-support swedish tabify whitespace-mode winmgr-mode xpm-mode xrdb-mode apache-mode po-mode po-compat css-mode)
-   requires (ispell fsf-compat xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(pcl-cvs
-  (standards-version 1.1
-   version "1.64"
-   author-version "R-2_9_9"
-   date "2002-07-30"
-   build-date "2002-07-30"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "CVS frontend."
-   filename "pcl-cvs-1.64-pkg.tar.gz"
-   md5sum "3d8f9aac5c5edefec62a33cb9695db9f"
-   size 161512
-   provides (cvs-compat cvs-edit cvs-log cvs-status easy-mmode pcl-cvs-defs pcl-cvs-info pcl-cvs-parse pcl-cvs-util pcl-cvs)
-   requires (xemacs-base elib vc dired edebug ediff edit-utils mail-lib prog-modes)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(mail-lib
-  (standards-version 1.1
-   version "1.59"
-   author-version "21.5b13"
-   date "2003-05-14"
-   build-date "2003-05-14"
-   maintainer "Simon Josefsson <simon@josefsson.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "Fundamental lisp files for providing email support."
-   filename "mail-lib-1.59-pkg.tar.gz"
-   md5sum "576bfafe24b1b08cfdf184fe021066c9"
-   size 198415
-   provides (base64 browse-url-xemacs browse-url highlight-headers mail-abbrevs mail-extr mail-utils mailheader netrc pop3 reporter rfc2104 rfc822 rmail rmail-mini rmailout sendmail smtpmail starttls tls)
-   requires (eterm xemacs-base fsf-compat sh-script ecrypto)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(jde
-  (standards-version 1.1
-   version "1.45"
-   author-version "2.3.2"
-   date "2003-01-26"
-   build-date "2003-01-26"
-   maintainer "Andy Piper <andy@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "Integrated Development Environment for Java."
-   filename "jde-1.45-pkg.tar.gz"
-   md5sum "64c39644d4e12e053aa0eb982d473405"
-   size 2403338
-   provides (beanshell efc jde-ant jde-bug jde-checkstyle jde-compat jde-compile jde-complete jde-db jde-dbo jde-dbs jde-ejb jde-gen jde-help jde-imenu jde-import jde-java-font-lock jde-java-grammar jde-javadoc-gen jde-javadoc jde-jdb jde-make jde-open-source jde-package jde-parse-class jde-parse jde-run jde-setnu jde-stat jde-util jde-which-method jde-widgets jde-wiz jde-xref jde tree-widget)
-   requires (jde cc-mode semantic debug speedbar edit-utils eterm mail-lib xemacs-base xemacs-devel eieio elib sh-script fsf-compat)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(fsf-compat
-  (standards-version 1.1
-   version "1.12"
-   author-version "21.4"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority high
-   category "standard"
-   dump nil
-   description "FSF Emacs compatibility files."
-   filename "fsf-compat-1.12-pkg.tar.gz"
-   md5sum "43183434592aed9a96e38ab48585b5fd"
-   size 21442
-   provides (overlay thingatpt timer x-popup-menu goto-addr)
-   requires (xemacs-base)
-   type single
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(edit-utils
-  (standards-version 1.1
-   version "2.02"
-   author-version "21.4"
-   date "2003-06-20"
-   build-date "2003-06-20"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority high
-   category "standard"
-   dump nil
-   description "Miscellaneous editor extensions, you probably need this."
-   filename "edit-utils-2.02-pkg.tar.gz"
-   md5sum "9155b838e5c09dd07dcefc926f5433e4"
-   size 720244
-   provides (abbrevlist after-save-commands atomic-extents avoid backup-dir balloon-help big-menubar blink-cursor blink-paren bookmark compare-w completion dabbrev desktop detached-minibuf edit-toolbar fast-lock file-part floating-toolbar flow-ctrl foldout func-menu hippie-exp icomplete id-select info-look iswitchb lazy-lock lazy-shot live-icon makesum man mic-paren paren mode-motion+ outl-mouse outln-18 page-ext blink-paren paren permanent-buffers popper power-macros recent-files redo reportmail resume rsz-minibuf saveconf savehist saveplace scroll-in-place setnu shell-font tempo toolbar-utils tree-menu uniquify vertical-mode where-was-i-db winring)
-   requires (xemacs-base xemacs-devel fsf-compat dired mail-lib)
-   type single
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(skk
-  (standards-version 1.1
-   version "1.23"
-   author-version "10.62a"
-   date "2002-09-25"
-   build-date "2002-09-25"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution mule
-   priority medium
-   category "mule"
-   dump nil
-   description "MULE: Japanese Language Input Method."
-   filename "skk-1.23-pkg.tar.gz"
-   md5sum "dc35f20896a56c8cf2e7ba16b15e453b"
-   size 1506691
-   provides (skk-auto skk-comp skk-cursor skk-develop skk-foreword skk-gadget skk-isearch skk-kakasi skk-kcode skk-leim skk-look skk-num skk-obsolete skk-server skk-tut skk-vars skk-viper skk vip)
-   requires (viper mule-base elib xemacs-base apel)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(ps-print
-  (standards-version 1.1
-   version "1.08"
-   author-version "6.5.6"
-   date "2002-08-29"
-   build-date "2002-08-29"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "Printing functions and utilities"
-   filename "ps-print-1.08-pkg.tar.gz"
-   md5sum "bbfb58fe514cf4bd6fbec2f62c43c823"
-   size 153729
-   provides (lpr ps-bdf ps-mule ps-print)
-   requires (text-modes)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(sieve
-  (standards-version 1.1
-   version "1.13"
-   author-version "21.4"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "Simon Josefsson <simon@josefsson.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Manage Sieve email filtering scripts."
-   filename "sieve-1.13-pkg.tar.gz"
-   md5sum "a8816344f83e92821989f9298c415038"
-   size 25479
-   provides (sieve sieve-mode sieve-manage)
-   requires (xemacs-base mail-lib cc-mode sasl)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(mule-ucs
-  (standards-version 1.1
-   version "1.04"
-   author-version "0.84"
-   date "2002-03-25"
-   build-date "2002-03-25"
-   maintainer "Stephen J. Turnbull <stephen@xemacs.org>"
-   distribution mule
-   priority high
-   category "mule"
-   dump nil
-   description "MULE: Extended coding systems (including Unicode) for XEmacs."
-   filename "mule-ucs-1.04-pkg.tar.gz"
-   md5sum "08df8359e7999c60f62f6ec92cccc197"
-   size 1313726
-   provides (mccl-font mucs-ccl mucs-error mucs-type mucs mule-uni tae tbl-mg trans-util txt-tbl un-data un-define un-supple un-tools un-trbase unicode unidata utf u-cns-1 u-cns-2 u-cns-3 u-cns-4 u-cns-5 u-cns-6 u-cns-7 uascii ubig5 uetiopic ugb2312 uipa uiscii uiso8859-1 uiso8859-14 uiso8859-15 uiso8859-2 uiso8859-3 uiso8859-4 uiso8859-5 uiso8859-6 uiso8859-7 uiso8859-8 uiso8859-9 ujisx0201 ujisx0208 ujisx0212 uksc5601 usisheng usupple utibetan utis620 uviscii)
-   requires (mule-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(clearcase
-  (standards-version 1.0
-   version "1.06"
-   author-version "21.5b6"
-   date "2002-06-27"
-   build-date "2002-06-27"
-   maintainer "Michael Diers <mdiers@elego.de>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "New Clearcase Version Control for XEmacs (UNIX, Windows)."
-   filename "clearcase-1.06-pkg.tar.gz"
-   md5sum "8f9a2485be7371b78b01b68039d91e09"
-   size 89634
-   provides (clearcase)
-   requires (dired fsf-compat mail-lib xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(dictionary
-  (standards-version 1.1
-   version "1.12"
-   author-version "1.8"
-   date "2003-06-22"
-   build-date "2003-06-22"
-   maintainer "Torsten Hilbrich <dictionary@myrkr.in-berlin.de>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Interface to RFC2229 dictionary servers."
-   filename "dictionary-1.12-pkg.tar.gz"
-   md5sum "717517bbad4e241f18941fd6c289b868"
-   size 39658
-   provides (dictionary connection link)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(build
-  (standards-version 1.0
-   version "1.10"
-   author-version "2.02"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "Adrian Aichner <adrian@xemacs.org>"
-   distribution stable
-   priority low
-   category "standard"
-   dump nil
-   description "Build XEmacs from within (UNIX, Windows)."
-   filename "build-1.10-pkg.tar.gz"
-   md5sum "442bf6d4729f40545d1ee1ad8eca5a93"
-   size 49207
-   provides (build)
-   requires (xemacs-base pcl-cvs dired w3 prog-modes)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(xslt-process
-  (standards-version 1.0
-   version "1.11"
-   author-version "1.2.1"
-   date "2002-10-08"
-   build-date "2002-10-08"
-   maintainer "Ovidiu Predescu <ovidiu@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "XSLT processing support."
-   filename "xslt-process-1.11-pkg.tar.gz"
-   md5sum "30273cbe2e90ae703ea410879412e68b"
-   size 199873
-   provides (xslt-process)
-   requires (jde cc-mode semantic debug speedbar edit-utils eterm mail-lib xemacs-base elib eieio sh-script fsf-compat xemacs-devel)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(eieio
-  (standards-version 1.1
-   version "1.04"
-   author-version "0.17"
-   date "2002-12-06"
-   build-date "2002-12-06"
-   maintainer "Eric Ludlam <zappo@gnu.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Enhanced Implementation of Emacs Interpreted Objects"
-   filename "eieio-1.04-pkg.tar.gz"
-   md5sum "6504c1a9225576fd0140cba9962e191b"
-   size 165595
-   provides (call-tree chart compare-strings eieio-base eieio-comp eieio-custom eieio-doc eieio-opt eieio-speedbar eieio-tests eieio linemark tree)
-   requires (speedbar xemacs-base edebug)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(egg-its
-  (standards-version 1.1
-   version "1.26"
-   author-version "21.5b1"
-   date "2001-05-07"
-   build-date "2001-05-10"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution mule
-   priority high
-   category "mule"
-   dump nil
-   description "MULE: Wnn (4.2 and 6) support.  SJ3 support."
-   filename "egg-its-1.26-pkg.tar.gz"
-   md5sum "a69b09fedc9aee8422ed7ed35b6649eb"
-   size 260749
-   provides (egg-cnpinyin egg-cnzhuyin egg-cwnn-leim egg-jisx0201 egg-jsymbol egg-kwnn-leim egg-leim egg-sj3-client egg-sj3-leim egg-sj3 egg-wnn egg)
-   requires (leim mule-base fsf-compat xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(edict
-  (standards-version 1.1
-   version "1.13"
-   author-version "0.9.9"
-   date "2002-01-30"
-   build-date "2002-02-13"
-   maintainer "Stephen J. Turnbull <stephen@xemacs.org>"
-   distribution mule
-   priority high
-   category "mule"
-   dump nil
-   description "MULE: Lisp Interface to EDICT, Kanji Dictionary"
-   filename "edict-1.13-pkg.tar.gz"
-   md5sum "ceef82c336de553e504aa3d216fbd366"
-   size 95541
-   provides (dui-registry dui edict-edit edict-english edict-japanese edict-morphology edict-test edict ts-mode)
-   requires (mule-base xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(lookup
-  (standards-version 1.1
-   version "1.13"
-   author-version "1.0"
-   date "2002-09-25"
-   build-date "2002-09-25"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution mule
-   priority high
-   category "mule"
-   dump nil
-   description "MULE: Dictionary support"
-   filename "lookup-1.13-pkg.tar.gz"
-   md5sum "cd658e3024349bf67743f6a0cce96be5"
-   size 214806
-   provides (evi-mule evi lookup-content lookup-defs lookup-entry lookup-select lookup-package lookup-select lookup-types lookup-utils lookup-vars lookup-vse lookup ndcookie ndeb ndic ndict ndkks ndmisc ndnmz ndspell ndsrd ndtp sdicf stem)
-   requires (mule-base cookie lookup)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(leim
-  (standards-version 1.1
-   version "1.20"
-   author-version "21.4"
-   date "2003-01-03"
-   build-date "2003-01-03"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution mule
-   priority medium
-   category "mule"
-   dump nil
-   description "MULE: Quail.  All non-English and non-Japanese language support."
-   filename "leim-1.20-pkg.tar.gz"
-   md5sum "33e2983108fb7c55f748b855a40e2a04"
-   size 1708682
-   provides ()
-   requires (leim mule-base fsf-compat xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(locale
-  (standards-version 1.1
-   version "1.20"
-   author-version "21.4"
-   date "2002-11-01"
-   build-date "2002-11-01"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution mule
-   priority high
-   category "mule"
-   dump nil
-   description "MULE: Localized menubars and localized splash screens."
-   filename "locale-1.20-pkg.tar.gz"
-   md5sum "f91249a741613f91f89369eb26458a2d"
-   size 36563
-   provides ()
-   requires (mule-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(mule-base
-  (standards-version 1.1
-   version "1.43"
-   author-version "21.5b13"
-   date "2003-05-11"
-   build-date "2003-05-11"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution mule
-   priority high
-   category "mule"
-   dump nil
-   description "MULE: Basic Mule support, required for building with Mule."
-   filename "mule-base-1.43-pkg.tar.gz"
-   md5sum "5caadede1749519085b30a016c99a7af"
-   size 444550
-   provides (canna-leim canna char-table china-util cyril-util isearch-ext japan-util ccl can-n-egg mule-help)
-   requires (fsf-compat xemacs-base apel)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(strokes
-  (standards-version 1.1
-   version "1.08"
-   author-version "21.1"
-   date "2000-10-05"
-   build-date "2001-01-15"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "oa"
-   dump nil
-   description "Mouse enhancement utility."
-   filename "strokes-1.08-pkg.tar.gz"
-   md5sum "c5ab0860ceb23b40798b11a1fa4c0240"
-   size 43486
-   provides (strokes)
-   requires (text-modes edit-utils mail-lib xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(time
-  (standards-version 1.1
-   version "1.13"
-   author-version "1.17"
-   date "2003-05-11"
-   build-date "2003-05-11"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "Display time & date on the modeline."
-   filename "time-1.13-pkg.tar.gz"
-   md5sum "6fff6a2cf70c65710a905de3bbbc2e5d"
-   size 20550
-   provides (time)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(slider
-  (standards-version 1.1
-   version "1.13"
-   author-version "0.3x1"
-   date "2000-10-05"
-   build-date "2001-01-15"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "oa"
-   dump nil
-   description "User interface tool."
-   filename "slider-1.13-pkg.tar.gz"
-   md5sum "3fbc16b2caeef30e87969e19efa40f32"
-   size 12021
-   provides (slider color-selector)
-   requires ()
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(sgml
-  (standards-version 1.1
-   version "1.08"
-   author-version "21.1"
-   date "2000-10-05"
-   build-date "2001-01-15"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "oa"
-   dump nil
-   description "SGML/Linuxdoc-SGML editing."
-   filename "sgml-1.08-pkg.tar.gz"
-   md5sum "bdadf462489fa1540cc56d1c561aaa54"
-   size 26964
-   provides (sgml linuxdoc-sgml)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(psgml
-  (standards-version 1.1
-   version "1.40"
-   author-version "1.3.1"
-   date "2003-01-19"
-   build-date "2003-01-19"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "Validated HTML/SGML editing."
-   filename "psgml-1.40-pkg.tar.gz"
-   md5sum "794e98e745f17aaa5fc3d731a59b9d0d"
-   size 301036
-   provides (iso-sgml psgml-api psgml-charent psgml-debug psgml-dtd psgml-edit psgml-fs psgml-html psgml-info psgml-parse psgml-sysdep psgml-xemacs psgml sgml-mode)
-   requires (xemacs-base edit-utils edebug xemacs-devel mail-lib fsf-compat eterm sh-script ps-print)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(pc
-  (standards-version 1.1
-   version "1.25"
-   author-version "21.5b6"
-   date "2002-06-04"
-   build-date "2002-06-04"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "PC style interface emulation."
-   filename "pc-1.25-pkg.tar.gz"
-   md5sum "03b7fcc55e1ce79a6017cdfa7fd49f3d"
-   size 17429
-   provides (delbs fusion pc-select pending-del s-region)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(ispell
-  (standards-version 1.1
-   version "1.24"
-   author-version "3.2"
-   date "2002-01-07"
-   build-date "2002-01-14"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Spell-checking with GNU ispell."
-   filename "ispell-1.24-pkg.tar.gz"
-   md5sum "409bfa4ca95d91bc03d8dcfe7c8f7810"
-   size 72543
-   provides (ispell)
-   requires ()
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(hm--html-menus
-  (standards-version 1.1
-   version "1.21"
-   author-version "5.9"
-   date "2003-06-28"
-   build-date "2003-06-28"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "HTML editing."
-   filename "hm--html-menus-1.21-pkg.tar.gz"
-   md5sum "77d84c92c6ce3109dbec828ac24bb25d"
-   size 179706
-   provides (adapt hm--date hm--html-configuration hm--html-drag-and-drop hm--html-indentation hm--html-keys hm--html-menu hm--html-mode hm--html-not-standard hm--html html-view internal-drag-and-drop tmpl-minor-mode)
-   requires (dired xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(frame-icon
-  (standards-version 1.1
-   version "1.09"
-   author-version "21.1"
-   date "1998-07-14"
-   build-date "2001-01-15"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "oa"
-   dump nil
-   description "Set up mode-specific icons for each frame under XEmacs"
-   filename "frame-icon-1.09-pkg.tar.gz"
-   md5sum "91922e43447422f175065428367fb00b"
-   size 33436
-   provides (forms forms-mode)
-   requires ()
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(forms
-  (standards-version 1.1
-   version "1.14"
-   author-version "2.37"
-   date "2002-01-07"
-   build-date "2002-01-14"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Forms editing support (obsolete, use Widget instead)."
-   filename "forms-1.14-pkg.tar.gz"
-   md5sum "c6530292a349a0c567311502c2038270"
-   size 48263
-   provides (forms forms-mode)
-   requires ()
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(calendar
-  (standards-version 1.1
-   version "1.19"
-   author-version "21.4"
-   date "2002-09-26"
-   build-date "2002-09-26"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Calendar and diary support."
-   filename "calendar-1.19-pkg.tar.gz"
-   md5sum "f41fe8405fc58fefe03fef27428223fe"
-   size 252793
-   provides (appt cal-china cal-coptic cal-dst cal-french cal-hebrew cal-islam cal-iso cal-japanese cal-julian cal-mayan cal-move cal-persia cal-tex cal-x cal-xemacs calendar diary-lib holidays lunar solar)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(calc
-  (standards-version 1.1
-   version "1.23"
-   author-version "2.02fX3"
-   date "2002-05-09"
-   build-date "2002-05-10"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Emacs calculator"
-   filename "calc-1.23-pkg.tar.gz"
-   md5sum "e66651dacc67325f6e6d033f80f2e989"
-   size 1615158
-   provides (calc-ext calc-macs calc)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(speedbar
-  (standards-version 1.1
-   version "1.26"
-   author-version "0.14beta4"
-   date "2003-01-03"
-   build-date "2003-01-03"
-   maintainer "Eric M. Ludlam <zappo@gnu.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Provides a separate frame with convenient references."
-   filename "speedbar-1.26-pkg.tar.gz"
-   md5sum "1bcc0c31772870347b33fed82da4dc91"
-   size 163116
-   provides (bigclock dframe rpm sb-ant sb-gud sb-html sb-image sb-info sb-rmail sb-texinfo sb-w3 speedbar)
-   requires (xemacs-base edebug)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(pcomplete
-  (standards-version 1.1
-   version "1.02"
-   author-version "1.1.6"
-   date "2002-10-14"
-   build-date "2002-10-14"
-   maintainer "John Wiegley <johnw@gnu.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "Provides programmatic completion."
-   filename "pcomplete-1.02-pkg.tar.gz"
-   md5sum "badc7fe7baa939025c954e37168a8157"
-   size 37301
-   provides (pcomplete)
-   requires (sh-script xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(eshell
-  (standards-version 1.1
-   version "1.05"
-   author-version "2.4.1"
-   date "2002-12-06"
-   build-date "2002-12-06"
-   maintainer "John Wiegley <johnw@gnu.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "Command shell implemented entirely in Emacs Lisp"
-   filename "eshell-1.05-pkg.tar.gz"
-   md5sum "657a26052b757a3caeb3a8f5256bfa64"
-   size 231854
-   provides (em-alias em-banner em-basic em-cmpl em-dirs em-glob em-hist em-ls em-pred em-prompt em-rebind em-script em-smart em-term em-unix em-xtra esh-arg esh-cmd esh-ext esh-io esh-maint esh-mode esh-module esh-opt esh-proc esh-test esh-toggle esh-util esh-var eshell)
-   requires (xemacs-base eterm)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(view-process
-  (standards-version 1.1
-   version "1.12"
-   author-version "2.4"
-   date "2002-08-26"
-   build-date "2002-08-26"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "A Unix process browsing tool."
-   filename "view-process-1.12-pkg.tar.gz"
-   md5sum "5259a3dbaa145eba1795d9b481589833"
-   size 60436
-   provides (view-process-mode)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(os-utils
-  (standards-version 1.1
-   version "1.31"
-   author-version "21.4"
-   date "2003-06-01"
-   build-date "2003-06-01"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "Miscellaneous O/S utilities."
-   filename "os-utils-1.31-pkg.tar.gz"
-   md5sum "ea1a8bcaa8dde3ab5e617197d7f6d587"
-   size 201059
-   provides (archive-mode background crypt++ crypt ftelnet inf-lisp jka-compr mchat rlogin ssh tar-mode telnet terminal uncompress)
-   requires (xemacs-base)
-   type single
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(ilisp
-  (standards-version 1.1
-   version "1.32"
-   author-version "5.12.0"
-   date "2003-05-02"
-   build-date "2003-05-02"
-   maintainer "ilisp Maintainers <ilisp@cons.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Front-end for Inferior Lisp."
-   filename "ilisp-1.32-pkg.tar.gz"
-   md5sum "b862aeb9131e1c51272b3fddfc79f323"
-   size 345070
-   provides (bridge comint-ipc completer ilcompat compat-fsf18 compat-fsf-19 compat-fsf-20 ilisp-chs ilisp-cl-easy-menu ilisp-ext ilisp-lw ilisp-key ilisp-menu ilisp-mnb ilisp-scheme-easy-menu ilisp il-luc19 il-luc19)
-   requires (xemacs-base mail-lib fsf-compat eterm sh-script)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(igrep
-  (standards-version 1.1
-   version "1.10"
-   author-version "2.95"
-   date "2002-10-29"
-   build-date "2002-10-29"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Enhanced front-end for Grep."
-   filename "igrep-1.10-pkg.tar.gz"
-   md5sum "ab371bae5cee68fb53afd5fd737cd462"
-   size 16903
-   provides (igrep)
-   requires (dired xemacs-base efs)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(eterm
-  (standards-version 1.1
-   version "1.13"
-   author-version "21.1"
-   date "2000-10-05"
-   build-date "2001-01-15"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "os"
-   dump nil
-   description "Terminal emulation."
-   filename "eterm-1.13-pkg.tar.gz"
-   md5sum "ebd64834d12a2a3fc04bbb6f4dd836fa"
-   size 109184
-   provides (eterm)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(viper
-  (standards-version 1.1
-   version "1.36"
-   author-version "3.09"
-   date "2003-05-19"
-   build-date "2003-05-19"
-   maintainer "Michael Kifer <kifer@cs.sunysb.edu>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "VI emulation support."
-   filename "viper-1.36-pkg.tar.gz"
-   md5sum "26b328fcd02c52acbf61bdc502daa489"
-   size 329897
-   provides (viper-cmd viper-ex viper-init viper-keym viper-macs viper-mous viper-util viper)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(tpu
-  (standards-version 1.1
-   version "1.12"
-   author-version "4.2X"
-   date "2000-10-05"
-   build-date "2001-01-15"
-   maintainer "Kevin Oberman <oberman@es.net>"
-   distribution xemacs
-   priority medium
-   category "wp"
-   dump nil
-   description "DEC EDIT/TPU support."
-   filename "tpu-1.12-pkg.tar.gz"
-   md5sum "8ee6ca98afc9c18a1df013065c430f5e"
-   size 58850
-   provides (tpu)
-   requires ()
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(textools
-  (standards-version 1.1
-   version "1.14"
-   author-version "21.4"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "Miscellaneous TeX support."
-   filename "textools-1.14-pkg.tar.gz"
-   md5sum "baaa68caca74c6cc21f99798c0e8e0e5"
-   size 79510
-   provides (bib-mode bibtex refer-to-bibtex)
-   requires (xemacs-base)
-   type single
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(texinfo
-  (standards-version 1.1
-   version "1.24"
-   author-version "21.4"
-   date "2003-04-26"
-   build-date "2003-04-26"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority high
-   category "standard"
-   dump nil
-   description "XEmacs TeXinfo support."
-   filename "texinfo-1.24-pkg.tar.gz"
-   md5sum "76c161778c926f90312f1596e75a9d76"
-   size 133715
-   provides (makeinfo tex-mode texinfmt texinfo texnfo-tex texnfo-upd)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(reftex
-  (standards-version 1.1
-   version "1.28"
-   author-version "4.19"
-   date "2002-08-29"
-   build-date "2002-08-29"
-   maintainer "Carsten Dominik <dominik@science.uva.nl>"
-   distribution xemacs
-   priority medium
-   category "wp"
-   dump nil
-   description "Emacs support for LaTeX cross-references, citations.."
-   filename "reftex-1.28-pkg.tar.gz"
-   md5sum "8bf789e67715eb6eb77bec7cc25e37ed"
-   size 340634
-   provides (reftex-auc reftex-cite reftex-dcr reftex-vcr reftex-global reftex-index reftex-parse reftex-ref reftex-sel reftex-toc reftex-vars reftex)
-   requires (fsf-compat xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(edt
-  (standards-version 1.1
-   version "1.12"
-   author-version "21.5b1"
-   date "2001-07-14"
-   build-date "2001-07-15"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "DEC EDIT/EDT emulation."
-   filename "edt-1.12-pkg.tar.gz"
-   md5sum "0d7649d0f65d9de732918d756f5cf48b"
-   size 62441
-   provides (edt)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(crisp
-  (standards-version 1.1
-   version "1.12"
-   author-version "1.34"
-   date "1998-08-18"
-   build-date "2001-01-15"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "wp"
-   dump nil
-   description "Crisp/Brief emulation."
-   filename "crisp-1.12-pkg.tar.gz"
-   md5sum "30308c6e5fb14f621d53046894c8c180"
-   size 10075
-   provides (crisp scroll-lock)
-   requires ()
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(auctex
-  (standards-version 1.1
-   version "1.35"
-   author-version "11.13"
-   date "2003-01-03"
-   build-date "2003-01-03"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "Basic TeX/LaTeX support."
-   filename "auctex-1.35-pkg.tar.gz"
-   md5sum "168e82155e152dab8c7c913bc9a4788b"
-   size 406466
-   provides (auc-old auc-tex bib-cite font-latex latex multi-prompt tex-buf tex-info tex-jp tex-mik tex-site tex texmathp)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(vhdl
-  (standards-version 1.1
-   version "1.17"
-   author-version "3.31.20"
-   date "2003-06-08"
-   build-date "2003-06-08"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Support for VHDL."
-   filename "vhdl-1.17-pkg.tar.gz"
-   md5sum "d228542a1db6f0f9552f3c239ea6723b"
-   size 273038
-   provides (vhdl-mode)
-   requires (xemacs-base edit-utils c-support speedbar ps-print os-utils)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(x-symbol
-  (standards-version 1.1
-   version "1.05"
-   author-version "4.5.1"
-   date "2003-06-01"
-   build-date "2003-06-01"
-   maintainer "Steve Youngs <youngs@xemacs.org>"
-   distribution xemacs
-   priority high
-   category "standard"
-   dump nil
-   description "Semi WYSIWYG for LaTeX, HTML, etc, using additional fonts."
-   filename "x-symbol-1.05-pkg.tar.gz"
-   md5sum "cac33616d6c1b40258d7e49cf161c5f6"
-   size 682785
-   provides (x-symbol-bib x-symbol-hooks x-symbol-image x-symbol-macs x-symbol-mule x-symbol-nomule x-symbol-sgml x-symbol-tex x-symbol-texi x-symbol-vars x-symbol-xmacs x-symbol)
-   requires (x-symbol xemacs-base auctex mail-lib)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(vc
-  (standards-version 1.1
-   version "1.37"
-   author-version "21.4"
-   date "2003-01-18"
-   build-date "2003-01-18"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Version Control for Free systems."
-   filename "vc-1.37-pkg.tar.gz"
-   md5sum "a80fd60632202fd0fe566215e8c89451"
-   size 93512
-   provides (vc vc-hooks)
-   requires (dired xemacs-base vc mail-lib ediff)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(vc-cc
-  (standards-version 1.1
-   version "1.21"
-   author-version "21.5b6"
-   date "2002-06-04"
-   build-date "2002-06-04"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Version Control for ClearCase (UnFree) systems."
-   filename "vc-cc-1.21-pkg.tar.gz"
-   md5sum "eb7ad3f9407b32509fa95fa272476b7d"
-   size 94556
-   provides (vc-cc vc-cc-hooks)
-   requires (dired xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(sh-script
-  (standards-version 1.1
-   version "1.17"
-   author-version "2.0e"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Support for editing shell scripts."
-   filename "sh-script-1.17-pkg.tar.gz"
-   md5sum "919e1c273b0eb05b17795f5f3382ef1c"
-   size 36945
-   provides (sh-script executable)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(scheme
-  (standards-version 1.1
-   version "1.13"
-   author-version "21.4"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "Karl M. Hegbloom <karlheg@bittersweet.inetarena.com>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Front-end support for Inferior Scheme."
-   filename "scheme-1.13-pkg.tar.gz"
-   md5sum "570e81d6079fb548b0b52d0e1f68aae2"
-   size 37048
-   provides (scheme xscheme cmuscheme cmuscheme48)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(prog-modes
-  (standards-version 1.1
-   version "1.79"
-   author-version "21.4"
-   date "2003-06-20"
-   build-date "2003-06-20"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "Support for various programming languages."
-   filename "prog-modes-1.79-pkg.tar.gz"
-   md5sum "6f066a6b89b7f0bbdab99a8bade933bf"
-   size 657717
-   provides (autoconf-mode awk-mode c-mode cvs diff-mode eiffel-mode icon javascript-mode ksh-mode m4-mode makefile mode-compile mode-compile-kill modula2 p4 php-mode postscript rexx-mode rpm-spec-mode simula-mode sql tcl teco verilog-mode)
-   requires (mail-lib xemacs-devel xemacs-base cc-mode fsf-compat edit-utils ediff emerge efs vc speedbar dired ilisp sh-script)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(idlwave
-  (standards-version 1.1
-   version "1.28"
-   author-version "4.15"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "Carsten Dominik <dominik@astro.uva.nl>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "Editing and Shell mode for the Interactive Data Language"
-   filename "idlwave-1.28-pkg.tar.gz"
-   md5sum "1e970d93e177fbdd3dff8d941bcc2dd0"
-   size 404471
-   provides (idlw-rinfo idlwave-rinfo idlw-shell idlwave-shell idlw-toolbar idlwave-toolbar idlwave)
-   requires (fsf-compat xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(emerge
-  (standards-version 1.1
-   version "1.09"
-   author-version "21.1"
-   date "2000-10-05"
-   build-date "2001-01-15"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "prog"
-   dump nil
-   description "Another interface over GNU patch."
-   filename "emerge-1.09-pkg.tar.gz"
-   md5sum "231c8120d60da2c9ddd856510da2491c"
-   size 61043
-   provides (emerge)
-   requires ()
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(ediff
-  (standards-version 1.1
-   version "1.47"
-   author-version "2.75"
-   date "2003-05-19"
-   build-date "2003-05-19"
-   maintainer "Michael Kifer <kifer@cs.sunysb.edu>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "Interface over GNU patch."
-   filename "ediff-1.47-pkg.tar.gz"
-   md5sum "32276e3b47bb3bf1e461c7271091bbab"
-   size 305650
-   provides (ediff-diff ediff-help ediff-hook ediff-init ediff-merg ediff-mult ediff-ptch ediff-tbar ediff-util ediff-vers ediff-wind ediff)
-   requires (pcl-cvs elib dired xemacs-base edebug prog-modes)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(debug
-  (standards-version 1.1
-   version "1.16"
-   author-version "21.4"
-   date "2002-09-25"
-   build-date "2002-09-25"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "GUD, gdb, dbx debugging support."
-   filename "debug-1.16-pkg.tar.gz"
-   md5sum "1450bf0762934d079c1287d8baa5859c"
-   size 107641
-   provides (dbx debug-toolbar gdb-highlight gdb gdbsrc gud history)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(c-support
-  (standards-version 1.1
-   version "1.16"
-   author-version "21.1"
-   date "2000-10-05"
-   build-date "2001-01-15"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "prog"
-   dump nil
-   description "Basic single-file add-ons for editing C code."
-   filename "c-support-1.16-pkg.tar.gz"
-   md5sum "047accf51457a041bf920c9563de1bf6"
-   size 70393
-   provides (c-comment-edit cmacexp ctypes hideif hideshow)
-   requires (cc-mode xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(ada
-  (standards-version 1.1
-   version "1.13"
-   author-version "2.27"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Ada language support."
-   filename "ada-1.13-pkg.tar.gz"
-   md5sum "2bed65b1357b24d371f27e4cca3fe352"
-   size 55694
-   provides (ada-mode ada-stmt)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(cc-mode
-  (standards-version 1.1
-   version "1.33"
-   author-version "5.28"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "Martin Stjernholm <bug-cc-mode@gnu.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "C, C++ and Java language support."
-   filename "cc-mode-1.33-pkg.tar.gz"
-   md5sum "c711a14526fe18470934455f65c689d2"
-   size 261483
-   provides (cc-bytecomp cc-align cc-cmds cc-compat cc-defs cc-engine cc-guess cc-langs cc-lobotomy cc-menus cc-mode-19 cc-mode cc-styles cc-vars)
-   requires (xemacs-base mail-lib)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(semantic
-  (standards-version 1.1
-   version "1.17"
-   author-version "1.4.2"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "Eric M. Ludlam <zappo@gnu.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Semantic bovinator (Yacc/Lex for XEmacs). Includes Senator."
-   filename "semantic-1.17-pkg.tar.gz"
-   md5sum "6c374b18834351d2939683c5c62b44a6"
-   size 443557
-   provides (document-vars document semantic-analyze semantic-bnf semantic-c semantic-cb semantic-chart semantic-ctxt semantic-el semantic-example semantic-ia-sb semantic-ia semantic-imenu semantic-java semantic-load semantic-make semantic-sb semantic-scm semantic-skel semantic-texi semantic-util-modes semantic-util semantic semanticdb senator sformat working)
-   requires (eieio xemacs-base xemacs-devel edit-utils speedbar texinfo fsf-compat cc-mode edebug)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(misc-games
-  (standards-version 1.1
-   version "1.16"
-   author-version "21.4"
-   date "2002-12-06"
-   build-date "2002-12-06"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Other amusements and diversions."
-   filename "misc-games-1.16-pkg.tar.gz"
-   md5sum "2aaccb449220bcd0388165e07592764e"
-   size 166197
-   provides (decipher gomoku hanoi life morse rot13)
-   requires (xemacs-base)
-   type single
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(mine
-  (standards-version 1.1
-   version "1.14"
-   author-version "1.9"
-   date "2000-10-05"
-   build-date "2001-01-15"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "games"
-   dump nil
-   description "Minehunt Game."
-   filename "mine-1.14-pkg.tar.gz"
-   md5sum "ebe471b68642906786db139d402002c7"
-   size 66727
-   provides (xmine)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(games
-  (standards-version 1.1
-   version "1.14"
-   author-version "1.04"
-   date "2003-06-15"
-   build-date "2003-06-15"
-   maintainer "Glynn Clements <glynn@sensei.co.uk>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Tetris, Sokoban, and Snake."
-   filename "games-1.14-pkg.tar.gz"
-   md5sum "5c00d86c1f959d32bf12da6f78fd1fcf"
-   size 37132
-   provides (gamegrid snake tetris sokoban)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(cookie
-  (standards-version 1.1
-   version "1.14"
-   author-version "21.5b5"
-   date "2002-03-25"
-   build-date "2002-03-25"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Spook and Yow (Zippy quotes)."
-   filename "cookie-1.14-pkg.tar.gz"
-   md5sum "50581960785fb3949faabaae49896c32"
-   size 34543
-   provides (cookie1 yow)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(bbdb
-  (standards-version 1.1
-   version "1.23"
-   author-version "2.34"
-   date "2003-05-18"
-   build-date "2003-05-18"
-   maintainer "Ronan Waide <waider@waider.ie>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "The Big Brother Data Base"
-   filename "bbdb-1.23-pkg.tar.gz"
-   md5sum "6cced769e1bd48d5a571b654958cd35d"
-   size 374355
-   provides (bbdb-com bbdb-ftp bbdb-gnus bbdb-gui bbdb-hooks bbdb-merge bbdb-mhe bbdb-migrate bbdb-print bbdb-reportmail bbdb-rmail bbdb-sc bbdb-snarf bbdb-srv bbdb-vm bbdb-w3 bbdb-whois bbdb-xemacs bbdb)
-   requires (bbdb edit-utils gnus mh-e rmail supercite vm tm apel mail-lib xemacs-base w3 fsf-compat eterm sh-script net-utils os-utils)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(zenirc
-  (standards-version 1.1
-   version "1.13"
-   author-version "2.112"
-   date "2002-01-07"
-   build-date "2002-01-14"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "ZENIRC IRC Client."
-   filename "zenirc-1.13-pkg.tar.gz"
-   md5sum "38200c80672a32056426ed32c09473cf"
-   size 276760
-   provides (zenirc-18 zenirc-8ball zenirc-away zenirc-bork zenirc-color zenirc-command-queue zenirc-complete zenirc-ctcp-flood zenirc-dcc zenirc-doto zenirc-fill zenirc-finnish zenirc-format zenirc-fortran zenirc-french zenirc-history zenirc-ignore zenirc-iwantop zenirc-klingon zenirc-latin zenirc-meditate zenirc-netsplit zenirc-notify zenirc-oink zenirc-ojnk zenirc-pjg zenirc-popup zenirc-random-away zenirc-random-nick zenirc-signal zenirc-stamp zenirc-swedish zenirc-trigger zenirc-yow-filter zenirc-yow zenirc)
-   requires (zenirc)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(mew
-  (standards-version 1.1
-   version "1.17"
-   author-version "1.94.2"
-   date "2002-03-25"
-   build-date "2002-03-25"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Messaging in an Emacs World."
-   filename "mew-1.17-pkg.tar.gz"
-   md5sum "03fa0583b534322d0375901796d22ec5"
-   size 654737
-   provides (mew-addrbook mew-attach mew-bq mew-cache mew-complete mew-decode mew-demo mew-draft mew-encode mew-env mew-ext mew-fib mew-func mew-header mew-highlight mew-lang-jp mew-mark mew-message mew-mime mew-minibuf mew-mule mew-mule0 mew-mule2 mew-mule3 mew-os2 mew-pgp mew-pick mew-refile mew-scan mew-sort mew-summary mew-syntax mew-temacs mew-unix mew-vars mew-virtual mew-win32 mew-xemacs mew)
-   requires (mew w3 efs mail-lib xemacs-base fsf-compat)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(tm
-  (standards-version 1.1
-   version "1.36"
-   author-version "21.5b13"
-   date "2003-05-14"
-   build-date "2003-05-14"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Emacs MIME support. Not needed for gnus >= 5.8.0"
-   filename "tm-1.36-pkg.tar.gz"
-   md5sum "03830180796f04f085bcec5a62e2d17a"
-   size 334020
-   provides (char-util cless gnus-art-mime gnus-charset gnus-mime gnus-sum-mime latex-math-symbol mel-b mel-g mel-q mel-u mel message-mime mime-setup mu-bbdb mu-cite range sc-setup signature texi-util tl-atype tl-list tl-misc tl-num tl-seq tl-str tm-bbdb tm-def tm-edit-mc tm-edit tm-ew-d tm-ew-e tm-file tm-ftp tm-html tm-image tm-latex tm-mail tm-mh-e tm-parse tm-partial tm-pgp tm-play tm-rmail tm-setup tm-tar tm-text tm-view tm-vm tmh-comp)
-   requires (gnus mh-e rmail vm mailcrypt mail-lib apel xemacs-base fsf-compat sh-script net-utils)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(gnus
-  (standards-version 1.1
-   version "1.71"
-   author-version "5.10.2"
-   date "2003-05-18"
-   build-date "2003-05-18"
-   maintainer "Steve Youngs <youngs@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "The Gnus Newsreader and Mailreader."
-   filename "gnus-1.71-pkg.tar.gz"
-   md5sum "87a26e70ef2632dc11831964c5b9267b"
-   size 3282718
-   provides (binhex canlock compface deuglify earcon flow-fill format-spec gnus-agent gnus-art gnus-async gnus-audio gnus-bcklg gnus-cache gnus-cite gnus-cus gnus-delay gnus-demon gnus-diary gnus-dired gnus-draft gnus-dup gnus-eform gnus-ems gnus-fun gnus-gl gnus-group gnus-int gnus-kill gnus-logic gnus-mh gnus-ml gnus-mlspl gnus-move gnus-msg gnus-nocem gnus-picon gnus-range gnus-registry gnus-salt gnus-score gnus-setup gnus-sieve gnus-soup gnus-spec gnus-srvr gnus-start gnus-sum gnus-topic gnus-undo gnus-util gnus-uu gnus-vm gnus-win gnus-xmas gnus ietf-drums imap mail-parse mail-prsvr mail-source mailcap message messagexmas messcompat mm-bodies mm-decode mm-encode mm-extern mm-partial mm-url mm-util mm-uu mm-view mml-sec mml-smime mml mml1991 mml2015 nnagent nnbabyl nndb nndiary nndir nndoc nndraft nneething nnfolder nngateway nnheader nnheaderxm nnimap nnkiboze nnlistserv nnmail nnmaildir nnmbox nnmh nnml nnnil nnoo nnrss nnslashdot nnsoup nnspool nntp nnultimate nnvirtual nnwarchive nnweb nnwfm parse-time qp rfc1843 rfc2045 rfc2047 rfc2231 score-mode smiley smime spam-report spam-stat spam time-date utf7 uudecode webmail yenc gnus-idna gpg-ring gpg hashcash vcard)
-   requires (gnus w3 mh-e mailcrypt rmail eterm mail-lib xemacs-base fsf-compat ecrypto tm apel pgg net-utils sh-script os-utils dired sieve sasl)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(rmail
-  (standards-version 1.1
-   version "1.13"
-   author-version "21.5b4"
-   date "2002-01-13"
-   build-date "2002-01-14"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "An obsolete Emacs mailer."
-   filename "rmail-1.13-pkg.tar.gz"
-   md5sum "4da12b01ea3735412f95edeb2a2bd0bd"
-   size 96265
-   provides (rmail-kill rmail-xemacs rmail rmailsort)
-   requires (tm apel mail-lib xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(mailcrypt
-  (standards-version 1.1
-   version "2.12"
-   author-version "3.5.8"
-   date "2002-10-07"
-   build-date "2002-10-07"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Support for messaging encryption with PGP."
-   filename "mailcrypt-2.12-pkg.tar.gz"
-   md5sum "a82276fc399b6a72d8769d6e3bcc7e41"
-   size 153873
-   provides (expect mailcrypt)
-   requires (mail-lib fsf-compat xemacs-base cookie gnus mh-e rmail vm)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(supercite
-  (standards-version 1.1
-   version "1.19"
-   author-version "3.55x3"
-   date "2002-01-07"
-   build-date "2002-01-14"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "An Emacs citation tool for News & Mail messages."
-   filename "supercite-1.19-pkg.tar.gz"
-   md5sum "8f6767ea4e03306d1e5553501ed7cd2e"
-   size 100881
-   provides (supercite)
-   requires (mail-lib xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(mh-e
-  (standards-version 1.1
-   version "1.23"
-   author-version "7.3"
-   date "2003-05-19"
-   build-date "2003-05-19"
-   maintainer "Steve Youngs <mh-e-devel@lists.sf.net>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Front end support for MH."
-   filename "mh-e-1.23-pkg.tar.gz"
-   md5sum "d7d99f142797bbe3fba206d6932a1e75"
-   size 551037
-   provides (mh-alias mh-comp mh-customize mh-e mh-funcs mh-identity mh-inc mh-index mh-junk mh-loaddefs mh-mime mh-pick mh-seq mh-speed mh-unit mh-utils mh-xemacs-compat mh-xemacs-icons)
-   requires (gnus mail-lib xemacs-base speedbar rmail tm apel sh-script fsf-compat xemacs-devel net-utils eterm os-utils)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(gnats
-  (standards-version 1.1
-   version "1.15"
-   author-version "3.101"
-   date "2002-06-27"
-   build-date "2002-06-27"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority high
-   category "standard"
-   dump nil
-   description "XEmacs bug reports."
-   filename "gnats-1.15-pkg.tar.gz"
-   md5sum "9503a79e2e396eb13151aec7eadf561b"
-   size 189524
-   provides (gnats gnats-admin send-pr)
-   requires (mail-lib xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(footnote
-  (standards-version 1.1
-   version "1.15"
-   author-version "0.18x"
-   date "2002-04-24"
-   build-date "2002-04-24"
-   maintainer "SL Baur <steve@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Footnoting in mail message editing modes."
-   filename "footnote-1.15-pkg.tar.gz"
-   md5sum "1cbe1e587881611006d9a8fc82be3be1"
-   size 21917
-   provides (footnote-cyrillic footnote-greek footnote-han footnote-hebrew footnote-kana footnote)
-   requires (mail-lib xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(eudc
-  (standards-version 1.1
-   version "1.38"
-   author-version "1.32"
-   date "2003-05-18"
-   build-date "2003-05-18"
-   maintainer "Oscar Figueiredo <oscar@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Emacs Unified Directory Client (LDAP, PH)."
-   filename "eudc-1.38-pkg.tar.gz"
-   md5sum "44f701aa6b6460eb766e994a6f0f3072"
-   size 79327
-   provides (eudc eudc-vars eudc-hotlist eudc-export eudc-bob eudcb-ldap eudcb-ph eudcb-bbdb)
-   requires (fsf-compat xemacs-base bbdb mail-lib gnus rmail tm apel eterm sh-script net-utils)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(net-utils
-  (standards-version 1.1
-   version "1.32"
-   author-version "21.4"
-   date "2003-05-02"
-   build-date "2003-05-02"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "Miscellaneous Networking Utilities."
-   filename "net-utils-1.32-pkg.tar.gz"
-   md5sum "0c756dbe87fac94fda8c175283fc7f2c"
-   size 137374
-   provides (ilisp-browse-cltl2 xemacsbug feedmail metamail net-utils rcompile shadowfile webjump webster-www dig dns xml)
-   requires (bbdb w3 efs mail-lib xemacs-base fsf-compat eterm sh-script gnus rmail tm apel)
-   type single
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(w3
-  (standards-version 1.1
-   version "1.28"
-   author-version "4.0pre47"
-   date "2003-01-13"
-   build-date "2003-01-13"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority high
-   category "standard"
-   dump nil
-   description "A Web browser."
-   filename "w3-1.28-pkg.tar.gz"
-   md5sum "67c77722bdb50d6ab6287d3994f91b09"
-   size 695206
-   provides (css devices w3-auto dsssl-flow dsssl font images mm mule-sysdp socks ssl urlauth url-cache url-cookie url-file url-gopher url-gw url-http url-ldap url-mail url-misc url-news url-ns url-parse url-vars url w3-about w3-auto w3-cfg w3-cus w3-display w3-emacs19 w3-e19 w3-e20 w3-elisp w3-emulate w3-forms w3-hot w3-hotindex w3-imap w3-java w3-jscript w3-keyword w3-latex w3-menu w3-mouse w3-parse w3-print w3-props w3-script w3-structure w3-speak w3-style w3-sysdp w3-toolbar w3-vars w3-widget w3-xemacs w3-xemac w3)
-   requires (w3 mail-lib xemacs-base ecrypto)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(vm
-  (standards-version 1.1
-   version "7.14"
-   author-version "7.14"
-   date "2002-06-08"
-   build-date "2002-06-08"
-   maintainer "Kyle Jones <kyle_jones@wonderworks.com>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "An Emacs mailer."
-   filename "vm-7.14-pkg.tar.gz"
-   md5sum "18c68c9165f4877a00f0fea395dc4aa3"
-   size 793198
-   provides (tapestry vm-byteopts vm-delete vm-digest vm-easymenu vm-edit vm-folder vm-imap vm-license vm-macro vm-mark vm-menu vm-message vm-mime vm-minibuf vm-misc vm-motion vm-mouse vm-page vm-pop vm-reply vm-save vm-search vm-sort vm-startup vm-summary vm-thread vm-toolbar vm-undo vm-user vm-vars vm vm-version vm-virtual vm-window)
-   requires (mail-lib xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(sounds-wav
-  (standards-version 1.1
-   version "1.10"
-   author-version "21.1"
-   date "2000-05-23"
-   build-date "2001-01-15"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority high
-   category "libs"
-   dump nil
-   description "XEmacs Microsoft sound files."
-   filename "sounds-wav-1.10-pkg.tar.gz"
-   md5sum "89dff9f3b8e1aaaa19f000035e3aa199"
-   size 149162
-   provides ()
-   requires ()
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(sounds-au
-  (standards-version 1.1
-   version "1.10"
-   author-version "21.1"
-   date "2000-05-23"
-   build-date "2001-01-15"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority high
-   category "libs"
-   dump nil
-   description "XEmacs Sun sound files."
-   filename "sounds-au-1.10-pkg.tar.gz"
-   md5sum "256e09c0570a19ae545350681bacaf3e"
-   size 126306
-   provides ()
-   requires ()
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(xemacs-devel
-  (standards-version 1.1
-   version "1.55"
-   author-version "21.4"
-   date "2003-05-18"
-   build-date "2003-05-18"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority medium
-   category "standard"
-   dump nil
-   description "Emacs Lisp developer support."
-   filename "xemacs-devel-1.55-pkg.tar.gz"
-   md5sum "6fe0e1b869502c94adaa9e5d6623d5f3"
-   size 233111
-   provides (checkdoc docref eldoc elp eval-expr find-func hide-copyleft ielm patcher pp trace patch-keywords)
-   requires (xemacs-base ispell mail-lib gnus rmail tm apel sh-script net-utils eterm)
-   type single
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(tooltalk
-  (standards-version 1.1
-   version "1.13"
-   author-version "21.1"
-   date "2000-10-05"
-   build-date "2001-01-15"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "libs"
-   dump nil
-   description "Support for building with Tooltalk."
-   filename "tooltalk-1.13-pkg.tar.gz"
-   md5sum "3f01dab216a3bc318d11f362d22ea89c"
-   size 9301
-   provides ()
-   requires ()
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(elib
-  (standards-version 1.1
-   version "1.10"
-   author-version "1.0"
-   date "2002-01-07"
-   build-date "2002-01-14"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority high
-   category "standard"
-   dump nil
-   description "Portable Emacs Lisp utilities library."
-   filename "elib-1.10-pkg.tar.gz"
-   md5sum "01deb690554da8c3f7c97e0ae170ae69"
-   size 73309
-   provides (avltree bintree cookie dll elib-node queue-f queue-m read stack-f stack-m string)
-   requires ()
-   type single
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(edebug
-  (standards-version 1.1
-   version "1.18"
-   author-version "21.4"
-   date "2003-06-01"
-   build-date "2003-06-01"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "standard"
-   dump nil
-   description "An Emacs Lisp debugger."
-   filename "edebug-1.18-pkg.tar.gz"
-   md5sum "ea33ebf474676aff1a782fa9abc0b958"
-   size 114099
-   provides (edebug cl-read cust-print eval-reg cl-specs)
-   requires (xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(Sun
-  (standards-version 1.1
-   version "1.13"
-   author-version "21.1"
-   date "1998-07-25"
-   build-date "2001-01-15"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority low
-   category "libs"
-   dump nil
-   description "Support for Sparcworks."
-   filename "Sun-1.13-pkg.tar.gz"
-   md5sum "455b7e1c3564563687e36ab53352ba76"
-   size 63836
-   provides (sccs eos-browser eos-common eos-debugger eos-debugger eos-editor eos-init eos-load eos-menubar eos-toolbar sunpro)
-   requires (cc-mode xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(apel
-  (standards-version 1.1
-   version "1.26"
-   author-version "10.2"
-   date "2003-01-03"
-   build-date "2003-01-03"
-   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution xemacs
-   priority high
-   category "standard"
-   dump nil
-   description "A Portable Emacs Library.  Used by XEmacs MIME support."
-   filename "apel-1.26-pkg.tar.gz"
-   md5sum "f8981e7b041e5f493d30fbd82b15f831"
-   size 108340
-   provides (atype emu-20 emu-e19 emu-x20 emu-xemacs emu file-detect filename install mule-caesar path-util richtext std11-parse std11 tinyrich)
-   requires (fsf-compat xemacs-base)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(efs
-  (standards-version 1.0
-   version "1.29"
-   author-version "1.20"
-   date "2002-04-24"
-   build-date "2002-04-24"
-   maintainer "Mike Sperber <sperber@informatik.uni-tuebingen.de>"
-   distribution stable
-   priority medium
-   category "standard"
-   dump nil
-   description "Treat files on remote systems the same as local files."
-   filename "efs-1.29-pkg.tar.gz"
-   md5sum "8c2c6c00cfbdc5f8d64ad54ddfb731df"
-   size 371905
-   provides (efs)
-   requires (xemacs-base dired)
-   type regular
-))
-))
-;;;@@@
-(package-get-update-base-entry (quote
-(dired
-  (standards-version 1.0
-   version "1.13"
-   author-version "7.10"
-   date "2003-01-03"
-   build-date "2003-01-03"
-   maintainer "Mike Sperber <sperber@informatik.uni-tuebingen.de>"
-   distribution stable
-   priority medium
-   category "standard"
-   dump nil
-   description "Manage file systems."
-   filename "dired-1.13-pkg.tar.gz"
-   md5sum "bedcfcb1c8c9829663f0d66d6612154e"
-   size 196323
-   provides (diff dired)
-   requires (xemacs-base prog-modes)
-   type regular
-))
-))
-;;;@@@
-;; Package Index file ends here
index 2a80629..d5ffb05 100644 (file)
@@ -1,3 +1,7 @@
+2004-02-02  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.15 is released
+
 2003-09-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.14 is released
index a90d682..30fbb7b 100644 (file)
@@ -387,11 +387,11 @@ gnuserv: ${srcdir}/gnuserv.c gnuslib.o ${srcdir}/gnuserv.h
 ## mmencode binary is used by tm - but is really part of the metamail package
 ## mmencode.c was merged copy of mmencode.c and codes.c of metamail
 mmencode : ${srcdir}/mmencode.c
-       $(CC) $(cflags) ${srcdir}/mmencode.c -o $@
+       $(CC) $(cflags) ${srcdir}/mmencode.c $(ldflags) -o $@
 
 
 ## The timer utility (timer.c, getdate.y) is not used in XEmacs
 ## because XEmacs provides built-in timer facilities.
 
 make-path: ${srcdir}/make-path.c ../src/config.h
-       $(CC) -Demacs $(cflags) ${srcdir}/make-path.c -o $@
+       $(CC) -Demacs $(cflags) ${srcdir}/make-path.c $(ldflags) -o $@
index b9a715d..30e35ef 100644 (file)
        * files.el (insert-file-contents-literally): Treat file as binary;
        call file-name-handlers. [sync with Emacs 20.3.10]
 
+2004-02-02  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.15 is released
+
+2003-12-12  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * itimer.el (activate-itimer): Modify the itimer timeout value as
+       if it were begun at the last time when the itimer driver was woken
+       up.
+
+2004-01-27  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * specifier.el (Copyright):
+       Update.
+       (make-specifier-and-init):
+       (map-specifier):
+       (canonicalize-inst-pair):
+       (canonicalize-spec-list):
+       (set-specifier):
+       Synch docstrings to 21.5 where appropriate.
+
+2004-01-25  Steve Youngs  <sryoungs@bigpond.net.au>
+
+       * package-get.el (package-get-list-packages-where): New.  A
+       function that allows searching for groups of packages.  For
+       example, find all packages that require the fsf-compat package.
+
+2004-01-25  Steve Youngs  <youngs@xemacs.org>
+
+       The Great PUI Sync.
+
+       * auto-autoloads.el: Regenerated.
+
+       * custom-load.el: Regenerated.
+
+       * dumped-lisp.el (packages-hardcoded-lisp): New.
+
+       * menubar-items.el (menu-max-items): New.
+       (menu-submenu-max-items): New.
+       (menu-submenu-name-format): New.
+       (menu-split-long-menu): New.
+       (menu-sort-menu): New.
+       (default-menubar): Sync to 21.5 in regard to the PUI menus.
+
+       * obsolete.el (pui-add-install-directory): Renamed to the more
+       logical `pui-set-local-package-get-directory'.
+       (package-get-download-menu): Moved to `package-ui.el' and renamed
+       to `package-ui-add-download-menu'.
+
+       * package-admin.el (package-admin-install-function-mswindows):
+       Whitespace clean up.
+       (package-admin-add-single-file-package): Removed.
+       (package-admin-default-install-function): Whitespace clean up.
+       (package-admin-find-top-directory): New.
+       (package-admin-get-install-dir): Use it.
+       (package-admin-get-manifest-file): 
+       (package-admin-check-manifest): 
+       (package-admin-add-binary-package):
+       (package-admin-get-lispdir):
+       (package-admin-delete-binary-package):
+       (package-admin):
+
+       * package-get.el (package-get-package-index-file-location): New.
+       (package-get-install-to-user-init-directory): New.
+       (package-get-remote):
+       (package-get-download-sites):
+       (package-get-pre-release-download-sites): New.
+       (package-get-site-release-download-sites): New.
+       (package-get-base-filename):
+       (package-get-always-update):
+       (package-get-user-index-filename): Removed.
+       (package-get-pgp-available-p): New.
+       (package-get-require-signed-base-updates):
+       (package-get-was-current):
+       (package-entries-are-signed): New.
+       (package-get-continue-update-base): New.
+       (package-get-download-menu): Removed.
+       (package-get-require-base):
+       (package-get-update-base-entry):
+       (package-get-locate-file):
+       (package-get-locate-index-file):
+       (package-get-maybe-save-index):
+       (package-get-update-base):
+       (package-get-update-base-from-buffer):
+       (package-get-update-base-entries):
+       (package-get-interactive-package-query):
+       (package-get-update-all):
+       (package-get-all):
+       (package-get-dependencies):
+       (package-get-init-package):
+       (package-get-info): New.
+       (package-get):
+       (package-get-staging-dir):
+       (package-get-set-version-prop): Removed.
+       (package-get-installedp):
+       (package-get-ever-installed-p):
+       (packages): Removed.
+       (package-get-custom-groups): Removed.
+       (package-get-custom): Removed.
+       (package-get-custom-add-entry): Removed.
+
+       * package-info.el (batch-update-package-info):
+
+       * package-net.el (package-net-batch-generate-bin-ini):
+       (package-net-update-installed-db):
+
+       * package-ui.el (pui-info-buffer):
+       (pui-directory-exists): Removed.
+       (pui-package-dir-list): Removed.
+       (pui-add-install-directory): Removed.
+       (package-ui-download-menu): New.
+       (package-ui-pre-release-download-menu): New.
+       (package-ui-site-release-download-menu): New.
+       (pui-set-local-package-get-directory): New.
+       (pui-package-symbol-char):
+       (pui-update-package-display):
+       (pui-toggle-package):
+       (pui-toggle-package-key):
+       (pui-toggle-package-delete):
+       (pui-toggle-package-delete-key):
+       (pui-toggle-package-event):
+       (pui-toggle-verbosity-redisplay):
+       (pui-install-selected-packages):
+       (pui-add-required-packages):
+       (pui-help-echo):
+       (pui-display-info):
+       (list-packages-mode):
+       (pui-list-packages):
+
+       * packages.el (packages-compute-package-locations):
+       (package-require):
+       (package-delete-name):
+       (packages-hardcoded-lisp): Removed.
+       (packages-useful-lisp): Removed.
+       (packages-unbytecompiled-lisp): Removed.
+       (packages-find-package-directories):
+
+       Summary:
+
+       Major code clean up of all things PUI.
+
+       Much improved code to determine where packages should be
+       installed.  PUI no longer depends on any packages being
+       pre-installed to compute where packages are to be installed to.
+
+       The user can specify the location of their package-index file.  It
+       isn't necessary to set this because it has sane defaults.  People
+       who "run-in-place" won't accidently overwrite the CVS
+       package-index file.  See
+       `package-get-package-index-file-location'. 
+
+       PUI will now properly clean up after itself in the event of an
+       unsuccessful package install.  This drastically reduces the number
+       of "wrong md5sum" FAQs.
+
+       non-Mule XEmacsen can no longer install Mule packages.
+
+       Package management via the custom interface has been removed.
+
+       The PUI related menubar items have been reorganised.
+
+       The PGP verification code has been fixed and the default for
+       whether or not it is used is automatically computed.
+
+       * update-elc.el ((preloaded-file-list site-load-packages
+       need-to-dump dumped-exe)):
+       Just a couple of small changes to allow for
+       `packages-(hardcoded|useful|unbytecompiled)-lisp' not really
+       existing anymore.
+
+2003-12-10  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * bytecomp.el (byte-compile-warn-about-unused-variables): Don't
+       apply `format' to the first argument of byte-compile-warn, it
+       already calls format.
+
+2003-12-03  Adrian Aichner  <adrian@xemacs.org>
+
+       * files.el (delete-old-versions): Avoid going interactive during
+       make install when environment variable VERSION_CONTROL is set.
+
+2003-12-04  Vin Shelton  <acs@xemacs.org>
+
+       * menubar-items.el (menu-item-search): Only bring up search dialog
+       box if the feature is available and desired.
+
+2003-11-04  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * about.el (about-personal-info): Fix typo in Tony Rossini's entry.
+
+2003-11-05  Vin Shelton  <acs@xemacs.org>
+
+       * help.el (Help-prin1-face):
+       (Help-princ-face):
+       princ and prin1 are functions and need to be called as such.  The
+       idea for this patch was submitted by Eric Eide <eeide@cs.utah.edu>.
+
+2003-10-22  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * about.el (about-xemacs): Give full version and build date.
+
+2003-09-19  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * win32-native.el (grep-null-device): This XEmacs has null-device.
+
+2003-09-06  Mike Sperber  <mike@xemacs.org>
+
+       * bytecomp.el (byte-compile-defvar-or-defconst): Actually
+       implement the specified semantics for `defvar.'
+
+2003-09-07  Adrian Aichner  <adrian@xemacs.org>
+
+       * window-xemacs.el (display-buffer): Fix for `shrink-to-fit' by
+       Klaus Berndl, calling `shrink-window-if-larger-than-buffer' when
+       displaying buffer in question.
+
 2003-09-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.14 is released
index b55845f..3d1d5af 100644 (file)
                   :format "%t"
                   :tag-glyph xemacs-logo)
     (widget-insert "\n")
-    (let* ((emacs-short-version (format "%d.%d"
+    (let* ((emacs-short-version (format "%d.%d.%d"
                                        emacs-major-version
-                                       emacs-minor-version))
-          (emacs-about-version (format "version %s; April 2001"
-                                       emacs-short-version)))
+                                       emacs-minor-version
+                                       emacs-patch-level))
+          (emacs-about-version (format "version %s; %s %s"
+                                       emacs-short-version
+                                       (cdr (assoc (substring emacs-build-time
+                                                              4 7)
+                                                   '(("Jan" . "January")
+                                                     ("Feb" . "February")
+                                                     ("Mar" . "March")
+                                                     ("Apr" . "April")
+                                                     ("May" . "May")
+                                                     ("Jun" . "June")
+                                                     ("Jul" . "July")
+                                                     ("Aug" . "August")
+                                                     ("Sep" . "September")
+                                                     ("Oct" . "October")
+                                                     ("Nov" . "November")
+                                                     ("Dec" . "December"))))
+                                       (substring emacs-build-time -4))))
       (widget-insert (about-center emacs-about-version))
       (widget-create 'link :help-echo "What's new in XEmacs"
                     :action 'about-news
@@ -1288,7 +1304,7 @@ Assistant Professor of Biostatistics at the University of Washington
 and the Fred Hutchinson Cancer Research Center.
 
 See ")
-     (about-url-link 'rossini nil "Visit Anothony's home page")
+     (about-url-link 'rossini nil "Visit Anthony's home page")
      (widget-insert ".\n"))
     (slb
      (widget-insert "\
index 35096b5..4dc16b8 100644 (file)
@@ -1446,21 +1446,14 @@ Enable mouse wheel support." t nil)
 
 ;;;***
 \f
-;;;### (autoloads (package-admin-add-binary-package package-admin-add-single-file-package) "package-admin" "lisp/package-admin.el")
-
-(autoload 'package-admin-add-single-file-package "package-admin" "\
-Install a single file Lisp package into XEmacs package hierarchy.
-`file' should be the full path to the lisp file to install.
-`destdir' should be a simple directory name.
-The optional `pkg-dir' can be used to override the default package hierarchy
-\(car (last late-packages))." t nil)
+;;;### (autoloads (package-admin-add-binary-package) "package-admin" "lisp/package-admin.el")
 
 (autoload 'package-admin-add-binary-package "package-admin" "\
 Install a pre-bytecompiled XEmacs package into package hierarchy." t nil)
 
 ;;;***
 \f
-;;;### (autoloads (package-get-custom package-get-package-provider package-get package-get-dependencies package-get-all package-get-update-all package-get-delete-package package-get-save-base package-get-update-base-from-buffer package-get-update-base package-get-update-base-entry package-get-require-base package-get-download-menu) "package-get" "lisp/package-get.el")
+;;;### (autoloads (package-get-package-provider package-get package-get-list-packages-where package-get-info package-get-dependencies package-get-all package-get-update-all package-get-delete-package package-get-save-base package-get-update-base-from-buffer package-get-update-base package-get-update-base-entry package-get-require-base) "package-get" "lisp/package-get.el")
 
 (defvar package-get-base nil "\
 List of packages that are installed at this site.
@@ -1508,10 +1501,15 @@ 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-download-sites '(("Pre-Releases" "ftp.xemacs.org" "pub/xemacs/beta/experimental/packages") ("xemacs.org" "ftp.xemacs.org" "pub/xemacs/packages") ("ca.xemacs.org (Canada)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/packages") ("crc.ca (Canada)" "ftp.crc.ca" "pub/packages/editors/xemacs/packages") ("us.xemacs.org (United States)" "ftp.us.xemacs.org" "pub/xemacs/packages") ("ibiblio.org (United States)" "ibiblio.org" "pub/packages/editors/xemacs/packages") ("stealth.net (United States)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/packages") ("br.xemacs.org (Brazil)" "ftp.br.xemacs.org" "pub/xemacs/packages") ("at.xemacs.org (Austria)" "ftp.at.xemacs.org" "editors/xemacs/packages") ("be.xemacs.org (Belgium)" "ftp.be.xemacs.org" "xemacs/packages") ("cz.xemacs.org (Czech Republic)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/packages") ("dk.xemacs.org (Denmark)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/packages") ("fi.xemacs.org (Finland)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/packages") ("fr.xemacs.org (France)" "ftp.fr.xemacs.org" "pub/xemacs/packages") ("pasteur.fr (France)" "ftp.pasteur.fr" "pub/computing/xemacs/packages") ("de.xemacs.org (Germany)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/packages") ("tu-darmstadt.de (Germany)" "ftp.tu-darmstadt.de" "pub/editors/xemacs/packages") ("ie.xemacs.org (Ireland)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/packages") ("it.xemacs.org (Italy)" "ftp.it.xemacs.org" "unix/packages/XEMACS/packages") ("no.xemacs.org (Norway)" "ftp.no.xemacs.org" "pub/xemacs/packages") ("pl.xemacs.org (Poland)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/packages") ("ru.xemacs.org (Russia)" "ftp.ru.xemacs.org" "pub/xemacs/packages") ("sk.xemacs.org (Slovakia)" "ftp.sk.xemacs.org" "pub/mirrors/xemacs/packages") ("se.xemacs.org (Sweden)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packages") ("ch.xemacs.org (Switzerland)" "ftp.ch.xemacs.org" "mirror/xemacs/packages") ("uk.xemacs.org (United Kingdom)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/packages") ("jp.xemacs.org (Japan)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/packages") ("aist.go.jp (Japan)" "ring.aist.go.jp" "pub/text/xemacs/packages") ("asahi-net.or.jp (Japan)" "ring.asahi-net.or.jp" "pub/text/xemacs/packages") ("dti.ad.jp (Japan)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/packages") ("jaist.ac.jp (Japan)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/packages") ("nucba.ac.jp (Japan)" "mirror.nucba.ac.jp" "mirror/xemacs/packages") ("sut.ac.jp (Japan)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/packages") ("kr.xemacs.org (Korea)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/packages") ("za.xemacs.org (South Africa)" "ftp.za.xemacs.org" "mirrorsites/ftp.xemacs.org/packages") ("sa.xemacs.org (Saudi Arabia)" "ftp.sa.xemacs.org" "pub/mirrors/ftp.xemacs.org/xemacs/packages") ("au.xemacs.org (Australia)" "ftp.au.xemacs.org" "pub/xemacs/packages") ("aarnet.edu.au (Australia)" "mirror.aarnet.edu.au" "pub/xemacs/packages") ("nz.xemacs.org (New Zealand)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages")) "*List of remote sites available for downloading packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site.  SITE-NAME\nis the internet address of the download site.  DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get)
+(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)
 
-(autoload 'package-get-download-menu "package-get" "\
-Build the `Add Download Site' menu." nil nil)
+(defcustom package-get-install-to-user-init-directory nil "*If non-nil install packages under `user-init-directory'." :type 'boolean :group 'package-get)
+
+(defcustom package-get-download-sites '(("US (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/packages") ("Australia (aarnet.edu.au)" "mirror.aarnet.edu.au" "pub/xemacs/packages") ("Australia (au.xemacs.org)" "ftp.au.xemacs.org" "pub/xemacs/packages") ("Austria (at.xemacs.org)" "ftp.at.xemacs.org" "editors/xemacs/packages") ("Belgium (be.xemacs.org)" "ftp.be.xemacs.org" "xemacs/packages") ("Brazil (br.xemacs.org)" "ftp.br.xemacs.org" "pub/xemacs/packages") ("Canada (ca.xemacs.org)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/packages") ("Canada (crc.ca)" "ftp.crc.ca" "pub/packages/editors/xemacs/packages") ("Canada (ualberta.ca)" "sunsite.ualberta.ca" "pub/Mirror/xemacs/packages") ("Czech Republic (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/packages") ("Denmark (dk.xemacs.org)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/packages") ("Finland (fi.xemacs.org)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/packages") ("France (fr.xemacs.org)" "ftp.fr.xemacs.org" "pub/xemacs/packages") ("France (mirror.cict.fr)" "mirror.cict.fr" "xemacs/packages") ("France (pasteur.fr)" "ftp.pasteur.fr" "pub/computing/xemacs/packages") ("Germany (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/packages") ("Germany (tu-darmstadt.de)" "ftp.tu-darmstadt.de" "pub/editors/xemacs/packages") ("Ireland (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/packages") ("Italy (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/packages") ("Japan (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/packages") ("Japan (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/packages") ("Japan (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/packages") ("Japan (jaist.ac.jp)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/packages") ("Japan (jp.xemacs.org)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/packages") ("Japan (nucba.ac.jp)" "mirror.nucba.ac.jp" "mirror/xemacs/packages") ("Japan (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/packages") ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/packages") ("New Zealand (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ("Norway (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/packages") ("Poland (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/packages") ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/xemacs/packages") ("Slovakia (sk.xemacs.org)" "ftp.sk.xemacs.org" "pub/mirrors/xemacs/packages") ("South Africa (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp.xemacs.org/packages") ("Sweden (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packages") ("Switzerland (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/packages") ("UK (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/packages") ("US (ibiblio.org)" "ibiblio.org" "pub/packages/editors/xemacs/packages") ("US (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/packages") ("US (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/packages") ("US (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/packages") ("US (utk.edu)" "ftp.sunsite.utk.edu" "pub/xemacs/packages")) "*List of remote sites available for downloading packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site.  SITE-NAME\nis the internet address of the download site.  DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get)
+
+(defcustom package-get-pre-release-download-sites '(("Pre-Releases (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Australia Pre-Releases (aarnet.edu.au)" "mirror.aarnet.edu.au" "pub/xemacs/beta/experimental/packages") ("Australia Pre-Releases (au.xemacs.org)" "ftp.au.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Austria Pre-Releases (at.xemacs.org)" "ftp.at.xemacs.org" "editors/xemacs/beta/experimentsl/packages") ("Brazil Pre-Releases (br.xemacs.org)" "ftp.br.xemacs.org" "pub/xemacs/xemacs-21.5/experimental/packages") ("Canada Pre-Releases (ca.xemacs.org)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/beta/experimental/packages") ("Canada Pre-Releases (crc.ca)" "ftp.crc.ca" "pub/packages/editors/xemacs/beta/experimental/packages") ("Canada Pre-Releases (ualberta.ca)" "sunsite.ualberta.ca" "pub/Mirror/xemacs/beta/experimental/packages") ("Czech Republic Pre-Releases (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/xemacs-21.5/experimental/packages") ("Denmark Pre-Releases (dk.xemacs.org)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/beta/experimental/packages") ("Finland Pre-Releases (fi.xemacs.org)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/beta/experimental/packages") ("France Pre-Releases (fr.xemacs.org)" "ftp.fr.xemacs.org" "pub/xemacs/beta/experimental/packages") ("France Pre-Releases (mirror.cict.fr)" "mirror.cict.fr" "xemacs/beta/experimental/packages") ("France Pre-Releases (pasteur.fr)" "ftp.pasteur.fr" "pub/computing/xemacs/beta/experimental/packages") ("Germany Pre-Releases (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/beta/experimental/packages") ("Germany Pre-Releases (tu-darmstadt.de)" "ftp.tu-darmstadt.de" "pub/editors/xemacs/beta/experimental/packages") ("Ireland Pre-Releases (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("Italy Pre-Releases (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/beta/experimental/packages") ("Japan Pre-Releases (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/beta/experimental/packages") ("Japan Pre-Releases (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/beta/experimental/packages") ("Japan Pre-Releases (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/beta/experimental/packages") ("Japan Pre-Releases (jaist.ac.jp)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/beta/experimental/packages") ("Japan Pre-Releases (jp.xemacs.org)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/beta/experimental/packages") ("Japan Pre-Releases (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/xemacs-21.5/experimental/packages") ("New Zealand Pre-Releases (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ("Norway Pre-Releases (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Poland Pre-Releases (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/beta/experimental/packages") ("Russia Pre-Releases (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Saudi Arabia Pre-Releases (sa.xemacs.org)" "ftp.sa.xemacs.org" "pub/mirrors/ftp.xemacs.org/xemacs/xemacs-21.5/experimental/packages") ("Slovakia Pre-Releases (sk.xemacs.org)" "ftp.sk.xemacs.org" "pub/mirrors/xemacs/beta/experimental/packages") ("South Africa Pre-Releases (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp.xemacs.org/beta/experimental/packages") ("Sweden Pre-Releases (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/beta/experimental/packages") ("Switzerland Pre-Releases (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/beta/experimental/packages") ("UK Pre-Releases (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("US Pre-Releases (ibiblio.org)" "ibiblio.org" "pub/packages/editors/xemacs/beta/experimental/packages") ("US Pre-Releases (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("US Pre-Releases (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/beta/experimental/packages") ("US Pre-Releases (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/beta/experimental/packages") ("US Pre-Releases (utk.edu)" "ftp.sunsite.utk.edu" "pub/xemacs/beta/experimental/packages")) "*List of remote sites available for downloading \"Pre-Release\" packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site.  SITE-NAME\nis the internet address of the download site.  DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Pre-Release Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get)
+
+(defcustom package-get-site-release-download-sites nil "*List of remote sites available for downloading \"Site Release\" packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site.  SITE-NAME\nis the internet address of the download site.  DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Site Release Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get)
 
 (autoload 'package-get-require-base "package-get" "\
 Require that a package-get database has been loaded.
@@ -1565,6 +1563,71 @@ Uses `package-get-base' to determine just what is required and what
 package provides that functionality.  Returns the list of packages
 required by PACKAGES." nil nil)
 
+(autoload 'package-get-info "package-get" "\
+Get information about a package.
+
+Quite similar to `package-get-info-prop', but can retrieve a lot more
+information.
+
+Argument PACKAGE is the name of an XEmacs package (a symbol).  It must
+be a valid package, ie, a member of `package-get-base'.
+
+Argument INFORMATION is a symbol that can be any one of:
+
+   standards-version     Package system version (not used).
+   version               Version of the XEmacs package.
+   author-version        The upstream version of the package.
+   date                  The date the package was last modified.
+   build-date            The date the package was last built.
+   maintainer            The maintainer of the package.
+   distribution          Will always be \"xemacs\" (not used).
+   priority              \"low\", \"medium\", or \"high\" (not used).
+   category              Either \"standard\", \"mule\", or \"unsupported\"..
+   dump                  Is the package dumped (not used).
+   description           A description of the package.
+   filename              The filename of the binary tarball of the package.
+   md5sum                The md5sum of filename.
+   size                  The size in bytes of filename.
+   provides              A list of symbols that this package provides.
+   requires              A list of packages that this package requires.
+   type                  Can be either \"regular\" or \"single-file\".
+
+If optional argument ARG is non-nil insert INFORMATION into current
+buffer at point.  This is very useful for doing things like inserting
+a maintainer's email address into a mail buffer.
+
+If optional argument REMOTE is non-nil use a package list from a
+remote site.  For this to work `package-get-remote' must be non-nil.
+
+If this function is called interactively it will display INFORMATION
+in the minibuffer." t nil)
+
+(autoload 'package-get-list-packages-where "package-get" "\
+Return a list of packages that fulfill certain criteria.
+
+Argument ITEM, a symbol, is what you want to check for.  ITEM must be a
+symbol even when it doesn't make sense to be a symbol (think, searching
+maintainers, descriptions, etc).  The function will convert the symbol
+to a string if a string is what is needed.  The downside to this is that
+ITEM can only ever be a single word.
+
+Argument FIELD, a symbol, is the field to check in.  You can specify
+any one of:
+
+      Field            Sane or Allowable Content
+    description          any single word
+    category             `standard' or `mule'
+    maintainer           any single word
+    build-date           yyyy-mm-dd
+    date                 yyyy-mm-dd
+    type                 `regular' or `single'
+    requires             any package name
+    provides             any symbol
+    priority             `low', `medium', or `high'
+
+Optional Argument ARG, a prefix arg, insert output at point in the
+current buffer." t nil)
+
 (autoload 'package-get "package-get" "\
 Fetch PACKAGE from remote site.
 Optional arguments VERSION indicates which version to retrieve, nil
@@ -1577,8 +1640,7 @@ fetched packages should be installed.
 
 The value of `package-get-base' is used to determine what files should
 be retrieved.  The value of `package-get-remote' is used to determine
-where a package should be retrieved from.  The sites are tried in
-order so one is better off listing easily reached sites first.
+where a package should be retrieved from.
 
 Once the package is retrieved, its md5 checksum is computed.  If that
 sum does not match that stored in `package-get-base' for this version
@@ -1597,9 +1659,6 @@ Search for a package that provides SYM and return the name and
 If FORCE-CURRENT is non-nil make sure the database is up to date. This might
 lead to Emacs accessing remote sites." t nil)
 
-(autoload 'package-get-custom "package-get" "\
-Fetch and install the latest versions of all customized packages." t nil)
-
 ;;;***
 \f
 ;;;### (autoloads (package-net-update-installed-db package-net-setup-directory) "package-net" "lisp/package-net.el")
@@ -1613,13 +1672,22 @@ DESTDIR defaults to the value of `package-net-setup-directory'." nil nil)
 
 ;;;***
 \f
-;;;### (autoloads (pui-list-packages pui-add-install-directory package-ui-add-site) "package-ui" "lisp/package-ui.el")
+;;;### (autoloads (pui-list-packages pui-set-local-package-get-directory package-ui-site-release-download-menu package-ui-pre-release-download-menu package-ui-download-menu package-ui-add-site) "package-ui" "lisp/package-ui.el")
 
 (autoload 'package-ui-add-site "package-ui" "\
 Add site to package-get-remote and possibly offer to update package list." nil nil)
 
-(autoload 'pui-add-install-directory "package-ui" "\
-Add a new package binary directory to the head of `package-get-remote'.
+(autoload 'package-ui-download-menu "package-ui" "\
+Build the `Add Download Site' menu." nil nil)
+
+(autoload 'package-ui-pre-release-download-menu "package-ui" "\
+Build the 'Pre-Release Download Sites' menu." nil nil)
+
+(autoload 'package-ui-site-release-download-menu "package-ui" "\
+Build the 'Site Release Download Sites' menu." nil nil)
+
+(autoload 'pui-set-local-package-get-directory "package-ui" "\
+Set a new package binary directory in `package-get-remote'.
 Note that no provision is made for saving any changes made by this function.
 It exists mainly as a convenience for one-time package installations from
 disk." t nil)
index cf62f7c..f5be73d 100644 (file)
@@ -1284,7 +1284,7 @@ otherwise pop it")
     (setq unreferenced (nreverse unreferenced))
     (while unreferenced
       (byte-compile-warn
-       (format "variable %s bound but not referenced" (car unreferenced)))
+       "variable %s bound but not referenced" (car unreferenced))
       (setq unreferenced (cdr unreferenced)))))
 
 \f
@@ -3921,7 +3921,7 @@ If FORM is a lambda or a macro, byte-compile it as a function."
              ;; `defconst' sets `var' unconditionally.
              `(setq ,var ,value)
            ;; `defvar' sets `var' only when unbound.
-           `(if (not (boundp ',var)) (setq ,var ,value))))
+           `(if (not (default-boundp ',var)) (set-default ',var ,value))))
       `',var))))
 
 (defun byte-compile-autoload (form)
index 62719a3..c216a48 100644 (file)
@@ -1,3 +1,11 @@
+(defvar packages-hardcoded-lisp
+  '(
+    ;; Nothing at this time
+    )
+  "Lisp packages that are always dumped with XEmacs.
+This includes every package that is loaded directly by a package listed
+in dumped-lisp.el and is not itself listed.")
+
 (setq preloaded-file-list
       (assemble-list
         "backquote"            ; needed for defsubst etc.
index 1c2aa6f..18ce0ae 100644 (file)
@@ -198,7 +198,7 @@ nil means make them for files that have some already.
 ;(defvar dired-kept-versions 2
 ;  "*When cleaning directory, number of versions to keep.")
 
-(defcustom delete-old-versions nil
+(defcustom delete-old-versions (when noninteractive 'leave)
   "*If t, delete excess backup versions silently.
 If nil, ask confirmation.  Any other value prevents any trimming."
   :type '(choice (const :tag "Delete" t)
index 1835b7d..3bde4cd 100644 (file)
@@ -1095,7 +1095,7 @@ part of the documentation of internal subroutines."
           (princ object)
           (put-nonduplicable-text-property
            pos (marker-position standard-output) 'face face buf)))
-       (t princ object)))
+       (t (princ object))))
 
 ;; replacement for `prin1' that puts the text in the specified face,
 ;; if possible
@@ -1111,7 +1111,7 @@ part of the documentation of internal subroutines."
           (prin1 object)
           (put-nonduplicable-text-property
            pos (marker-position standard-output) 'face face buf)))
-       (t prin1 object)))
+       (t (prin1 object))))
 
 (defvar help-symbol-regexp
   (let ((sym-char "[+a-zA-Z0-9_:*]")
index 8296b9c..41cfc46 100644 (file)
@@ -1510,7 +1510,7 @@ versions of NAME. Only the suffixes are tried."
                           (format (cdr (car suff)) file)
                         (concat (cdr (car suff)) " < " file))))
          (message "%s..." command)
-         (call-process shell-file-name nil t nil "-c" command)
+         (call-process shell-file-name nil t nil shell-command-switch command)
          (message "")
          (when visit
            (setq buffer-file-name file)
index 705df24..6c2d793 100644 (file)
@@ -406,6 +406,14 @@ its FUNCTION will be called when it expires, and so on."
        (error "itimer named \"%s\" already existing and activated"
               (itimer-name itimer))))
   (let ((inhibit-quit t))
+    (if itimer-timer
+       ;; Modify the itimer timeout value as if it were begun
+       ;; at the last time when the itimer driver was woken up.
+       (set-itimer-value
+        itimer
+        (+ (itimer-value itimer)
+           (itimer-time-difference (current-time)
+                                   itimer-timer-last-wakeup))))
     ;; add the itimer to the global list
     (setq itimer-list (cons itimer itimer-list))
     ;; If the itimer process is scheduled to wake up too late for
index 1c410a3..58473b9 100644 (file)
@@ -128,6 +128,95 @@ which will not be used as accelerators."
             "")))
        (t "")))
 
+(defcustom menu-max-items 25
+  "*Maximum number of items in generated menus.
+If number of entries in such a menu is larger than this value, split menu
+into submenus of nearly equal length (see `menu-submenu-max-items').  If
+nil, never split menu into submenus."
+  :group 'menu
+  :type '(choice (const :tag "no submenus" nil)
+                (integer)))
+
+(defcustom menu-submenu-max-items 20
+  "*Maximum number of items in submenus when splitting menus.
+We split large menus into submenus of this many items, and then balance
+them out as much as possible (otherwise the last submenu may have very few
+items)."
+  :group 'menu
+  :type 'integer)
+
+(defcustom menu-submenu-name-format "%-12.12s ... %.12s"
+  "*Format specification of the submenu name when splitting menus.
+Used by `menu-split-long-menu' if the number of entries in a menu is
+larger than `menu-menu-max-items'.
+This string should contain one %s for the name of the first entry and
+one %s for the name of the last entry in the submenu.
+If the value is a function, it should return the submenu name.  The
+function is be called with two arguments, the names of the first and
+the last entry in the menu."
+  :group 'menu
+  :type '(choice (string :tag "Format string")
+                (function)))
+
+(defun menu-split-long-menu (menu)
+  "Split MENU according to `menu-max-items' and add accelerator specs.
+
+You should normally use the idiom
+
+\(menu-split-long-menu (menu-sort-menu menu))
+
+See also `menu-sort-menu'."
+  (let ((len (length menu)))
+    (if (or (null menu-max-items)
+           (<= len menu-max-items))
+       (submenu-generate-accelerator-spec menu)
+      (let* ((outer (/ (+ len (1- menu-submenu-max-items))
+                      menu-submenu-max-items))
+            (inner (/ (+ len (1- outer)) outer))
+            (result nil))
+       (while menu
+         (let ((sub nil)
+               (from (car menu)))
+           (dotimes (foo (min inner len))
+             (setq sub  (cons (car menu) sub)
+                   menu (cdr menu)))
+           (setq len (- len inner))
+           (let ((to (car sub)))
+             (setq sub (nreverse sub))
+             (setq result
+                   (cons (cons (if (stringp menu-submenu-name-format)
+                                   (format menu-submenu-name-format
+                                           (menu-item-strip-accelerator-spec
+                                            (aref from 0))
+                                           (menu-item-strip-accelerator-spec
+                                            (aref to 0)))
+                                 (funcall menu-submenu-name-format
+                                          (menu-item-strip-accelerator-spec
+                                           (aref from 0))
+                                          (menu-item-strip-accelerator-spec
+                                           (aref to 0))))
+                               (submenu-generate-accelerator-spec sub))
+                         result)))))
+       (submenu-generate-accelerator-spec (nreverse result))))))
+
+(defun menu-sort-menu (menu)
+  "Sort MENU alphabetically.
+
+You should normally use the idiom
+
+\(menu-split-long-menu (menu-sort-menu menu))
+
+See also `menu-split-long-menu'."
+  (sort menu
+       #'(lambda (a b) (string-lessp (aref a 0) (aref b 0)))))
+
+(defun menu-item-search ()
+  "Bring up a search dialog if possible and desired, else do interactive search"
+  (interactive)
+  (if (should-use-dialog-box-p)
+      (make-search-dialog)
+    (isearch-forward)))
+
 (defconst default-menubar
 ; (purecopy-menubar ;purespace is dead
    ;; note backquote.
@@ -201,7 +290,7 @@ which will not be used as accelerators."
       ["Select %_All" mark-whole-buffer]
       ["Select Pa%_ge" mark-page]
       "----"
-      ["%_Find..." make-search-dialog]
+      ["%_Find..." menu-item-search]
       ["R%_eplace..." query-replace]
       ["Replace (Rege%_xp)..." query-replace-regexp]
       ["%_List Matching Lines..." list-matching-lines]
@@ -404,23 +493,26 @@ which will not be used as accelerators."
 
      ("%_Tools"
       ("%_Packages"
-       ("%_Add Download Site"
-        :filter (lambda (&rest junk)
-                  (submenu-generate-accelerator-spec
-                  (package-get-download-menu))))
+       ("%_Set Download Site"
+       ("%_Official Releases"
+        :filter (lambda (&rest junk)
+                  (menu-split-long-menu
+                   (submenu-generate-accelerator-spec
+                    (package-ui-download-menu)))))
+       ("%_Pre-Releases"
+        :filter (lambda (&rest junk)
+                  (menu-split-long-menu
+                   (submenu-generate-accelerator-spec
+                    (package-ui-pre-release-download-menu)))))
+       ("%_Site Releases"
+        :filter (lambda (&rest junk)
+                  (menu-split-long-menu
+                   (submenu-generate-accelerator-spec
+                    (package-ui-site-release-download-menu))))))
+       "--:shadowEtchedIn"
        ["%_Update Package Index" package-get-update-base]
        ["%_List and Install" pui-list-packages]
        ["U%_pdate Installed Packages" package-get-update-all]
-       ;; hack-o-matic, we can't force a load of package-base here
-       ;; since it triggers dialog box interactions which we can't
-       ;; deal with while using a menu
-       ("Using %_Custom"
-       :filter (lambda (&rest junk)
-                 (if package-get-base
-                     (submenu-generate-accelerator-spec
-                      (cdr (custom-menu-create 'packages)))
-                   '("Please load Package Index"))))
-
        ["%_Help" (Info-goto-node "(xemacs)Packages")])
       ("%_Internet"
        ["Read Mail %_1 (VM)..." vm
index 9581696..45bea13 100644 (file)
@@ -289,12 +289,11 @@ DESCRIPTION (string) is the description string of the charset."
          =gt-pj-11
          =gt-pj-k1
          =gt-pj-k2
-         =big5-cdp
          japanese-jisx0208
          =jis-x0208-1990
+         chinese-gb2312
          japanese-jisx0212
          japanese-jisx0208-1978
-         chinese-gb2312
          korean-ksc5601
          chinese-cns11643-1
          chinese-cns11643-2
@@ -305,6 +304,7 @@ DESCRIPTION (string) is the description string of the charset."
          chinese-cns11643-7
          =jis-x0213-1-2000
          =jis-x0213-2-2000
+         =big5-cdp
          ;; chinese-gb12345
          chinese-isoir165
          katakana-jisx0201
@@ -320,18 +320,10 @@ DESCRIPTION (string) is the description string of the charset."
          arabic-1-column
          arabic-2-column
          =gt-pj-1
-         chinese-big5-eten-a
-         chinese-big5-eten-b
-         chinese-big5
          =ucs-radicals
-         =ucs-radicals@unicode
          =ucs-bmp-cjk
-         =ucs-bmp-cjk@unicode
          =ucs-sip-ext-b
-         =ucs-sip-ext-b@iso
          =ruimoku-v6
-         ideograph-daikanwa-2
-         ideograph-daikanwa
          =hanziku-1
          =hanziku-2
          =hanziku-3
@@ -344,6 +336,14 @@ DESCRIPTION (string) is the description string of the charset."
          =hanziku-10
          =hanziku-11
          =hanziku-12
+         =ucs-radicals@unicode
+         =ucs-sip-ext-b@iso
+         chinese-big5-eten-a
+         chinese-big5-eten-b
+         chinese-big5
+         =ucs-bmp-cjk@unicode
+         ideograph-daikanwa-2
+         ideograph-daikanwa
          =cbeta
          ucs-bmp
          =jef-china3
index 94f201f..f0d54f5 100644 (file)
@@ -177,6 +177,8 @@ set Info-directory-list.")
   "This used to be the name of the user whose init file was read at startup.")
 (make-obsolete-variable 'init-file-user 'load-user-init-file-p)
 
+(define-obsolete-function-alias 'pui-add-install-directory
+  'pui-set-local-package-get-directory) ; misleading name
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;; hooks
 
 (make-compatible-variable 'lisp-indent-hook 'lisp-indent-function)
@@ -227,6 +229,9 @@ set Info-directory-list.")
 ;; Can't make this obsolete.  easymenu depends on it.
 (make-compatible 'add-menu 'add-submenu)
 
+(define-obsolete-function-alias 'package-get-download-menu 
+  'package-ui-download-menu)
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;; minibuffer
 
 (define-compatible-function-alias 'read-minibuffer
index 925f6de..efa527a 100644 (file)
@@ -1,6 +1,7 @@
 ;;; package-admin.el --- Installation and Maintenance of XEmacs packages
 
 ;; Copyright (C) 1997 by Free Software Foundation, Inc.
+;; Copyright (C) 2003, Steve Youngs.
 
 ;; Author: SL Baur <steve@xemacs.org>
 ;; Keywords: internal
@@ -114,25 +115,6 @@ the install directory.")
 hook is called *before* the package is deleted. The hook function is passed
 two arguments: the package name, and the install directory.")
 
-;;;###autoload
-(defun package-admin-add-single-file-package (file destdir &optional pkg-dir)
-  "Install a single file Lisp package into XEmacs package hierarchy.
-`file' should be the full path to the lisp file to install.
-`destdir' should be a simple directory name.
-The optional `pkg-dir' can be used to override the default package hierarchy
-\(car \(last late-packages))."
-  (interactive "fLisp File: \nsDestination: ")
-  (when (null pkg-dir)
-    (setq pkg-dir (car (last late-packages))))
-  (let ((destination (concat pkg-dir "/lisp/" destdir))
-       (buf (get-buffer-create package-admin-temp-buffer)))
-    (call-process "add-little-package.sh"
-                 nil
-                 buf
-                 t
-                 ;; rest of command line follows
-                 package-admin-xemacs file destination)))
-
 (defun package-admin-install-function-mswindows (file pkg-dir buffer)
   "Install function for mswindows."
   (let ((default-directory (file-name-as-directory pkg-dir)))
@@ -152,80 +134,193 @@ to BUFFER."
     ;; Don't assume GNU tar.
     (if (shell-command (concat "gunzip -c " filename " | tar xvf -") buffer)
        0
-      1)
-    ))
-
-;  (call-process "add-big-package.sh"
-;              nil
-;              buffer
-;              t
-;              ;; rest of command line follows
-;              package-admin-xemacs file pkg-dir))
-
-(defun package-admin-get-install-dir (package pkg-dir &optional mule-related)
-  "If PKG-DIR is non-nil return that,
-else return the current location of the package if it is already installed
-or return a location appropriate for the package otherwise."
-  (if pkg-dir
+      1)))
+
+;; A few things needed by the following 2 functions.
+(eval-when-compile
+  (require 'packages)
+  (autoload 'package-get-info "package-get")
+  (autoload 'paths-decode-directory-path "find-paths")
+  (defvar package-get-install-to-user-init-directory))
+
+(defun package-admin-find-top-directory (type &optional user-dir)
+  "Return the top level directory for a package.
+
+Argument TYPE is a symbol that determines the type of package we're
+trying to find a directory for.
+
+Optional Argument USER-DIR if non-nil use directories off
+`user-init-directory'.  This overrides everything except
+\"EMACSPACKAGEPATH\".
+
+This function honours the environment variable \"EMACSPACKAGEPATH\"
+and returns directories found there as a priority.  If that variable
+doesn't exist and USER-DIR is nil, check in the normal places.
+
+If we still can't find a suitable directory, return nil.
+
+Possible values for TYPE are:
+
+    std  == For \"standard\" packages that go in '/xemacs-packages/'
+    mule == For \"mule\" packages that go in '/mule-packages/'
+    site == For \"unsupported\" packages that go in '/site-packages/'
+
+Note:  Type \"site\" is not yet fully supported."
+  (let* ((env-value (getenv "EMACSPACKAGEPATH"))
+        top-dir)
+    ;; First, check the environment var.
+    (if env-value
+       (let ((path-list (paths-decode-directory-path env-value 'drop-empties)))
+         (cond ((eq type 'std)
+                (while path-list
+                  (if (equal (substring (car path-list) -16) 
+                             (concat "xemacs-packages" (char-to-string directory-sep-char)))
+                      (setq top-dir (car path-list)))
+                  (setq path-list (cdr path-list))))
+               ((eq type 'mule)
+                (while path-list
+                  (if (equal (substring (car path-list) -14) 
+                             (concat "mule-packages" (char-to-string directory-sep-char)))
+                      (setq top-dir (car path-list)))
+                  (setq path-list (cdr path-list)))))))
+    ;; Wasn't in the environment, try `user-init-directory' if
+    ;; USER-DIR is non-nil.
+    (if (and user-dir
+            (not top-dir))
+       (cond ((eq type 'std)
+              (setq top-dir (file-name-as-directory
+                             (expand-file-name "xemacs-packages" user-init-directory))))
+             ((eq type 'mule)
+              (setq top-dir (file-name-as-directory
+                             (expand-file-name "mule-packages" user-init-directory))))))
+    ;; Finally check the normal places
+    (if (not top-dir)
+       (let ((path-list (nth 1 (packages-find-packages
+                                emacs-roots
+                                (packages-compute-package-locations user-init-directory)))))
+         (cond ((eq type 'std)
+                (while path-list
+                  (if (equal (substring (car path-list) -16) 
+                             (concat "xemacs-packages" (char-to-string directory-sep-char)))
+                      (setq top-dir (car path-list)))
+                  (setq path-list (cdr path-list))))
+               ((eq type 'mule)
+                (while path-list
+                  (if (equal (substring (car path-list) -14) 
+                             (concat "mule-packages" (char-to-string directory-sep-char)))
+                      (setq top-dir (car path-list)))
+                  (setq path-list (cdr path-list)))))))
+    ;; Now return either the directory or nil.
+    top-dir))
+
+(defun package-admin-get-install-dir (package &optional pkg-dir)
+  "Find a suitable installation directory for a package.
+
+Argument PACKAGE is the package to find a installation directory for.
+Optional Argument PKG-DIR, if non-nil is a directory to use for
+installation.
+
+If PKG-DIR is non-nil and writable, return that.  Otherwise check to
+see if the PACKAGE is already installed and return that location, if
+it is writable.  Finally, fall back to the `user-init-directory' if
+all else fails.  As a side effect of installing packages under
+`user-init-directory' these packages become part of `early-packages'."
+  ;; If pkg-dir specified, return that if writable.
+  (if (and pkg-dir
+          (file-writable-p (directory-file-name pkg-dir)))
       pkg-dir
-    (let ((package-feature (intern-soft (concat
-                                        (symbol-name package) "-autoloads")))
-         autoload-dir)
-      (when (and (not (eq package 'unknown))
-                (featurep package-feature)
-                (setq autoload-dir (feature-file package-feature))
-                (setq autoload-dir (file-name-directory autoload-dir))
-                (member autoload-dir (append early-package-load-path late-package-load-path)))
-       ;; Find the corresponding entry in late-package
-       (setq pkg-dir
-             (car-safe (member-if (lambda (h)
-                          (string-match (concat "^" (regexp-quote h))
-                                        autoload-dir))
-                        (append (cdr early-packages) late-packages)))))
-      (if pkg-dir
-         pkg-dir
-       ;; Ok we need to guess
-       (if mule-related
-           (package-admin-get-install-dir 'mule-base nil nil)
-         (if (eq package 'xemacs-base)
-             (car (last late-packages))
-           (package-admin-get-install-dir 'xemacs-base nil nil)))))))
-
-
+    ;; If the user want her packages under ~/.xemacs/, do so.
+    (let ((type (package-get-info package 'category)))
+      (if package-get-install-to-user-init-directory
+         (progn
+           (cond ((equal type "standard")
+                  (setq pkg-dir (package-admin-find-top-directory 'std 'user-dir)))
+                 ((equal type "mule")
+                  (setq pkg-dir (package-admin-find-top-directory 'mule 'user-dir))))
+           pkg-dir)
+       ;; Maybe the package has been installed before, if so, return
+       ;; that directory.
+       (let ((package-feature (intern-soft (concat
+                                            (symbol-name package) "-autoloads")))
+             autoload-dir)
+         (when (and (not (eq package 'unknown))
+                    (featurep package-feature)
+                    (setq autoload-dir (feature-file package-feature))
+                    (setq autoload-dir (file-name-directory autoload-dir))
+                    (member autoload-dir (append early-package-load-path late-package-load-path)))
+           ;; Find the corresponding entry in late-package
+           (setq pkg-dir
+                 (car-safe (member-if (lambda (h)
+                                        (string-match (concat "^" (regexp-quote h))
+                                                      autoload-dir))
+                                      (append (cdr early-packages) late-packages)))))
+         (if (and pkg-dir
+                  (file-writable-p (directory-file-name pkg-dir)))
+             pkg-dir
+           ;; OK, the package hasn't been previously installed so we need
+           ;; to guess where it should go.
+           (cond ((equal type "standard")
+                  (setq pkg-dir (package-admin-find-top-directory 'std)))
+                 ((equal type "mule")
+                  (setq pkg-dir (package-admin-find-top-directory 'mule)))
+                 (t
+                  (error 'invalid-operation
+                         "Invalid package type")))
+           (if (and pkg-dir
+                    (file-writable-p (directory-file-name pkg-dir)))
+               pkg-dir
+             ;; Oh no!  Either we still haven't found a suitable
+             ;; directory, or we can't write to the one we did find.
+             ;; Drop back to the `user-init-directory'.
+             (if (y-or-n-p (format "Directory isn't writable, use %s instead? "
+                                   user-init-directory))
+                 (progn
+                   (cond ((equal type "standard")
+                          (setq pkg-dir (package-admin-find-top-directory 'std 'user-dir)))
+                         ((equal type "mule")
+                          (setq pkg-dir (package-admin-find-top-directory 'mule 'user-dir)))
+                         (t
+                          (error 'invalid-operation
+                                 "Invalid package type")))
+                   ;; Turn on `package-get-install-to-user-init-directory'
+                   ;; so we don't get asked for each package we try to
+                   ;; install in this session.
+                   (setq package-get-install-to-user-init-directory t)
+                   pkg-dir)
+               ;; If we get to here XEmacs can't make up its mind and
+               ;; neither can the user, nothing left to do except barf. :-(
+               (error 'search-failed
+                      (format
+                       "Can't find suitable installation directory for package: %s" 
+                       package))))))))))
 
 (defun package-admin-get-manifest-file (pkg-topdir package)
   "Return the name of the MANIFEST file for package PACKAGE.
 Note that PACKAGE is a symbol, and not a string."
-  (let (dir)
-    (setq dir (expand-file-name "pkginfo" pkg-topdir))
-    (expand-file-name (concat "MANIFEST." (symbol-name package)) dir)
-    ))
+  (let ((dir (file-name-as-directory
+             (expand-file-name "pkginfo" pkg-topdir))))
+    (expand-file-name (concat "MANIFEST." (symbol-name package)) dir)))
 
 (defun package-admin-check-manifest (pkg-outbuf pkg-topdir)
   "Check for a MANIFEST.<package> file in the package distribution.
 If it doesn't exist, create and write one.
 PKG-OUTBUF is the buffer that holds the output from `tar', and PKG-TOPDIR
 is the top-level directory under which the package was installed."
-  (let ( (manifest-buf " *pkg-manifest*")
-        old-case-fold-search regexp package-name pathname regexps)
-    ;; Save and restore the case-fold-search status.
-    ;; We do this in case we have to screw with it (as it the case of
-    ;; case-insensitive filesystems such as MS Windows).
-    (setq old-case-fold-search case-fold-search)
+  (let ((manifest-buf " *pkg-manifest*")
+       (old-case-fold-search case-fold-search)
+       regexp package-name pathname regexps)
     (unwind-protect
        (save-excursion                         ;; Probably redundant.
-         (set-buffer (get-buffer pkg-outbuf))  ;; Probably already the
-                                               ;; current buffer.
+         (set-buffer (get-buffer pkg-outbuf))  ;; Probably already the current buffer.
          (goto-char (point-min))
 
          ;; Make filenames case-insensitive, if necessary
          (if (eq system-type 'windows-nt)
              (setq case-fold-search t))
 
-         ;; We really should compute the regexp.
-         ;; However, directory-sep-char is currently broken, but we need
-         ;; functional code *NOW*.
-         (setq regexp "\\bpkginfo[\\/]MANIFEST\\...*")
+         (setq regexp (concat "\\bpkginfo" 
+                              (char-to-string directory-sep-char)
+                              "MANIFEST\\...*"))
 
          ;; Look for the manifest.
          (if (not (re-search-forward regexp nil t))
@@ -234,22 +329,18 @@ is the top-level directory under which the package was installed."
 
                ;; Yuk.  We weren't passed the package name, and so we have
                ;; to dig for it.  Look for it as the subdirectory name below
-               ;; "lisp", "man", "info", or "etc".
+               ;; "lisp", or "man".
                ;; Here, we don't use a single regexp because we want to search
                ;; the directories for a package name in a particular order.
-               ;; The problem is that packages could have directories like
-               ;; "etc/sounds/" or "etc/photos/" and we don't want to get
-               ;; these confused with the actual package name (although, in
-               ;; the case of "etc/sounds/", it's probably correct).
                (if (catch 'done
-                     (let ( (dirs '("lisp" "info" "man" "etc")) rexp)
+                     (let ((dirs '("lisp" "man")) 
+                           rexp)
                        (while dirs
                          (setq rexp (concat "\\b" (car dirs)
                                             "[\\/]\\([^\\/]+\\)[\//]"))
                          (if (re-search-forward rexp nil t)
                              (throw 'done t))
-                         (setq dirs (cdr dirs))
-                         )))
+                         (setq dirs (cdr dirs)))))
                    (progn
                      (setq package-name (buffer-substring (match-beginning 1)
                                                           (match-end 1)))
@@ -277,22 +368,16 @@ is the top-level directory under which the package was installed."
                                            (buffer-substring
                                             (match-beginning 1)
                                             (match-end 1)))
-                                     (throw 'found-path t)
-                                     ))
-                               (setq regexps (cdr regexps))
-                               )
-                             )
+                                     (throw 'found-path t)))
+                               (setq regexps (cdr regexps))))
                            (progn
                              ;; found a pathname -- add it to the manifest
                              ;; buffer
                              (save-excursion
                                (set-buffer manifest-buf)
                                (goto-char (point-max))
-                               (insert pathname "\n")
-                               )
-                             ))
-                       (forward-line 1)
-                       )
+                               (insert pathname "\n"))))
+                       (forward-line 1))
 
                      ;; Processed all lines.
                      ;; Now, create the file, pkginfo/MANIFEST.<pkgname>
@@ -310,24 +395,18 @@ is the top-level directory under which the package was installed."
                      (save-excursion
                        (set-buffer manifest-buf)
                        ;; Put the files in sorted order
-                       (sort-lines nil (point-min) (point-max))
+                       (if (fboundp 'sort-lines)
+                           (sort-lines nil (point-min) (point-max))
+                         (warn "`xemacs-base' not installed, MANIFEST.%s not sorted"
+                               package-name))
                        ;; Write the file.
                        ;; Note that using `write-region' *BYPASSES* any check
                        ;; to see if XEmacs is currently editing/visiting the
                        ;; file.
-                       (write-region (point-min) (point-max) pathname)
-                       )
-                     (kill-buffer manifest-buf)
-                     )
-                 (progn
-                   ;; We can't determine the package name from an extracted
-                   ;; file in the tar output buffer.
-                   ))
-               ))
-         )
+                       (write-region (point-min) (point-max) pathname))
+                     (kill-buffer manifest-buf))))))
       ;; Restore old case-fold-search status
-      (setq case-fold-search old-case-fold-search))
-    ))
+      (setq case-fold-search old-case-fold-search))))
 
 ;;;###autoload
 (defun package-admin-add-binary-package (file &optional pkg-dir)
@@ -335,8 +414,7 @@ is the top-level directory under which the package was installed."
   (interactive "fPackage tarball: ")
   (let ((buf (get-buffer-create package-admin-temp-buffer))
        (status 1)
-       start err-list
-       )
+       start err-list)
     (setq pkg-dir (package-admin-get-install-dir 'unknown pkg-dir))
     ;; Ensure that the current directory doesn't change
     (save-excursion
@@ -358,17 +436,11 @@ is the top-level directory under which the package was installed."
                (if (re-search-forward (car err-list) nil t)
                    (progn
                      (setq status 1)
-                     (throw 'done nil)
-                     ))
-               (setq err-list (cdr err-list))
-               )
-             )
+                     (throw 'done nil)))
+               (setq err-list (cdr err-list))))
            ;; Make sure that the MANIFEST file exists
-           (package-admin-check-manifest buf pkg-dir)
-           ))
-      )
-    status
-    ))
+           (package-admin-check-manifest buf pkg-dir))))
+    status))
 
 (defun package-admin-rmtree (directory)
   "Delete a directory and all of its contents, recursively.
@@ -403,13 +475,12 @@ This is a feeble attempt at making a portable rmdir."
             (setq package-lispdir (expand-file-name (symbol-name package)
                                                     package-lispdir))
             (file-accessible-directory-p package-lispdir))
-       package-lispdir)
-    ))
+       package-lispdir)))
 
 (defun package-admin-delete-binary-package (package pkg-topdir)
   "Delete a binary installation of PACKAGE below directory PKG-TOPDIR.
 PACKAGE is a symbol, not a string."
-  (let ( (tmpbuf " *pkg-manifest*") manifest-file package-lispdir dirs file)
+  (let (manifest-file package-lispdir dirs file)
     (setq pkg-topdir (package-admin-get-install-dir package pkg-topdir))
     (setq manifest-file (package-admin-get-manifest-file pkg-topdir package))
     (run-hook-with-args 'package-delete-hook package pkg-topdir)
@@ -418,8 +489,7 @@ PACKAGE is a symbol, not a string."
          ;; The manifest file exists!  Use it to delete the old distribution.
          (message "Removing old files for package \"%s\" ..." package)
          (sit-for 0)
-         (setq tmpbuf (get-buffer-create tmpbuf))
-         (with-current-buffer tmpbuf
+         (with-temp-buffer
            (buffer-disable-undo)
            (erase-buffer)
            (insert-file-contents manifest-file)
@@ -451,66 +521,31 @@ PACKAGE is a symbol, not a string."
 
            ;; Delete empty directories.
            (if dirs
-               (let ( (orig-default-directory default-directory)
-                      ;; directory files file
-                      )
-                 ;; Make sure we preserve the existing `default-directory'.
-                 ;; JV, why does this change the default directory? Does it indeed?
-                 (unwind-protect
-                     (progn
-                       ;; Warning: destructive sort!
-                       (setq dirs (nreverse (sort dirs 'string<)))
-;                      ;; For each directory ...
-;                      (while dirs
-;                        (setq directory (file-name-as-directory (car dirs)))
-;                        (setq files (directory-files directory))
-;                        ;; Delete the directory if it's empty.
-;                        (if (catch 'done
-;                              (while files
-;                                (setq file (car files))
-;                                (if (and (not (string= file "."))
-;                                         (not (string= file "..")))
-;                                    (throw 'done nil))
-;                                (setq files (cdr files))
-;                                )
-;                              t)
-;                            (
-;                            (delete-directory directory))
-;                        (setq dirs (cdr dirs))
-;                        )
-                       ;; JV, On all OS's that I know of delete-directory fails on
-                       ;; on non-empty dirs anyway
-                       (mapc
-                          (lambda (dir)
-                            (condition-case ()
-                                (delete-directory dir)))
-                          dirs))
-                   (setq default-directory orig-default-directory)
-                   )))
-           )
-         (kill-buffer tmpbuf)
+               (progn
+                 (mapc
+                  (lambda (dir)
+                    (condition-case ()
+                        (delete-directory dir)))
+                  dirs)))
          ;; Delete the MANIFEST file
          ;; (set-file-modes manifest-file 438) ;; 438 -> #o666
          ;; Note. Packages can have MANIFEST in MANIFEST.
          (condition-case ()
              (delete-file manifest-file)
            (error nil)) ;; Do warning?
-         (message "Removing old files for package \"%s\" ... done" package))
-       ;; The manifest file doesn't exist.  Fallback to just deleting the
-       ;; package-specific lisp directory, if it exists.
-       ;;
-       ;; Delete old lisp directory, if any
-       ;; Gads, this is ugly.  However, we're not supposed to use `concat'
-       ;; in the name of portability.
-       (when (setq package-lispdir (package-admin-get-lispdir pkg-topdir
-                                                            package))
-             (message "Removing old lisp directory \"%s\" ..."
-                      package-lispdir)
-             (sit-for 0)
-             (package-admin-rmtree package-lispdir)
-             (message "Removing old lisp directory \"%s\" ... done"
-                      package-lispdir)
-             ))
+         (message "Removing old files for package \"%s\" ... done" package)))
+      ;; The manifest file doesn't exist.  Fallback to just deleting the
+      ;; package-specific lisp directory, if it exists.
+      ;;
+      ;; Delete old lisp directory, if any
+      ;; Gads, this is ugly.  However, we're not supposed to use `concat'
+      ;; in the name of portability.
+      (setq package-lispdir (package-admin-get-lispdir pkg-topdir package))
+      (when package-lispdir
+       (message "Removing old lisp directory \"%s\" ..." package-lispdir)
+       (sit-for 0)
+       (package-admin-rmtree package-lispdir)
+       (message "Removing old lisp directory \"%s\" ... done" package-lispdir)))
     ;; Delete the package from the database of installed packages.
     (package-delete-name package)))
 
index 5ae5de3..4222b78 100644 (file)
@@ -1,10 +1,13 @@
 ;;; package-get.el --- Retrieve XEmacs package
 
 ;; Copyright (C) 1998 by Pete Ware
+;; Copyright (C) 2002 Ben Wing.
+;; Copyright (C) 2003, Steve Youngs
 
 ;; Author: Pete Ware <ware@cis.ohio-state.edu>
 ;; Heavy-Modifications: Greg Klanderman <greg@alphatech.com>
 ;;                      Jan Vroonhof    <vroonhof@math.ethz.ch>
+;;                      Steve Youngs    <youngs@xemacs.org>
 ;; Keywords: internal
 
 ;; This file is part of XEmacs.
@@ -166,80 +169,82 @@ one version of a package available.")
   :type 'directory
   :group 'package-get)
 
+;;;###autoload
+(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)
+
+;;;###autoload
+(defcustom package-get-install-to-user-init-directory nil
+  "*If non-nil install packages under `user-init-directory'."
+  :type 'boolean
+  :group 'package-get)
+
 (define-widget 'host-name 'string
   "A Host name."
   :tag "Host")
 
 (defcustom package-get-remote nil
-  "*List of remote sites to contact for downloading packages.
-List format is '(site-name directory-on-site).  Each site is tried in
-order until the package is found.  As a special case, `site-name' can be
-`nil', in which case `directory-on-site' is treated as a local directory."
+  "*The remote site to contact for downloading packages.
+Format is '(site-name directory-on-site).  As a special case, `site-name'
+can be `nil', in which case `directory-on-site' is treated as a local
+directory."
   :tag "Package repository"
-  :type '(repeat (choice (list :tag "Local" (const :tag "Local" nil) directory )
-                        (list :tag "Remote" host-name directory) ))
+  :type '(set (choice (const :tag "None" nil)
+                     (list :tag "Local" (const :tag "Local" nil) directory)
+                     (list :tag "Remote" host-name directory)))
   :group 'package-get)
 
 ;;;###autoload
 (defcustom package-get-download-sites
   '(
-    ;; North America
-    ("Pre-Releases" "ftp.xemacs.org" "pub/xemacs/beta/experimental/packages")
-    ("xemacs.org" "ftp.xemacs.org" "pub/xemacs/packages")
-    ("ca.xemacs.org (Canada)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/packages")
-    ("crc.ca (Canada)" "ftp.crc.ca" "pub/packages/editors/xemacs/packages")
-    ("us.xemacs.org (United States)" "ftp.us.xemacs.org" "pub/xemacs/packages")
-    ("ibiblio.org (United States)" "ibiblio.org" "pub/packages/editors/xemacs/packages")
-    ("stealth.net (United States)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/packages")
-    ;("uiuc.edu (United States)" "uiarchive.uiuc.edu" "pub/packages/xemacs/packages")
-
-    ;; South America
-    ("br.xemacs.org (Brazil)" "ftp.br.xemacs.org" "pub/xemacs/packages")
-
-    ;; Europe
-    ("at.xemacs.org (Austria)" "ftp.at.xemacs.org" "editors/xemacs/packages")
-    ("be.xemacs.org (Belgium)" "ftp.be.xemacs.org" "xemacs/packages")
-    ("cz.xemacs.org (Czech Republic)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/packages")
-    ("dk.xemacs.org (Denmark)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/packages")
-    ("fi.xemacs.org (Finland)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/packages")
-    ("fr.xemacs.org (France)" "ftp.fr.xemacs.org" "pub/xemacs/packages")
-    ("pasteur.fr (France)" "ftp.pasteur.fr" "pub/computing/xemacs/packages")
-    ("de.xemacs.org (Germany)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/packages")
-    ("tu-darmstadt.de (Germany)" "ftp.tu-darmstadt.de" "pub/editors/xemacs/packages")
-    ;("hu.xemacs.org (Hungary)" "ftp.hu.xemacs.org" "pub/packages/xemacs/packages")
-    ("ie.xemacs.org (Ireland)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/packages")
-    ("it.xemacs.org (Italy)" "ftp.it.xemacs.org" "unix/packages/XEMACS/packages")
-    ("no.xemacs.org (Norway)" "ftp.no.xemacs.org" "pub/xemacs/packages")
-    ("pl.xemacs.org (Poland)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/packages")
-    ("ru.xemacs.org (Russia)" "ftp.ru.xemacs.org" "pub/xemacs/packages")
-    ("sk.xemacs.org (Slovakia)" "ftp.sk.xemacs.org" "pub/mirrors/xemacs/packages")
-    ("se.xemacs.org (Sweden)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packages")
-    ("ch.xemacs.org (Switzerland)" "ftp.ch.xemacs.org" "mirror/xemacs/packages")
-    ("uk.xemacs.org (United Kingdom)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/packages")
-
-    ;; Asia
-    ("jp.xemacs.org (Japan)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/packages")
-    ("aist.go.jp (Japan)" "ring.aist.go.jp" "pub/text/xemacs/packages")
-    ("asahi-net.or.jp (Japan)" "ring.asahi-net.or.jp" "pub/text/xemacs/packages")
-    ("dti.ad.jp (Japan)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/packages")
-    ("jaist.ac.jp (Japan)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/packages")
-    ("nucba.ac.jp (Japan)" "mirror.nucba.ac.jp" "mirror/xemacs/packages")
-    ("sut.ac.jp (Japan)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/packages")
-    ("kr.xemacs.org (Korea)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/packages")
-    ;("tw.xemacs.org (Taiwan)" "ftp.tw.xemacs.org" "Editors/xemacs/packages")
-
-    ;; Africa
-    ("za.xemacs.org (South Africa)" "ftp.za.xemacs.org" "mirrorsites/ftp.xemacs.org/packages")
-
-    ;; Middle East
-    ("sa.xemacs.org (Saudi Arabia)" "ftp.sa.xemacs.org" "pub/mirrors/ftp.xemacs.org/xemacs/packages")
-
-    ;; Australia
-    ("au.xemacs.org (Australia)" "ftp.au.xemacs.org" "pub/xemacs/packages")
-    ("aarnet.edu.au (Australia)" "mirror.aarnet.edu.au" "pub/xemacs/packages")
-
-    ;; Oceania
-    ("nz.xemacs.org (New Zealand)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages")
+    ;; Main XEmacs Site (ftp.xemacs.org)
+    ("US (Main XEmacs Site)"
+     "ftp.xemacs.org" "pub/xemacs/packages")
+    ;; In alphabetical order of Country, our mirrors...
+    ("Australia (aarnet.edu.au)" "mirror.aarnet.edu.au" "pub/xemacs/packages")
+    ("Australia (au.xemacs.org)" "ftp.au.xemacs.org" "pub/xemacs/packages")
+    ("Austria (at.xemacs.org)" "ftp.at.xemacs.org" "editors/xemacs/packages")
+    ("Belgium (be.xemacs.org)" "ftp.be.xemacs.org" "xemacs/packages")
+    ("Brazil (br.xemacs.org)" "ftp.br.xemacs.org" "pub/xemacs/packages")
+    ("Canada (ca.xemacs.org)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/packages")
+    ("Canada (crc.ca)" "ftp.crc.ca" "pub/packages/editors/xemacs/packages")
+    ("Canada (ualberta.ca)" "sunsite.ualberta.ca" "pub/Mirror/xemacs/packages")
+    ("Czech Republic (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/packages")
+    ("Denmark (dk.xemacs.org)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/packages")
+    ("Finland (fi.xemacs.org)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/packages")
+    ("France (fr.xemacs.org)" "ftp.fr.xemacs.org" "pub/xemacs/packages")
+    ("France (mirror.cict.fr)" "mirror.cict.fr" "xemacs/packages")
+    ("France (pasteur.fr)" "ftp.pasteur.fr" "pub/computing/xemacs/packages")
+    ("Germany (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/packages")
+    ("Germany (tu-darmstadt.de)" "ftp.tu-darmstadt.de" "pub/editors/xemacs/packages")
+    ("Ireland (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/packages")
+    ("Italy (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/packages")
+    ("Japan (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/packages")
+    ("Japan (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/packages")
+    ("Japan (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/packages")
+    ("Japan (jaist.ac.jp)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/packages")
+    ("Japan (jp.xemacs.org)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/packages")
+    ("Japan (nucba.ac.jp)" "mirror.nucba.ac.jp" "mirror/xemacs/packages")
+    ("Japan (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/packages")
+    ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/packages")
+    ("New Zealand (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages")
+    ("Norway (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/packages")
+    ("Poland (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/packages")
+    ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/xemacs/packages")
+    ("Slovakia (sk.xemacs.org)" "ftp.sk.xemacs.org" "pub/mirrors/xemacs/packages")
+    ("South Africa (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp.xemacs.org/packages")
+    ("Sweden (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packages")
+    ("Switzerland (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/packages")
+    ("UK (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/packages")
+    ("US (ibiblio.org)" "ibiblio.org" "pub/packages/editors/xemacs/packages")
+    ("US (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/packages")
+    ("US (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/packages")
+    ("US (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/packages")
+    ("US (utk.edu)" "ftp.sunsite.utk.edu" "pub/xemacs/packages")
     )
   "*List of remote sites available for downloading packages.
 List format is '(site-description site-name directory-on-site).
@@ -252,6 +257,113 @@ variable actually used to specify package download sites."
   :type '(repeat (list (string :tag "Name") host-name directory))
   :group 'package-get)
 
+;;;###autoload
+(defcustom package-get-pre-release-download-sites
+  '(
+    ;; Main XEmacs Site (ftp.xemacs.org)
+    ("Pre-Releases (Main XEmacs Site)" "ftp.xemacs.org"
+     "pub/xemacs/beta/experimental/packages")
+    ;; In alphabetical order of Country, our mirrors...
+    ("Australia Pre-Releases (aarnet.edu.au)" "mirror.aarnet.edu.au"
+     "pub/xemacs/beta/experimental/packages")
+    ("Australia Pre-Releases (au.xemacs.org)" "ftp.au.xemacs.org"
+     "pub/xemacs/beta/experimental/packages")
+    ("Austria Pre-Releases (at.xemacs.org)" "ftp.at.xemacs.org"
+     "editors/xemacs/beta/experimentsl/packages")
+    ("Brazil Pre-Releases (br.xemacs.org)" "ftp.br.xemacs.org"
+     "pub/xemacs/xemacs-21.5/experimental/packages")
+    ("Canada Pre-Releases (ca.xemacs.org)" "ftp.ca.xemacs.org"
+     "pub/Mirror/xemacs/beta/experimental/packages")
+    ("Canada Pre-Releases (crc.ca)" "ftp.crc.ca"
+     "pub/packages/editors/xemacs/beta/experimental/packages")
+    ("Canada Pre-Releases (ualberta.ca)" "sunsite.ualberta.ca"
+     "pub/Mirror/xemacs/beta/experimental/packages")
+    ("Czech Republic Pre-Releases (cz.xemacs.org)" "ftp.cz.xemacs.org"
+     "MIRRORS/ftp.xemacs.org/pub/xemacs/xemacs-21.5/experimental/packages")
+    ("Denmark Pre-Releases (dk.xemacs.org)" "ftp.dk.xemacs.org"
+     "pub/emacs/xemacs/beta/experimental/packages")
+    ("Finland Pre-Releases (fi.xemacs.org)" "ftp.fi.xemacs.org"
+     "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/beta/experimental/packages")
+    ("France Pre-Releases (fr.xemacs.org)" "ftp.fr.xemacs.org"
+     "pub/xemacs/beta/experimental/packages")
+    ("France Pre-Releases (mirror.cict.fr)" "mirror.cict.fr"
+     "xemacs/beta/experimental/packages")
+    ("France Pre-Releases (pasteur.fr)" "ftp.pasteur.fr"
+     "pub/computing/xemacs/beta/experimental/packages")
+    ("Germany Pre-Releases (de.xemacs.org)" "ftp.de.xemacs.org"
+     "pub/ftp.xemacs.org/tux/xemacs/beta/experimental/packages")
+    ("Germany Pre-Releases (tu-darmstadt.de)" "ftp.tu-darmstadt.de"
+     "pub/editors/xemacs/beta/experimental/packages")
+    ("Ireland Pre-Releases (ie.xemacs.org)" "ftp.ie.xemacs.org"
+     "mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages")
+    ("Italy Pre-Releases (it.xemacs.org)" "ftp.it.xemacs.org"
+     "unix/packages/XEMACS/beta/experimental/packages")
+    ("Japan Pre-Releases (aist.go.jp)" "ring.aist.go.jp"
+     "pub/text/xemacs/beta/experimental/packages")
+    ("Japan Pre-Releases (asahi-net.or.jp)" "ring.asahi-net.or.jp"
+     "pub/text/xemacs/beta/experimental/packages")
+    ("Japan Pre-Releases (dti.ad.jp)" "ftp.dti.ad.jp"
+     "pub/unix/editor/xemacs/beta/experimental/packages")
+    ("Japan Pre-Releases (jaist.ac.jp)" "ftp.jaist.ac.jp"
+     "pub/GNU/xemacs/beta/experimental/packages")
+    ("Japan Pre-Releases (jp.xemacs.org)" "ftp.jp.xemacs.org"
+     "pub/GNU/xemacs/beta/experimental/packages")
+    ("Japan Pre-Releases (sut.ac.jp)" "sunsite.sut.ac.jp"
+     "pub/archives/packages/xemacs/xemacs-21.5/experimental/packages")
+    ("New Zealand Pre-Releases (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages")
+    ("Norway Pre-Releases (no.xemacs.org)" "ftp.no.xemacs.org"
+     "pub/xemacs/beta/experimental/packages")
+    ("Poland Pre-Releases (pl.xemacs.org)" "ftp.pl.xemacs.org"
+     "pub/unix/editors/xemacs/beta/experimental/packages")
+    ("Russia Pre-Releases (ru.xemacs.org)" "ftp.ru.xemacs.org"
+     "pub/xemacs/beta/experimental/packages")
+    ("Saudi Arabia Pre-Releases (sa.xemacs.org)" "ftp.sa.xemacs.org"
+     "pub/mirrors/ftp.xemacs.org/xemacs/xemacs-21.5/experimental/packages")
+    ("Slovakia Pre-Releases (sk.xemacs.org)" "ftp.sk.xemacs.org"
+     "pub/mirrors/xemacs/beta/experimental/packages")
+    ("South Africa Pre-Releases (za.xemacs.org)" "ftp.za.xemacs.org"
+     "mirrorsites/ftp.xemacs.org/beta/experimental/packages")
+    ("Sweden Pre-Releases (se.xemacs.org)" "ftp.se.xemacs.org"
+     "pub/gnu/xemacs/beta/experimental/packages")
+    ("Switzerland Pre-Releases (ch.xemacs.org)" "ftp.ch.xemacs.org"
+     "mirror/xemacs/beta/experimental/packages")
+    ("UK Pre-Releases (uk.xemacs.org)" "ftp.uk.xemacs.org"
+     "sites/ftp.xemacs.org/pub/xemacs/beta/experimental/packages")
+    ("US Pre-Releases (ibiblio.org)" "ibiblio.org"
+     "pub/packages/editors/xemacs/beta/experimental/packages")
+    ("US Pre-Releases (stealth.net)" "ftp.stealth.net"
+     "pub/mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages")
+    ("US Pre-Releases (unc.edu)" "metalab.unc.edu"
+     "pub/packages/editors/xemacs/beta/experimental/packages")
+    ("US Pre-Releases (us.xemacs.org)" "ftp.us.xemacs.org"
+     "pub/xemacs/beta/experimental/packages")
+    ("US Pre-Releases (utk.edu)" "ftp.sunsite.utk.edu"
+     "pub/xemacs/beta/experimental/packages"))
+  "*List of remote sites available for downloading \"Pre-Release\" packages.
+List format is '(site-description site-name directory-on-site).
+SITE-DESCRIPTION is a textual description of the site.  SITE-NAME
+is the internet address of the download site.  DIRECTORY-ON-SITE
+is the directory on the site in which packages may be found.
+This variable is used to initialize `package-get-remote', the
+variable actually used to specify package download sites."
+  :tag "Pre-Release Package download sites"
+  :type '(repeat (list (string :tag "Name") host-name directory))
+  :group 'package-get)
+
+;;;###autoload
+(defcustom package-get-site-release-download-sites
+  nil
+  "*List of remote sites available for downloading \"Site Release\" packages.
+List format is '(site-description site-name directory-on-site).
+SITE-DESCRIPTION is a textual description of the site.  SITE-NAME
+is the internet address of the download site.  DIRECTORY-ON-SITE
+is the directory on the site in which packages may be found.
+This variable is used to initialize `package-get-remote', the
+variable actually used to specify package download sites."
+  :tag "Site Release Package download sites"
+  :type '(repeat (list (string :tag "Name") host-name directory))
+  :group 'package-get)
+
 (defcustom package-get-remove-copy t
   "*After copying and installing a package, if this is t, then remove the
 copy.  Otherwise, keep it around."
@@ -261,50 +373,68 @@ copy.  Otherwise, keep it around."
 ;; #### it may make sense for this to be a list of names.
 ;; #### also, should we rename "*base*" to "*index*" or "*db*"?
 ;;      "base" is a pretty poor name.
-(defcustom package-get-base-filename "package-index.LATEST.pgp"
+(defcustom package-get-base-filename "package-index.LATEST.gpg"
   "*Name of the default package-get database file.
 This may either be a relative path, in which case it is interpreted
 with respect to `package-get-remote', or an absolute path."
   :type 'file
   :group 'package-get)
 
-(defvar package-get-user-index-filename
-  (paths-construct-path (list user-init-directory package-get-base-filename))
-  "Name for the user-specific location of the package-get database file.")
-
 (defcustom package-get-always-update nil
   "*If Non-nil always make sure we are using the latest package index (base).
 Otherwise respect the `force-current' argument of `package-get-require-base'."
   :type 'boolean
   :group 'package-get)
 
-(defcustom package-get-require-signed-base-updates nil
-  "*If set to a non-nil value, require explicit user confirmation for updates
-to the package-get database which cannot have their signature verified via PGP.
-When nil, updates which are not PGP signed are allowed without confirmation."
+(defun package-get-pgp-available-p ()
+  "Checks the availability of Mailcrypt and PGP executable.
+
+Returns t if both are found, nil otherwise.  As a side effect, set
+`mc-default-scheme' dependent on the PGP executable found."
+  (let (result)
+    (when (featurep 'mailcrypt-autoloads)
+      (autoload 'mc-setversion "mc-setversion"))
+    (when (fboundp 'mc-setversion)
+      (cond ((locate-file "gpg" exec-path
+                         '("" ".btm" ".bat" ".cmd" ".exe" ".com")
+                         'executable)
+            (mc-setversion "gpg")
+            (setq result t))
+           ((locate-file "pgpe" exec-path
+                         '("" ".btm" ".bat" ".cmd" ".exe" ".com")
+                         'executable)
+            (mc-setversion "5.0")
+            (setq result t))
+           ((locate-file "pgp" exec-path
+                         '("" ".btm" ".bat" ".cmd" ".exe" ".com")
+                         'executable)
+            (mc-setversion "2.6")
+            (setq result t))))
+    (if result
+       result
+      nil)))
+
+(defcustom package-get-require-signed-base-updates (package-get-pgp-available-p)
+  "*If non-nil, try to verify the package index database via PGP.
+
+If nil, no PGP verification is done.  If the package index database
+entries are not PGP signed and this variable is non-nil, require user
+confirmation to continue with the package-get procedure.
+
+The default for this variable is the return value of
+`package-get-pgp-available-p', non-nil if both the \"Mailcrypt\"
+package and a suitable PGP executable are available, nil otherwise."
   :type 'boolean
   :group 'package-get)
 
-(defvar package-get-was-current nil
-  "Non-nil we did our best to fetch a current database.")
+(defvar package-entries-are-signed nil
+  "Non-nil when the package index file has been PGP signed.")
 
+(defvar package-get-continue-update-base nil
+  "Non-nil update the index even if it hasn't been signed.")
 
-;Shouldn't this be in package-ui?
-;;;###autoload
-(defun package-get-download-menu ()
-  "Build the `Add Download Site' menu."
-  (mapcar (lambda (site)
-           (vector (car site)
-                   `(if (member (quote ,(cdr site))
-                                package-get-remote)
-                        (setq package-get-remote
-                              (delete (quote ,(cdr site))
-                                      package-get-remote))
-                      (package-ui-add-site (quote ,(cdr site))))
-                   :style 'toggle
-                   :selected `(member (quote ,(cdr site))
-                                      package-get-remote)))
-         package-get-download-sites))
+(defvar package-get-was-current nil
+  "Non-nil we did our best to fetch a current database.")
 
 ;;;###autoload
 (defun package-get-require-base (&optional force-current)
@@ -323,7 +453,8 @@ and remote access is likely in the near future."
     (package-get-update-base nil force-current))
   (if (or (not (boundp 'package-get-base))
          (not package-get-base))
-      (error "Package-get database not loaded")
+      (error 'void-variable
+            "Package-get database not loaded")
     (setq package-get-was-current force-current)))
 
 (defconst package-get-pgp-signed-begin-line "^-----BEGIN PGP SIGNED MESSAGE-----"
@@ -339,8 +470,7 @@ and remote access is likely in the near future."
   (let ((existing (assq (car entry) package-get-base)))
     (if existing
         (setcdr existing (cdr entry))
-      (setq package-get-base (cons entry package-get-base))
-      (package-get-custom-add-entry (car entry) (car (cdr entry))))))
+      (setq package-get-base (cons entry package-get-base)))))
 
 (defun package-get-locate-file (file &optional nil-if-not-found no-remote)
   "Locate an existing FILE with respect to `package-get-remote'.
@@ -350,27 +480,48 @@ if FILE can not be located.
 If NO-REMOTE is non-nil never search remote locations."
   (if (file-name-absolute-p file)
       file
-    (let ((entries package-get-remote)
+    (let ((site package-get-remote)
           (expanded nil))
-      (while entries
-       (unless (and no-remote (caar entries))
-         (let ((expn (package-get-remote-filename (car entries) file)))
+      (when site
+       (unless (and no-remote (caar (list site)))
+         (let ((expn (package-get-remote-filename (car (list site)) file)))
            (if (and expn (file-exists-p expn))
-               (setq entries  nil
-                     expanded expn))))
-        (setq entries (cdr entries)))
+               (setq site nil
+                     expanded expn)))))
       (or expanded
           (and (not nil-if-not-found)
                file)))))
 
 (defun package-get-locate-index-file (no-remote)
-  "Locate the package-get index file.  Do not return remote paths if NO-REMOTE
-is non-nil."
+  "Locate the package-get index file.  
+
+Do not return remote paths if NO-REMOTE is non-nil.  If the index
+file doesn't exist in `package-get-package-index-file-location', ask
+the user if one should be created using the index file in core as a
+template."
   (or (package-get-locate-file package-get-base-filename t no-remote)
-      (if (file-exists-p package-get-user-index-filename)
-         package-get-user-index-filename)
-      (locate-data-file package-get-base-filename)
-      (error "Can't locate a package index file.")))
+      (if (file-exists-p (expand-file-name package-get-base-filename
+                                          package-get-package-index-file-location))
+         (expand-file-name package-get-base-filename
+                           package-get-package-index-file-location)
+       (if (y-or-n-p (format "No index file, shall I create one in %s? "
+                             package-get-package-index-file-location))
+           (progn
+             (save-excursion
+               (set-buffer 
+                (find-file-noselect (expand-file-name
+                                     package-get-base-filename
+                                     package-get-package-index-file-location)))
+               (let ((coding-system-for-write 'binary))
+                 (erase-buffer)
+                 (insert-file-contents-literally
+                  (locate-data-file package-get-base-filename))
+                 (save-buffer (current-buffer))
+                 (kill-buffer (current-buffer))))
+             (expand-file-name package-get-base-filename
+                               package-get-package-index-file-location))
+         (error 'search-failed
+                "Can't locate a package index file.")))))
 
 (defun package-get-maybe-save-index (filename)
   "Offer to save the current buffer as the local package index file,
@@ -382,13 +533,18 @@ if different."
                          (with-temp-buffer
                            (insert-file-contents-literally location)
                            (md5 (current-buffer)))))
-       (unless (and location (file-writable-p location))
-         (setq location package-get-user-index-filename))
+       (when (not (file-writable-p location))
+         (if (y-or-n-p (format "Sorry, %s is read-only, can I use %s? "
+                               location user-init-directory))
+             (setq location (expand-file-name
+                             package-get-base-filename
+                             package-get-package-index-file-location))
+           (error 'file-error
+                  (format "%s is read-only" location))))
        (when (y-or-n-p (concat "Update package index in " location "? "))
          (let ((coding-system-for-write 'binary))
            (write-file location)))))))
 
-
 ;;;###autoload
 (defun package-get-update-base (&optional db-file force-current)
   "Update the package-get database file with entries from DB-FILE.
@@ -404,9 +560,11 @@ Unless FORCE-CURRENT is non-nil never try to update the database."
                                       (package-get-locate-index-file
                                         (not force-current)))))
   (if (not (file-exists-p db-file))
-      (error "Package-get database file `%s' does not exist" db-file))
+      (error 'file-error
+            (format "Package-get database file `%s' does not exist" db-file)))
   (if (not (file-readable-p db-file))
-      (error "Package-get database file `%s' not readable" db-file))
+      (error 'file-error
+            (format "Package-get database file `%s' not readable" db-file)))
   (let ((buf (get-buffer-create "*package database*")))
     (unwind-protect
         (save-excursion
@@ -425,49 +583,45 @@ BUFFER defaults to the current buffer.  This command can be
 used interactively, for example from a mail or news buffer."
   (interactive)
   (setq buf (or buf (current-buffer)))
-  (let (content-beg content-end beg end)
+  (let (content-beg content-end)
     (save-excursion
       (set-buffer buf)
       (goto-char (point-min))
       (setq content-beg (point))
       (setq content-end (save-excursion (goto-char (point-max)) (point)))
       (when (re-search-forward package-get-pgp-signed-begin-line nil t)
-        (setq beg (match-beginning 0))
         (setq content-beg (match-end 0)))
       (when (re-search-forward package-get-pgp-signature-begin-line nil t)
-        (setq content-end (match-beginning 0)))
-      (when (re-search-forward package-get-pgp-signature-end-line nil t)
-        (setq end (point)))
-      (if (not (and content-beg content-end beg end))
-          (or (not package-get-require-signed-base-updates)
-              (yes-or-no-p "Package-get entries not PGP signed, continue? ")
-              (error "Package-get database not updated")))
-      (if (and content-beg content-end beg end)
-          (if (not (condition-case nil
-                       (or (fboundp 'mc-pgp-verify-region)
-                           (load-library "mc-pgp")
-                           (fboundp 'mc-pgp-verify-region))
-                     (error nil)))
-              (or (not package-get-require-signed-base-updates)
-                  (yes-or-no-p
-                   "No mailcrypt; can't verify package-get DB signature, continue? ")
-                  (error "Package-get database not updated"))))
-      (if (and beg end
-               (fboundp 'mc-pgp-verify-region)
-               (or (not
-                    (condition-case err
-                        (mc-pgp-verify-region beg end)
-                      (file-error
-                       (and (string-match "No such file" (nth 2 err))
-                            (or (not package-get-require-signed-base-updates)
-                                (yes-or-no-p
-                                 (concat "Can't find PGP, continue without "
-                                         "package-get DB verification? ")))))
-                      (t nil)))))
-          (error "Package-get PGP signature failed to verify"))
+        (setq content-end (match-beginning 0))
+       (setq package-entries-are-signed t))
+      (re-search-forward package-get-pgp-signature-end-line nil t)
+      (setq package-get-continue-update-base t)
+      ;; This is a little overkill because the default value of
+      ;; `package-get-require-signed-base-updates' is the return of
+      ;; `package-get-pgp-available-p', but we have to allow for
+      ;; someone explicitly setting
+      ;; `package-get-require-signed-base-updates' to t. --SY
+      (when (and package-get-require-signed-base-updates
+                (package-get-pgp-available-p))
+       (if package-entries-are-signed
+           (let (good-sig)
+             (setq package-get-continue-update-base nil)
+             (autoload 'mc-verify "mc-toplev")
+             (when (mc-verify)
+               (setq good-sig t))
+             (if good-sig
+                 (setq package-get-continue-update-base t)
+               (error 'process-error 
+                      "GnuPG error.  Package database not updated")))
+         (if (yes-or-no-p
+              "Package Index is not PGP signed.  Continue anyway? ")
+             (setq package-get-continue-update-base t)
+           (setq package-get-continue-update-base nil)
+           (warn "Package database not updated"))))
       ;; ToDo: We should call package-get-maybe-save-index on the region
-      (package-get-update-base-entries content-beg content-end)
-      (message "Updated package-get database"))))
+      (when package-get-continue-update-base
+       (package-get-update-base-entries content-beg content-end)
+       (message "Updated package database")))))
 
 (defun package-get-update-base-entries (start end)
   "Update the package-get database with the entries found between
@@ -475,7 +629,8 @@ START and END in the current buffer."
   (save-excursion
     (goto-char start)
     (if (not (re-search-forward "^(package-get-update-base-entry" nil t))
-        (error "Buffer does not contain package-get database entries"))
+        (error 'search-failed
+              "Buffer does not contain package-get database entries"))
     (beginning-of-line)
     (let ((count 0))
       (while (and (< (point) end)
@@ -484,7 +639,8 @@ START and END in the current buffer."
         (let ((entry (read (current-buffer))))
           (if (or (not (consp entry))
                   (not (eq (car entry) 'package-get-update-base-entry)))
-              (error "Invalid package-get database entry found"))
+              (error 'syntax-error
+                    "Invalid package-get database entry found"))
           (package-get-update-base-entry
            (car (cdr (car (cdr entry)))))
           (setq count (1+ count))))
@@ -547,12 +703,10 @@ The return value is suitable for direct passing to `interactive'."
                   'version))
            (while (string=
                    (setq version (read-string "Version: " default-version))
-                   "")
-             )
+                   ""))
            (if package-symbol
                (list package-symbol version)
-             (list package version))
-           )
+             (list package version)))
        (if package-symbol
            (list package-symbol)
          (list package))))))
@@ -574,8 +728,7 @@ This is just an interactive wrapper for `package-admin-delete-binary-package'."
   (catch 'exit
     (mapcar (lambda (pkg)
              (if (not (package-get (car pkg) nil 'never))
-                 (throw 'exit nil)             ;; Bail out if error detected
-                 ))
+                 (throw 'exit nil)))           ;; Bail out if error detected
            packages-package-list))
   (package-net-update-installed-db))
 
@@ -595,8 +748,7 @@ Returns nil upon error."
                                                     package))
         (this-package (package-get-info-version
                        the-package version))
-        (this-requires (package-get-info-prop this-package 'requires))
-        )
+        (this-requires (package-get-info-prop this-package 'requires)))
     (catch 'exit
       (setq version (package-get-info-prop this-package 'version))
       (unless (package-get-installedp package version)
@@ -619,18 +771,16 @@ Returns nil upon error."
                   (reqd-version (cadr reqd-package))
                   (reqd-name (car reqd-package)))
              (if (null reqd-name)
-                 (error "Unable to find a provider for %s"
-                        (car this-requires)))
+                 (error 'search-failed
+                        (format "Unable to find a provider for %s"
+                                (car this-requires))))
              (if (not (setq fetched-packages
                             (package-get-all reqd-name reqd-version
                                              fetched-packages
                                               install-dir)))
-                 (throw 'exit nil)))
-         )
-       (setq this-requires (cdr this-requires)))
-      )
-    fetched-packages
-    ))
+                 (throw 'exit nil))))
+       (setq this-requires (cdr this-requires))))
+    fetched-packages))
 
 ;;;###autoload
 (defun package-get-dependencies (packages)
@@ -654,7 +804,8 @@ required by PACKAGES."
                                   (let* ((reqd-package (package-get-package-provider reqd))
                                          (reqd-name    (car reqd-package)))
                                     (if (null reqd-name)
-                                        (error "Unable to find a provider for %s" reqd))
+                                        (error 'search-failed
+                                              (format "Unable to find a provider for %s" reqd)))
                                     reqd-name))
                               this-requires)
                              dependencies))
@@ -692,20 +843,136 @@ Return `t' upon complete success, `nil' if any errors occurred."
        (progn
          ;; Add lispdir to load-path if it doesn't already exist.
          ;; NOTE: this does not take symlinks, etc., into account.
-         (if (let ( (dirs load-path) )
+         (if (let ((dirs load-path))
                (catch 'done
                  (while dirs
                    (if (string-equal (car dirs) lispdir)
                        (throw 'done nil))
-                   (setq dirs (cdr dirs))
-                   )
+                   (setq dirs (cdr dirs)))
                  t))
              (setq load-path (cons lispdir load-path)))
          (if (not (package-get-load-package-file lispdir "auto-autoloads"))
              (package-get-load-package-file lispdir "_pkg"))
          t)
-      nil)
-    ))
+      nil)))
+
+;;;###autoload
+(defun package-get-info (package information &optional arg remote)
+  "Get information about a package.
+
+Quite similar to `package-get-info-prop', but can retrieve a lot more
+information.
+
+Argument PACKAGE is the name of an XEmacs package (a symbol).  It must
+be a valid package, ie, a member of `package-get-base'.
+
+Argument INFORMATION is a symbol that can be any one of:
+
+   standards-version     Package system version (not used).
+   version               Version of the XEmacs package.
+   author-version        The upstream version of the package.
+   date                  The date the package was last modified.
+   build-date            The date the package was last built.
+   maintainer            The maintainer of the package.
+   distribution          Will always be \"xemacs\" (not used).
+   priority              \"low\", \"medium\", or \"high\" (not used).
+   category              Either \"standard\", \"mule\", or \"unsupported\"..
+   dump                  Is the package dumped (not used).
+   description           A description of the package.
+   filename              The filename of the binary tarball of the package.
+   md5sum                The md5sum of filename.
+   size                  The size in bytes of filename.
+   provides              A list of symbols that this package provides.
+   requires              A list of packages that this package requires.
+   type                  Can be either \"regular\" or \"single-file\".
+
+If optional argument ARG is non-nil insert INFORMATION into current
+buffer at point.  This is very useful for doing things like inserting
+a maintainer's email address into a mail buffer.
+
+If optional argument REMOTE is non-nil use a package list from a
+remote site.  For this to work `package-get-remote' must be non-nil.
+
+If this function is called interactively it will display INFORMATION
+in the minibuffer."
+  (interactive "SPackage: \nSInfo: \nP")
+    (if remote
+       (package-get-require-base t)
+      (package-get-require-base nil))
+    (let ((all-pkgs package-get-base)
+         info)
+      (loop until (equal package (caar all-pkgs))
+       do (setq all-pkgs (cdr all-pkgs))
+       do (if (not all-pkgs)
+              (error 'invalid-argument
+                     (format "%s is not a valid package" package))))
+      (setq info (plist-get (cadar all-pkgs) information))
+      (if (interactive-p)
+         (if arg
+             (insert (format "%s" info))
+           (if (package-get-key package :version)
+               (message "%s" info)
+             (message "%s (Package: %s is not installed)" info package)))
+       (if arg
+           (insert (format "%s" info))
+         info))))
+
+;;;###autoload
+(defun package-get-list-packages-where (item field &optional arg)
+  "Return a list of packages that fulfill certain criteria.
+
+Argument ITEM, a symbol, is what you want to check for.  ITEM must be a
+symbol even when it doesn't make sense to be a symbol \(think, searching
+maintainers, descriptions, etc\).  The function will convert the symbol
+to a string if a string is what is needed.  The downside to this is that
+ITEM can only ever be a single word.
+
+Argument FIELD, a symbol, is the field to check in.  You can specify
+any one of:
+
+      Field            Sane or Allowable Content
+    description          any single word
+    category             `standard' or `mule'
+    maintainer           any single word
+    build-date           yyyy-mm-dd
+    date                 yyyy-mm-dd
+    type                 `regular' or `single'
+    requires             any package name
+    provides             any symbol
+    priority             `low', `medium', or `high'
+
+Optional Argument ARG, a prefix arg, insert output at point in the
+current buffer."
+  (interactive "SList packages that have (item): \nSin their (field): \nP")
+  (package-get-require-base nil)
+  (let ((pkgs package-get-base)
+       (strings '(description category maintainer build-date date))
+       (symbols '(type requires provides priority))
+       results)
+    (cond ((memq field strings)
+          (setq item (symbol-name item))
+          (while pkgs
+            (when (string-match item (package-get-info (caar pkgs) field))
+              (setq results (push (caar pkgs) results)))
+            (setq pkgs (cdr pkgs))))
+         ((memq field symbols)
+          (if (or (eq field 'type)
+                  (eq field 'priority))
+              (while pkgs
+                (when (eq item (package-get-info (caar pkgs) field))
+                  (setq results (push (caar pkgs) results)))
+                (setq pkgs (cdr pkgs)))
+            (while pkgs
+              (when (memq item (package-get-info (caar pkgs) field))
+                (setq results (push (caar pkgs) results)))
+              (setq pkgs (cdr pkgs)))))
+         (t 
+          (error 'wrong-type-argument field)))
+    (if (interactive-p)
+       (if arg
+           (insert (format "%s" results))
+         (message "%s" results)))
+    results))
 
 ;;;###autoload
 (defun package-get (package &optional version conflict install-dir)
@@ -720,8 +987,7 @@ fetched packages should be installed.
 
 The value of `package-get-base' is used to determine what files should
 be retrieved.  The value of `package-get-remote' is used to determine
-where a package should be retrieved from.  The sites are tried in
-order so one is better off listing easily reached sites first.
+where a package should be retrieved from.
 
 Once the package is retrieved, its md5 checksum is computed.  If that
 sum does not match that stored in `package-get-base' for this version
@@ -738,23 +1004,27 @@ successfully installed but errors occurred during initialization, or
                                          package) version))
          (latest (package-get-info-prop this-package 'version))
          (installed (package-get-key package :version))
-        (this-requires (package-get-info-prop this-package 'requires))
         (found nil)
-        (search-dirs package-get-remote)
+        (search-dir package-get-remote)
         (base-filename (package-get-info-prop this-package 'filename))
         (package-status t)
         filenames full-package-filename)
+    (if (and (equal (package-get-info package 'category) "mule")
+            (not (featurep 'mule)))
+       (error 'invalid-state 
+              "Mule packages can't be installed with a non-Mule XEmacs"))
     (if (null this-package)
        (if package-get-remote
-           (error "Couldn't find package %s with version %s"
-                  package version)
-         (error "No download sites or local package locations specified.")))
+           (error 'search-failed
+                  (format "Couldn't find package %s with version %s"
+                          package version))
+         (error 'syntax-error
+                "No download site or local package location specified.")))
     (if (null base-filename)
-       (error "No filename associated with package %s, version %s"
-              package version))
-    (setq install-dir
-         (package-admin-get-install-dir package install-dir
-               (or (eq package 'mule-base) (memq 'mule-base this-requires))))
+       (error 'syntax-error
+              (format "No filename associated with package %s, version %s"
+                      package version)))
+    (setq install-dir (package-admin-get-install-dir package install-dir))
 
     ;; If they asked for the latest using version=nil, don't get an older
     ;; version than we already have.
@@ -767,9 +1037,9 @@ successfully installed but errors occurred during initialization, or
                  latest))
             (if (not (null version))
                 (warn "Installing %s package version %s, you had a newer version %s"
-                      package latest installed)
+                 package latest installed)
               (warn "Skipping %s package, you have a newer version %s"
-                    package installed)
+               package installed)
               (throw 'skip-update t))))
 
     ;; Contrive a list of possible package filenames.
@@ -787,15 +1057,12 @@ successfully installed but errors occurred during initialization, or
       ;; and copy it into the staging directory.  Then validate
       ;; the checksum.  Finally, install the package.
       (catch 'done
-       (let (search-filenames current-dir-entry host dir current-filename
-                              dest-filename)
+       (let (search-filenames host dir current-filename dest-filename)
          ;; In each search directory ...
-         (while search-dirs
-           (setq current-dir-entry (car search-dirs)
-                 host (car current-dir-entry)
-                 dir (car (cdr current-dir-entry))
-                 search-filenames filenames
-                 )
+         (when search-dir
+           (setq host (car search-dir)
+                 dir (car (cdr search-dir))
+                 search-filenames filenames)
 
            ;; Look for one of the possible package filenames ...
            (while search-filenames
@@ -803,56 +1070,45 @@ successfully installed but errors occurred during initialization, or
                    dest-filename (package-get-staging-dir current-filename))
              (cond
               ;; No host means look on the current system.
-              ( (null host)
-                (setq full-package-filename
-                      (substitute-in-file-name
-                       (expand-file-name current-filename
-                                         (file-name-as-directory dir))))
-                )
+              ((null host)
+               (setq full-package-filename
+                     (substitute-in-file-name
+                      (expand-file-name current-filename
+                                        (file-name-as-directory dir)))))
 
               ;; If it's already on the disk locally, and the size is
-              ;; greater than zero ...
-              ( (and (file-exists-p dest-filename)
-                     (let (attrs)
-                       ;; file-attributes could return -1 for LARGE files,
-                       ;; but, hopefully, packages won't be that large.
-                       (and (setq attrs (file-attributes dest-filename))
-                            (> (nth 7 attrs) 0))))
-                (setq full-package-filename dest-filename)
-                )
+              ;; correct
+              ((and (file-exists-p dest-filename)
+                    (eq (nth 7 (file-attributes dest-filename))
+                        (package-get-info package 'size)))
+                (setq full-package-filename dest-filename))
 
               ;; If the file exists on the remote system ...
-              ( (file-exists-p (package-get-remote-filename
-                                current-dir-entry current-filename))
-                ;; Get it
-                (setq full-package-filename dest-filename)
-                (message "Retrieving package `%s' ..."
-                         current-filename)
-                (sit-for 0)
-                (copy-file (package-get-remote-filename current-dir-entry
-                                                        current-filename)
-                           full-package-filename t)
-                )
-              )
+              ((file-exists-p (package-get-remote-filename
+                               search-dir current-filename))
+               ;; Get it
+               (setq full-package-filename dest-filename)
+               (message "Retrieving package `%s' ..."
+                        current-filename)
+               (sit-for 0)
+               (copy-file (package-get-remote-filename search-dir
+                                                       current-filename)
+                          full-package-filename t)))
 
              ;; If we found it, we're done.
              (if (and full-package-filename
                       (file-exists-p full-package-filename))
                  (throw 'done nil))
              ;; Didn't find it.  Try the next possible filename.
-             (setq search-filenames (cdr search-filenames))
-             )
-           ;; Try looking in the next possible directory ...
-           (setq search-dirs (cdr search-dirs))
-           )
-         ))
+             (setq search-filenames (cdr search-filenames))))))
 
       (if (or (not full-package-filename)
              (not (file-exists-p full-package-filename)))
          (if package-get-remote
-             (error "Unable to find file %s" base-filename)
-           (error
-            "No download sites or local package locations specified.")))
+             (error 'search-failed
+                    (format "Unable to find file %s" base-filename))
+           (error 'syntax-error
+                  "No download sites or local package locations specified.")))
       ;; Validate the md5 checksum
       ;; Doing it with XEmacs removes the need for an external md5 program
       (message "Validating checksum for `%s'..." package) (sit-for 0)
@@ -861,7 +1117,11 @@ successfully installed but errors occurred during initialization, or
        (if (not (string= (md5 (current-buffer))
                          (package-get-info-prop this-package
                                                 'md5sum)))
-           (error "Package %s does not match md5 checksum" base-filename)))
+           (progn
+             (delete-file full-package-filename)
+             (error 'process-error
+                    (format "Package %s does not match md5 checksum %s has been deleted"
+                            base-filename full-package-filename)))))
 
       (package-admin-delete-binary-package package install-dir)
 
@@ -879,30 +1139,25 @@ successfully installed but errors occurred during initialization, or
                  (progn
                    (run-hook-with-args 'package-install-hook package install-dir)
                    (message "Added package `%s'" package)
-                   (sit-for 0)
-                   )
+                   (sit-for 0))
                (progn
                  ;; display message only if there isn't already one.
                  (if (not (current-message))
                      (progn
                        (message "Added package `%s' (errors occurred)"
                                 package)
-                       (sit-for 0)
-                       ))
+                       (sit-for 0)))
                  (if package-status
-                     (setq package-status 'errors))
-                 ))
-             )
+                     (setq package-status 'errors)))))
          (message "Installation of package %s failed." base-filename)
          (sit-for 0)
          (switch-to-buffer package-admin-temp-buffer)
-         (setq package-status nil)
-         ))
+         (delete-file full-package-filename)
+         (setq package-status nil)))
       (setq found t))
     (if (and found package-get-remove-copy)
        (delete-file full-package-filename))
-    package-status
-    )))
+    package-status)))
 
 (defun package-get-info-find-package (which name)
   "Look in WHICH for the package called NAME and return all the info
@@ -953,13 +1208,6 @@ md5sum            - computed md5 checksum"
    (package-get-info-version
     (package-get-info-find-package package-list package) version) property))
 
-(defun package-get-set-version-prop (package-list package version
-                                                 property value)
-  "A utility to make it easier to add a VALUE for a specific PROPERTY
-  in this VERSION of a specific PACKAGE kept in the PACKAGE-LIST.
-Returns the modified PACKAGE-LIST.  Any missing fields are created."
-  )
-
 (defun package-get-staging-dir (filename)
   "Return a good place to stash FILENAME when it is retrieved.
 Use `package-get-dir' for directory to store stuff.
@@ -997,7 +1245,6 @@ If (car search) is nil, (cadr search is interpreted as  a local directory).
                (concat dir "/"))
              filename))))
 
-
 (defun package-get-installedp (package version)
   "Determine if PACKAGE with VERSION has already been installed.
 I'm not sure if I want to do this by searching directories or checking
@@ -1006,7 +1253,9 @@ some built in variables.  For now, use packages-package-list."
   (equal (plist-get
          (package-get-info-find-package packages-package-list
                                         package) ':version)
-        (if (floatp version) version (string-to-number version))))
+        (if (floatp version)
+            version
+          (string-to-number version))))
 
 ;;;###autoload
 (defun package-get-package-provider (sym &optional force-current)
@@ -1044,26 +1293,6 @@ lead to Emacs accessing remote sites."
         (message "No appropriate package found")))
     found))
 
-;;
-;; customize interfaces.
-;; The group is in this file so that custom loads includes this file.
-;;
-(defgroup packages nil
-  "Configure XEmacs packages."
-  :group 'emacs)
-
-;;;###autoload
-(defun package-get-custom ()
-  "Fetch and install the latest versions of all customized packages."
-  (interactive)
-  (package-get-require-base t)
-  (mapcar (lambda (pkg)
-           (if (eval (intern (concat (symbol-name (car pkg)) "-package")))
-               (package-get (car pkg) nil))
-           t)
-         package-get-base)
-  (package-net-update-installed-db))
-
 (defun package-get-ever-installed-p (pkg &optional notused)
   (string-match "-package$" (symbol-name pkg))
   (custom-initialize-set
@@ -1073,26 +1302,5 @@ lead to Emacs accessing remote sites."
        (intern (substring (symbol-name pkg) 0 (match-beginning 0))))
        t)))
 
-(defvar package-get-custom-groups nil
-  "List of package-get-custom groups")
-
-(defun package-get-custom-add-entry (package props)
-  (let* ((category (plist-get props 'category))
-         (group (intern (concat category "-packages")))
-         (custom-var (intern (concat (symbol-name package) "-package")))
-         (description (plist-get props 'description)))
-    (when (not (memq group package-get-custom-groups))
-      (setq package-get-custom-groups (cons group
-                                            package-get-custom-groups))
-      (eval `(defgroup ,group nil
-               ,(concat category " package group")
-               :group 'packages)))
-    (eval `(defcustom ,custom-var nil
-             ,description
-             :group ',group
-             :initialize 'package-get-ever-installed-p
-             :type 'boolean))))
-
-
 (provide 'package-get)
 ;;; package-get.el ends here
index 6226664..7428f49 100644 (file)
@@ -94,7 +94,8 @@ author-version -- The original Author's version #.
 maintainer -- The package maintainer.
 category -- The build category."
   (unless noninteractive
-    (error "`batch-update-package-info' is to be used only with -batch"))
+    (error 'invalid-operation
+          "`batch-update-package-info' is to be used only with -batch"))
   (let ((version (nth 0 command-line-args-left))
        (filename (nth 1 command-line-args-left))
        (requires (nth 2 command-line-args-left))
index 1fadce1..cef7ace 100644 (file)
 (defun package-net-batch-generate-bin-ini ()
   "Convert the package index to ini file format."
   (unless noninteractive
-    (error "`package-net-batch-generate-bin-ini' is to be used only with -batch"))
+    (error 'invalid-operation
+          "`package-net-batch-generate-bin-ini' is to be used only with -batch"))
   (package-net-generate-bin-ini package-net-setup-version))
 
 ;;;###autoload
index c0b93ad..60b31d0 100644 (file)
@@ -80,11 +80,10 @@ Set this to `nil' to use the `default' face."
    :group 'pui
    :type 'face)
    
-
-
-
-(defvar pui-info-buffer "*Packages*"
-  "Buffer to use for displaying package information.")
+(defcustom pui-info-buffer "*Packages*"
+  "*Buffer to use for displaying package information."
+  :group 'pui
+  :type 'string)
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; End of user-changeable variables.
@@ -105,6 +104,7 @@ Set this to `nil' to use the `default' face."
     (define-key m "q" 'pui-quit)
     (define-key m "g" 'pui-list-packages)
     (define-key m "i" 'pui-display-info)
+    (define-key m "m" 'pui-display-maintainer)
     (define-key m "?" 'describe-mode)
     (define-key m "v" 'pui-toggle-verbosity-redisplay)
     (define-key m "d" 'pui-toggle-package-delete-key)
@@ -137,46 +137,11 @@ Set this to `nil' to use the `default' face."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Configuration routines
 
-(defun pui-directory-exists (dir)
-  "Check to see if DIR exists in `package-get-remote'."
-  (let (found)
-    (mapcar #'(lambda (item)
-               (if (and (null (car item))
-                        (string-equal (file-name-as-directory (car (cdr item)))
-                                      (file-name-as-directory dir)))
-                   (setq found t)))
-           package-get-remote)
-    found
-    ))
-
-(defun pui-package-dir-list (buffer)
-  "In BUFFER, format the list of package binary paths."
-  (let ( (count 1) paths sys dir)
-    (set-buffer buffer)
-    (buffer-disable-undo buffer)
-    (erase-buffer buffer)
-    (insert "Existing package binary paths:\n\n")
-    (setq paths package-get-remote)
-    (while paths
-      (setq sys (car (car paths))
-           dir (car (cdr (car paths))))
-      (insert (format "%2s. " count))
-      (if (null sys)
-         (insert dir)
-       (insert sys ":" dir))
-      (insert "\n")
-      (setq count (1+ count))
-      (setq paths (cdr paths))
-      )
-    (insert "\nThese are the places that will be searched for package binaries.\n")
-    (goto-char (point-min))
-    ))
-
 ;;;###autoload
 (defun package-ui-add-site (site)
   "Add site to package-get-remote and possibly offer to update package list."
   (let ((had-none (null package-get-remote)))
-    (push site package-get-remote)    
+    (setq package-get-remote site)    
     (when (and had-none package-get-was-current
               (y-or-n-p "Update Package list?"))
       (setq package-get-was-current nil)
@@ -185,39 +150,64 @@ Set this to `nil' to use the `default' face."
          (save-window-excursion
            (pui-list-packages))))
     (set-menubar-dirty-flag)))
-    
 
 ;;;###autoload
-(defun pui-add-install-directory (dir)
-  "Add a new package binary directory to the head of `package-get-remote'.
+(defun package-ui-download-menu ()
+  "Build the `Add Download Site' menu."
+  (mapcar (lambda (site)
+           (vector (car site)
+                   `(if (equal package-get-remote (quote ,(cdr site)))
+                     (setq package-get-remote nil)
+                     (package-ui-add-site (quote ,(cdr site))))
+                   ;; I've used radio buttons so that only a single
+                   ;; site can be selected, but they are in fact
+                   ;; toggles.  SY.
+                   :style 'radio
+                   :selected `(equal package-get-remote (quote ,(cdr site)))))
+         package-get-download-sites))
+
+;;;###autoload
+(defun package-ui-pre-release-download-menu ()
+  "Build the 'Pre-Release Download Sites' menu."
+  (mapcar (lambda (site)
+           (vector (car site)
+                   `(if (equal package-get-remote (quote ,(cdr site)))
+                     (setq package-get-remote nil)
+                     (package-ui-add-site (quote ,(cdr site))))
+                   ;; I've used radio buttons so that only a single
+                   ;; site can be selected, but they are in fact
+                   ;; toggles.  SY.
+                   :style 'radio
+                   :selected `(equal package-get-remote (quote ,(cdr site)))))
+         package-get-pre-release-download-sites))
+
+;;;###autoload
+(defun package-ui-site-release-download-menu ()
+  "Build the 'Site Release Download Sites' menu."
+  (mapcar (lambda (site)
+           (vector (car site)
+                   `(if (equal package-get-remote (quote ,(cdr site)))
+                     (setq package-get-remote nil)
+                     (package-ui-add-site (quote ,(cdr site))))
+                   ;; I've used radio buttons so that only a single
+                   ;; site can be selected, but they are in fact
+                   ;; toggles.  SY.
+                   :style 'radio
+                   :selected `(equal package-get-remote (quote ,(cdr site)))))
+         package-get-site-release-download-sites))
+
+;;;###autoload
+(defun pui-set-local-package-get-directory ()
+  "Set a new package binary directory in `package-get-remote'.
 Note that no provision is made for saving any changes made by this function.
 It exists mainly as a convenience for one-time package installations from
 disk."
-  (interactive (let ( (tmpbuf (get-buffer-create
-                              "*Existing Package Binary Paths*"))
-                     dir)
-                (save-window-excursion
-                  (save-excursion
-                    (unwind-protect
-                        (progn
-                          (pui-package-dir-list tmpbuf)
-                          (display-buffer tmpbuf)
-                          (setq dir (read-directory-name
-                                     "New package binary directory to add? "
-                                     nil nil t))
-                          )
-                      (kill-buffer tmpbuf)
-                      )))
-                (list dir)
-                ))
-  (progn
-    (if (not (pui-directory-exists dir))
-       (progn
-         (setq package-get-remote (cons (list nil dir) package-get-remote))
-         (message "Package directory \"%s\" added." dir)
-         )
-      (message "Directory \"%s\" already exists in `package-get-remote'." dir))
-    ))
+  (interactive) 
+  (let ((dir (read-directory-name
+             "New package binary directory to add? "
+             nil nil t)))
+    (setq package-get-remote (list nil dir))
+    (message "Package directory \"%s\" added." dir)))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Package list/installer routines
@@ -238,8 +228,7 @@ disk."
                     version))
               (list " " pui-up-to-date-package-face)
             (list "*" pui-outdated-package-face)))
-      (list "-" pui-uninstalled-package-face))
-    ))
+      (list "-" pui-uninstalled-package-face))))
 
 (defun pui-update-package-display (extent &optional pkg-sym version)
   "Update the package status for EXTENT.
@@ -272,9 +261,7 @@ and whether or not it is up-to-date."
       (goto-char (extent-start-position extent))
       (delete-char 1)
       (insert sym-char)
-      (set-buffer-modified-p nil)
-      )
-    ))
+      (set-buffer-modified-p nil))))
 
 (defun pui-toggle-package (extent)
   (let (pkg-sym)
@@ -286,8 +273,7 @@ and whether or not it is up-to-date."
            (cons pkg-sym pui-selected-packages))
       (setq pui-deleted-packages
            (delete pkg-sym pui-deleted-packages)))
-    (pui-update-package-display extent pkg-sym)
-    ))
+    (pui-update-package-display extent pkg-sym)))
 
 (defun pui-toggle-package-key ()
   "Select/unselect package for installation, using the keyboard."
@@ -296,10 +282,9 @@ and whether or not it is up-to-date."
     (if (setq extent (extent-at (point) (current-buffer) 'pui))
        (progn
          (pui-toggle-package extent)
-         (forward-line 1)
-         )
-      (error "No package under cursor!"))
-    ))
+         (forward-line 1))
+      (error 'invalid-operation
+            "No package under cursor!"))))
 
 (defun pui-toggle-package-delete (extent)
   (let (pkg-sym)
@@ -311,8 +296,7 @@ and whether or not it is up-to-date."
            (cons pkg-sym pui-deleted-packages))
       (setq pui-selected-packages
            (delete pkg-sym pui-selected-packages)))
-    (pui-update-package-display extent pkg-sym)
-    ))
+    (pui-update-package-display extent pkg-sym)))
   
 
 (defun pui-toggle-package-delete-key ()
@@ -322,10 +306,9 @@ and whether or not it is up-to-date."
     (if (setq extent (extent-at (point) (current-buffer) 'pui))
        (progn
          (pui-toggle-package-delete extent)
-         (forward-line 1)
-         )
-      (error "No package under cursor!"))
-    ))
+         (forward-line 1))
+      (error 'invalid-operation
+            "No package under cursor!"))))
 
 (defun pui-current-package ()
   (let ((extent (extent-at (point) (current-buffer) 'pui)))
@@ -335,25 +318,23 @@ and whether or not it is up-to-date."
 (defun pui-toggle-package-event (event)
   "Select/unselect package for installation, using the mouse."
   (interactive "e")
-  (let* ( (ep (event-point event))
-          (buffer (window-buffer (event-window event)))
-          (extent (extent-at ep buffer 'pui-package))
-          )
-    (pui-toggle-package extent)
-    ))
+  (let* ((ep (event-point event))
+        (buffer (window-buffer (event-window event)))
+        (extent (extent-at ep buffer 'pui-package)))
+    (pui-toggle-package extent)))
 
 (defun pui-toggle-verbosity-redisplay ()
   "Toggle verbose package info."
   (interactive)
   (progn
     (setq pui-list-verbose (not pui-list-verbose))
-    (pui-list-packages)
-    ))
+    (pui-list-packages)))
 
 (defun pui-install-selected-packages ()
   "Install selected packages."
   (interactive)
-  (let ( (tmpbuf "*Packages-To-Remove*") do-delete)
+  (let ((tmpbuf "*Packages-To-Remove*") 
+       do-delete)
     (when pui-deleted-packages
       (save-window-excursion
        (with-output-to-temp-buffer tmpbuf
@@ -362,8 +343,7 @@ and whether or not it is up-to-date."
                                    #'string<)
                                   :activate-callback nil
                                   :help-string "Packages selected for removal:\n"
-                                  :completion-string t
-                                  ))
+                                  :completion-string t))
        (setq tmpbuf (get-buffer-create tmpbuf))
        (display-buffer tmpbuf)
        (setq do-delete (yes-or-no-p "Remove these packages? "))
@@ -372,11 +352,12 @@ and whether or not it is up-to-date."
        (message "Deleting selected packages ...") (sit-for 0)
        (mapcar (lambda (pkg)
                  (package-admin-delete-binary-package
-                  pkg (package-admin-get-install-dir pkg nil)))
+                  pkg (package-admin-get-install-dir pkg)))
                (nreverse pui-deleted-packages))
        (message "Packages deleted"))))
         
-  (let ( (tmpbuf "*Packages-To-Install*") do-install)
+  (let ((tmpbuf "*Packages-To-Install*") 
+       do-install)
     (if pui-selected-packages
        (progn
          ;; Don't change window config when asking the user if he really
@@ -390,21 +371,18 @@ and whether or not it is up-to-date."
               (sort (mapcar #'symbol-name pui-selected-packages) #'string<)
               :activate-callback nil
               :help-string "Packages selected for installation:\n"
-              :completion-string t
-              ))
+              :completion-string t))
            (setq tmpbuf (get-buffer-create tmpbuf))
            (display-buffer tmpbuf)
            (setq do-install (y-or-n-p "Install these packages? "))
-           (kill-buffer tmpbuf)
-           )
+           (kill-buffer tmpbuf))
          (if do-install
              (progn
                (save-excursion
                  ;; Clear old temp buffer history
                  (set-buffer (get-buffer-create package-admin-temp-buffer))
                  (buffer-disable-undo package-admin-temp-buffer)
-                 (erase-buffer package-admin-temp-buffer)
-                 )
+                 (erase-buffer package-admin-temp-buffer))
                (message "Installing selected packages ...") (sit-for 0)
                (if (catch 'done
                      (mapcar (lambda (pkg)
@@ -415,18 +393,14 @@ and whether or not it is up-to-date."
                      t)
                    (progn
                      (pui-list-packages)
-                     (message "Packages installed")
-                     ))
-               )
-           (clear-message)
-           )
-         )
+                     (message "Packages installed"))))
+           (clear-message)))
       (if pui-deleted-packages
          (pui-list-packages)
-       (error "No packages have been selected!")))
+       (error 'invalid-operation
+              "No packages have been selected!")))
     ;; sync with windows type systems
-    (package-net-update-installed-db)
-    ))
+    (package-net-update-installed-db)))
 
 (defun pui-add-required-packages ()
   "Select packages required by those already selected for installation."
@@ -482,20 +456,21 @@ and whether or not it is up-to-date."
                              nil nil nil nil nil 'pui)
                 (message "added dependencies"))
              (clear-message)))
-      (error "No packages have been selected!"))))
+      (error 'invalid-operation
+            "No packages have been selected!"))))
 
 (defun pui-help-echo (extent &optional force-update)
   "Display additional package info in the modeline.
 EXTENT determines the package to display (the package information is
 attached to the extent as properties)."
-  (let (pkg-sym info inst-ver auth-ver date maintainer balloon req)
+  (let (pkg-sym info inst-ver inst-auth-ver auth-ver date maintainer balloon req)
     (if (or force-update (not (current-message))
-           (string-match ".*: .*: " (current-message))
-           )
+           (string-match ".*: .*: " (current-message)))
        (progn
          (setq pkg-sym (extent-property extent 'pui-package)
                info (extent-property extent 'pui-info)
                inst-ver (package-get-key pkg-sym :version)
+               inst-auth-ver (package-get-key pkg-sym :author-version)
                auth-ver (package-get-info-prop info 'author-version)
                date (package-get-info-prop info 'date)
                maintainer (package-get-info-prop info 'maintainer)
@@ -507,22 +482,16 @@ attached to the extent as properties)."
                (setq balloon (format "
 Package Information:  [For package: \"%s\"]
 ================
-Installed Version : %.2f
-Author Version : %s
-Maintainer: %s
-Released: %s
+Installed Upstream Ver: %s  Available Upstream Ver: %s
+Maintainer : %s
+Released : %s
 Required Packages : %s\n\n"
-                                     pkg-sym inst-ver auth-ver maintainer 
+                                     pkg-sym inst-auth-ver auth-ver maintainer 
                                      date req))
                (set-extent-property extent 'balloon-help balloon)))
-         (if pui-list-verbose
-             (format 
-              "Inst V: %.2f Auth V: %s Maint: %s" 
-              inst-ver auth-ver maintainer)
-           (format "%.2f : %s : %s"
-                   inst-ver auth-ver maintainer))
-         ))
-    ))
+         (format 
+          "Installed upstream ver: %s  Available upstream ver: %s" 
+          inst-auth-ver auth-ver)))))
 
 (defun pui-display-info (&optional no-error event)
   "Display additional package info in the modeline.
@@ -535,8 +504,25 @@ Designed to be called interactively (from a keypress)."
          (message (pui-help-echo extent t))
        (if no-error
            (clear-message nil)
-         (error "No package under cursor!")))
-      )))
+         (error 'invalid-operation
+                "No package under cursor!"))))))
+
+(defun pui-display-maintainer (&optional no-error event)
+  "Display a package's maintainer in the minibuffer."
+  (interactive)
+  (let (extent pkg-sym info maintainer)
+    (save-excursion
+      (beginning-of-line)
+      (if (setq extent         (extent-at (point) (current-buffer) 'pui))
+         (progn
+           (setq pkg-sym (extent-property extent 'pui-package)
+                 info (extent-property extent 'pui-info)
+                 maintainer (package-get-info-prop info 'maintainer))
+           (message (format "Maintainer: %s" maintainer)))
+       (if no-error
+           (clear-message nil)
+         (error 'invalid-operation
+                "No package under cursor!"))))))
 
 (defvar pui-menu
   '("Packages"
@@ -580,11 +566,13 @@ Useful keys:
   `\\[pui-add-required-packages]' to add any packages required by those selected.
   `\\[pui-install-selected-packages]' to install/delete selected packages.
   `\\[pui-display-info]' to display additional information about the package in the modeline.
+  `\\[pui-display-maintainer]' to display the package's maintainer in the minibuffer
   `\\[pui-list-packages]' to refresh the package list.
   `\\[pui-toggle-verbosity-redisplay]' to toggle between a verbose and non-verbose display.
   `\\[pui-quit]' to kill this buffer.
 "
-  (error "You cannot enter this mode directly. Use `pui-list-packages'"))
+  (error 'invalid-operation
+        "You cannot enter this mode directly. Use `pui-list-packages'"))
 
 (put 'list-packages-mode 'mode-class 'special)
 
@@ -597,9 +585,9 @@ which are out-of-date (a newer version is available).  The user can then
 select packages for installation via the keyboard or mouse."
   (interactive)
   (package-get-require-base t)
-  (let ( (outbuf (get-buffer-create pui-info-buffer))
-        (sep-string "===============================================================================\n")
-        start )
+  (let ((outbuf (get-buffer-create pui-info-buffer))
+       (sep-string "===============================================================================\n")
+       start)
     (message "Creating package list ...") (sit-for 0)
     (set-buffer outbuf)
     (setq buffer-read-only nil)
@@ -643,27 +631,21 @@ Warning: No download sites specified.  Package index may be out of date.
               (progn
                 (setq current-vers (package-get-key pkg-sym :version))
                 (cond
-                 ( (not current-vers)
-                   (setq current-vers "-----") )
-                 ( (stringp current-vers)
-                   (setq current-vers
-                         (format "%.2f"
-                                 (string-to-number current-vers))) )
-                 ( (numberp current-vers)
-                   (setq current-vers (format "%.2f" current-vers)) )
-                 )
+                 ((not current-vers)
+                  (setq current-vers "-----"))
+                 ((stringp current-vers)
+                  (setq current-vers
+                        (format "%.2f"
+                                (string-to-number current-vers))))
+                 ((numberp current-vers)
+                  (setq current-vers (format "%.2f" current-vers))))
                 (insert
                  (format "%s %-15s %-5.2f  %-5s  %s\n"
                          (car disp) pkg-sym 
                          (if (stringp version)
                              (string-to-number version)
                            version)
-                         current-vers desc))
-                ;; (insert
-                ;;  (format "\t\t  %-12s  %s\n"
-                ;;    (package-get-info-prop info 'author-version)
-                ;;    (package-get-info-prop info 'date)))
-                )
+                         current-vers desc)))
             (insert (format "%s %-15s %-5s %s\n"
                             (car disp)
                             pkg-sym version desc)))
@@ -681,8 +663,7 @@ Warning: No download sites specified.  Package index may be out of date.
           (set-extent-property extent 'pui-package pkg-sym)
           (set-extent-property extent 'pui-info info)
           (set-extent-property extent 'help-echo 'pui-help-echo)
-          (set-extent-property extent 'keymap pui-package-keymap)
-          ))
+          (set-extent-property extent 'keymap pui-package-keymap)))
      (sort (copy-sequence package-get-base)
           #'(lambda (a b)
               (string< (symbol-name (car a))
@@ -700,9 +681,7 @@ Warning: No download sites specified.  Package index may be out of date.
       (set-buffer-menubar current-menubar)
       (add-submenu '() pui-menu)
       (setq mode-popup-menu pui-menu))
-    (clear-message)
-    ;;    (message (substitute-command-keys "Press `\\[pui-help]' for help."))
-    ))
+    (clear-message)))
 
 ;;;###autoload
 (defalias 'list-packages 'pui-list-packages)
index e0b8fdb..86f1782 100644 (file)
@@ -1,6 +1,7 @@
 ;;; packages.el --- Low level support for XEmacs packages
 
 ;; Copyright (C) 1997 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003 Ben Wing.
 
 ;; Author: Steven L Baur <steve@xemacs.org>
 ;; Maintainer: Steven L Baur <steve@xemacs.org>
@@ -96,6 +97,10 @@ show up in.
 The third component is a thunk which, if it returns NIL, causes
 the directory to be ignored."
   (list
+   (list (paths-construct-path (list user-init-directory "site-packages"))
+        'early #'(lambda () t))
+   (list (paths-construct-path (list user-init-directory "infodock-packages"))
+        'early #'(lambda () (featurep 'infodock)))
    (list (paths-construct-path (list user-init-directory "mule-packages"))
         'early #'(lambda () (featurep 'mule)))
    (list (paths-construct-path (list user-init-directory "xemacs-packages"))
@@ -129,11 +134,13 @@ the directory to be ignored."
 (defun package-require (name version)
   (let ((pkg (assq name packages-package-list)))
     (cond ((null pkg)
-          (error "Package %s has not been loaded into this XEmacsen"
-                 name))
+          (error 'invalid-state
+                 (format "Package %s has not been loaded into this XEmacsen"
+                         name)))
          ((< (package-get-key name :version) version)
-          (error "Need version %g of package %s, got version %g"
-                 version name (cdr pkg)))
+          (error 'search-failed
+                 (format "Need version %g of package %s, got version %g"
+                         version name (cdr pkg))))
          (t t))))
 
 (defun package-delete-name (name)
@@ -144,40 +151,14 @@ the directory to be ignored."
     ;; one.
     (while (setq pkg (assq name packages-package-list))
       (setq packages-package-list (delete pkg (copy-alist
-                                              packages-package-list)))
-      )
-    ))
+                                              packages-package-list))))))
 
 ;;; Build time stuff
 
 (defvar autoload-file-name "auto-autoloads.el"
   "Filename that autoloads are expected to be found in.")
 
-(defvar packages-hardcoded-lisp
-  '(
-    ;; Nothing at this time
-    )
-  "Lisp packages that are always dumped with XEmacs.
-This includes every package that is loaded directly by a package listed
-in dumped-lisp.el and is not itself listed.")
-
-(defvar packages-useful-lisp
-  '("bytecomp"
-    "byte-optimize"
-    "shadow"
-    "cl-macs")
-  "Lisp packages that need early byte compilation.")
-
-(defvar packages-unbytecompiled-lisp
-  '("paths.el"
-    "dumped-lisp.el"
-    "dumped-pkg-lisp.el"
-    "version.el"
-    "very-early-lisp.el")
-  "Lisp packages that should not be byte compiled.")
-
-
-;; Copied from help.el, could possibly move it to here permanently.
+;; Moved from help.el.
 ;; Unlike the FSF version, our `locate-library' uses the `locate-file'
 ;; primitive, which should make it lightning-fast.
 
@@ -352,7 +333,7 @@ This function is basically a wrapper over `locate-file'."
   ;; make sure paths-find-version-directory and paths-find-site-directory
   ;; don't both pick up version-independent directories ...
   (let ((version-directory (paths-find-version-directory roots base nil nil t))
-       (site-directory (paths-find-site-directory roots base nil nil t)))
+       (site-directory (paths-find-site-directory roots base)))
     (paths-uniq-append
      (and version-directory (list version-directory))
      (and site-directory (list site-directory)))))
index fb26c2e..55801b1 100644 (file)
@@ -1,7 +1,7 @@
 ;;; specifier.el --- Lisp interface to specifiers
 
-;; Copyright (C) 1997 Free Software Foundation, Inc.
-;; Copyright (C) 1995, 1996, 2000 Ben Wing.
+;; Copyright (C) 1997, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1996, 2000, 2002 Ben Wing.
 
 ;; Author: Ben Wing <ben@xemacs.org>
 ;; Keywords: internal, dumped
 ;;; Code:
 
 (defun make-specifier-and-init (type spec-list &optional dont-canonicalize)
-  "Create and initialize a new specifier.
-
-This is a front-end onto `make-specifier' that allows you to create a
-specifier and add specs to it at the same time.  TYPE specifies the
-specifier type.  SPEC-LIST supplies the specification(s) to be added
-to the specifier. Normally, almost any reasonable abbreviation of the
-full spec-list form is accepted, and is converted to the full form;
-however, if optional argument DONT-CANONICALIZE is non-nil, this
-conversion is not performed, and the SPEC-LIST must already be in full
-form.  See `canonicalize-spec-list'."
+  "Create and initialize a specifier of type TYPE with spec(s) SPEC-LIST.
+
+A convenience API combining `make-specifier' and `set-specifier', allowing you
+to create a specifier and add specs to it at the same time.
+TYPE specifies the specifier type.  See `make-specifier' for known types.
+SPEC-LIST supplies the specification(s) to be added to the specifier, in any
+  form acceptable to `canonicalize-spec-list'.
+Optional DONT-CANONICALIZE, if non-nil, inhibits the conversion, and the
+  SPEC-LIST must already be in full form."
   (let ((sp (make-specifier type)))
     (if (not dont-canonicalize)
        (setq spec-list (canonicalize-spec-list spec-list type)))
@@ -53,10 +52,12 @@ form.  See `canonicalize-spec-list'."
 (defun map-specifier (ms-specifier ms-func &optional ms-locale ms-maparg)
   "Apply MS-FUNC to the specification(s) for MS-LOCALE in MS-SPECIFIER.
 
-If MS-LOCALE is a locale, MS-FUNC will be called for that locale.
-If MS-LOCALE is a locale type, MS-FUNC will be mapped over all locales
-of that type.  If MS-LOCALE is 'all or nil, MS-FUNC will be mapped
-over all locales in MS-SPECIFIER.
+If optional MS-LOCALE is a locale, MS-FUNC will be called for that locale.
+If MS-LOCALE is a locale type, MS-FUNC will be mapped over all locales of that
+type.  If MS-LOCALE is 'all or nil, MS-FUNC will be mapped over all locales in
+MS-SPECIFIER.
+
+Optional MS-MAPARG will be passed to MS-FUNC.
 
 MS-FUNC is called with four arguments: the MS-SPECIFIER, the locale
 being mapped over, the inst-list for that locale, and the
@@ -76,7 +77,7 @@ returns nil."
 (defun canonicalize-inst-pair (inst-pair specifier-type &optional noerror)
   "Canonicalize the given INST-PAIR.
 
-SPECIFIER-TYPE specifies the type of specifier that this SPEC-LIST
+SPECIFIER-TYPE specifies the type of specifier that this INST-PAIR
 will be used for.
 
 Canonicalizing means converting to the full form for an inst-pair, i.e.
@@ -169,8 +170,7 @@ otherwise return t."
 (defun canonicalize-spec (spec specifier-type &optional noerror)
   "Canonicalize the given SPEC (a specification).
 
-SPECIFIER-TYPE specifies the type of specifier that this SPEC-LIST
-will be used for.
+SPECIFIER-TYPE is the type of specifier that this SPEC will be used for.
 
 Canonicalizing means converting to the full form for a spec, i.e.
 `(LOCALE (TAG-SET . INSTANTIATOR) ...)'.  This function accepts a
@@ -222,9 +222,42 @@ a possibly abbreviated specification or a list of such things. (See
 accepted by `set-specifier' and such into a form suitable for
 `add-spec-list-to-specifier'.
 
-This function tries extremely hard to resolve any ambiguities,
-and the built-in specifier types (font, image, toolbar, etc.) are
-designed so that there won't be any ambiguities.
+The canonicalization algorithm is as follows:
+
+1. Attempt to parse SPEC-LIST as a single, possibly abbreviated, specification.
+2. If (1) fails, attempt to parse SPEC-LIST as a list of (abbreviated)
+   specifications.
+3. If (2) fails, SPEC-LIST is invalid.
+
+A possibly abbreviated specification SPEC is parsed by
+
+1. Attempt to parse SPEC as a possibly abbreviated inst-list.
+2. If (1) fails, attempt to parse SPEC as a cons of a locale and an
+   (abbreviated) inst-list.
+3. If (2) fails, SPEC is invalid.
+
+A possibly abbreviated inst-list INST-LIST is parsed by
+
+1. Attempt to parse INST-LIST as a possibly abbreviated inst-pair.
+2. If (1) fails, attempt to parse INST-LIST as a list of (abbreviated)
+   inst-pairs.
+3. If (2) fails, INST-LIST is invalid.
+
+A possibly abbreviated inst-pair INST-PAIR is parsed by
+
+1. Check if INST-PAIR is `valid-instantiator-p'.
+2. If not, check if INST-PAIR is a cons of something that is a tag, ie,
+   `valid-specifier-tag-p', and something that is `valid-instantiator-p'.
+3. If not, check if INST-PAIR is a cons of a list of tags and something that
+   is `valid-instantiator-p'.
+
+In summary, this function generally prefers more abbreviated forms.
+
+This function tries extremely hard to resolve any ambiguities, and the
+built-in specifier types (font, image, toolbar, etc.) are designed so that
+there won't be any ambiguities.  (#### Unfortunately there are bugs in the
+treatment of toolbar spec-lists and generic spec-lists; avoid depending on
+canonicalization for these types.)
 
 If NOERROR is nil, signal an error if the spec-list is invalid;
 otherwise return t."
@@ -265,51 +298,47 @@ otherwise return t."
            (nreverse result)))))))
 
 (defun set-specifier (specifier value &optional locale tag-set how-to-add)
-  "Add a specification or specifications to SPECIFIER.
+  "Add the specification(s) given by VALUE to SPECIFIER in LOCALE.
+
+VALUE may be any of the values accepted by `canonicalize-spec-list', including
+
+-- an instantiator (either a Lisp object which will be returned when the
+   specifier is instanced, or a Lisp object that can be instantiated to
+   produce an opaque value: eg, a font name (string) can be used for a font
+   specifier, but an instance will be a font object)
+-- a list of instantiators
+-- a cons of a locale and an instantiator, or of a locale and a list of
+   instantiators
+-- a cons of a tag or tag-set and an instantiator (or list of instantiators)
+-- a cons of a locale and the previous type of item
+-- a list of one or more of any of the previous types of items
+-- a canonical spec-list.
+
+See `canonicalize-spec-list' for details.  If you need to know the details,
+though, strongly consider using the unambiguous APIs `add-spec-to-specifier'
+and `add-spec-list-to-specifier' instead.
+
+Finally, VALUE can itself be a specifier (of the same type as
+SPECIFIER), if you want to copy specifications from one specifier
+to another; this is equivalent to calling `copy-specifier', and
+LOCALE, TAG-SET, and HOW-TO-ADD have the same semantics as with
+that function.
+
+Note that a VALUE of `nil' is either illegal or will be treated as a value of
+`nil'; it does not remove existing specifications.  Use `remove-specifier' for
+that.  N.B. `remove-specifier' defaults to removing all specifications, not
+just the 'global one!
+
+Warning: this function is inherently heuristic, and should not be relied on to
+properly resolve ambiguities, when specifier instantiators can be lists
+\(currently, for toolbar specifiers and generic specifiers).  In those cases
+use either `add-spec-to-specifier' or `add-spec-list-to-specifier'.
 
-This function adds a specification of VALUE in locale LOCALE.
 LOCALE indicates where this specification is active, and should be
 a buffer, a window, a frame, a device, or the symbol `global' to
-indicate that it applies everywhere.  LOCALE usually defaults to
-`global' if omitted.
-
-VALUE is usually what is called an \"instantiator\" (which, roughly
-speaking, corresponds to the \"value\" of the property governed by
-SPECIFIER).  The valid instantiators for SPECIFIER depend on the type
-of SPECIFIER (which you can determine using `specifier-type').  The
-specifier `scrollbar-width', for example, is of type `integer',
-meaning its valid instantiators are integers.  The specifier governing
-the background color of the `default' face (you can retrieve this
-specifier using `(face-background 'default)') is of type `color',
-meaning its valid instantiators are strings naming colors and
-color-instance objects.  For some types of specifiers, such as `image'
-and `toolbar', the instantiators can be very complex.  Generally this
-is documented in the appropriate creation function --
-e.g. `make-color-specifier', `make-font-specifier',
-`make-image-specifier' -- or in the global variable holding the most
-common specifier for that type (`default-toolbar', `default-gutter',
-`current-display-table').
-
-NOTE: It does *not* work to give a VALUE of nil as a way of
-removing the specifications for a locale.  Use `remove-specifier'
-instead. (And keep in mind that, if you omit the LOCALE argument
-to `remove-specifier', it removes *all* specifications!  If you
-want to remove just the `global' specification, make sure to
-specify a LOCALE of `global'.)
-
-VALUE can also be a list of instantiators.  This means basically,
-\"try each one in turn until you get one that works\".  This allows
-you to give funky instantiators that may only work in some cases,
-and provide more normal backups for the other cases. (For example,
-you might like the color \"darkseagreen2\", but some X servers
-don't recognize this color, so you could provide a backup
-\"forest green\".  Color TTY devices probably won't recognize this
-either, so you could provide a second backup \"green\".  You'd
-do this by specifying this list of instantiators:
-
-'(\"darkseagreen2\" \"forest green\" \"green\")
-
-VALUE can also be various more complicated forms; see below.
+indicate that it applies everywhere.  LOCALE defaults to
+`global' if omitted, and is overridden by locales provided by VALUE (in the
+cases where value is a full specification or a spec-list).
 
 Optional argument TAG-SET is a tag or a list of tags, to be associated
 with the VALUE.  Tags are symbols (usually naming device types, such
@@ -329,25 +358,6 @@ the default behavior of `remove-tag-set-prepend' is usually fine.
 See `copy-specifier' and `add-spec-to-specifier' for a full
 description of what each of these means.
 
-VALUE can actually be anything acceptable to `canonicalize-spec-list';
-this includes, among other things:
-
--- a cons of a locale and an instantiator (or list of instantiators)
--- a cons of a tag or tag-set and an instantiator (or list of
-   instantiators)
--- a cons of a locale and the previous type of item
--- a list of one or more of any of the previous types of items
-
-However, in these cases, you cannot give a LOCALE or TAG-SET,
-because they do not make sense. (You will probably get an error if
-you try this.)
-
-Finally, VALUE can itself be a specifier (of the same type as
-SPECIFIER), if you want to copy specifications from one specifier
-to another; this is equivalent to calling `copy-specifier', and
-LOCALE, TAG-SET, and HOW-TO-ADD have the same semantics as with
-that function.
-
 Note that `set-specifier' is exactly complementary to `specifier-specs'
 except in the case where SPECIFIER has no specs at all in it but nil
 is a valid instantiator (in that case, `specifier-specs' will return
@@ -355,14 +365,7 @@ nil (meaning no specs) and `set-specifier' will interpret the `nil'
 as meaning \"I'm adding a global instantiator and its value is `nil'\"),
 or in strange cases where there is an ambiguity between a spec-list
 and an inst-list, etc. (The built-in specifier types are designed
-in such a way as to avoid any such ambiguities.)
-
-NOTE: If you want to work with spec-lists, you should probably not
-use either `set-specifier' or `specifier-specs', but should use the
-lower-level functions `add-spec-list-to-specifier' and `specifier-spec-list'.
-These functions always work with fully-qualified spec-lists; thus, there
-is no possibility for ambiguity and no need to go through the function
-`canonicalize-spec-list', which is potentially time-consuming."
+in such a way as to avoid any such ambiguities.)"
 
   ;; backward compatibility: the old function had HOW-TO-ADD as the
   ;; third argument and no arguments after that.
@@ -406,7 +409,7 @@ is no possibility for ambiguity and no need to go through the function
   value)
 
 (defun modify-specifier-instances (specifier func &optional args force default
-                                            locale tag-set)
+                                  locale tag-set)
   "Modify all specifications that match LOCALE and TAG-SET by FUNC.
 
 For each specification that exists for SPECIFIER, in locale LOCALE
index 9dcc274..13524f6 100644 (file)
                preloaded-file-list
                (if (featurep 'utf-2000)
                    system-char-db-source-file-list)
-               packages-useful-lisp
                site-load-packages))
   (while preloaded-file-list
     (let ((arg (car preloaded-file-list)))
                                 dumped-exe))))
              (setq need-to-dump t)))
 
-      (if (null (member (file-name-nondirectory arg)
-                       packages-unbytecompiled-lisp))
+;      (if (null (member (file-name-nondirectory arg)
+;                      packages-unbytecompiled-lisp))
+;        (progn
+      (setq arg (locate-library arg))
+      (if (null arg)
          (progn
-           (setq arg (locate-library arg))
-           (if (null arg)
-               (progn
-                 (print (format "Error: Library file %s not found"
-                                (car preloaded-file-list)))
-                 ;; Uncomment in case of trouble
-                 ;;(print (format "late-packages: %S" late-packages))
-                 ;;(print (format "guessed-roots: %S" (paths-find-emacs-roots invocation-directory invocation-name)))
-                 (kill-emacs)))
-           (if (string-match "\\.elc?\\'" arg)
-               (setq arg (substring arg 0 (match-beginning 0))))
-           (if (and (null (member arg processed))
-                    (file-exists-p (concat arg ".el"))
-                    (file-newer-than-file-p (concat arg ".el")
-                                            (concat arg ".elc")))
-               (setq processed (cons (concat arg ".el") processed)))))
+           (print (format "Error: Library file %s not found"
+                          (car preloaded-file-list)))
+           ;; Uncomment in case of trouble
+           ;;(print (format "late-packages: %S" late-packages))
+           ;;(print (format "guessed-roots: %S" (paths-find-emacs-roots invocation-directory invocation-name)))
+           (kill-emacs)))
+      (if (string-match "\\.elc?\\'" arg)
+         (setq arg (substring arg 0 (match-beginning 0))))
+      (if (and (null (member arg processed))
+              (file-exists-p (concat arg ".el"))
+              (file-newer-than-file-p (concat arg ".el")
+                                      (concat arg ".elc")))
+         (setq processed (cons (concat arg ".el") processed)))
       (setq preloaded-file-list (cdr preloaded-file-list))))
 
   (if need-to-dump
index a68a9a5..35fb06b 100644 (file)
@@ -1,5 +1,5 @@
 CHISE character database format (S-expression version)
-+
+
 * Relations between Characters
 
 Property-name `->foo' or `<-foo' mean relations between characters.
@@ -55,7 +55,7 @@ list 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
-               ruishuu-meigishou                       \e$BN`f\L>5A>6\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
                shuowen-tongxun-dingsheng
@@ -65,6 +65,8 @@ list describes meaning of keys:
                        (sougen-irai-zokujifu)          \e$BAW850JMhB/;zIh\e(B
                yuquan                                  \e$B6L@t\e(B
                chuanpian (senhen)                      \e$B@nJS\e(B
+               kanjo                                   \e$B4A=q\e(B
+               ronkou                                  \e$BO@9U\e(B
 
 ** Properties
 
index a7187e2..23b38d0 100644 (file)
@@ -56,8 +56,8 @@
 (setq path-separator ";")
 
 ;; Set the null device (for compile.el).
-;; #### There should be such a global thingy as null-device - kkm
-(setq grep-null-device "NUL")
+;; Backward-compatibility; recent compile.el uses null-device if available.
+(setq grep-null-device null-device)
 
 ;; Set the grep regexp to match entries with drive letters.
 (setq grep-regexp-alist
index 4950427..502c6dc 100644 (file)
@@ -385,7 +385,7 @@ Returns the window displaying BUFFER."
         ;; and does `returns' all over the place and there's no sense
         ;; in trying to rewrite it to be more Lispy.
         (catch 'done
-          (let (window old-frame target-frame explicit-frame)
+          (let (window old-frame target-frame explicit-frame shrink-it)
             (setq old-frame (or (last-nonminibuf-frame) (selected-frame)))
             (setq buffer (get-buffer buffer))
             (check-argument-type 'bufferp buffer)
@@ -573,9 +573,7 @@ Returns the window displaying BUFFER."
                                (and (window-leftmost-p window)
                                     (window-rightmost-p window))))
                       (setq window (split-window window))
-                    (let (upper
-;;                        lower
-                          other)
+                    (let (upper other)
                       (setq window (get-lru-window target-frame))
                       ;; If the LRU window is selected, and big enough,
                       ;; and can be split, split it.
@@ -605,11 +603,9 @@ Returns the window displaying BUFFER."
                       ;; even out their heights.
                       (if (window-previous-child window)
                           (setq other (window-previous-child window)
-;;                              lower window
                                 upper other))
                       (if (window-next-child window)
                           (setq other (window-next-child window)
-;;                              lower other
                                 upper window))
                       ;; Check that OTHER and WINDOW are vertically arrayed.
                       (if (and other
@@ -622,8 +618,11 @@ Returns the window displaying BUFFER."
                                                 2)
                                              (window-height upper))
                                           nil upper))
-                      (if shrink-to-fit
-                          (shrink-window-if-larger-than-buffer window)))))
+                       ;; Klaus Berndl <klaus.berndl@sdm.de>: Only in
+                       ;; this situation we shrink-to-fit but we can do
+                       ;; this first after we have displayed buffer in
+                       ;; window (s.b. (set-window-buffer window buffer))
+                       (setq shrink-it shrink-to-fit))))
 
               (setq window (get-lru-window target-frame)))
 
@@ -636,6 +635,12 @@ Returns the window displaying BUFFER."
 
             (set-window-buffer window buffer)
 
+             ;; Now window's previous buffer has been brought to the top
+             ;; of the MRU chain and window displays buffer - now we can
+             ;; shrink-to-fit if necessary
+             (if shrink-it
+                 (shrink-window-if-larger-than-buffer window))
+
             (display-buffer-1 window)))))
     (or (equal wconfig (current-window-configuration))
        (push-window-configuration wconfig))
index 24b7bc7..52502ed 100644 (file)
@@ -1,3 +1,7 @@
+2004-02-02  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.15 is released
+
 2003-09-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.14 is released
index d332342..21e5cd0 100644 (file)
@@ -1,3 +1,144 @@
+2004-02-02  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.15 is released
+
+2004-01-27  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * lispref/lispref.texi (Top): Pluralize node name Specifier Examples.
+       * lispref/specifiers.texi: Synch to 21.5 where appropriate.
+
+2003-11-04  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * xemacs-faq.texi: Fix Tony Rossini's address.
+
+2004-01-25  Steve Youngs  <youngs@xemacs.org>
+
+       * xemacs-faq.texi (Q2.0.2): Rewrite, mentioning the correct way to
+       remove a package.
+       (Q3.8.2): big-menubar is in the edit-utils package.
+       (Q4.3.2): Add a comment about not needing TM for things like Gnus,
+       MH-E and VM.
+       (Q5.3.3): State correct location of ps-print.el.
+
+       * xemacs/packages.texi (Packages): Remove "Creating Packages" menu
+       entry.
+       (Package Terminology): Whitespace clean up.
+       (Installing Packages): Whitespace clean up and add some @code
+       formatters. 
+       Re-organise the menu so that installation via PUI is first and
+       Sumo is last.
+       (Automatically): mule-base is no longer a requirement for using
+       PUI.
+       Mention optionally requiring mailcrypt.
+       (Note): Removed.
+       (Manually): Move to below the PUI installation method.
+       (Sumo): Move to below the manual installation method.
+       (Which Packages): Add mailcrypt.
+       (Building Packages): Remove duplicated stuff that is in
+       lispref/packaging.texi, xref to it instead.
+       (Local.rules File): xref to the appropriate node in
+       lispref/packaging.texi. 
+       (Available Packages): Update to current reality.
+       (all): Removed.
+       (srckit): Removed.
+       (binkit): Removed.
+       
+       * xemacs/reading.texi (Reading Mail): Mention Gnus and MEW.
+
+       * new-users-guide/custom2.texi (Init File): big-menubar.el is in
+       the edit-utils package.
+
+       * lispref/packaging.texi (Packaging):
+       (The User View):
+       (The Library Maintainer View):
+       (Infrastructure):
+       (Control Files):
+       (Obtaining):
+       (The Package Release Engineer View):
+       (Package Terminology):
+       (Building Packages):
+       (Makefile Targets):
+       (packages): New.
+       (Local.rules File):
+       (XEMACS_PACKAGES): Removed.
+       (XEMACS_INSTALLED_PACKAGES_ROOT): New.
+       (NONMULE_PACKAGES): New.
+       (EXCLUDES): New.
+       (Creating Packages):
+       (BATCH): New.
+       (VERSION): Removed.
+       (AUTHOR_VERSION): Removed.
+       (MAINTAINER): Removed.
+       (PACKAGE): Removed.
+       (PKG_TYPE): Removed.
+       (REQUIRES): Removed.
+       (CATEGORY): Removed.
+       (ELS): Removed.
+       (ELCS): Removed.
+       (all): Removed.
+       (srckit): Removed.
+       (binkit): Removed.
+       (are): New.
+       (STANDARD_DOCS): New.
+       (ELCS_1_DEST): New.
+       (example): New.
+       (PACKAGE_SUPPRESS): New.
+       (EXPLICIT_DOCS): New.
+       (DATA_DEST): New.
+       (Documenting Packages):
+
+       Not quite a total rewrite, but a fairly thorough audit
+       nonetheless.
+
+2003-08-15  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * internals/internals.texi: Update copyright notice.
+       (GCPROing): Add missing period.
+       (Adding Global Lisp Variables): general.c -> general-slots.h.
+       (A Reader's Guide to XEmacs Coding Conventions): New node.
+
+2003-10-22  Ilya N. Golubev  <gin@mo.msk.ru>
+
+       * custom.texi (The Init File):
+       * xemacs-faq.texi (Q2.1.3):
+       (Q2.1.5):
+       * internals/internals.texi (Modules for Internationalization):
+       * lispref/display.texi (Beeping):
+       * lispref/ldap.texi (Encoder/Decoder Functions):
+       * lispref/markers.texi (The Mark):
+       (The Region):
+       * lispref/menus.texi (Menu Accelerator Functions):
+       * lispref/numbers.texi (Math Functions):
+       * lispref/packaging.texi (package-compile.el):
+       (Makefile Targets):
+       (Local.rules File):
+       * lispref/postgresql.texi (libpq Lisp Symbols and DataTypes):
+       (libpq Lisp Variables):
+       (Synchronous Interface Functions):
+       (Other libpq Functions):
+       * new-users-guide/custom2.texi (Init File):
+       (Setting Variables):
+       * new-users-guide/files.texi (File Names):
+       (Saving Files):
+       * new-users-guide/search.texi (Search and Replace):
+       * xemacs/custom.texi (X Resources):
+       Fix up erroneous uses of @var instead of @code for the names of
+       particular variables in programming languages.
+
+2003-10-20  Ilya N. Golubev  <gin@mo.msk.ru>
+
+       * lispref/tips.texi (Style Tips): Note disabling undo in temporary
+       buffers.
+
+2003-10-16  Ilya N. Golubev  <gin@mo.msk.ru>
+
+       * lispref/tips.texi (Comment Tips): Typo fix.
+
+2003-09-22  Adrian Aichner  <adrian@xemacs.org>
+
+       * lispref/backups.texi (Reverting): Fix the PRINTED-MANUAL-TITLE
+       argument for a cross reference to  "The XEmacs User's Manual".
+
 2003-09-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.14 is released
index 66acee1..a3960a8 100644 (file)
@@ -291,7 +291,7 @@ and older XEmacs) and is @file{custom.el} in the same directory as
 @file{init.el} (in XEmacs 21.4 and later).  If you use another file, you
 must explicitly load it yourself.
 
-As of XEmacs 21.4.7, when @var{custom-file} is present, it is loaded
+As of XEmacs 21.4.7, when @code{custom-file} is present, it is loaded
 @emph{after} @file{init.el}.  This is likely to change in the future,
 because (1) actions in @file{init.el} often would like to depend on
 customizations for consistent appearance and (2) Custom is quite brutal
index 548a62f..322f7ef 100644 (file)
@@ -12,7 +12,7 @@
 
 Copyright @copyright{} 1992 - 1996 Ben Wing.
 Copyright @copyright{} 1996, 1997 Sun Microsystems.
-Copyright @copyright{} 1994 - 1998 Free Software Foundation.
+Copyright @copyright{} 1994 - 1998, 2002, 2003 Free Software Foundation.
 Copyright @copyright{} 1994, 1995 Board of Trustees, University of Illinois.
 
 
@@ -1938,6 +1938,7 @@ get something that appears to work, but which will crash in odd
 situations, often in code far away from where the actual breakage is.
 
 @menu
+* A Reader's Guide to XEmacs Coding Conventions::
 * General Coding Rules::
 * Writing Lisp Primitives::
 * Writing Good Comments::
@@ -1947,6 +1948,99 @@ situations, often in code far away from where the actual breakage is.
 * Techniques for XEmacs Developers::
 @end menu
 
+@node A Reader's Guide to XEmacs Coding Conventions
+@section A Reader's Guide to XEmacs Coding Conventions
+@cindex coding conventions
+@cindex reader's guide
+@cindex coding rules, naming
+
+Of course the low-level implementation language of XEmacs is C, but much
+of that uses the Lisp engine to do its work.  However, because the code
+is ``inside'' of the protective containment shell around the ``reactor
+core,'' you'll see lots of complex ``plumbing'' needed to do the work
+and ``safety mechanisms,'' whose failure results in a meltdown.  This
+section provides a quick overview (or review) of the various components
+of the implementation of Lisp objects.
+
+  Two typographic conventions help to identify C objects that implement
+Lisp objects.  The first is that capitalized identifiers, especially
+beginning with the letters @samp{Q}, @samp{V}, @samp{F}, and @samp{S},
+for C variables and functions, and C macros with beginning with the
+letter @samp{X}, are used to implement Lisp.  The second is that where
+Lisp uses the hyphen @samp{-} in symbol names, the corresponding C
+identifiers use the underscore @samp{_}.  Of course, since XEmacs Lisp
+contains interfaces to many external libraries, those external names
+will follow the coding conventions their authors chose, and may overlap
+the ``XEmacs name space.''  However these cases are usually pretty
+obvious.
+
+  All Lisp objects are handled indirectly.  The @code{Lisp_Object}
+type is usually a pointer to a structure, except for a very small number
+of types with immediate representations (currently characters and
+integers).  However, these types cannot be directly operated on in C
+code, either, so they can also be considered indirect.  Types that do
+not have an immediate representation always have a C typedef
+@code{Lisp_@var{type}} for a corresponding structure.
+@c #### mention l(c)records here?
+
+  In older code, it was common practice to pass around pointers to
+@code{Lisp_@var{type}}, but this is now deprecated in favor of using
+@code{Lisp_Object} for all function arguments and return values that are
+Lisp objects.  The @code{X@var{type}} macro is used to extract the
+pointer and cast it to @code{(Lisp_@var{type} *)} for the desired type.
+
+  @strong{Convention}: macros whose names begin with @samp{X} operate on
+@code{Lisp_Object}s and do no type-checking.  Many such macros are type
+extractors, but others implement Lisp operations in C (@emph{e.g.},
+@code{XCAR} implements the Lisp @code{car} function).  These are unsafe,
+and must only be used where types of all data have already been checked.
+Such macros are only applied to @code{Lisp_Object}s.  In internal
+implementations where the pointer has already been converted, the
+structure is operated on directly using the C @code{->} member access
+operator.
+
+  The @code{@var{type}P}, @code{CHECK_@var{type}}, and
+@code{CONCHECK_@var{type}} macros are used to test types.  The first
+returns a Boolean value, and the latter signal errors.  (The
+@samp{CONCHECK} variety allows execution to be CONtinued under some
+circumstances, thus the name.)  Functions which expect to be passed user
+data invariably call @samp{CHECK} macros on arguments.
+
+  There are many types of specialized Lisp objects implemented in C, but
+the most pervasive type is the @dfn{symbol}.  Symbols are used as
+identifiers, variables, and functions.
+
+  @strong{Convention}: Global variables whose names begin with @samp{Q}
+are constants whose value is a symbol.  The name of the variable should
+be derived from the name of the symbol using the same rules as for Lisp
+primitives.  Such variables allow the C code to check whether a
+particular @code{Lisp_Object} is equal to a given symbol.  Symbols are
+Lisp objects, so these variables may be passed to Lisp primitives.  (An
+alternative to the use of @samp{Q...} variables is to call the
+@code{intern} function at initialization in the
+@code{vars_of_@var{module}} function, which is hardly less efficient.)
+
+  @strong{Convention}: Global variables whose names begin with @samp{V}
+are variables that contain Lisp objects.  The convention here is that
+all global variables of type @code{Lisp_Object} begin with @samp{V}, and
+no others do (not even integer and boolean variables that have Lisp
+equivalents). Most of the time, these variables have equivalents in
+Lisp, which are defined via the @samp{DEFVAR} family of macros, but some
+don't.  Since the variable's value is a @code{Lisp_Object}, it can be
+passed to Lisp primitives.
+
+  The implementation of Lisp primitives is more complex.
+@strong{Convention}: Global variables with names beginning with @samp{S}
+contain a structure that allows the Lisp engine to identify and call a C
+function.  In modern versions of XEmacs, these identifiers are almost
+always completely hidden in the @code{DEFUN} and @code{SUBR} macros, but
+you will encounter them if you look at very old versions of XEmacs or at
+GNU Emacs.  @strong{Convention}: Functions with names beginning with
+@samp{F} implement Lisp primitives.  Of course all their arguments and
+their return values must be Lisp_Objects.  (This is hidden in the
+@code{DEFUN} macro.)
+
+
 @node General Coding Rules
 @section General Coding Rules
 @cindex coding rules, general
@@ -2406,10 +2500,15 @@ XEmacs crash!].)
 @code{defsymbol()} are no problem, but some linkers will complain about
 multiply-defined symbols.  The most insidious aspect of this is that
 often the link will succeed anyway, but then the resulting executable
-will sometimes crash in obscure ways during certain operations!  To
-avoid this problem, declare any symbols with common names (such as
+will sometimes crash in obscure ways during certain operations!
+
+To avoid this problem, declare any symbols with common names (such as
 @code{text}) that are not obviously associated with this particular
-module in the module @file{general.c}.
+module in the file @file{general-slots.h}.  The ``-slots'' suffix
+indicates that this is a file that is included multiple times in
+@file{general.c}.  Redefinition of preprocessor macros allows the
+effects to be different in each context, so this is actually more
+convenient and less error-prone than doing it in your module.
 
   Global variables whose names begin with @samp{V} are variables that
 contain Lisp objects.  The convention here is that all global variables
@@ -4986,7 +5085,7 @@ respectively.  This is currently in beta.
 
 @file{mule-mcpath.c} provides some functions to allow for pathnames
 containing extended characters.  This code is fragmentary, obsolete, and
-completely non-working.  Instead, @var{pathname-coding-system} is used
+completely non-working.  Instead, @code{pathname-coding-system} is used
 to specify conversions of names of files and directories.  The standard
 C I/O functions like @samp{open()} are wrapped so that conversion occurs
 automatically.
@@ -5315,7 +5414,7 @@ different section of code.
 
 If you don't understand whether to @code{GCPRO} in a particular
 instance, ask on the mailing lists.  A general hint is that @code{prog1}
-is the canonical example
+is the canonical example.
 
 @cindex garbage collection, conservative
 @cindex conservative garbage collection
index 7ea6cc4..cac8e56 100644 (file)
@@ -579,7 +579,7 @@ name.
   If you have made extensive changes to a file and then change your mind
 about them, you can get rid of them by reading in the previous version
 of the file with the @code{revert-buffer} command.  @xref{Reverting, ,
-Reverting a Buffer, xemacs, The XEmacs Lisp Reference Manual}.
+Reverting a Buffer, xemacs, The XEmacs User's Manual}.
 
 @deffn Command revert-buffer &optional check-auto-save noconfirm preserve-modes
 This command replaces the buffer text with the text of the visited
index 3263dbe..e34d3ff 100644 (file)
@@ -1244,7 +1244,7 @@ This function reads in an audio file and adds it to @code{sound-alist}.
 The sound file must be in the Sun/NeXT U-LAW format.  @var{sound-name}
 should be a symbol, specifying the name of the sound.  If @var{volume}
 is specified, the sound will be played at that volume; otherwise, the
-value of @var{bell-volume} will be used.
+value of @code{bell-volume} will be used.
 @end deffn
 
 @defun play-sound sound &optional volume device
index 827fca0..5099e92 100644 (file)
@@ -431,21 +431,21 @@ A function that decodes a LDAP boolean string representation
 @end defun
 
 @defun ldap-decode-string str
-Decode a string @var{str} according to @var{ldap-coding-system}.
+Decode a string @var{str} according to @code{ldap-coding-system}.
 @end defun
 
 @defun ldap-encode-string str
-Encode a string @var{str} according to @var{ldap-coding-system}.
+Encode a string @var{str} according to @code{ldap-coding-system}.
 @end defun
 
 @defun ldap-decode-address str
-Decode an address @var{str} according to @var{ldap-coding-system} and
+Decode an address @var{str} according to @code{ldap-coding-system} and
 replacing $ signs with newlines as specified by LDAP encoding rules for
 addresses.
 @end defun
 
 @defun ldap-encode-address str
-Encode an address @var{str} according to @var{ldap-coding-system} and
+Encode an address @var{str} according to @code{ldap-coding-system} and
 replacing newlines with $ signs as specified by LDAP encoding rules for
 addresses.
 @end defun
index 538ac59..6cbad13 100644 (file)
@@ -263,9 +263,9 @@ Packaging
 
 Package Overview
 
-* The User's View::
-* The Library Maintainer's View::
-* The Package Release Engineer's View::
+* The User View::
+* The Library Maintainer View::
+* The Package Release Engineer View::
 
 The Library Maintainer's View
 
@@ -275,9 +275,8 @@ The Library Maintainer's View
 
 Creating Packages
 
-* package-compile.el::
-* package-info.in Fields::
-* Makefile Variables::
+* package-info.in::             package-info.in
+* Makefile::                    @file{Makefile}
 * Makefile Targets::
 
 Lisp Data Types
@@ -947,7 +946,7 @@ Specifiers
 * Retrieving Specifications::  Querying a specifier's specifications.
 * Specifier Instancing Functions::
                                Functions to instance a specifier.
-* Specifier Example::          Making all this stuff clearer.
+* Specifier Examples::         Making all this stuff clearer.
 * Creating Specifiers::                Creating specifiers for your own use.
 * Specifier Validation Functions::
                                Validating the components of a specifier.
index b22c287..18212de 100644 (file)
@@ -508,7 +508,7 @@ However, if @var{force} is non-@code{nil}, then @code{mark} returns the
 mark position anyway---or @code{nil}, if the mark is not yet set for
 the buffer.
 
-(Remember that if @var{zmacs-regions} is @code{nil}, the mark is
+(Remember that if @code{zmacs-regions} is @code{nil}, the mark is
 always active as long as it exists, and the @var{force} argument
 will have no effect.)
 
@@ -687,8 +687,8 @@ these functions, however.  A command designed to operate on a region
 should normally use @code{interactive} with the @samp{r} specification
 to find the beginning and end of the region.  This lets other Lisp
 programs specify the bounds explicitly as arguments and automatically
-respects the user's setting for @var{zmacs-regions}.  (@xref{Interactive
-Codes}.)
+respects the user's setting for @code{zmacs-regions}.
+(@xref{Interactive Codes}.)
 
 @defun region-beginning &optional buffer
 This function returns the position of the beginning of @var{buffer}'s
@@ -730,7 +730,7 @@ region or on something else (e.g. the word or paragraph at point).
 @defvar zmacs-region-stays
 If a command sets this variable to true, the currently active region
 will remain activated when the command finishes. (Normally the region is
-deactivated when each command terminates.) If @var{zmacs-regions} is
+deactivated when each command terminates.) If @code{zmacs-regions} is
 false, however, this has no effect.  Under normal circumstances, you do
 not need to set this; use the interactive specification @samp{_}
 instead, if you want the region to remain active.
@@ -740,15 +740,15 @@ instead, if you want the region to remain active.
 This function activates the region in the current buffer (this is
 equivalent to activating the current buffer's mark).  This will normally
 also highlight the text in the active region and set
-@var{zmacs-region-stays} to @code{t}. (If @var{zmacs-regions} is false,
-however, this function has no effect.)
+@code{zmacs-region-stays} to @code{t}. (If @code{zmacs-regions} is
+false, however, this function has no effect.)
 @end defun
 
 @defun zmacs-deactivate-region
 This function deactivates the region in the current buffer (this is
 equivalent to deactivating the current buffer's mark).  This will
 normally also unhighlight the text in the active region and set
-@var{zmacs-region-stays} to @code{nil}. (If @var{zmacs-regions} is
+@code{zmacs-region-stays} to @code{nil}. (If @code{zmacs-regions} is
 false, however, this function has no effect.)
 @end defun
 
@@ -768,21 +768,21 @@ happens as a result of a command that activates the region, such as
 @code{set-mark-command}, @code{activate-region}, or
 @code{exchange-point-and-mark}.) Note that calling
 @file{zmacs-activate-region} will call this hook, even if the region is
-already active.  If @var{zmacs-regions} is false, however, this hook
+already active.  If @code{zmacs-regions} is false, however, this hook
 will never get called under any circumstances.
 @end defvar
 
 @defvar zmacs-deactivate-region-hook
 This normal hook is called when an active region becomes inactive.
 (Calling @file{zmacs-deactivate-region} when the region is inactive will
-@emph{not} cause this hook to be called.)  If @var{zmacs-regions} is
+@emph{not} cause this hook to be called.)  If @code{zmacs-regions} is
 false, this hook will never get called.
 @end defvar
 
 @defvar zmacs-update-region-hook
 This normal hook is called when an active region is "updated" by
 @code{zmacs-update-region}.  This normally gets called at the end
-of each command that sets @var{zmacs-region-stays} to @code{t},
+of each command that sets @code{zmacs-region-stays} to @code{t},
 indicating that the region should remain activated.  The motion
 commands do this.
 @end defvar
index 53d1ef7..4a00115 100644 (file)
@@ -677,14 +677,14 @@ accelerator keys can be used regardless of the value of this variable.
 precedence over bindings in the current keymap(s).  @code{menu-fallback} means
 that bindings in the current keymap take precedence over menu accelerator keys.
 Thus a top level menu with an accelerator of "T" would be activated on a
-keypress of Meta-t if @var{menu-accelerator-enabled} is @code{menu-force}.
-However, if @var{menu-accelerator-enabled} is @code{menu-fallback}, then
+keypress of Meta-t if @code{menu-accelerator-enabled} is @code{menu-force}.
+However, if @code{menu-accelerator-enabled} is @code{menu-fallback}, then
 Meta-t will not activate the menubar and will instead run the function
 transpose-words, to which it is normally bound.
 
 The default value is @code{nil}.
 
-See also @var{menu-accelerator-modifiers} and @var{menu-accelerator-prefix}.
+See also @code{menu-accelerator-modifiers} and @code{menu-accelerator-prefix}.
 @end defvar
 
 @defvar menu-accelerator-map
@@ -698,12 +698,12 @@ accelerator in order for the top level menu to be activated in response to
 a keystroke.  The default value of @code{(meta)} mirrors the usage of the alt key
 as a menu accelerator in popular PC operating systems.
 
-The modifier keys in @var{menu-accelerator-modifiers} must match exactly the
+The modifier keys in @code{menu-accelerator-modifiers} must match exactly the
 modifiers present in the keypress.  The only exception is that the shift
-modifier is accepted in conjunction with alphabetic keys even if it is not
-a menu accelerator modifier.
+modifier is accepted in conjunction with alphabetic keys even if it is not a
+menu accelerator modifier.
 
-See also @var{menu-accelerator-enabled} and @var{menu-accelerator-prefix}.
+See also @code{menu-accelerator-enabled} and @code{menu-accelerator-prefix}.
 @end defvar
 
 @defvar menu-accelerator-prefix
index 6258217..afbd666 100644 (file)
@@ -1028,7 +1028,7 @@ base of natural logarithms.
 
 @defun log number &optional base
 This function returns the logarithm of @var{number}, with base @var{base}.
-If you don't specify @var{base}, the base @var{e} is used.  If @var{number}
+If you don't specify @var{base}, the base @code{e} is used.  If @var{number}
 is negative, the result is a NaN.
 @end defun
 
index fec092c..89297d9 100644 (file)
@@ -44,13 +44,15 @@ become established.)
 
 @menu
 Introduction:
-* Package Overview::       Lisp Libraries and Packages.
+* Package Overview::            Lisp Libraries and Packages.
 
 Packaging Lisp Libraries:
-* Package Terminology::    Basic stuff.
-* Building Packages::      Turn packaged source into a tarball.
-* Local.rules File::       Tell the @xpms{} about your host.
-* Creating Packages::      Tell the @xpms{} about your package.
+* Package Terminology::         Basic stuff.
+* Building Packages::           Turn packaged source into a tarball.
+* Makefile Targets::            Package @file{Makefile} targets
+* Local.rules File::            Tell the @xpms{} about your host.
+* Creating Packages::           Tell the @xpms{} about your package.
+* Documenting Packages::        Explain your package to users and hackers.
 @c * History::                     History of the @xpms{}
 @c * Installation::                Installing the @xpms{} with your (X)Emacs.
 @c * Configuration::               Configuring the @xpms{} for use.
@@ -96,14 +98,14 @@ easier.  This manual documents the requirements and the tools that the
 @xpms{} provides to ensure that a package satisfies them.
 
 @menu
-* The User's View::
-* The Library Maintainer's View::
-* The Package Release Engineer's View::
+* The User View::
+* The Library Maintainer View::
+* The Package Release Engineer View::
 @end menu
 
 
-@node The User's View, The Library Maintainer's View, , Package Overview
-@section The User's View
+@node The User View, The Library Maintainer View, , Package Overview
+@section The User View
 
 @strong{N.B.}  Much of the discussion in this section undoubtedly
 belongs elsewhere, @ref{Packages,,,xemacs}.
@@ -156,11 +158,10 @@ hierarchies may be installed under version directories, @emph{e.g.}
 @file{/usr/local/lib/xemacs-21.4.6/}.
 
 Users who do not have sufficient privilege to install packages in the
-system hierarchies may install package hierarchies under
-@file{~/.xemacs}.  At present only the @file{xemacs-packages} and
-@file{mule-packages} hierarchies are supported, but it might make sense
-to extend this to support @file{infodock-packages} and
-@file{site-packages} hierarchies in the future.
+system hierarchies may install package hierarchies under @file{~/.xemacs}.
+At present only the @file{xemacs-packages}, @file{mule-packages}, and
+@file{site-packages} hierarchies are supported, but it might make sense to
+extend this to support @file{infodock-packages} hierarchies in the future.
 
 The package hierarchies are not searched directly for libraries to be
 loaded; this would be very costly.  Instead, the hierarchies are ordered
@@ -238,8 +239,8 @@ easiest to think of the package hierarchy searching algorithm as
 receiving a @code{load-path} initialized to the core Lisp directories.
 
 
-@node The Library Maintainer's View, The Package Release Engineer's View, The User's View, Package Overview
-@section The Library Maintainer's View
+@node The Library Maintainer View, The Package Release Engineer View, The User View, Package Overview
+@section The Library Maintainer View
 
 From the library maintainer's viewpoint, the advantages to the @xpms{}
 stem from the convenience to the user of installation and upgrade.
@@ -266,12 +267,12 @@ packages.  The package control files describe the structure of the
 package's source tree and provide administrative information.
 
 @menu
-* Infrastructure::    Global Makefiles and common rules.
-* Control Files::     Package-specific Makefiles and administrative files.
-* Obtaining::         Obtaining the @xpms{} and required utilities.
+* Infrastructure::              Global Makefiles and common rules.
+* Control Files::               Package-specific Makefiles and administrative files.
+* Obtaining::                   Obtaining the @xpms{} and required utilities.
 @end menu
 
-@node Infrastructure, Control Files, , The Library Maintainer's View
+@node Infrastructure, Control Files, , The Library Maintainer View
 @subsection Infrastructure
 
 In order to get the greatest benefit from the @xpms{}, a library
@@ -303,8 +304,8 @@ tree are given below, @ref{Control Files}.
 
 The @file{packages} directory contains some auxiliary Lisp libraries
 used in the compilation and packaging process.  The content of these
-libraries is of interest primarily to the packaging engineers, @ref{The
-Package Release Engineer's View}.
+libraries is of interest primarily to the packaging engineers, @ref{The 
+Package Release Engineer View}.
 
 Finally, the @file{packages}, @file{packages/xemacs-packages}, and
 @file{packages/mule-packages} directories contain @file{Makefile}s and
@@ -324,6 +325,11 @@ bundling of ``sumo'' tarballs
 @item iterate.rules
 controls recursive builds of multiple packages
 
+@item meta-iterate.rules
+This is used by higher-level subdirectories that do not directly
+contain packages.  Subdirectories directly containing packages should
+use iterate.rules instead.
+
 @item XEmacs.rules
 provides the rules for building and packaging.  Included by all package
 @file{Makefile}s.
@@ -340,10 +346,14 @@ a template for Local.rules, liberally commented
 consistency checking for @file{Local.rules}, included by both the
 top-level @file{Makefile} and by @file{XEmacs.rules}.
 
+@item Local.rules.inc
+a file to @code{include} in package @file{Makefile}s to be able to get
+at variables in @file{Local.rules} @emph{before} including
+@file{XEmacs.rules}. 
+
 @c #### Add to "issues"
 @item package-compile.el
-compile environment (@emph{e.g.}, load-path) setup.  It is very bogus
-that this is here, an alternative mechanism is likely to be provided.
+compile environment (@emph{e.g.}, load-path) setup.
 @end table
 
 Of these, only @file{Local.rules} and @file{package-compile.el} need to
@@ -354,7 +364,7 @@ modifications to @file{package-compile.el} need to be done for each
 package and are discussed in the next section, @ref{Control Files}.
 
 
-@node Control Files, Obtaining, Infrastructure, The Library Maintainer's View
+@node Control Files, Obtaining, Infrastructure, The Library Maintainer View
 @subsection Control Files
 
 Each package source must contain a number of control files in the
@@ -386,16 +396,13 @@ irregularly (dependences and even version numbers) are set as
 Not strictly required, but normally a ChangeLog will be added by the
 XEmacs package maintainer if different from the upstream maintainer.
 
-@item package-compile.el
-compile environment (@emph{e.g.}, load-path) setup.  It is very bogus
-that this is here, an alternative mechanism is likely to be provided.
-
 @item _pkg.el
 Generated.  Simply does a @code{package-provide} for the package.
 
-@item _auto-autoloads.el
+@item auto-autoloads.el
 Generated.  Read when XEmacs is initialized, and provides autoloads for
-all defuns and other specially-marked forms in the sources.
+defuns and other forms in the sources that are marked with an
+@dfn{autoload cookie} (@samp{;;;###autoload}.
 
 @item custom-loads.el
 Generated.  Read when XEmacs is initialized, and informs the Customize
@@ -404,7 +411,7 @@ forms for the usre configuration variables of the package.
 @end table
 
 
-@node Obtaining, , Control Files, The Library Maintainer's View
+@node Obtaining, , Control Files, The Library Maintainer View
 @subsection Obtaining the @xpms{} and Required Utilities
 
 Currently both the infrastructure for creating XEmacs packages and the
@@ -412,12 +419,12 @@ package sources themselves are available only by CVS.  See
 @uref{http://www.xemacs.org/Develop/cvsaccess.html} for more
 intformation.
 
-The @xpms{} currently requires GNU @file{make}, and probably XEmacs, to
-build packages.
+The @xpms{} currently requires GNU @file{make}, and XEmacs, to build
+packages.
 
 
-@node The Package Release Engineer's View, , The Library Maintainer's View, Package Overview
-@subsection The Package Release Engineer's View
+@node The Package Release Engineer View, , The Library Maintainer View, Package Overview
+@subsection The Package Release Engineer View
 
 The XEmacs Package Release Engineer is responsible for keeping the
 system coherent.  The changes to @file{packages/package-compile.el} and
@@ -433,8 +440,6 @@ in the @code{xemacs-builds} module in the CVS repository.
 @c #### To be completed.
 
 
-@c #### The following section is lifted verbatim from the XEmacs User's
-@c      Manual, file packages.texi.
 @node Package Terminology, Building Packages, Package Overview, Packaging
 @comment  node-name,  next,  previous,  up
 @heading Package Terminology:
@@ -483,8 +488,8 @@ files necessary for rebuilding byte-compiled lisp and creating tarballs
 for distribution or installation.  This is all of the package author's
 source code plus all of the files necessary to build distribution
 tarballs (Unix Tar format files, gzipped for space savings).
-@c #### This next is an Evile Practice and should be discontinued.
-(Occasionally sources that are not relevant to XEmacs are removed.)
+(Occasionally sources that are not relevant to XEmacs are usually
+renamed to @file{file.upstream}.)
 
 Currently, source packages are only available via CVS.  See
 @url{http://www.xemacs.org/Develop/cvsaccess.html} for details.
@@ -501,9 +506,7 @@ generic.  At the present time only Mule packages need be treated
 specially, and even those only if they contain multibyte characters.
 
 
-@c #### The following section is lifted verbatim from the XEmacs User's
-@c      Manual, file packages.texi.
-@node Building Packages, Local.rules File, Package Terminology, Packaging
+@node Building Packages, Makefile Targets, Package Terminology, Packaging
 @comment  node-name,  next,  previous,  up
 @cindex building packages
 @cindex package building
@@ -519,9 +522,9 @@ checking out the @file{packages} module.
 @item GNU install 
 (or a BSD compatible install program).
 @item GNU make 
-(3.75 or later preferred).
+(3.79 or later preferred).
 @item makeinfo 
-(1.68 from texinfo-3.11 or later required, 1.69 from Texinfo 4 preferred).
+(4.2 from texinfo-4.2)
 @item GNU tar
 (or equivalent).
 @item GNU gzip
@@ -532,63 +535,85 @@ checking out the @file{packages} module.
 
 And of course, XEmacs, 21.0 or higher.
 
-@subsection What You Can Do With Source Packages
+@section What You Can Do With Source Packages
 
 The packages CVS sources are most useful for creating XEmacs package
 tarballs for installation into your own XEmacs installations or for
 distributing to others.
 
-The supported @file{make} targets are:
+It should be noted that most of the package @file{Makefile}s do
+@emph{not} need to contain @emph{any} target rules.  Everything is
+handled from the @file{XEmacs.rules} file, located in the toplevel
+directory of the packages source tree.
 
-@table @code
-@item all
-Bytecompile all files, build and bytecompile byproduct files like
-@file{auto-autoloads.el} and @file{custom-load.el}.  Create info version
-of TeXinfo documentation if present.
 
-@c #### Why do we need this _and_ the binkit target?
+@node Makefile Targets, Local.rules File, Building Packages, Packaging
+@cindex package makefile targets
+@chapter @file{Makefile} targets
+The following targets can be used when running @code{make} to build the
+packages: 
+
+@table @samp
+@item mostlyclean
+Removes any documentation files that have been processed by @TeX{}.
+
+@item clean
+Does a @code{mostlyclean}, plus removes generated postscript and dvi
+files.  Also removes any generated .elc files, along with the normal
+.elc files in the package and HTML and .info files.
+
+@item distclean
+Use this when preparing a distribution.  It kills anything that can be
+rebuilt. 
+
+@item extraclean
+Does a @code{distclean} and also removes any backup files (@file{*~})
+and @file{core} files.
+
+@item package-info
+Creates the @file{package-info} file from the @file{package-info.in} and
+writes an entry in the @file{package-index} file.
+
 @item bindist
-Does a @code{make all} as well as create a binary package tarball in the
-staging directory.
+Builds the package, including any Texinfo documentation (info format),
+writes an entry into the @file{package-index} file and builds a tarball
+of the package.  Also writes an entry into @file{setup-packages.ini}
+which is later used in the creation of netinstaller's @file{setup.ini}.
 
 @item install
-Bytecompile all files, build and bytecompile byproduct files like
-@file{auto-autoloads.el} and @file{custom-load.el}.  Create info version
-of TeXinfo documentation if present.  And install everything into the
-staging directory.
-
-@item srckit
-Usually simply depends on @code{srckit-std}, with no actions.  This does
-a @code{make distclean} and creates a package source tarball in the
-staging directory.  This is generally only of use for package
-maintainers.
+Builds and installs a package
+
+@item install-only
+Doesn't build anything, just installs it.
+
+@item autoloads
+Generate the package's @file{auto-autoloads.el} file.
 
 @item binkit
-May depend on @code{binkit-sourceonly}, @code{binkit-sourceinfo},
-@code{binkit-sourcedata}, or @code{binkit-sourcedatainfo}, with no
-actions. @code{sourceonly} indicates there is nothing to install in a
-data directory or info directory.  @code{sourceinfo} indicates that
-source and info files are to be installed.  @code{sourcedata} indicates
-that source and etc (data) files are to be installed.
-@code{sourcedatainfo} indicates source, etc (data), and info files are
-to be installed.  A few packages have needs beyond the basic templates
-so this is not yet complete.
-
-@item dist
-Runs the rules @code{srckit} followed by @code{binkit}.  This is
-primarily of use by XEmacs maintainers producing files for distribution.
+Creates the directories needed for installation and copies the files
+there.  Basically this is an alias for @code{install-only}.
 
-@item clean
-Remove all built files except @file{auto-autoloads.el} and
-@file{custom-load.el}.
+@item html
+Builds the HTML versions of the documentation.
 
-@item distclean
-Remove all created files.
+@item compile
+Does most of the work.  Builds the elcs, infos at a minimum.
 @end table
 
-@c #### The following section is lifted verbatim from the XEmacs User's
-@c      Manual, file packages.texi.
-@node Local.rules File, Creating Packages, Building Packages, Packaging
+@subsection The targets that most people would be interested in would be:
+
+@itemize @bullet
+@item @code{all}
+@item @code{bindist}
+@item @code{html}
+@item @code{install}
+@item @code{install-only}
+@item @code{clean}
+@item @code{distclean}
+@end itemize
+
+
+@node Local.rules File, Creating Packages, Makefile Targets, Packaging
 @comment  node-name,  next,  previous,  up
 @cindex local.rules
 @heading The Local.rules File:
@@ -597,446 +622,424 @@ the local configuration and environment.  To create @file{Local.rules},
 simply copy @file{Local.rules.template} from that directory to
 @file{Local.rules} and edit it to suit your needs.
 
-These are the variables in @file{Local.rules} that you will need to
-provide values for.  The following variables control which packages will
-be built:
-
-@table @var
-@item XEMACS_PACKAGES
-The default is @samp{xemacs-packages}, which results in the set in
-the @file{xemacs-packages/Makefile} @code{PACKAGES} variable.
+These are the variables in @file{Local.rules} that you may need to
+provide values for:
 
-Otherwise, it should be a list of package source directories prefixed by
-@samp{xemacs-packages}:
+@table @samp
+@item XEMACS
+The name (and path if needed) of the XEmacs binary to use for building
+the packages.  The default is @code{xemacs}.
 
-@example
-XEMACS_PACKAGES = xemacs-packages/xemacs-base xemacs-packages/bbdb
-@end example
+@item XEMACS_21_5
+This will enable some, as yet, unimplemented features in XEmacs 21.5 and
+above.  For now leave this blank (the default) regardless of the XEmacs
+version you are using.
 
 @item BUILD_WITHOUT_MULE
-The default is the empty value.
+Set this to @samp{t} if you are using a non-Mule XEmacs.  The default is
+that this variable is not set (blank) which means to build @emph{with}
+Mule. 
 
-Building from CVS defaults to building the Mule
-packages.  Set this to 't' if you don't want/have Mule.
+@item XEMACS_NATIVE_NT
+Set this to @samp{t} if you are using a native Microsoft Windows build
+of XEmacs (not a Cygwin build) to build the packages.
+@strong{N.B.} To Windows users, you still need the Cygwin environment to
+actually build the packages.
+
+@item XEMACS_INSTALLED_PACKAGES_ROOT
+Set this to the root of where you want the packages to be installed.
+Under this directory will hang @file{xemacs-packages} and
+@file{mule-packages}.  See @var{NONMULE_INSTALLED_PACKAGES_ROOT} and
+@var{MULE_INSTALLED_PACKAGES_ROOT}.  The default for this is
+@file{/usr/local/lib/xemacs}.  Which may not be what you want if you are
+developing XEmacs.  To quote the comments in
+@file{Local.rules.template}: 
+
+@quotation
+If you are developing XEmacs, you probably don't want to install the
+packages under /usr/local, which is where the stable, released version
+of XEmacs goes.  Instead, we suggest a layout as described in the base
+README file of recent versions of XEmacs.  In a nutshell, we suggest
+you put your source under /src/xemacs, and under this put the package
+sources in package-src/, and the installed packages in xemacs-packages/
+and mule-packages/.  If you do everything this way, you might want to
+set things as follows:
+
+XEMACS_INSTALLED_PACKAGES_ROOT = $@{XEMACS_PACKAGES_BASE@}/..
+
+which puts the xemacs-packages/ and mule-packages/ directories as sisters
+of the package-src/ directory, and you have to tell configure the location
+of the installed packages using `--package-path', something like
+
+configure --package-path=/src/xemacs/xemacs-packages;/src/xemacs/mule-packages
+@end quotation
 
-@item MULE_PACKAGES
-The default is @samp{mule-packages}, which results in the set in
-the @file{mule-packages/Makefile} @code{PACKAGES} variable.
+@item symlink
+The default is unset (blank).  If you set this to @samp{t} then
+@code{make install} will create a @dfn{symlink farm} of the installed
+packages under @var{XEMACS_INSTALLED_PACKAGES_ROOT}.  Obviously, for
+this to work, your system has to support symbolic links.  This is as
+close as you can get to @dfn{running in place} for the packages.
+
+@item NONMULE_INSTALLED_PACKAGES_ROOT
+This is where the non-Mule packages get installed to.  The default is
+@file{$@{XEMACS_INSTALLED_PACKAGES_ROOT@}/xemacs-packages}. 
+
+@item MULE_INSTALLED_PACKAGES_ROOT
+This is where the Mule packages get installed to.  The default is
+@file{$@{XEMACS_INSTALLED_PACKAGES_ROOT@}/mule-packages}. 
 
-Otherwise, it should be a list of package source directories prefixed by
-@samp{mule-packages}:
+@item NONMULE_PACKAGES
+A whitespace separated list of non-Mule packages to build/install.
 
 @example
-MULE_PACKAGES = mule-packages/mule-base mule-packages/skk
+NONMULE_PACKAGES = bbdb gnus xemacs-base prog-modes
 @end example
 
-@item PACKAGE_INDEX
-The default is @file{package-index}.
-
-If you want the package index file to have a different name, change
-this.  This is probably a bad idea unless you are a packages release
-engineer, as it will confuse the package administration tools.
-@end table
+The value for this variable can also be the symbol
+@samp{xemacs-packages}, which means to build/install @emph{all} of the
+non-Mule packages.  The default is @samp{xemacs-packages}.
 
-The following variables determine where files are installed and how they
-are installed.  Several of the defaults use the variable
-@var{XEMACS_PACKAGES_BASE}.  Never set this variable in
-@file{Local.rules}; it is automatically set in @file{XEmacs.rules}.
+@item MULE_PACKAGES
+A whitespace separated list of Mule packages to build/install.
 
-@table @asis
-@item @var{XEMACS_STAGING}
-The default is @file{$@{XEMACS_PACKAGES_BASE@}/../xemacs-packages}.
+@example
+MULE_PACKAGES = mule-base leim locale
+@end example
 
-Generic packages will be installed here.  This can be the final
-destination for files or symlinks (if the packages are being installed
-locally), or a clean staging area for building tarballs.
+The value for this variable can also be the symbol
+@samp{mule-packages}, which means to build/install @emph{all} of the
+Mule packages.  The default is @samp{mule-packages}.
 
-@strong{N.B.}  @samp{make bindist} ignores this variable.  It should be
-handled by the administration utilities, but currently isn't.
+@item PACKAGE_INDEX
+The name of the package-index file.  The default is @file{package-index}
+and you probably don't need to worry about changing it.
 
-@item @var{MULE_STAGING}
+@item INSTALL
+The path to a BSD compatible install program.  The default is
+@code{install -c}.
 
-The default is @file{$@{XEMACS_PACKAGES_BASE@}/../mule-packages}.
+@item TAR
+The path to GNU/tar.  The default is @code{tar}.
 
-Packages requiring Mule to load correctly will be installed here.  This
-can be the final destination for files or symlinks (if the packages are
-being installed locally), or a clean staging area for building tarballs.
+@item BZIP2
+The path to the bzip2 compression program.  The default is unset
+(blank).  If this is set @file{.tar.bz2} archives will be built 
+@emph{in addition to} the @file{.tar.gz} archives.
 
-@strong{N.B.}  @samp{make bindist} ignores this variable.  It should be
-handled by the administration utilities, but currently isn't.
+@item EXCLUDES
+For things that you @emph{don't} want to go into the package tarballs.
+It takes the same format as GNU/tar's @code{--exclude} option.  The
+default is:
 
-@item symlink
-The default is the empty value.
-
-Set this to 't' if you want to simulate ``running in place.''  It is
-currently not possible to ask XEmacs to use any package source tree as
-an automatically configured member of @code{load-path}, and it is
-unlikely that complex trees such as that of the Gnus package will ever
-be able to ``run in place.''  This variable, when set to `t', causes the
-build process to create a symlink farm otherwise identical to an
-installed tree of binary packages.  Thus it is purely a space
-optimization.
-
-Setting this is incompatible with @samp{make bindist}.
-@end table
+@example
+EXCLUDES =                                     \
+       --exclude 'CVS'                         \
+       --exclude 'RCS'                         \
+       --exclude 'SCCS'                        \
+       --exclude '*~'                          \
+       --exclude '*.orig'                      \
+       --exclude '*.rej'                       \
+       --exclude '.\#*'
+@end example
 
-The following variables determine how packages are made.
+@item VANILLA
+Set to the XEmacs command line option that forces running in
+@dfn{vanilla} mode.  The default is @samp{-vanilla}.  You wouldn't ever
+need to alter this.
 
-@table @var
-@item XEMACS
-The default is @samp{xemacs}.
+@item BATCH
+How to put XEmacs into @dfn{batch} mode.  It also sets a couple of other
+things and in the normal course of events you wouldn't need to alter
+this from the default which is:
 
-The path to the XEmacs executable you wish to use to compile the
-packages and execute Lisp build scripts.
+@example
+BATCH = $(VANILLA) -batch -eval \
+        '(setq stack-trace-on-error t \
+               load-always-display-messages t \
+               load-ignore-out-of-date-elc-files t \
+               load-show-full-path-in-messages t)'
+@end example
 
-@item XEMACS_NATIVE_NT
-The default is the empty value.
+@item MAKEINFO
+The path to @code{makeinfo}.  The default is @samp{makeinfo}
 
-Set this to 't' if you are building on WinNT.  It controls hairy shell
-quoting in the @file{Makefile}s.
+@item INSTALL_HTML
+Set this to @samp{t} if you want to install HTML versions of the Texinfo
+documentation.  The default is unset (blank).
 
-@item INSTALL
-The default is @samp{install -c}.
+@item TEXI2HTML
+The path to the program that can convert Texinfo source to HTML.  The
+default is @code{texi2html}.
 
-The path to your BSD compatible install program.
+@item TEXI2DVI
+The path to the program that can convert Texinfo source to DVI.  The
+default is @code{texi2dvi}
 
-@item TAR
-The default is @samp{tar}.
+@item DVIPS
+The path to the program that can convert DVI to Postscript.  The default
+is @code{dvips}
 
-The path to your tar program.
+@item TEXI2PDF
+The path to the program that can convert Texinfo source to PDF format.
+The default is @code{texi2pdf}.
 
-@item BZIP2
-The default is the empty value.
+@item TEX
+The path to @TeX{}.  The default is @code{tex}
 
-If unset, bzipped tarballs will not be built.  If this is set to
-something that resolves to a @samp{bzip2} executable, bzip2 tarballs
-will be built @emph{in addition to} @samp{gzip} tarballs.
+@item MSGFMT
+The path to msgfmt.  The default is @code{msgfmt}
 
-@item MAKEINFO
-The default is @samp{makeinfo}.
+@item RCOPY
+The path to your copy command (GNU cp).  The default is dependent on
+whether or not @var{symlink} is set (@samp{t}).
 
-The path to your @file{makeinfo} program
+If @var{symlink} is unset (blank), @var{RCOPY}'s default is 
+@code{cp -af}.  If @var{symlink} is set (@samp{t}), @var{RCOPY}'s
+default is @code{cp --force --recursive --symbolic-link}.
 @end table
 
+It should be noted that in most cases the defaults should be fine.  Most
+people will probably only need to alter:
 
-@c #### The following section is lifted verbatim from the XEmacs User's
-@c      Manual, file packages.texi.
-@node Creating Packages, Issues, Local.rules File, Packaging
+@itemize @bullet
+@item @var{XEMACS_INSTALLED_PACKAGES_ROOT}
+@item @var{NONMULE_INSTALLED_PACKAGES_ROOT}
+@item @var{MULE_INSTALLED_PACKAGES_ROOT}
+@item @var{NONMULE_PACKAGES}
+@item @var{MULE_PACKAGES}
+@end itemize
+
+@node Creating Packages, Documenting Packages, Local.rules File, Packaging
 @comment  node-name,  next,  previous,  up
 @cindex creating packages
-@heading Creating Packages:
+@chapter Creating Packages:
 Creating a package from an existing Lisp library is not very difficult.
 
 In addition to the Lisp libraries themselves, you need a
-@file{package-info.in} file and a simple @file{Makefile}.  The rest is
+@ref{package-info.in} file and a simple @ref{Makefile}.  The rest is
 done by @file{XEmacs.rules}, part of the packaging system
 infrastructure.
 
-@file{package-info.in} contains a single Lisp form like this:
+@menu
+* package-info.in::             package-info.in
+* Makefile::                    @file{Makefile}
+@end menu
+
+@node package-info.in, Makefile,,Creating Packages
+@chapter package-info.in
+@cindex package-info.in
+@cindex package-info
+@file{package-info.in} contains information that gets injected into the
+@file{package-index} file when @code{make bindist} is run.  Here is a
+real world example from the xemacs-base package (a description of each
+field follows the example):
 
 @example
-(NAME                               ; your package's name
+(xemacs-base
   (standards-version 1.1
-   version VERSION                  ; Makefile
-   author-version AUTHOR_VERSION    ; Makefile
-   date DATE                        ; Makefile
-   build-date BUILD_DATE            ; generated
-   maintainer MAINTAINER            ; Makefile
-   distribution DISTRIBUTION        ; "mule" if MULE is needed,
-                                    ; else "xemacs"
+   version VERSION
+   author-version AUTHOR_VERSION
+   date DATE
+   build-date BUILD_DATE
+   maintainer MAINTAINER
+   distribution xemacs
    priority high
-   category CATEGORY                ; Makefile
+   category CATEGORY
    dump nil
-   description "DESCRIPTION"        ; a one-line period-terminated string
-   filename FILENAME                ; obsolete
-   md5sum MD5SUM                    ; generated
-   size SIZE                        ; generated
-   provides (FEATURE ...)           ; one for every `provides' form
-   requires (REQUIRES)              ; Makefile
-                                    ; NOT run-time dependencies!  These
-                                    ; are files that provide macros or
-                                    ; defsubsts that must be inlined.
+   description "Fundamental XEmacs support, you almost certainly need this."
+   filename FILENAME
+   md5sum MD5SUM
+   size SIZE
+   provides (add-log advice-preload advice annotations assoc case-table chistory comint-xemacs comint compile debug ebuff-menu echistory edmacro ehelp electric enriched env facemenu ffap helper imenu iso-syntax macros novice outline passwd pp regexp-opt regi ring shell skeleton sort thing time-stamp timezone tq xbm-button xpm-button)
+   requires (REQUIRES)
    type regular
 ))
 @end example
 
-You should replace NAME, DISTRIBUTION, DESCRIPTION, and FEATURE ... with
-appropriate values, according to the comments.  As a matter of style,
-the first letter of the description should be capitalized, and the
-string should end with a period.  It need not be a complete sentence
-grammatically.  Fields marked as @samp{obsolete} can be ignored.  Fields
-marked as @samp{generated} are generated by the package construction
-process, and will be filled in automatically.  Fields marked as
-@samp{Makefile} should be set as variables in the @file{Makefile}.
-
-The @samp{provides} can be done automatically, but currently aren't.  It
-would probably be a good idea to set them in the @file{Makefile} (they
-do change, fairly often, but at present they aren't.
-
-The @file{Makefile} is quite stylized.  The idea is similar to an
-@file{Imakefile} or an @code{automake} file: the complexity is hidden in
-generic rules files, in this case the @file{XEmacs.rules} include file
-in the top directory of the packages hierarchy.
-
-An @xpms{} @file{Makefile} has three components.  First, there is a
-variable definition section.  The standard @xpms{} @file{make} variables
-must be defined here for use by the @file{XEmacs.rules} include file.
-Second, the file @file{../../XEmacs.rules} is included.  Finally, the
-@file{make} rules are defined, possibly including additional variable
-definitions for use by the @file{Makefile}.  These always include rules
-for the targets @samp{all}, @samp{binkit}, and @file{srckit}.
-
-Although a number of facilities are available for complex libraries,
-most simple packages' @file{Makefile}s contain a copyright notice, the
-variable definitions mentioned above, and some boilerplate.
+@subheading Description of the Fields in @file{package-info.in}:
+@table @samp
+@item NAME
+The name of the package.  In the case of the example it is
+@samp{xemacs-base}. 
 
-@example
-# Makefile for apackage's lisp code
+@item standards-version
+Part of the internal package infrastructure, its value should always be
+@samp{1.1}.  Do not change this.
+
+@item version
+This is the XEmacs package version number of the package.  It is set
+from the @file{Makefile} variable @var{VERSION}.  This is something that
+the XEmacs Package Release Engineer deals with so there is no need for a
+package maintainer to touch it.  In @file{package-info.in} just put the
+place-marker, @samp{VERSION} here.
+
+@item author-version
+This is the package's internal, or @samp{upstream} version number if it
+has one.  It is set from the @file{Makefile} variable
+@var{AUTHOR_VERSION}. 
+
+@item date
+This is the date of the last change made to the package.  It is
+auto-generated at build time, taken from the package's toplevel
+@file{ChangeLog}. 
 
-# This file is part of XEmacs.
+@item build-date
+The date the package was built.  It is auto-generated.
 
-# 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.
+@item maintainer
+This is the name and email address of the package's maintainer.  It is
+taken from the @file{Makefile} variable @var{MAINTAINER}.
 
-# 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.
+@item distribution
+An unused field, leave as @samp{xemacs}
 
-# 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.
+@item priority
+An unused field, can be any of @samp{high}, @samp{medium}, or
+@samp{low}. 
 
-VERSION = 0.00
-AUTHOR_VERSION = 0.00
-MAINTAINER = A. M. Aintainer <ama@@not.a.doc>
-PACKAGE = apackage
-PKG_TYPE = regular
-REQUIRES = xemacs-base
-CATEGORY = standard
+@item category
+The @samp{category} of the package.  It is taken from the
+@file{Makefile} variable @var{CATEGORY} and can be either
+@samp{standard} for non-Mule packages, or @samp{mule} for Mule
+packages.  The is also provision for @samp{unsupported} in this field
+which would be for packages that XEmacs.org do not distribute.
 
-# All .els should be compiled and packaged.
-ELS = $(wildcard *.el)
-ELCS = $(ELS:.el=.elc)
+@strong{N.B.} As yet, the @xpms{} does @emph{not} support this type of
+package.  It will in the future.
 
-include ../../XEmacs.rules
+@item dump
+Unused.  Always @samp{nil}
 
-all:: $(ELCS) auto-autoloads.elc custom-load.elc
+@item description
+A free form short description of the package.
 
-srckit: srckit-std
+@item filename
+The file name of the package's binary tarball.  It is generated at build
+time by @code{make bindist}.
 
-binkit: binkit-common
-@end example
+@item md5sum
+The MD5 message digest of the package's binary tarball.  Generated at
+build time by @code{make bindist}.
 
-@menu
-* package-compile.el::
-* package-info.in Fields::
-* Makefile Variables::
-* Makefile Targets::
-@end menu
+@item size
+The size in bytes of the package's binary tarball.  Generated at build
+time. 
 
+@item provides
+A whitespace separated list of @emph{all} the features the package
+provides.  Surround the list with parens.
 
-@node package-compile.el, package-info.in Fields, , Creating Packages
+@item requires
+Taken from the @file{Makefile} variable @var{REQUIRES}.  It is a list of
+all the package's dependencies, including any macros and defstructs that
+need to be inlined.
 
-The @xpms{} does not automatically become aware of your package simply
-because there is a new subtree.  If any package, including your own,
-requires any of your files, it must be explicitly added to the compile
-environment or loads/requires that search load-path will fail.  The
-changes that need to be made are
+@samp{REQUIRES} cannot be correctly computed from the calls to
+@code{require} in the package's library sources.  @samp{REQUIRES} is
+used to ensure that all macro and defstruct definitions used by the
+package are available at build time.  This is not merely a matter of
+efficiency, to get the expansions inlined.  In fact, it is
+@emph{impossible} to call a macro by name in byte-compiled Emacs Lisp
+code.  Thus, if the macro expansion is not inlined, the call will result
+in an error at run-time!  Thus, packages providing libraries that would
+be loaded because of autoload definitions must also be included.
 
-@table @strong
-@item an entry in @code{package-directory-map}
-This tells the @xpms{} which distribution (currently
-@samp{xemacs-packages} or @samp{mule-packages}) your package is found
-in.  It then looks in the distribution subdirectory whose name is the
-same as the package's.
+@item type
+Can either be @samp{regular} for a regular package, or
+@samp{single-file} for a single file package.
 
-@item an entry in the @code{cond} in @code{package-name-to-directory}
-This is optional; it is necessary only if you keep your Lisp code
-somewhere other than the top-level directory of the package's source
-tree, eg, in @file{packages/xemacs-packages/@var{PACKAGE}/lisp}.
+@strong{N.B.} This doesn't refer to the number of lisp files in a
+package.  A single-file package can have multiple lisp files in it.
+@xref{Package Terminology}.
 @end table
 
-This only needs to be done once, when the package is first added to the
-@xpms{}.  (Well, when you randomly change the subdirectory layout, too.)
-Your changes to @file{package-compile.el} must be cleared and checked in
-by the XEmacs Package Release Engineer before your package will build
-correctly from a fresh checkout.
-
-This is unfortunate; it works pretty well once set up, but can cause
-confusion when first building a package in the @xpms{} context.  In
-particular, if the @code{package-directory-map} entry for a required
-package
-@c #### including the package itself?
-is not found, the necessary requires will not be executed by
-@file{package-compile.el}.  If required functions are executed (under
-@code{eval-when-compile}), they won't be found and the compile will
-fail.  If required function is actually a macro, the byte compiler will
-not recognize that, compile a function call to the macro.  This will
-cause a run-time error because the byte-code interpreter does not know
-how to execute macros.  (Macros can always be expanded at compile-time,
-and this is more efficient.)
-
-If your package keeps some or all Lisp code somewhere other than the top
-directory, then an entry in @code{package-name-to-directory} is also
-necessary, or requires will fail, leading to the problems just described.
-
-
-@node package-info.in Fields, Makefile Variables, package-compile.el, Creating Packages
-
-The @file{package-info.in} structure is simply Lisp data, to be read by
-a Lisp script, have values substituted for variables, and then written
-out (appropriately quoted) into a loadable Lisp file, to be consed into
-the @file{package-index.el} list at the FTP archives.  That list is
-structured as an alist with package names as keys.  The package data is
-a plist.  Do not rely on this, as it may change.  If you have a good
-reason for relying on it, let the maintainers know and we may
-incorporate it in a future revision of the @xpms{} standard.
-
-There are several kinds of fields, distinguished by how they get their
-values.  There are literals written into @file{package-info.in} by the
-package maintainer.  There are variables substituted in by the build
-process, some computed, and others written as values of @file{make}
-variables in the @file{Makefile} by the package maintainer.  There are a
-few implementation constants, some of which are simply the default value
-for obsolete fields.
-
-The @file{package-info.in} literals provided by the maintainer generally
-should not change over the life of the package.  (The exception is the
-@samp{provides} field, which should be generated, but isn't yet.)
-Values described as ``literal'' below are unquoted literal text.  These
-are normally interpreted as symbols by the package build process.  The
-maintainer literals are
-
-@table @asis
-@item @var{package_name}
-A literal.  The only unnamed ``field,'' the name of the package.
-
-@item distribution
-A literal, either @samp{xemacs} (for generic packages) or @samp{mule}
-(for packages requiring Mule).  @xref{Package Terminology}.
+The fields in @file{package-info.in} that need to be changed directly
+are:
 
+@itemize @bullet
+@item NAME
 @item description
-A Lisp string containing a one-line text description for use in package
-listings.
-
 @item provides
-A (Lisp) list of features provided by the libraries in the package.  All
-of the features provided by libraries in your package should be elements
-of this list.
-
 @item type
-A literal, either @samp{regular} or @samp{single-file}.  For practical
-purposes, @samp{regular} should be considered an implementation constant.
-@end table
-
-@c #### The following should be rewritten to @xref the make variables
-@c node, and simply associate the field names to the make variables with
-@c one line of description.
-Values which are expected to change regularly as the package is enhanced
-are implemented as @file{make} variables.  You should not change them in
-the @file{package-info.in} file; they are automatically filled in by the
-build process.
-
-The corresponding field name is given in parentheses.  These include
-
-@table @code
-@item VERSION
-(version)
-The version of the XEmacs package, a numeric literal (a decimal
-fixed-point number with two-places of precision).
-
-@item AUTHOR_VERSION
-(author-version)
-The upstream author's version, an unintepreted literal.
+@end itemize
 
-@item DATE
-(date)
-Date of release of the upstream version.
+Everything else is either set from the appropriate @file{Makefile}
+variable, is auto-generated at build time, or is static.
 
-@item MAINTAINER
-(maintainer)
-A literal containing the XEmacs package's maintainer and his/her email
-address.
-
-@item CATEGORY
-(category)
-A literal, either @samp{standard} or @samp{mule}.  Probably redundant.
-
-@item REQUIRES
-(requires)
-A list of packages required to correctly build this package.
-
-Note that the usual form in @file{package-info.in} already has the
-parentheses, so the @file{make} variable should be set to a
-space-separated list of package names @emph{not} enclosed in
-parentheses.
+@node Makefile,,package-info.in,Creating Packages
+@chapter @file{Makefile}
+@cindex Makefile, package
+@cindex package Makefile
+The @file{Makefile} is quite stylized.  The idea is similar to an
+@file{Imakefile} or an @code{automake} file: the complexity is hidden in
+generic rules files, in this case the @file{XEmacs.rules} include file
+in the top directory of the packages hierarchy.
 
-The list is of @emph{packages}, not @emph{libraries}, as would
-ordinarily be provided to the Lisp @code{require} function.
+It is important to note that the XEmacs used to compile packages is
+the bare minimum: it is called with the @samp{-no-autoloads}.  This
+means that anything not dumped into XEmacs by default needs to be
+specified in the @samp{REQUIRES} variable (for packaged Lisp) or in
+some cases the @samp{PRELOADS} (autoloads used in libraries mentioned
+in @samp{PRELOADS}).
 
-@samp{REQUIRES} cannot be correctly computed from the calls to
-@code{require} in the package's library sources.  @samp{REQUIRES} is
-used to ensure that all macro and defstruct definitions used by the
-package are available at build time.  This is not merely a matter of
-efficiency, to get the expansions inlined.  In fact, it is
-@emph{impossible} to call a macro by name in byte-compiled Emacs Lisp
-code.  Thus, if the macro expansion is not inlined, the call will result
-in an error at run-time!  Thus, packages providing libraries that would
-be loaded because of autoload definitions must also be included.
+There isn't much to an @xpms{} @file{Makefile}, basically it just
+contains a few @file{Makefile} variables and that's it.  See the
+example. 
 
-On the other hand, if a package provides no macros to this package, it
-is preferable @emph{not} to include it in @samp{REQUIRES}, because it is
-not uncommon that if the developer doesn't normally use the required
-package, he will never use the functionality in the package being built,
-either.  In that case it would be preferable to not require the
-developer to have source for the dependencies.  That said, of course it
-is safe to put too many packages in @samp{REQUIRES}.
-@end table
+Here is a real world example, from the @samp{build} package:
 
-Values for the following fields are automatically generated by the build
-process.
+@example
+# Makefile for build lisp code
 
-@table @asis
-@item build-date
-The date the package tarball was generated.
+# This file is part of XEmacs.
 
-@item md5sum
-An MD5 checksum for the package tarball, as gzipped.
+# 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.
 
-@item size
-The size of the package tarball, as gzipped.
-@end table
+# 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.
 
-It is not clear that either md5sum or size works correctly if the
-@samp{BZIP2} variable in @file{Local.rules} is set.
+# 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.
 
-The implementation constants are
+# For the time being, remove MULE_ELCS from the all dependencies if
+# building without Mule.
 
-@table @asis
-@item standards-version
-Currently 1.1.  Defines the format of the @file{package-info.in} file
-and the @file{Makefile}.  A true implementation constant.
+VERSION = 1.10
+AUTHOR_VERSION = 2.02
+MAINTAINER = Adrian Aichner <adrian@@xemacs.org>
+PACKAGE = build
+PKG_TYPE = regular
+REQUIRES = xemacs-base pcl-cvs dired w3 prog-modes
+CATEGORY = standard
 
-@item priority
-An unimplemented and underspecified feature.  Suggestions for
-specification and implementation welcome.
+ELCS = build.elc build-report.elc
 
-@item dump
-An obsolete feature, superseded by the @file{site-load.el} mechanism.
-The value should always be nil.
+STANDARD_DOCS = t
 
-@item filename
-An obsolete feature, completely ignored.  Don't even think about doing
-anything useful with it.
-@end table
+include ../../XEmacs.rules
+@end example
 
+Most packages don't need any more than what you see above.  It is
+usually @emph{not} necessary to specify any special @file{Makefile}
+rules.  Everything is handled from the @file{*.rules} files in the
+toplevel of the package source hierarchy.
 
-@node Makefile Variables, Makefile Targets, package-info.in Fields, Creating Packages
+Of course, with that said, there are always exceptions to the rule.  If
+you think that your package will need some special @file{Makefile}
+hackery contact the @email{xemacs-beta@@xemacs.org, XEmacs developers}.
+We distribute over 100 packages so the chances are good that you won't
+be the first to need such hackery and it is probably already catered
+for. 
 
+@subheading @file{Makefile} Variables Explained:
 A number of @file{make} variables are defined by the @xpms{}.  Some are
 required, others are optional.  Of course your @file{Makefile} may
 define other variables for private use, but you should be careful not to
@@ -1047,31 +1050,43 @@ The required variables are described in the table below.
 The corresponding field names for @file{package-info.in}, where
 relevant, are given in parentheses.
 
-@c #### This is the canonical place for this information.  If there is
+@c This is the canonical place for this information.  If there is
 @c unnecessary duplication with package-info.in documentation, shorten
 @c that and leave this full-length.
-@table @code
+@table @samp
 @item VERSION
 (version)
 The version of the XEmacs package, a numeric literal (a decimal
-fixed-point number with two-places of precision).
+fixed-point number with two-places of precision).  The only person who
+ever needs to touch this is the XEmacs Packages Release Engineer.
 
 @item AUTHOR_VERSION
 (author-version)
-The upstream author's version, an unintepreted literal.
-
-@item DATE
-(date)
-Date of release of the upstream version.
+The upstream author's version, an uninterpreted literal.
 
 @item MAINTAINER
 (maintainer)
 A literal containing the XEmacs package's maintainer and his/her email
 address.
 
+@item PACKAGE
+The name of the package, a literal
+
+@item PKG_TYPE
+The type of package, a literal containing either @samp{regular} for
+regular packages, or @samp{single-file} for single-file packages.  This
+should feed the @samp{type} field in @file{package-info.in}, but
+currently it doesn't.
+
+@strong{N.B.} @samp{single-file} here does @emph{not} refer to the
+number of lisp files in a package. @xref{Package Terminology}.
+
 @item CATEGORY
 (category)
-A literal, either @samp{standard} or @samp{mule}.  Probably redundant.
+A literal, either @samp{standard} or @samp{mule}.  The non-Mule packages
+are @samp{standard} and the Mule packages are, you guessed it,
+@samp{mule}.  This field is used at package installation time as part of
+the process of determining where a package should be installed to.
 
 @item REQUIRES
 (requires)
@@ -1095,14 +1110,6 @@ code.  Thus, if the macro expansion is not inlined, the call will result
 in an error at run-time!  Thus, packages providing libraries that would
 be loaded because of autoload definitions must also be included.
 
-On the other hand, if a package provides no macros to this package, it
-is preferable @emph{not} to include it in @samp{REQUIRES}, because it is
-not uncommon that if the developer doesn't normally use the required
-package, he will never use the functionality in the package being built,
-either.  In that case it would be preferable to not require the
-developer to have source for the dependencies.  That said, of course it
-is safe to put too many packages in @samp{REQUIRES}.
-
 @item ELCS
 The list of the byte-compiled Lisp files used by the package.  These
 files and their @file{.el} versions will be included in the binary
@@ -1120,127 +1127,237 @@ We don't consider this a feature, of course.  Please do submit code to
 do sanity checking to @email{xemacs-patches@@xemacs.org}.
 @end table
 
-Optional, but very commonly used variables include:
+Optional, but commonly used variables are explained below.
 
-@table @code
-item EXTRA_SOURCES
-Other files (such as extra Lisp sources or an upstream @file{Makefile})
-that are normally placed in the installed Lisp directory, but not
-byte-compiled.  These files are @emph{preserved} by the @samp{clean}
-targets.
+@table @samp
+@item ELCS_1
+A list of extra byte-compiled Lisp files used by the package to be
+installed in a subdirectory of the package's lisp directory.  The same
+care should be taken with this as with @var{ELCS} in regard to
+@code{make clean}.
+
+@item ELCS_1_DEST
+The name of the subdirectory for the @var{ELCS_1} files to be installed
+to.  Be sure to include @samp{$(PACKAGE)/} as part of the name.
+
+@example
+ELCS_1_DEST = $(PACKAGE)/extra
+@end example
+
+Would put the @var{ELCS_1} files for the package, @samp{foo} into
+@file{xemacs-packages/lisp/foo/extra/}. 
+
+@item EARLY_GENERATED_LISP
+For additional @file{.el} files that will be generated before any
+byte-compiling happens.  Use this for @samp{autoload-type} files.  You
+must write @file{Makefile} rules to build these files.
 
-@item EXTRA_OBJS
-Other files (such as compiled autoload or concatenated @file{.elc}
-libraries) which are normally placed in the installed Lisp directory,
-but do @emph{not} have corresponding source files and @emph{should} be
-deleted by the @samp{clean} targets.  Some of these (such as
-package-specific autoload setups) can and probably should be replaced by
-@xpms{} solutions such as @file{auto-autoloads.el}, but many cannot.
+@item GENERATED_LISP
+For additional @file{.el} files that will be generated at
+byte-compilation time.  You must write @file{Makefile} rules to build
+these files.
 
-@item PRELOADS
-A specification for loading libraries containing macros before compiling
-the Lisp in the package.  This is spliced directly into the invocation
-of XEmacs for byte-compilation, so it must contain the @samp{-l} flag
-for XEmacs:
+@item PRELOADS 
+This is used if you need to pass extra command line arguments to
+XEmacs to build the package.  For instance, a specification for
+loading libraries containing macros before compiling the Lisp in the
+package.  This is spliced directly into the invocation of XEmacs for
+byte-compilation, so it must contain the @samp{-l} flag for XEmacs:
 
 @example
 PRELOADS=-l ./apackage-macros.el -l ../bpackage/lisp/bpackage-macros.el
 @end example
 
-@item INFO_FILES
-Any Info file(s) generated by the package.  These must be paths relative
-to the root of the package's source tree.
+Preloads are loaded before @file{package-compile.el}, so the
+@var{load-path} is minimal.  Therefore @samp{PRELOADS} must specify a
+full path to packaged Lisp.  The base @var{load-path} does include the
+core Lisp directory, so core libraries are found.
 
-@item TEXI_FILES
-The Texinfo source file(s).  These must be paths relative
-to the root of the package's source tree.
+@item AUTOLOAD_PATH
+The subdirectory in the package's source tree where the @file{.el} files
+reside.  This is where the @file{auto-autoloads.el} file will be placed.
 
-@item MANUAL
-The name to be used for Info files and man pages.
+@strong{N.B.} There is no need to use this variable if the @file{.el}
+files are in the package's toplevel directory.  @var{AUTOLOAD_PATH}
+defaults to @samp{.}.
 
-@item DATA_FILES
-Any data files, such as pixmaps, READMEs, and ChangeLogs.  These must be
-paths relative to the root of the package's source tree.
+@item PACKAGE_SUPPRESS
+Place calls to @code{package-suppress} here to indicate Lisp libraries
+that should only be available to particular versions of XEmacs.  For
+example: 
 
-@item DATA_DEST
-The installation location for data files, relative to the @file{etc/}
-directory of the package hierarchy.  The normal value is simply
-$(PACKAGE).  Leaving it empty (@emph{i.e.}, put it directly under
-@file{etc/}) will probably work, but is subject to name conflicts with
-other packages.
-@end table
+@example
+PACKAGE_SUPPRESS = \
+ (package-suppress 'xemacs-base \"regexp-opt\" '(emacs-version>= 21 5 11)) \
+ (package-suppress 'xemacs-base \"easy-mmode\" '(emacs-version>= 21 5 11))
+@end example
 
-Rarely used variables.
+@c Change this when Ben has committed the WS that implements
+@c `package-suppress' --SY.
+@strong{N.B.} This feature has not yet been implemented in XEmacs yet.
+It will appear in an upcoming version of XEmacs 21.5.
 
-@c @table @code
-@c @item
-@c @end table
+@item STANDARD_DOCS
+Set this to @samp{t} if your package's Texinfo source file is located in
+the package's toplevel directory @emph{and} is named
+@file{$(PACKAGE).texi}. 
 
-@node Makefile Targets, , Makefile Variables, Creating Packages
+@item EXPLICIT_DOCS
+Use this to explicitly list Texinfo sources that @emph{aren't} in the
+package's toplevel directory.  For example:
 
-The standard targets that need to be defined in your @file{Makefile}
-follow.  These normally should @emph{not} have an action.  All of the
-work should be done by dependent targets, usually having standard
-definitions in the @xpms{}.
+@example
+EXPLICIT_DOCS = texi/$(PACKAGE).texi
+@end example
 
-@table @samp
-@item all
-A list of generated files, usually byte-compiled Lisp libraries, to be
-bundled in the package.  The typical dependencies are
+See @var{DOCS_TXI_EXTENSION} and @var{DOCS_TEXINFO_EXTENSION} if you
+don't use the @file{.texi} file extension on your Texinfo sources.
+
+@item EXTRA_TEXI_FILES
+List here extra Texinfo source files needed to build your
+documentation.  Whatever is listed here is passed on to @code{makeinfo}
+as a dependency.
+
+@item EXTRA_HTML_FILES
+Use this to specify extra @file{.html} files to output.
+
+@item DOCS_TEXINFO_EXTENSION
+Set this to @samp{t} if your Texinfo source files have a @samp{.texinfo}
+extension.
+
+@item DOCS_TXI_EXTENSION
+Set this to @samp{t} if your Texinfo source files have a @samp{.txi}
+extension. 
+
+@item EXTRA_DOC_FILES
+Files listed here will be installed to @file{.../man/$(PACKAGE)/}.  For
+example, you might want to list @TeX{} files or @file{.eps} files here.
+
+@item EXTRA_SOURCES
+Other files (such as extra Lisp sources or an upstream @file{Makefile})
+that are normally placed in the installed Lisp directory, but not
+byte-compiled.  These files are @emph{preserved} by the @samp{clean}
+targets.
+
+@item LIBSRC_FILES
+For files that need to be installed to @file{lib-src/$(PACKAGE)/}.  If
+the files listed here need to be built you will have to write
+@file{Makefile} rules to do so.
+
+@item DATA_FILES
+Any data files, such as pixmaps, READMEs, and ChangeLogs.  These must be
+paths relative to the root of the package's source tree.  These files
+will be copied to @samp{$(DATA_DEST)} for installation.  Any directory
+component of the path for a file will be stripped, so that the
+file ends up in @samp{$(DATA_DEST)}, not in a subdiredtory.
+
+@item DATA_DEST
+The directory where the files in @var{DATA_FILES} are installed to.  It
+is a subdirectory of the installed @file{etc/} directory.  Be sure to
+prefix this value with @samp{$(PACKAGE)}, for example:
 
 @example
-$(ELCS) auto-autoloads.elc custom-load.elc
+DATA_DEST = $(PACKAGE)/foo
 @end example
 
-Other targets (such as Info files) may need to be added as dependencies
-for the @code{all} target.
+Would put files into @file{.../etc/$(PACKAGE)/foo/}.
 
-@item srckit
-The target for generating a source package.  Not implemented.  If it
-were, the normal dependency would be @samp{srckit-std}.
+@item DATA_1_FILES ... DATA_35_FILES
+For data files that need to go into a different directory from
+@var{DATA_DEST}. 
 
-@item binkit
-The target for creating a ``master'' installation.  Binary packages are
-actually generated by the @samp{bindist} target.  @xref{Building Packages}.
+@item DATA_1_DEST ... DATA_35_DEST
+The name of the subdirectory for files specified in @var{DATA_n_FILES}.
+And like @var{DATA_DEST}, be sure to prefix @samp{$(PACKAGE)} to the
+value of these variables.
+
+@item EXTRA_DEPENDENCIES
+For additional files to build that aren't appropriate to place in any
+other @file{Makefile} variable.  You will need to write @file{Makefile}
+rules to build these files.
 @end table
 
-Standard dependencies for @code{srckit} and @code{binkit} are defined in
-@file{XEmacs.rules}.  The most useful of these values are given in the
-following table.
+@section @file{package-compile.el}
+@cindex package-compile.el
+@cindex compiling packages
+The @xpms{} does not automatically become aware of your package simply
+because there is a new subtree.  If any package, including your own,
+requires any of your files, it must be explicitly added to the compile
+environment or loads/requires that search load-path will fail.  The
+changes that need to be made are
 
-@table @samp
-@item srckit-std
-Build a standard source kit.  Not fully implemented.
+@table @strong
+@item an entry in @code{package-directory-map}
+This tells the @xpms{} which distribution (currently
+@samp{xemacs-packages} or @samp{mule-packages}) your package is found
+in.  It then looks in the distribution subdirectory whose name is the
+same as the package's.
 
-@item binkit-sourceonly
-The @samp{binkit} target need only install source and compiled Lisp in
-the staging area.  There is nothing to install in a data directory or
-info directory.
+@item an entry in the @code{cond} in @code{package-name-to-directory}
+This is optional; it is necessary only if you keep your Lisp code
+somewhere other than the top-level directory of the package's source
+tree, eg, in @file{packages/xemacs-packages/@var{PACKAGE}/lisp}.
+@end table
 
-@item binkit-sourceinfo
-Both source and info files are to be installed in the staging area.
+This only needs to be done once, when the package is first added to the
+@xpms{}.  (Well, when you randomly change the subdirectory layout, too.)
+Your changes to @file{package-compile.el} must be cleared and checked in
+by the XEmacs Package Release Engineer before your package will build
+correctly from a fresh checkout.
+
+This is unfortunate; it works pretty well once set up, but can cause
+confusion when first building a package in the @xpms{} context.  In
+particular, if the @code{package-directory-map} entry for a required
+package, including the package itself, is not found, the necessary
+requires will not be executed by @file{package-compile.el}.  If
+required functions are executed (under @code{eval-when-compile}),
+they won't be found and the compile will fail.  If required function
+is actually a macro, the byte compiler will not recognize that,
+compile a function call to the macro.  This will cause a run-time
+error because the byte-code interpreter does not know how to execute
+macros.  (Macros can always be expanded at compile-time, and this is
+more efficient.)
+
+If your package keeps some or all Lisp code somewhere other than the top
+directory, then an entry in @code{package-name-to-directory} is also
+necessary, or requires will fail, leading to the problems just described.
 
-@item binkit-sourcedata
-Both source and etc (data) files are to be installed in the staging
-area.
+@node Documenting Packages, Issues, Creating Packages, Packaging
+@comment  node-name,  next,  previous,  up
+@cindex documenting packages
+@heading Documenting Packages:
 
-@item binkit-sourcedatainfo
-Source, etc (data), and info files all are present and need to be
-installed in the staging area.
+@c #### Add a documentation section to Internals, and xref here.
+Some random notes on documenting your package.
 
-@item binkit-common
-A dependency for all the above.  (In fact in the current implementation
-@samp{binkit-common} does all the work for all of the @samp{binkit}
-targets.)
-@end table
+Do write a Texinfo file.  It's not that hard to do basically, and even
+using the more advanced features of Texinfo soon become natural.  For a
+start, just grab the template @file{Samples/package.texi} from the
+@xpms{} source tree, and drop your current README into the Top node.  At
+least this way your documentation will be accessible from the standard
+Info readers.  Next, try to add lots of cross-referencing and logical
+markup, and then node structure.
+
+Address both end users and developer issues.  You may not be the
+maintainer forever.
+
+If you are maintaining a package that is part of the GNU Emacs
+distribution, you'll likely find that you occasionally synchronize your
+package with the GNU Emacs sources.  When you synch a file,
+conventionally you should place a comment just above the standard
+@code{;;; Code} comment that looks like this:
+
+@example
+;; Synched with:
+;; GNU Emacs 21.1, 2002-02-08, Stephen Turnbull <stephen@@xemacs.org>
+@end example
 
-Data files include things like pixmaps for a package-specific toolbar,
-and are normally installed in @file{etc/@var{PACKAGE_NAME}}.  A few
-packages have needs beyond the basic templates.  See @file{XEmacs.rules}
-or a future revision of this manual for details.
+This comment is a status flag; the ChangeLog doesn't really give the
+same information.
 
+Do maintain a detailed ChangeLog.
 
-@node Issues, , Creating Packages, Packaging
+@node Issues, , Documenting Packages, Packaging
 @section Issues
 
 To be completed.
index 3a6dbc4..5053498 100644 (file)
@@ -104,27 +104,27 @@ backend database server during the establishment of a database
 connection and when the @code{pq-setenv} call is made.
 
 @defvar pg:host
-Initialized from the @var{PGHOST} environment variable.  The default
+Initialized from the @code{PGHOST} environment variable.  The default
 host to connect to.
 @end defvar
 
 @defvar pg:user
-Initialized from the @var{PGUSER} environment variable.  The default
+Initialized from the @code{PGUSER} environment variable.  The default
 database user name.
 @end defvar
 
 @defvar pg:options
-Initialized from the @var{PGOPTIONS} environment variable.  Default
+Initialized from the @code{PGOPTIONS} environment variable.  Default
 additional server options.
 @end defvar
 
 @defvar pg:port
-Initialized from the @var{PGPORT} environment variable.  The default TCP
-port to connect to.
+Initialized from the @code{PGPORT} environment variable.  The default
+TCP port to connect to.
 @end defvar
 
 @defvar pg:tty
-Initialized from the @var{PGTTY} environment variable.  The default
+Initialized from the @code{PGTTY} environment variable.  The default
 debugging TTY.
 
 Compatibility note:  Debugging TTYs are turned off in the XEmacs Lisp
@@ -132,17 +132,17 @@ binding.
 @end defvar
 
 @defvar pg:database
-Initialized from the @var{PGDATABASE} environment variable.  The default
-database to connect to.
+Initialized from the @code{PGDATABASE} environment variable.  The
+default database to connect to.
 @end defvar
 
 @defvar pg:realm
-Initialized from the @var{PGREALM} environment variable.  The default
+Initialized from the @code{PGREALM} environment variable.  The default
 Kerberos realm.
 @end defvar
 
 @defvar pg:client-encoding
-Initialized from the @var{PGCLIENTENCODING} environment variable.  The
+Initialized from the @code{PGCLIENTENCODING} environment variable.  The
 default client encoding.
 
 Compatibility note:  This variable is not present in non-Mule XEmacsen.
@@ -153,35 +153,35 @@ In the current implementation, client encoding is equivalent to the
 
 @c unused
 @defvar pg:authtype
-Initialized from the @var{PGAUTHTYPE} environment variable.  The default
-authentication scheme used.
+Initialized from the @code{PGAUTHTYPE} environment variable.  The
+default authentication scheme used.
 
 Compatibility note:  This variable is unused in versions of libpq after
 6.5.  It is not implemented at all in the XEmacs Lisp binding.
 @end defvar
 
 @defvar pg:geqo
-Initialized from the @var{PGGEQO} environment variable.  Genetic
+Initialized from the @code{PGGEQO} environment variable.  Genetic
 optimizer options.
 @end defvar
 
 @defvar pg:cost-index
-Initialized from the @var{PGCOSTINDEX} environment variable.  Cost index
-options.
+Initialized from the @code{PGCOSTINDEX} environment variable.  Cost
+index options.
 @end defvar
 
 @defvar pg:cost-heap
-Initialized from the @var{PGCOSTHEAP} environment variable.  Cost heap
+Initialized from the @code{PGCOSTHEAP} environment variable.  Cost heap
 options.
 @end defvar
 
 @defvar pg:tz
-Initialized from the @var{PGTZ} environment variable.  Default
+Initialized from the @code{PGTZ} environment variable.  Default
 timezone.
 @end defvar
 
 @defvar pg:date-style
-Initialized from the @var{PGDATESTYLE} environment variable.  Default
+Initialized from the @code{PGDATESTYLE} environment variable.  Default
 date style in returned date objects.
 @end defvar
 
@@ -338,7 +338,7 @@ Copy In data transfer is in progress.
 An unexpected response was received from the backend.
 @item pgres::nonfatal-error
 Undocumented.  This value is returned when the libpq function
-@code{PQresultStatus} is called with a @var{NULL} pointer.
+@code{PQresultStatus} is called with a @code{NULL} pointer.
 @item pgres::fatal-error
 Undocumented.  An error has occurred in processing the query and the
 operation was not completed.
@@ -510,7 +510,7 @@ Return the length of a specific value.
 @end defun
 
 @defun pq-get-is-null result tup-num field-num
-Return t if the specific value is the SQL @var{NULL}.
+Return t if the specific value is the SQL @code{NULL}.
 @var{result} is a PGresult object.
 @var{tup-num} selects which tuple to fetch from.
 @var{field-num} selects which field to fetch from.
@@ -648,24 +648,24 @@ example idiom is:
 The following options are available in the options string:
 @table @code
 @item authtype
-Authentication type.  Same as @var{PGAUTHTYPE}.  This is no longer used.
+Authentication type.  Same as @code{PGAUTHTYPE}.  This is no longer used.
 @item user
-Database user name.  Same as @var{PGUSER}.
+Database user name.  Same as @code{PGUSER}.
 @item password
 Database password.
 @item dbname
-Database name.  Same as @var{PGDATABASE}
+Database name.  Same as @code{PGDATABASE}
 @item host
-Symbolic hostname.  Same as @var{PGHOST}.
+Symbolic hostname.  Same as @code{PGHOST}.
 @item hostaddr
 Host address as four octets (eg. like 192.168.1.1).
 @item port
-TCP port to connect to.  Same as @var{PGPORT}.
+TCP port to connect to.  Same as @code{PGPORT}.
 @item tty
-Debugging TTY.  Same as @var{PGTTY}.  This value is suppressed in the
+Debugging TTY.  Same as @code{PGTTY}.  This value is suppressed in the
 XEmacs Lisp API.
 @item options
-Extra backend database options.  Same as @var{PGOPTIONS}.
+Extra backend database options.  Same as @code{PGOPTIONS}.
 @end table
 A database connection object is returned regardless of whether a
 connection was established or not.
@@ -897,7 +897,8 @@ does not exist in a non-Mule XEmacs.
 @end defun
 
 @defun pq-env-2-encoding
-Return the integer code representing the coding system in @var{PGCLIENTENCODING}.
+Return the integer code representing the coding system in
+@code{PGCLIENTENCODING}.
 
 @example
 (pq-env-2-encoding)
index adb36ff..dfdc88a 100644 (file)
@@ -1,6 +1,7 @@
 @c -*-texinfo-*-
 @c This is part of the XEmacs Lisp Reference Manual.
 @c Copyright (C) 1995, 1996 Ben Wing.
+@c Copyright (C) 2002, 2004 Free Software Foundation, Inc.
 @c See the file lispref.texi for copying conditions.
 @setfilename ../../info/specifiers.info
 @node Specifiers, Faces and Window-System Objects, Extents, top
@@ -8,14 +9,13 @@
 @cindex specifier
 
 A specifier is an object used to keep track of a property whose value
-may vary depending on the particular situation (e.g. particular buffer
-displayed in a particular window) that it is used in.  The value of many
-built-in properties, such as the font, foreground, background, and such
-properties of a face and variables such as
-@code{modeline-shadow-thickness} and @code{top-toolbar-height}, is
-actually a specifier object.  The specifier object, in turn, is
-``instanced'' in a particular situation to yield the real value
-of the property in that situation.
+should vary according to @emph{display context}, a window, a frame, or
+device.  The value of many built-in properties, such as the font,
+foreground, background, and such properties of a face and variables
+such as @code{modeline-shadow-thickness} and
+@code{top-toolbar-height}, is actually a specifier object.  The
+specifier object, in turn, is ``instanced'' in a particular situation
+to yield the real value of the property in the current context.
 
 @defun specifierp object
 This function returns non-@code{nil} if @var{object} is a specifier.
@@ -26,6 +26,7 @@ This function returns non-@code{nil} if @var{object} is a specifier.
                                 display and other properties to vary
                                 (under user control) in a wide variety
                                 of contexts.
+* Simple Specifier Usage::      Getting started with specifiers.
 * Specifiers In-Depth::         Gory details about specifier innards.
 * Specifier Instancing::        Instancing means obtaining the ``value'' of
                                 a specifier in a particular context.
@@ -37,7 +38,7 @@ This function returns non-@code{nil} if @var{object} is a specifier.
 * Specifier Tag Functions::     Working with specifier tags.
 * Specifier Instancing Functions::
                                 Functions to instance a specifier.
-* Specifier Example::           Making all this stuff clearer.
+* Specifier Examples::          Making all this stuff clearer.
 * Creating Specifiers::         Creating specifiers for your own use.
 * Specifier Validation Functions::
                                 Validating the components of a specifier.
@@ -48,14 +49,16 @@ This function returns non-@code{nil} if @var{object} is a specifier.
 @node Introduction to Specifiers
 @section Introduction to Specifiers
 
-Sometimes you may want the value of a property to vary depending on
-the context the property is used in.  A simple example of this in XEmacs
-is buffer-local variables.  For example, the variable
+Perhaps the most useful way to explain specifiers is via an analogy.
+Emacs Lisp programmers are used to @emph{buffer-local variables}
+@ref{Buffer-Local Variables}. For example, the variable
 @code{modeline-format}, which controls the format of the modeline, can
 have different values depending on the particular buffer being edited.
 The variable has a default value which most modes will use, but a
-specialized package such as Calendar might change the variable so
-as to tailor the modeline to its own purposes.
+specialized package such as Calendar might change the variable so as to
+tailor the modeline to its own purposes. Other variables are perhaps
+best thought of as ``mode local,'' such as font-lock keywords, but they
+are implemented as buffer locals.
 
 Other properties (such as those that can be changed by the
 @code{modify-frame-parameters} function, for example the color of the
@@ -70,11 +73,41 @@ displayed on a particular frame, another value in all other buffers
 displayed in all other frames on any mono (two-color, e.g. black and
 white only) displays, and a default value in all other circumstances.
 
-A @dfn{specifier} is a generalization of this, allowing a great deal
-of flexibility in controlling exactly what value a property has in which
-circumstances.  It is most commonly used for display properties, such as
-an image or the foreground color of a face.  As a simple example, you can
-specify that the foreground of the default face be
+Specifiers generalize both buffer- and frame-local properties.
+Specifiers vary according to the @emph{display} context.  Font-lock
+keywords in a buffer will be the same no matter which window the
+buffer is displayed in, but windows on TTY devices will simply not be
+capable of the flexibility that windows on modern GUI devices are.
+Specifiers provide a way for the programmer to @emph{declare} that an
+emphasized text should be italic on GUI devices and inverse video on
+TTYs.  They also provide a way for the programmer to declare
+fallbacks, so that a color specified as ``chartreuse'' where possible
+can fall back to ``yellow'' on devices where only ANSI (4-bit) color
+is available.  The complex calculations and device querying are
+transparent to both user and programmer.  You ask for what you want;
+it's up to XEmacs to provide it, or a reasonable approximation.
+
+We call such a declaration a @dfn{specification}.  A @dfn{specification}
+applies in a particular @dfn{locale}, which is a window, buffer, frame,
+device, or the global locale.  The value part of the specification is
+called an @dfn{instantiator}.  The process of determining the value in a
+particular context, or @dfn{domain}, is called @dfn{instantiation} or
+@dfn{instancing}.  A domain is a window, frame, or device.
+
+The difference between @dfn{locale} and @dfn{domain} is somewhat subtle.
+You may think of a locale as a class of domains, which may span
+different devices.  Since the specification is abstract (a Lisp form),
+you can state it without reference to a device.  On the other hand, when
+you instantiate a specification, you must know the type of the device.
+It is useless to specify that ``blue means emphasis'' on a monochrome
+device.  Thus instantiation requires specification of the device on
+which it will be rendered.
+
+Thus a @dfn{specifier} allows a great deal of flexibility in
+controlling exactly what value a property has in which circumstances.
+Specifiers are most commonly used for display properties, such as an image or
+the foreground color of a face.  As a simple example, you can specify
+that the foreground of the default face be
 
 @itemize @bullet
 @item
@@ -98,6 +131,150 @@ red for all other buffers displayed on a color device
 white for all other buffers
 @end itemize
 
+@node Simple Specifier Usage
+@section Simple Specifier Usage
+@cindex specifier examples
+@cindex examples, specifier
+@cindex adding a button to a toolbar
+@cindex toolbar button, adding
+
+A useful specifier application is adding a button to a toolbar.  XEmacs
+provides several toolbars, one along each edge of the frame.  Normally
+only one is used at a time, the default.  The default toolbar is
+actually a specifier object which is the value of
+@code{default-toolbar}.  @xref{Toolbar Intro}.
+
+The specification of a toolbar is simple:  it is a list of buttons.
+Each button is a vector with four elements:  an icon, a command, the
+enabled flag, and a help string.  Let's retrieve the instance of the
+toolbar you see in the selected frame.
+
+@example
+(specifier-instance default-toolbar)
+@end example
+
+The value returned is, as promised, a list of vectors.  Now let's build
+up a button, and add it to the toolbar.  Our button will invoke the last
+defined keyboard macro.  This is an alternative to
+@code{name-last-kbd-macro} for creating a persistent macro, rather than
+an alias for @kbd{C-x e}.
+
+A toolbar button icon can be quite sophisticated, with different images
+for button up, button down, and disabled states, and a similar set with
+captions.  We'll use a very simple icon, but we have to jump through a
+few non-obvious hoops designed to support the sophisticated applications.
+The rest of the button descriptor is straightforward.
+
+@example
+(setq toolbar-my-kbd-macro-button
+  `[ (list (make-glyph "MyKbdMac"))
+     (lambda () (interactive) (execute-kbd-macro ,last-kbd-macro))
+     t
+     "Execute a previously defined keyboard macro." ])
+
+(set-specifier default-toolbar
+               (cons toolbar-my-kbd-macro-button
+                     (specifier-specs default-toolbar 'global))
+               'global)
+@end example
+
+To remove the button, just substitute the function @code{delete} for the
+@code{cons} above.
+
+What is the difference between @code{specifier-instance}, which we used
+in the example of retrieving the toolbar descriptor, and
+@code{specifier-specs}, which was used in the toolbar manipulating code?
+@code{specifier-specs} retrieves a copy of the instantiator, which is
+abstract and does not depend on context.  @code{specifier-instance}, on
+the other hand, actually instantiates the specification, and returns the
+result for the given context.  Another way to express this is:
+@code{specifier-specs} takes a @emph{locale} as an argument, while
+@code{specifier-instance} takes a @emph{domain}.  The reason for
+providing @code{specifier-instance} is that sometimes you wish to see
+the object that XEmacs will actually use.  @code{specifier-specs}, on
+the other hand, shows you what the programmer (or user) requested.  When
+a program manipulates specifications, clearly it's the latter that is
+desirable.
+
+In the case of the toolbar descriptor, it turns out that these are the
+same:  the instancing process is trivial.  However, many specifications
+have non-trivial instancing.  Compare the results of the following forms
+on my system.  (The @samp{(cdr (first ...))} form is due to my use of
+Mule.  On non-Mule XEmacsen, just use @code{specifier-specs}.)
+
+@example
+(cdr (first (specifier-specs (face-font 'default) 'global)))
+=> "-*--14-*jisx0208*-0"
+
+(specifier-instance (face-font 'default))
+#<font-instance "-*--14-*jisx0208*-0" on #<x-device on ":0.0" 0x970> 0xe0028b 0x176b>
+@end example
+
+In this case, @code{specifier-instance} returns an opaque object;
+programs can't work on it, they can only pass it around.  Worse, in some
+environments the instantiation will fail, resulting in a different value
+(when another instantiation succeeds), or worse yet, an error, if all
+attempts to instance the specifier fail.  @code{specifier-instance} is
+context-dependent, even for the exact same specification.
+@code{specifier-specs} is deterministic, and only depends on the
+specifications.
+
+Note that in the toolbar-changing code we operate in the global locale.
+This means that narrower locales, if they have specifications, will
+shadow our changes.  (Specifier instancing does not merge
+specifications.  It selects the "highest-priority successful
+specification" and instances that.)
+
+In fact, in our example, it seems pretty likely that different buffers
+@emph{should} have different buttons.  (The icon can be the same, but
+the keyboard macro you create in a Dired buffer is highly unlikely to be
+useful in a LaTeX buffer!)  Here's one way to implement this:
+
+@example
+(setq toolbar-my-kbd-macro-button
+  `[ (list (make-glyph "MyKbdMac"))
+     (lambda () (interactive) (execute-kbd-macro ,last-kbd-macro))
+     t
+     "Execute a previously defined keyboard macro." ])
+
+(set-specifier default-toolbar
+               (cons toolbar-my-kbd-macro-button
+                     (cond ((specifier-specs default-toolbar
+                                             (current-buffer)))
+                           ((specifier-specs default-toolbar
+                                             'global)))
+               (current-buffer))
+@end example
+
+Finally, a cautionary note: the use of @code{specifier-specs} in the
+code above is for expository purposes.  Don't use it in production code.
+In fact, the @code{set-specifier} form above is likely to fail
+occasionally, because you can add many specifications for the same
+locale.
+
+In these cases, @code{specifier-specs} will return a list.  A further
+refinement is that a specification may be associated with a set of
+@dfn{specifier tags}.  If the list of specifier tags is non-nil, then
+@code{specifier-specs} will return a cons of the tag set and the
+instantiator.  Evidently @code{specifier-specs} is a bit unreliable.
+(For toolbars, the code above should work 99% of the time, because
+toolbars are rarely changed.  Since instantiation is trivial, multiple
+specs are not useful---the first one always succeeds.)
+
+In fact, @code{specifier-specs} is intended to be used to display specs
+to humans with a minimum of clutter. The robust way to access
+specifications is via @code{specifier-spec-list}. @xref{Adding
+Specifications}, for the definition of @dfn{spec-list}. @xref{Retrieving
+Specifications}, for documentation of @code{specifier-specs} and
+@code{specifier-spec-list}. To get the desired effect, replace the form
+@code{(specifier-spec default-toolbar 'global)} with
+
+@example
+(cdr (second (first (specifier-spec-list default-toolbar 'global))))
+@end example
+
+(It should be obvious why the example uses the lazy unreliable method!)
+
 @node Specifiers In-Depth
 @section In-Depth Overview of a Specifier
 @cindex specification (in a specifier)
@@ -121,12 +298,36 @@ white for all other buffers
 @cindex specifier, tag
 @cindex specifier, tag set
 
-A specifier object encapsulates a set of @dfn{specifications}, each of
-which says what its value should be if a particular condition applies.
+Having variables vary according the editing context is very useful, and
+the buffer is the natural ``atomic'' unit of editing context.  In a GUI
+environment, it can be similarly useful to have variables whose values
+vary according to display context.  The atomic unit of display context
+is the Emacs window.  Buffers are cleanly grouped by modes, but windows
+are not so easily pigeonholed.  On the one hand, a window displays a
+buffer, and thus one possible hierarchy is window, buffer, mode.  On the
+other, a window is a component of a frame.  This generates the window,
+frame, device hierarchy.  Finally, there are objects such as toolbars
+whose properties are described by specifiers.  These do not fit
+naturally into either hierarchy.  This problem is as yet not cleanly
+solved.
+
+Another potential source of conceptual confusion is the instantiation
+process.  Instantiating a buffer-local variable is simple: at any given
+point in time there is a current buffer, and its local values are used
+and set whenever the variable is accessed, unless the programmer goes to
+some special effort (uses @code{default-value} and @code{set-default}.
+However, a specifier object encapsulates a set of @dfn{specifications},
+each of which says what its value should be if a particular condition
+applies.  Several such conditions might apply simultaneously in a given
+window.
+
 For example, one specification might be ``The value should be
 darkseagreen2 on X devices'' another might be ``The value should be blue
-in the *Help* buffer''.  In specifier terminology, these conditions are
-called @dfn{locales} and the values are called @dfn{instantiators}.
+in the *Help* buffer''.  So what do we do for "the *Help* buffer on an X
+device"?  The answer is simple: give each type of locale a priority and
+check them in priority order, returning the first instantiator that
+successfully instantiates a value.
+
 Given a specifier, a logical question is ``What is its value in a
 particular situation?'' This involves looking through the specifications
 to see which ones apply to this particular situation, and perhaps
@@ -140,6 +341,13 @@ of the default face and @dfn{instances} it in the domain given by that
 window; in other words, it asks the specifier, ``What is your value in
 this window?''.
 
+Note that the redisplay example is in a sense canonical.  That is,
+specifiers are designed to present a uniform and @emph{efficient} API
+to redisplay.  It is the efficiency constraint that motivates the
+introduction of specifier tags, and many restrictions on access (for
+example, a buffer is not a domain, and you cannot instantiate a
+specifier over a buffer).
+
 More specifically, a specifier contains a set of @dfn{specifications},
 each of which associates a @dfn{locale} (a window object, a buffer
 object, a frame object, a device object, or the symbol @code{global})
@@ -160,8 +368,9 @@ same specifier and not interfere with each other.  Each tag can have a
 device. (If a tag does not have a predicate, it matches all devices.)
 All tags in a tag set must match a device for the associated inst-pair
 to be instantiable over that device.  (A null tag set is perfectly
-valid.)
+valid, and trivially matches all devices.)
 
+@c #### don't we have more device types now, gtk, ms-windows, mac-carbon?
 The valid device types (normally @code{x}, @code{tty}, and
 @code{stream}) and device classes (normally @code{color},
 @code{grayscale}, and @code{mono}) can always be used as tags, and match
@@ -474,8 +683,13 @@ specifications.
 the existing ones, and has the same semantics as for
 @code{add-spec-to-specifier}.
 
-In many circumstances, the higher-level function @code{set-specifier} is
-more convenient and should be used instead.
+The higher-level function @code{set-specifier} is often
+more convenient because it allows abbreviations of spec-lists to be used
+instead of the heavily nested canonical syntax.  However, one should
+take great care in using them with specifiers types which can have lists
+as instantiators, such as toolbar specifiers and generic specifiers.  In
+those cases it's probably best to use @code{add-spec-to-specifier} or
+@code{add-spec-list-to-specifier}.
 @end defun
 
 @defspec let-specifier specifier-list &rest body
@@ -525,7 +739,7 @@ specification), a list of tagged and/or untagged instantiators (added as
 a global specification), a cons of a locale and instantiator or locale
 and instantiator list, a list of such conses, or nearly any other
 reasonable form.  More specifically, @var{value} can be anything
-accepted by @code{canonicalize-spec-list}.
+accepted by @code{canonicalize-spec-list} (described below).
 
 @var{locale}, @var{tag-set}, and @var{how-to-add} are the same as in
 @code{add-spec-to-specifier}.
@@ -538,7 +752,10 @@ specs at all in it but @code{nil} is a valid instantiator (in that case,
 adding a global instantiator and its value is @code{nil}''), or in
 strange cases where there is an ambiguity between a spec-list and an
 inst-list, etc. (The built-in specifier types are designed in such a way
-as to avoid any such ambiguities.)
+as to avoid any such ambiguities.)  For robust code,
+@code{set-specifier} should probably be avoided for specifier types
+which accept lists as instantiators (currently toolbar specifiers and
+generic specifiers).
 
 If you want to work with spec-lists, you should probably not use these
 functions, but should use the lower-level functions
@@ -601,6 +818,10 @@ specifications).
 @var{specifier-type} specifies the type of specifier that this
 @var{spec-list} will be used for.
 
+If @var{noerror} is @code{nil}, signal an error if the spec-list is
+invalid; otherwise return @code{t} for an invalid spec-list.  (Note that
+this cannot be confused with a canonical spec-list.)
+
 Canonicalizing means converting to the full form for a spec-list, i.e.
 @code{((@var{locale} (@var{tag-set} . @var{instantiator}) ...) ...)}.
 This function accepts a possibly abbreviated specification or a list of
@@ -612,8 +833,59 @@ This function tries extremely hard to resolve any ambiguities,
 and the built-in specifier types (font, image, toolbar, etc.) are
 designed so that there won't be any ambiguities.
 
-If @var{noerror} is @code{nil}, signal an error if the spec-list is
-invalid; otherwise return @code{t}.
+The canonicalization algorithm is as follows:
+
+@enumerate
+@item
+Attempt to parse @var{spec-list} as a single, possibly abbreviated,
+specification.
+@item
+If that fails, attempt to parse @var{spec-list} as a list of (abbreviated)
+specifications.
+@item
+If that fails, @var{spec-list} is invalid.
+@end enumerate
+
+A possibly abbreviated specification @var{spec} is parsed by
+
+@enumerate
+@item
+Attempt to parse @var{spec} as a possibly abbreviated inst-list.
+@item
+If that fails, attempt to parse @var{spec} as a cons of a locale and an
+(abbreviated) inst-list.
+@item
+If that fails, @var{spec} is invalid.
+@end enumerate
+
+A possibly abbreviated inst-list @var{inst-list} is parsed by
+
+@enumerate
+@item
+Attempt to parse @var{inst-list} as a possibly abbreviated inst-pair.
+@item
+If that fails, attempt to parse @var{inst-list} as a list of (abbreviated)
+inst-pairs.
+@item
+If that fails, @var{inst-list} is invalid.
+@end enumerate
+
+A possibly abbreviated inst-pair @var{inst-pair} is parsed by
+
+@enumerate
+@item
+Check if @var{inst-pair} is @code{valid-instantiator-p}.
+@item
+If not, check if @var{inst-pair} is a cons of something that is a tag, ie,
+@code{valid-specifier-tag-p}, and something that is @code{valid-instantiator-p}.
+@item
+If not, check if @var{inst-pair} is a cons of a list of tags and something that
+is @code{valid-instantiator-p}.
+@item
+Otherwise, @var{inst-pair} is invalid.
+@end enumerate
+
+In summary, this function generally prefers more abbreviated forms.
 @end defun
 
 @node Retrieving Specifications
@@ -775,7 +1047,7 @@ This function returns the predicate for the given specifier tag.
 @section Functions for Instancing a Specifier
 
 @defun specifier-instance specifier &optional domain default no-fallback
-This function instantiates @var{specifier} (return its value) in
+This function instantiates @var{specifier} (returns its value) in
 @var{domain}.  If no instance can be generated for this domain, return
 @var{default}.
 
@@ -829,6 +1101,34 @@ returned value will be a font-instance object.  For images, the returned
 value will be a string, pixmap, or subwindow.
 @end defun
 
+@defun specifier-matching-instance specifier matchspec &optional domain default no-fallback
+This function returns an instance for @var{specifier} in @var{domain}
+that matches @var{matchspec}.  If no instance can be generated for
+@var{domain}, return @var{default}.
+
+This function is identical to @code{specifier-instance} except that a
+specification will only be considered if it matches @var{matchspec}.
+The definition of ``match,'' and allowed values for @var{matchspec}, are
+dependent on the particular type of specifier.  Here are some examples:
+
+@itemize
+@item
+For chartable (e.g. display table) specifiers, @var{matchspec} should be a
+character, and the specification (a chartable) must give a value for
+that character in order to be considered.  This allows you to specify,
+@emph{e.g.}, a buffer-local display table that only gives values for particular
+characters.  All other characters are handled as if the buffer-local
+display table is not there. (Chartable specifiers are not yet
+implemented.)
+@item
+For font specifiers, @var{matchspec} should be a charset,
+and the specification (a font string) must have
+a registry that matches the charset's registry.  (This only makes sense
+with Mule support.)  This makes it easy to choose a font that can
+display a particular character.  (This is what redisplay does, in fact.)
+@end itemize
+@end defun
+
 @defun specifier-instance-from-inst-list specifier domain inst-list &optional default
 This function attempts to convert a particular inst-list into an
 instance.  This attempts to instantiate @var{inst-list} in the given
@@ -838,8 +1138,8 @@ In most circumstances, you should not use this function; use
 @code{specifier-instance} instead.
 @end defun
 
-@node Specifier Example
-@section Example of Specifier Usage
+@node Specifier Examples
+@section Examples of Specifier Usage
 
 Now let us present an example to clarify the theoretical discussions we
 have been through.  In this example, we will use the general specifier
@@ -912,6 +1212,143 @@ our window is on recognizes the color @samp{moccasin}, and so the
 instantiation method succeeds and returns a color instance.
 @end enumerate
 
+Here's another example, which implements something like GNU Emacs's
+``frame-local'' variables.
+
+@example
+;; Implementation
+
+;; There are probably better ways to write this macro
+;; Heaven help you if VAR is a buffer-local; you will become very
+;; confused.  Probably should error on that.
+(defmacro define-frame-local-variable (var)
+  "Make the unbound symbol VAR become a frame-local variable."
+  (let ((val (if (boundp var) (symbol-value var) nil)))
+    `(progn
+      (setq ,var (make-specifier 'generic))
+      (add-spec-to-specifier ,var ',val 'global))))
+
+;; I'm not real happy about this terminology, how can `setq' be a defun?
+;; But `frame-set' would have people writing "(frame-set 'foo value)".
+(defun frame-setq (var value &optional frame)
+  "Set the local value of VAR to VALUE in FRAME.
+
+FRAME defaults to the selected frame."
+  (and frame (not (framep frame))
+       (error 'invalid-argument "FRAME must be a frame", frame))
+  (add-spec-to-specifier var value (or frame (selected-frame))))
+
+(defun frame-value (var &optional frame)
+  "Get the local value of VAR in FRAME.
+
+FRAME defaults to the selected frame."
+  (and frame (not (framep frame))
+       (error 'invalid-argument "FRAME must be a frame", frame))
+  ;; this is not just a map from frames to values; it also falls back
+  ;; to the global value
+  (specifier-instance var (or frame (selected-frame))))
+
+;; for completeness
+(defun frame-set-default (var value)
+  "Set the default value of frame-local variable VAR to VALUE."
+  (add-spec-to-specifier var value 'global))
+
+(defun frame-get-default (var)
+  "Get the default value of frame-local variable VAR."
+  (car (specifier-specs var 'global)))
+@end example
+
+Now you can execute the above definitions (eg, with @code{eval-last-sexp})
+and switch to @file{*scratch*} to play.  Things will work differently if
+you already have a variable named @code{foo}.
+
+@example
+;; Usage
+
+foo
+@error{} Symbol's value as variable is void: foo
+
+(define-frame-local-variable foo)
+@result{} nil
+
+;; the value of foo is a specifier, which is an opaque object;
+;; you must use accessor functions to get values
+
+foo
+@result{} #<generic-specifier global=(nil) 0x4f5cb>
+
+;; since no frame-local value is set, the global value (which is the
+;; constant `nil') is returned
+(frame-value foo)
+@result{} nil
+
+;; get the default explicitly
+(frame-get-default foo)
+@result{} nil
+
+;; get the whole specification list
+(specifier-specs foo 'global)
+@result{} (nil)
+
+;; give foo a frame-local value
+
+(frame-setq foo 'bar)
+@result{} nil
+
+;; access foo in several ways
+
+;; Note that the print function for this kind of specifier only
+;; gives you the global setting.  To get the full list of specs for
+;; debugging or study purposes, you must use specifier-specs or
+;; specifier-spec-list.
+foo
+@result{} #<generic-specifier global=(nil) 0x4f5cb>
+
+;; get the whole specification list
+(specifier-specs foo)
+@result{} ((#<x-frame "Message" 0x1bd66> (nil . bar)) (global (nil)))
+
+;; get the frame-local value
+(frame-value foo)
+@result{} bar
+
+;; get the default explicitly
+(frame-get-default foo)
+@result{} nil
+
+;; Switch to another frame and evaluate:
+;; C-x 5 o M-: (frame-setq foo 'baz) RET M-: (frame-value foo) RET
+@result{} baz
+
+;; Switch back.
+;; C-x 5 o
+(specifier-specs foo)
+@result{} ((#<x-frame "emacs" 0x28ec> (nil . baz))
+    (#<x-frame "Message" 0x1bd66> (nil . bar))
+    (global (nil)))
+
+(frame-value foo)
+@result{} bar
+
+(frame-get-default foo)
+@result{} nil
+@end example
+
+Note that since specifiers generalize both frame-local and buffer-local
+variables in a sensible way, XEmacs is not likely to put a high priority
+on implementing frame-local variables.
+@c Thanks to Jerry James for the following explanation.  He is not
+@c responsible for its use here, Stephen Turnbull is.
+In fact, some developers think that frame-local variables are evil for
+the same reason that buffer-local variables are evil: the declaration is
+both global and invisible.  That is, you cannot tell whether a variable
+is ``normal,'' buffer-local, or frame-local just by looking at it.  So
+if you have namespace management problems, and some other Lisp package
+happens to use a variable name that you already declared frame- or
+buffer-local, weird stuff happens, and it is extremely hard to track
+down.
+
+
 @node Creating Specifiers
 @section Creating New Specifier Objects
 
@@ -943,16 +1380,20 @@ functions @code{make-generic-specifier}, @code{make-integer-specifier},
 @end defun
 
 @defun make-specifier-and-init type spec-list &optional dont-canonicalize
-This function creates and initialize a new specifier.
+This function creates and initializes a new specifier.
 
-This is a front-end onto @code{make-specifier} that allows you to create
+This is a convenience API combining @code{make-specifier} and
+@code{set-specifier} that allows you to create
 a specifier and add specs to it at the same time.  @var{type} specifies
-the specifier type.  @var{spec-list} supplies the specification(s) to be
-added to the specifier. Normally, almost any reasonable abbreviation of
-the full spec-list form is accepted, and is converted to the full form;
-however, if optional argument @var{dont-canonicalize} is non-@code{nil},
-this conversion is not performed, and the @var{spec-list} must already
-be in full form.  See @code{canonicalize-spec-list}.
+the specifier type.  Allowed types are as for @code{make-specifier}.
+
+@var{spec-list} supplies the specification(s) to be
+added to the specifier.  Any abbreviation of
+the full spec-list form accepted by @code{canonicalize-spec-list} may
+be used.
+However, if the optional argument @var{dont-canonicalize} is non-@code{nil},
+canonicalization is not performed, and the @var{spec-list} must already
+be in full form.
 @end defun
 
 @defun make-integer-specifier spec-list
@@ -1137,12 +1578,15 @@ instantiator's tag set for the instantiator to be removed.
 This function applies @var{func} to the specification(s) for
 @var{locale} in @var{specifier}.
 
-If @var{locale} is a locale, @var{func} will be called for that locale.
+If optional @var{locale} is a locale, @var{func} will be called for that
+locale.
 If @var{locale} is a locale type, @var{func} will be mapped over all
 locales of that type.  If @var{locale} is @code{nil} or the symbol
 @code{all}, @var{func} will be mapped over all locales in
 @var{specifier}.
 
+Optional @var{ms-maparg} will be passed to @var{ms-func}.
+
 @var{func} is called with four arguments: the @var{specifier}, the
 locale being mapped over, the inst-list for that locale, and the
 optional @var{maparg}.  If any invocation of @var{func} returns
@@ -1154,4 +1598,3 @@ value returned from @code{map-specifier}.  Otherwise,
 @defun specifier-locale-type-from-locale locale
 Given a specifier @var{locale}, this function returns its type.
 @end defun
-
index a8ce727..0af08d0 100644 (file)
@@ -239,6 +239,13 @@ only for program-generated buffers.)  The users will find Emacs more
 coherent if all libraries use the same conventions.
 
 @item
+Use names starting with a space for temporary buffers (@pxref{Buffer
+Names}), or at least call @code{buffer-disable-undo} on them.  Otherwise
+they may stay referenced by internal undo variable(s) after getting
+killed.  If this happens before dumping (@pxref{Building XEmacs}), this
+may cause fatal error when portable dumper is used.
+
+@item
 Indent each function with @kbd{C-M-q} (@code{indent-sexp}) using the
 default indentation parameters.
 
@@ -488,7 +495,7 @@ at that point.  For example:
 @end group
 @end smallexample
 
-Every function that has no documentation string (because it is use only
+Every function that has no documentation string (because it is used only
 internally within the package it belongs to), should have instead a
 two-semicolon comment right before the function, explaining what the
 function does and how to call it properly.  Explain precisely what each
index e7ab517..a801ba7 100644 (file)
@@ -93,7 +93,7 @@ M-x describe variable
 
 After you type any of the above commands, you will be prompted for a
 variable name in the @dfn{echo area}. Type in the name of the variable,
-for example, type  @var{case-fold-search} @key{RET}
+for example, type  @code{case-fold-search} @key{RET}
 Your window will split into two and you will see the following message
 in that window:
 
@@ -219,9 +219,9 @@ the left margin or in the line's indentation:
 @end example
 
 @noindent
-The value of the variable @var{c-tab-always-indent} is usually @samp{t}
+The value of the variable @code{c-tab-always-indent} is usually @samp{t}
 for @samp{true}. When this variable is true, then hitting the @key{TAB}
-key always indents the current line. 
+key always indents the current line.
 
 @item
 This expression will turn on the @var{auto-fill-mode} when you are in
@@ -233,7 +233,7 @@ text mode:
 
 This mode will automatically break lines when you type a space so that
 the lines don't become too long. The length of the lines is controlled
-by the variable @var{fill-column}. You can set this variable to a value
+by the variable @code{fill-column}. You can set this variable to a value
 you wish. Look at the documentation for this variable to see its default
 value. To change the value to 75 for example, use:
 
@@ -383,7 +383,7 @@ will not be highlighted.
 
 @item 
 To control the number of buffers listed when you select the @b{Buffers}
-menu, you need to set the variable @var{buffers-menu-max-size} to
+menu, you need to set the variable @code{buffers-menu-max-size} to
 whatever value you wish. For example, if you want 20 buffers to be listed
 when you select @b{Buffers} use:
 
@@ -419,7 +419,7 @@ If you want an extensive menu-bar use the following expression in your
 @noindent
 If you want to write your own menus, you can look at some of the
 examples in
-@file{/usr/local/lib/xemacs-VERSION/lisp/packages/big-menubar.el} file.
+@file{/usr/local/lib/xemacs/xemacs-packages/lisp/edit-utils/big-menubar.el} file.
 
 @end itemize
 
index 1cfd3bf..9b68029 100644 (file)
@@ -49,7 +49,7 @@ prompts you for a file, it uses the default-directory unless you specify
 a directory. You can see what the default directory of the current
 buffer is by using the @b{Describe Variable} option from the @b{Help}
 menu. When Emacs prompts you for the variable name to describe, type
-@var{default-directory}. If you wish to open a file in some other
+@code{default-directory}. If you wish to open a file in some other
 directory, use @key{DEL} or the @key{BackSpace} key to go back and type
 the path name of the new directory.
 
@@ -201,7 +201,7 @@ saved by reading the text from the file again (called
 
 @vindex make-backup-files
    When you save a file in Emacs, it destroys its old contents. However,
-if you set the variable @var{make-backup-files} to non-@code{nil}
+if you set the variable @code{make-backup-files} to non-@code{nil}
 i.e. @samp{t}, Emacs will create a @dfn{backup} file. Select the
 @b{Describe variable} option from the @b{Help} menu and look at the
 documentation for this variable. Its default value should be
index d4cc7f6..70b321a 100644 (file)
@@ -11,7 +11,7 @@ complete typing the whole string. All searches in Emacs ignore the case
 of the text they are searching, i.e. if you are searching for "String",
 then "string" will also be one of the selections. If you want a case
 sensitive search select the @b{Case Sensitive Search} from the
-@b{Option} menu. You can also set the variable @var{case-fold-search} to
+@b{Option} menu. You can also set the variable @code{case-fold-search} to
 @code{nil} for making searches case-sensitive. For information on setting
 variables, @xref{Setting Variables}. The two commands for searching for
 strings in XEmacs are:
index a56aca7..8f8b3eb 100644 (file)
@@ -7,9 +7,9 @@
 @finalout
 @titlepage
 @title XEmacs FAQ
-@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2003/05/02 06:00:43 $
+@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2003/10/09 19:16:02 $
 @sp 1
-@author Tony Rossini <rossini@@biostat.washington.edu>
+@author Tony Rossini <rossini@@u.washington.edu>
 @author Ben Wing <ben@@xemacs.org>
 @author Chuck Thompson <cthomp@@xemacs.org>
 @author Steve Baur <steve@@xemacs.org>
@@ -1430,24 +1430,18 @@ you don't use.  @emph{Nothing bad will happen if you delete a package
 that you do not use}.  You must be sure you do not use it though, so be
 conservative at first.
 
-Possible candidates for deletion include w3, games, hyperbole, mh-e,
-hm-html-menus, vm, viper, oobr, gnus, etc.  Ask yourself, @emph{Do I
-ever want to use this package?}  If the answer is no, then it is a
-candidate for removal.
+Any package with the possible exceptions of xemacs-base, and EFS are
+candidates for removal.  Ask yourself, @emph{Do I ever want to use this
+package?}  If the answer is no, then it is a candidate for removal.
 
 First, gzip all the .el files.  Then go about package by package and
 start gzipping the .elc files.  Then run XEmacs and do whatever it is
-you normally do.  If nothing bad happens, then delete the directory.  Be
-conservative about deleting directories, and it would be handy to have a
-backup around in case you get too zealous.
+you normally do.  If nothing bad happens, then remove the package.  You
+can remove a package via the PUI interface 
+(@code{M-x pui-list-packages}, then press @kbd{d} to mark the packages
+you wish to delete, and then @kbd{x} to delete them.
 
-@file{prim}, @file{modes}, @file{packages}, and @file{utils} are four
-directories you definitely do @strong{not} want to delete, although
-certain packages can be removed from them if you do not use them.
-
-Online texinfo sources in the @file{info} can either be compressed them
-or remove them.  In either case, @kbd{C-h i} (info mode) will no longer
-work.
+Another method is to do @code{M-x package-get-delete-package}.
 
 @node Q2.0.3, Q2.0.4, Q2.0.2, Installation
 @unnumberedsubsec Q2.0.3: Compiling XEmacs with Netaudio.
@@ -1944,7 +1938,7 @@ file @file{XKeysymDB}.
 The binary cannot find the @file{XKeysymDB} file.  The location is
 hardcoded at compile time so if the system the binary was built on puts
 it a different place than your system does, you have problems.  To fix,
-set the environment variable @var{XKEYSYMDB} to the location of the
+set the environment variable @code{XKEYSYMDB} to the location of the
 @file{XKeysymDB} file on your system or to the location of the one
 included with XEmacs which should be at
 @iftex
@@ -1957,7 +1951,7 @@ The binary is finding the XKeysymDB but it is out-of-date on your system
 and does not contain the necessary lines.  Either ask your system
 administrator to replace it with the one which comes with XEmacs (which
 is the stock R6 version and is backwards compatible) or set your
-@var{XKEYSYMDB} variable to the location of XEmacs's described above.
+@code{XKEYSYMDB} variable to the location of XEmacs's described above.
 @end itemize
 
 @node Q2.1.4, Q2.1.5, Q2.1.3, Installation
@@ -1993,7 +1987,7 @@ The buffer still exists; it just isn't in your face.
 
 Help!  I can not get XEmacs to display on my Envizex X-terminal!
 
-Try setting the @var{DISPLAY} variable using the numeric IP address of
+Try setting the @code{DISPLAY} variable using the numeric IP address of
 the host you are running XEmacs from.
 
 @node Q2.1.6, Q2.1.7, Q2.1.5, Installation
@@ -3762,9 +3756,8 @@ For an extensive menubar, add this line to your @file{init.el}/@file{.emacs}:
 @end lisp
 
 If you'd like to write your own, this file provides as good a set of
-examples as any to start from.  The file is located in
-@file{lisp/packages/big-menubar.el} in the XEmacs installation
-directory.
+examples as any to start from.  The file is located in edit-utils
+package. 
 
 @node Q3.8.3, Q3.8.4, Q3.8.2, Customization
 @unnumberedsubsec Q3.8.3: How do I control how many buffers are listed in the menu @code{Buffers List}?
@@ -4546,6 +4539,14 @@ Don't let the installation procedure & instructions stop you from trying
 this package out---it's much simpler than it looks, and once installed,
 trivial to use.
 
+@email{youngs@@xemacs.org, Steve Youngs} writes:
+
+@quotation
+All the major Emacs Lisp based MUAs (Gnus, MH-E, and VM) all do their
+own thing when it comes to MIME so you won't need TM to get MIME support
+in these packages.
+@end quotation
+
 @node Q4.3.3, Q4.3.4, Q4.3.2, Subsystems
 @unnumberedsubsec Q4.3.3: Why isn't this @code{movemail} program working?
 
@@ -5903,7 +5904,9 @@ document?
 
 The package @code{ps-print}, which is now included with XEmacs, provides
 the ability to do this.  The source code contains complete instructions
-on its use, in @file{<xemacs_src_root>/lisp/packages/ps-print.el}.
+on its use, in
+@file{$prefix/lib/xemacs/xemacs-packages/lisp/ps-print/ps-print.el},
+being the default location of an installed ps-print package.
 
 @node Q5.3.4, Q5.3.5, Q5.3.3, Miscellaneous
 @unnumberedsubsec Q5.3.4: Getting @kbd{M-x lpr} to work with postscript printer.
index 183abd7..5aeef5d 100644 (file)
@@ -2106,7 +2106,7 @@ run both variants.
 Starting with XEmacs 21, XEmacs uses the class @samp{XEmacs} if it finds
 any XEmacs resources in the resource database when the X connection is
 initialized.  Otherwise, it will use the class @samp{Emacs} for
-backwards compatibility.  The variable @var{x-emacs-application-class}
+backwards compatibility.  The variable @code{x-emacs-application-class}
 may be consulted to determine the application class being used.
 
 The examples in this section assume the application class is @samp{Emacs}.
index 32adac7..5696ebe 100644 (file)
@@ -20,7 +20,6 @@ local needs with safe removal of unnecessary code.
 * Installing Packages:: How to install packages.
 * Building Packages::   Building packages from CVS sources.
 * Local.rules File::    This is an important file that you must create.
-* Creating Packages::   The basics.
 * Available Packages::  A brief directory of packaged LISP.
 @end menu
 
@@ -32,13 +31,13 @@ local needs with safe removal of unnecessary code.
 There are two main flavors of packages.
 
 @itemize @bullet
-@item
+@item 
 Regular Packages
 @cindex regular packages
 A regular package is one in which multiple files are involved and one
 may not in general safely remove any of them.
 
-@item
+@item 
 Single-File Packages
 @cindex single-file packages
 A single-file package is an aggregate collection of thematically
@@ -70,6 +69,7 @@ savings).
 
 Currently, source packages are only available via CVS.  See
 @url{http://cvs.xemacs.org/} for details.
+
 @node Installing Packages, Building Packages, Package Terminology, Packages
 @comment  node-name,  next,  previous,  up
 @cindex installing packages
@@ -95,7 +95,7 @@ where you grabbed the core distribution from, and are located in the
 subdirectory @file{packages}.  Package file names follow
 the naming convention @file{<package-name>-<version>-pkg.tar.gz}.
 
-If you have @ref{(EFS)}, packages can be installed over the network.
+If you have EFS @ref{(EFS)}, packages can be installed over the network.
 Alternatively, if you have copies of the packages locally, you can
 install packages from a local disk or CDROM.
 
@@ -107,13 +107,13 @@ are installed, using the visual package browser and installer.  You can
 access it via the menus:
 
 @example
-        Tools -> Packages -> List and Install
+Tools -> Packages -> List and Install
 @end example
 
 Or, you can get to it via the keyboard:
 
 @example
-M-x pui-list-packages
+@code{M-x pui-list-packages}
 @end example
 
 Hint to system administrators of multi-user systems: it might be a good
@@ -125,10 +125,10 @@ using the @code{package-get-package-provider} function. Eg., if you know
 that you need @code{thingatpt}, type:
 
 @example
-M-x package-get-package-provider RET thingatpt
+@code{M-x package-get-package-provider RET thingatpt}
 @end example
 
-which will return something like (fsf-compat "1.08"). You can the use
+which will return something like @samp{(fsf-compat "1.08")}. You can the use
 one of the methods above for installing the package you want.
 
 @subsection XEmacs and Installing Packages
@@ -136,80 +136,18 @@ one of the methods above for installing the package you want.
 There are three main ways to install packages:
 
 @menu
-* Sumo::              All at once, using the 'Sumo Tarball'.
-* Manually::          Using individual package tarballs.
 * Automatically::     Using the package tools from XEmacs.
+* Manually::          Using individual package tarballs.
+* Sumo::              All at once, using the 'Sumo Tarball'.
 * Which Packages::    Which packages to install.
 * Removing Packages:: Removing packages.
 @end menu
 
 But regardless of the method you use to install packages, they can only
-be used by XEmacs after a restart.
-
-@node Sumo, Manually, ,Installing Packages
-@comment  node-name,  next,  previous,  up
-@cindex sumo package install
-@heading Installing the Sumo Packages:
-Those with little time, cheap connections and plenty of disk space can
-install all the packages at once using the sumo tarballs.
-Download the file: @file{xemacs-sumo.tar.gz}
-
-For an XEmacs compiled with Mule you also need: @file{xemacs-mule-sumo.tar.gz}
-
-N.B. They are called 'Sumo Tarballs' for good reason. They are
-currently about 19MB and 4.5MB (gzipped) respectively.
-
-Install them by:
-
-@code{cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xvf - RET}
-
-Or, if you have GNU tar:
-
-@code{cd $prefix/lib/xemacs ; tar zxvf /path/to/<tarballname> RET}
+be used by XEmacs after a restart unless the package in question has not
+been previously installed.
 
-As the Sumo tarballs are not regenerated as often as the individual
-packages, it is recommended that you use the automatic package tools
-afterwards to pick up any recent updates.
-
-@node Manually, Automatically, Sumo, Installing Packages
-@comment  node-name,  next,  previous,  up
-@cindex manual package install
-@heading Manual Package Installation:
-Fetch the packages from the FTP site, CD-ROM whatever. The filenames
-have the form @file{name-<version>-pkg.tar.gz} and are gzipped tar files. For
-a fresh install it is sufficient to untar the file at the top of the
-package hierarchy. 
-
-Note: If you are upgrading packages already installed, it's best to
-remove the old package first @ref{Removing Packages}.
-
-For example if we are installing the @file{xemacs-base}
-package (version 1.48):
-
-@example
-   mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist yet
-   cd $prefix/lib/xemacs/xemacs-packages RET
-   gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET
-
-Or if you have GNU tar, the last step can be:
-
-   tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET
-@end example
-
-For MULE related packages, it is best to untar into the mule-packages
-hierarchy, i.e. for the @file{mule-base} package, version 1.37:
-
-@example
-   mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet
-   cd $prefix/lib/xemacs/mule-packages RET
-   gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET
-
-Or if you have GNU tar, the last step can be:
-
-   tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET
-@end example
-
-@node Automatically, Which Packages ,Manually, Installing Packages
+@node Automatically, Manually, ,Installing Packages
 @comment  node-name,  next,  previous,  up
 @cindex automatic package install
 @cindex package tools
@@ -229,33 +167,31 @@ you need are:
 
 and optionally:
 
-   mule-base    - Needed if you want to use XEmacs with MULE.
+   mailcrypt    - To do PGP verification of the @file{package-index}
+                  file. 
 @end example
 
 After installing these by hand, fire up XEmacs and follow these
 steps.
 
 @enumerate 1
-@item
+@item 
 Choose a download site.
-via menu: Tools -> Packages -> Add Download Site 
+via menu: Tools -> Packages -> Set Download Site 
 via keyb: @code{M-x customize-variable RET package-get-remote RET}
 (put in the details of remote host and directory)
 
 If the package tarballs _AND_ the package-index file are in a
-local directory, you can: @code{M-x pui-add-install-directory RET}
+local directory, you can: @code{M-x pui-set-local-package-get-directory RET}
 
-@item
+@item 
 Obtain a list of packages and display the list in a buffer named
 @file{*Packages*}.
 menu: Tools -> Packages -> List & Install
 keyb: @code{M-x pui-list-packages RET}
 
 XEmacs will now connect to the remote site and download the
-latest package-index file.  If you see an error about the
-package-index entries not being PGP signed, you can safely
-ignore this because PGP has not been integrated into the XEmacs
-package tools yet.
+latest package-index file.
 
 The visual package browser will then display a list of all packages.
 Help information will be displayed at the very bottom of the buffer; you
@@ -278,7 +214,7 @@ installed and is up to date.
 
 From here, you can select or unselect packages for installation using
 the @key{RET} key, the @kbd{Mouse-2} button or selecting "Select" from
-the (Popup) Menu.
+the Popup @kbd{Mouse-3} Menu.
 Once you've finished selecting the packages, you can
 press the @kbd{x} key (or use the menu) to actually install the
 packages. Note that you will have to restart XEmacs for XEmacs to
@@ -307,15 +243,17 @@ Kill the package buffer.
 @end table
 
 Moving the mouse over a package will also cause additional information
-about the package to be displayed in the minibuffer.
+about the package to be displayed in the minibuffer.  If you have
+balloon-help enabled a balloon-help frame will pop up and display
+additional package information also.
 
 
-@item
+@item 
 Choose the packages you wish to install.
 mouse: Click button 2 on the package name.
  keyb: @kbd{RET} on the package name
 
-@item
+@item 
 Make sure you have everything you need.
 menu: Packages -> Add Required
 keyb: @kbd{r}
@@ -327,7 +265,7 @@ those packages also.
 For novices and gurus alike, this step can save your bacon.
 It's easy to forget to install a critical package.
 
-@item
+@item 
 Download and install the packages.
 menu: Packages -> Install/Remove Selected
 keyb: @kbd{x}
@@ -343,7 +281,81 @@ Enter the name of the package (e.g., @code{prog-modes}), and XEmacs
 will search for the latest version and install it and any packages that
 it depends upon.
 
-@node Which Packages, Removing Packages, Automatically, Installing Packages
+@heading Keeping Packages Up To Date:
+Once you have the packages you want installed (using any of the above
+methods) you'll want to keep them up to date.  You can do this easily
+from the menubar:
+
+@example
+Tools -> Packages -> Set Download Site
+Tools -> Packages -> Update Installed Packages
+@end example
+
+
+@node Manually, Sumo, Automatically, Installing Packages
+@comment  node-name,  next,  previous,  up
+@cindex manual package install
+@heading Manual Package Installation:
+Fetch the packages from the FTP site, CD-ROM whatever. The filenames
+have the form @file{name-<version>-pkg.tar.gz} and are gzipped tar files. For
+a fresh install it is sufficient to untar the file at the top of the
+package hierarchy. 
+
+Note: If you are upgrading packages already installed, it's best to
+remove the old package first @ref{Removing Packages}.
+
+For example if we are installing the @file{xemacs-base}
+package (version 1.48):
+
+@example
+   mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist yet
+   cd $prefix/lib/xemacs/xemacs-packages RET
+   gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET
+
+Or if you have GNU tar, the last step can be:
+
+   tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET
+@end example
+
+For MULE related packages, it is best to untar into the mule-packages
+hierarchy, i.e. for the @file{mule-base} package, version 1.37:
+
+@example
+   mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet
+   cd $prefix/lib/xemacs/mule-packages RET
+   gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET
+
+Or if you have GNU tar, the last step can be:
+
+   tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET
+@end example
+
+@node Sumo, Which Packages, Manually, Installing Packages
+@comment  node-name,  next,  previous,  up
+@cindex sumo package install
+@heading Installing the Sumo Packages:
+Those with little time, cheap connections and plenty of disk space can
+install all the packages at once using the sumo tarballs.
+Download the file: @file{xemacs-sumo.tar.gz}
+
+For an XEmacs compiled with Mule you also need: @file{xemacs-mule-sumo.tar.gz}
+
+N.B. They are called 'Sumo Tarballs' for good reason. They are
+currently about 19MB and 4.5MB (gzipped) respectively.
+
+Install them by:
+
+@code{cd $prefix/lib/xemacs ; gunzip -c <tarballname> | tar xvf - RET}
+
+Or, if you have GNU tar:
+
+@code{cd $prefix/lib/xemacs ; tar zxvf /path/to/<tarballname> RET}
+
+As the Sumo tarballs are not regenerated as often as the individual
+packages, it is recommended that you use the automatic package tools
+afterwards to pick up any recent updates.
+
+@node Which Packages, Removing Packages, Sumo, Installing Packages
 @comment  node-name,  next,  previous,  up
 @cindex which packages
 @cindex choosing packages
@@ -354,7 +366,7 @@ everything. A good minimal set of packages for XEmacs-latin1 would be
 
 xemacs-base, xemacs-devel, c-support, cc-mode, debug, dired, efs,
 edit-utils, fsf-compat, mail-lib, net-utils, os-utils, prog-modes,
-text-modes, time
+text-modes, time, mailcrypt
 
 If you are using the XEmacs package tools, don't forget to do:
 
@@ -402,7 +414,7 @@ Currently, source packages are only available via anonymous CVS.  See
 @item GNU make 
 (3.75 or later preferred).
 @item makeinfo 
-(1.68 from texinfo-3.11 or later required).
+(4.2 from GNU texinfo 4.2 or later required).
 @item GNU tar
 (or equivalent).
 @item GNU gzip
@@ -418,52 +430,10 @@ The packages CVS sources are most useful for creating XEmacs package
 tarballs for installation into your own XEmacs installations or for
 distributing to others.
 
-Supported operations from @file{make} are:
-
-@table @code
-@item all
-Bytecompile all files, build and bytecompile byproduct files like
-@file{auto-autoloads.el} and @file{custom-load.el}.  Create info version
-of TeXinfo documentation if present.
-
-@item bindist
-Does a @code{make all} as well as create a binary package tarball in the
-staging directory.
-
-@item install
-Bytecompile all files, build and bytecompile byproduct files like
-@file{auto-autoloads.el} and @file{custom-load.el}.  Create info version
-of TeXinfo documentation if present.  And install everything into the
-staging directory.
-
-@item srckit
-Usually aliased to @code{srckit-std}.  This does a @code{make
-distclean} and creates a package source tarball in the staging
-directory.  This is generally only of use for package maintainers.
-
-@item binkit
-May be aliased to @code{binkit-sourceonly}, @code{binkit-sourceinfo},
-@code{binkit-sourcedata}, or
-@code{binkit-sourcedatainfo}. @code{sourceonly} indicates there is
-nothing to install in a data directory or info directory.
-@code{sourceinfo} indicates that source and info files are to be
-installed.  @code{sourcedata} indicates that source and etc (data) files
-are to be installed.  @code{sourcedatainfo} indicates source, etc
-(data), and info files are to be installed.  A few packages have needs
-beyond the basic templates so this is not yet complete.
-
-@item dist
-Runs the rules @code{srckit} followed by @code{binkit}.  This is
-primarily of use by XEmacs maintainers producing files for distribution.
-
-@item clean
-Remove all built files except @file{auto-autoloads.el} and @file{custom-load.el}.
-
-@item distclean
-Remove all created files.
-@end table
+For a list and description of the different @file{Makefile} targets,
+@xref{Makefile Targets,,,lispref}.
 
-@node Local.rules File, Creating Packages, Building Packages, Packages
+@node Local.rules File, Available Packages, Building Packages, Packages
 @comment  node-name,  next,  previous,  up
 @cindex local.rules
 @heading The Local.rules File:
@@ -472,201 +442,10 @@ the top level of the CVS module, @file{packages}, contains the
 file, @file{Local.rules.template}.  Simply copy that to
 @file{Local.rules} and edit it to suit your needs.
 
-These are the variables in 'Local.rules' that you will need to
-address. Items that have default settings have those defaults shown. 
-
-@table @var
-@item XEMACS = xemacs
-If your XEmacs isn't in your path, change this.  Native MS Windows users
-should double quote this if the path has embedded spaces.
-
-@item BUILD_WITHOUT_MULE =
-Building from CVS defaults to building the Mule
-packages.  Set this to 't' if you don't want/have Mule
-
-@item XEMACS_NATIVE_NT =
-Set this to 't' if you are building on WinNT.  NT users should note that
-you still need the Cygwin environment to build the packages.
-
-@item XEMACS_INSTALLED_PACKAGES_ROOT = /usr/local/lib/xemacs
-This is the directory tree under which the installed packages go.  Under
-this directory there would normally be @file{xemacs-packages/} for
-standard (non-Mule) packages, @file{mule-packages/} for Mule packages
-(if you built XEmacs with Mule), and possibly @file{site-packages/} for
-3rd party packages that aren't distributed by XEmacs.org.
-
-@item symlink = 
-Set this to 't' if you want to do a "run in place".
-Setting this doesn't work well with 'make bindist'
-
-@item NONMULE_INSTALLED_PACKAGES_ROOT = $@{XEMACS_INSTALLED_PACKAGES_ROOT@}/xemacs-packages
-This is where the non-Mule packages are installed to.  You probably
-don't want to change this.
-
-@item MULE_INSTALLED_PACKAGES_ROOT = $@{XEMACS_INSTALLED_PACKAGES_ROOT@}/mule-packages
-This is where the Mule packages are installed to.  You probably don't
-want to change this.  Please note that @code{make bindist} does
-@emph{not} use this variable.  When doing a @code{make bindist}
-@emph{everything} goes into @var{NONMULE_INSTALLED_PACKAGES_ROOT}.
-
-@item NONMULE_PACKAGES = xemacs-packages
-This is where you set the non-Mule packages that you want to install. eg:
-@example
-      XEMACS_PACKAGES = xemacs-packages/xemacs-base xemacs-packages/bbdb
-@end example
-
-@item MULE_PACKAGES = mule-packages
-Same as for 'XEMACS_PACKAGES' except you list the Mule
-packages you want to install here. eg:
-@example
-      MULE_PACKAGES = mule-packages/mule-base mule-packages/skk
-@end example
-
-@item PACKAGE_INDEX = package-index
-If you want the package-index file to have a different
-name, change this.
+For a complete discussion of the @file{Local.rules} file,
+@xref{Local.rules File,,,lispref}.
 
-@item INSTALL = install -c
-The path to your BSD compatible install program.
-
-@item TAR = tar
-The path to your tar program
-
-@item BZIP2 =
-If you want bzip2 tarballs, set this.
-
-@item MAKEINFO = makeinfo
-The path to your makeinfo program
-@end table
-
-
-@node Creating Packages, Available Packages, Local.rules File, Packages
-@comment  node-name,  next,  previous,  up
-@cindex creating packages
-@heading Creating Packages:
-Creating a package from an existing Lisp library is not very difficult.
-
-In addition to the Lisp libraries themselves, you need a
-@file{package-info.in} file and a simple @file{Makefile}.  The rest is
-done by @file{XEmacs.rules}, part of the packaging system
-infrastructure.
-
-@file{package-info.in} contains a single Lisp form like this:
-
-@example
-(name                               ; your package's name
-  (standards-version 1.1
-   version VERSION
-   author-version AUTHOR_VERSION
-   date DATE
-   build-date BUILD_DATE
-   maintainer MAINTAINER
-   distribution xemacs              ; change to "mule" if MULE is needed
-   priority high
-   category CATEGORY
-   dump nil
-   description "DESCRIPTION"        ; one-line period-terminated string
-   filename FILENAME
-   md5sum MD5SUM
-   size SIZE
-   provides (feature1 feature2)     ; one for every `provides' form
-   requires (REQUIRES)
-   type regular
-))
-@end example
-
-You must fill in the four commented lines.  The value of @code{name} is
-the name of your package as an unquoted symbol.  Normally it is the name
-of the main Lisp file or principal feature provided.  The allowed values
-for distribution are @code{xemacs} and @code{mule}.  Write them as
-unquoted symbols.  The @code{description} is a quoted Lisp string; use
-the usual conventions.  The first letter should be capitalized, and the
-string should end in a period.  It need not be a complete sentence
-grammatically.  The value for @code{provides} is a list of feature
-symbols (written unquoted).  All of the features provided by libraries
-in your package should be elements of this list.  Implementing an
-automatic method for generating the @file{provides} line is desirable,
-but as yet undone.
-
-The variables in upper-case are references to variables set in the
-@file{Makefile} or automatically generated.  Do not change them; they
-are automatically filled in by the build process.
-
-The remaining lines refer to implementation constants
-(@code{standards-version}), or features that are unimplemented or have
-been removed (@code{priority} and @code{dump}).  The @code{type} line is
-not normally relevant to external maintainers; the alternate value is
-@code{single-file}, which refers to packages consed up out of a number
-of single-file libraries that are more or less thematically related.  An
-example is @code{prog-modes}.  Single-file packages are basically for
-administrative convenience, and new packages should generally be created
-as regular packages.
-
-The @file{Makefile} is quite stylized.  The idea is similar to an
-@file{Imakefile} or an @code{automake} file: the complexity is hidden in
-generic rules files, in this case the @file{XEmacs.rules} include file
-in the top directory of the packages hierarchy.  Although a number of
-facilities are available for complex libraries, most simple packages'
-@file{Makefile}s contain a copyright notice, a few variable definitions,
-an include for @file{XEmacs.rules}, and a couple of standard targets.
-
-The first few @code{make} variables defined are @code{VERSION},
-@code{AUTHOR_VERSION}, @code{MAINTAINER}, @code{PACKAGE},
-@code{PKG_TYPE}, @code{REQUIRES}, and @code{CATEGORY}.  All but one were
-described in the description of @file{package-info.in}.  The last is an
-administrative grouping.  Current categories include @code{standard},
-and @code{mule}.
-
-Next, define the variable @code{ELCS}.  This contains the list of the
-byte-compiled Lisp files used by the package.  These files and their
-@file{.el} versions will be included in the binary package.  If there
-are other files (such as extra Lisp sources or an upstream
-@file{Makefile}) that are normally placed in the installed Lisp
-directory, but not byte-compiled, they can be listed as the value of
-@code{EXTRA_SOURCES}.
-
-The include is simply
-@example
-include ../../XEmacs.rules
-@end example
-
-The standard targets follow.  These are
-
-@example
-all:: $(ELCS) auto-autoloads.elc
-
-srckit: srckit-alias
-
-binkit: binkit-alias
-@end example
-
-Other targets (such as Texinfo sources) may need to be added as
-dependencies for the @code{all} target.  Dependencies for @code{srckit}
-and @code{binkit} (that is, values for @var{srckit-alias} and
-@var{binkit-alias}) are defined in @file{XEmacs.rules}.  The most useful
-of these values are given in the following table.
-
-@table @var
-@item srckit-alias
-Usually set to @code{srckit-std}.
-
-@item binkit-alias
-May be set to @code{binkit-sourceonly}, @code{binkit-sourceinfo},
-@code{binkit-sourcedata}, or
-@code{binkit-sourcedatainfo}.  @code{sourceonly} indicates there is
-nothing to install in a data directory or info directory.
-@code{sourceinfo} indicates that source and info files are to be
-installed.  @code{sourcedata} indicates that source and etc (data) files
-are to be installed.  @code{sourcedatainfo} indicates source, etc
-(data), and info files are to be installed.
-@end table
-
-Data files include things like pixmaps for a package-specific toolbar,
-and are normally installed in @file{etc/@var{PACKAGE_NAME}}.  A few
-packages have needs beyond the basic templates.  See @file{XEmacs.rules}
-or a future revision of this manual for details.
-
-@node Available Packages,  , Creating Packages, Packages
+@node Available Packages,  , Local.rules File, Packages
 @comment  node-name,  next,  previous,  up
 @cindex available packages
 @cindex packages
@@ -676,7 +455,7 @@ xemacs.org and it's mirrors.  If a particular package that you are
 looking for isn't here, please send a message to the
 @email{xemacs-beta@@xemacs.org, XEmacs Beta list}.
 
-This data is up to date as of September 22, 2002.
+This data is up to date as of June 27, 2003.
 
 @subsection Normal Packages
 A very broad selection of elisp packages.
@@ -793,6 +572,9 @@ GNU Emacs compatibility files.
 @item games
 Tetris, Sokoban, and Snake.
 
+@item general-docs
+General documentation.  Presently, empty.
+
 @item gnats
 XEmacs bug reports.
 
@@ -851,13 +633,13 @@ Support for Multiple Major Modes within a single buffer.
 Miscellaneous Networking Utilities.  This is a single-file package and 
 files may be deleted at will.
 
+@item ocaml
+Objective Caml editing support.
+
 @item os-utils
 Miscellaneous single-file O/S utilities, for printing, archiving,
 compression, remote shells, etc.
 
-@item ocaml
-Objective Caml language support.
-
 @item pc
 PC style interface emulation.
 
@@ -870,6 +652,9 @@ Provides programmatic completion.
 @item perl-modes
 Perl language support.
 
+@item pgg
+Emacs interface to various PGP implementations.
+
 @item prog-modes
 Miscellaneous single-file lisp files for various programming languages.
 
@@ -982,6 +767,9 @@ An Emacs mailer.
 @item w3
 A Web browser.
 
+@item x-symbol
+Semi WYSIWYG for LaTeX, HTML, etc, using additional fonts.
+
 @item xemacs-base
 Fundamental XEmacs support.  Install this unless you wish a totally
 naked XEmacs.
index 57e965c..ca1e156 100644 (file)
@@ -4,29 +4,35 @@
 @cindex mail
 @cindex message
 
-XEmacs provides three separate mail-reading packages.  Each one comes with
-its own manual, which is included standard with the XEmacs distribution.
+XEmacs provides several mail-reading packages.  Each one comes with
+its own manual, which is included in each package.
 
 The recommended mail-reading package for new users is VM.  VM works
 with standard Unix-mail-format folders and was designed as a replacement
 for the older Rmail.
 
 XEmacs also provides a sophisticated and comfortable front-end to the
-MH mail-processing system, called @samp{mh-e}.  Unlike in other
+MH mail-processing system, called @samp{MH-E}.  Unlike in other
 mail programs, folders in MH are stored as file-system directories,
 with each message occupying one (numbered) file.  This facilitates
 working with mail using shell commands, and many other features of
 MH are also designed to integrate well with the shell and with
-shell scripts.  Keep in mind, however, that in order to use mh-e
+shell scripts.  Keep in mind, however, that in order to use MH-E
 you must have the MH mail-processing system installed on your
 computer.
 
-Finally, XEmacs provides the Rmail package.  Rmail is (currently) the
-only mail reading package distributed with FSF GNU Emacs, and is
-powerful in its own right.  However, it stores mail folders in a special
-format called @samp{Babyl}, that is incompatible with all other
-frequently-used mail programs.  A utility program is provided for
-converting Babyl folders to standard Unix-mail format; however, unless
-you already have mail in Babyl-format folders, you should consider
-using VM or mh-e instead. (If at times you have to use FSF Emacs, it
-is not hard to obtain and install VM for that editor.)
+The @dfn{Everything including the kitchen sink} package @samp{Gnus} is
+also available as an XEmacs package.  Gnus also handles Usenet articles
+as well as mail.
+
+@samp{MEW} (Messaging in the Emacs World) is another mail-reading
+package available for XEmacs.
+
+Finally, XEmacs provides the Rmail package.  Rmail is (currently)
+the only mail reading package distributed with FSF GNU Emacs, and is
+powerful in its own right.  However, it stores mail folders in a
+special format called @samp{Babyl}, that is incompatible with all
+other frequently-used mail programs.  A utility program is provided
+for converting Babyl folders to standard Unix-mail format; however,
+unless you already have mail in Babyl-format folders, you should
+consider using Gnus, VM, or MH-E instead.
index d5d83b6..89fd4b3 100644 (file)
@@ -241,7 +241,6 @@ Packages
 * Installing Packages:: How to install packages.
 * Building Packages::   Building packages from sources.
 * Local.rules File::    An important part of building packages.
-* Creating Packages::   The basics.
 * Available Packages::  A brief directory of packaged LISP.
 
 Basic Editing Commands
index 696f348..7a19f38 100644 (file)
@@ -1,3 +1,7 @@
+2004-02-02  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.15 is released
+
 2003-09-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.14 is released
index d568d0b..1fa8429 100644 (file)
@@ -1,3 +1,21 @@
+2004-02-02  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.15 is released
+
+2003-12-10  Adrian Aichner  <adrian@xemacs.org>
+
+       * xemacs.mak (COPYCMD): New.
+       * xemacs.mak (COPY): New.
+       * xemacs.mak (COPYDIR): New.
+       * xemacs.mak (XEMACS_INCLUDES):
+       * xemacs.mak (install): Allow xemacs.mak to overwrite existing
+       installation.
+
+2003-11-06  Adrian Aichner  <adrian@xemacs.org>
+
+       * minitar.c: Sync with Xemacs 21.5 version to fix package
+       installation in native Windows XEmacs.
+
 2003-09-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.14 is released
index a704d5f..d5e3d40 100644 (file)
 
 #include <zlib.h>
 
-static int
-Usage(char *name)
+static void
+Usage (char *name)
 {
-  fprintf(stderr,"Usage: %s file.tar.gz [base-dir]\n",name);
-  fprintf(stderr,"\tExtracts the contents compressed tar file to base-dir\n");
-  exit(-1);
+  fprintf (stderr, "Usage: %s file.tar.gz [base-dir]\n", name);
+  fprintf (stderr, "\tExtracts the contents compressed tar file to base-dir\n");
+  exit (-1);
 }
 
 
@@ -36,10 +36,10 @@ Usage(char *name)
 #define MAXNAMELEN 1024
 
 static int
-octal(char *str)
+octal (char *str)
 {
   int ret = -1;
-  sscanf(str,"%o",&ret);
+  sscanf (str, "%o", &ret);
   return ret;
 }
 
@@ -48,39 +48,40 @@ octal(char *str)
    path component, so it is not created as a directory */
 
 static int
-makepath(char *path)
+makepath (char *path)
 {
   char tmp[MAXNAMELEN];
   char *cp;
 
-  for (cp=path; cp; cp = (char*)strchr(cp+1,'/')){
-    if (!*cp)
-      break;
-    if (*cp != '/')
-      continue;
-    strncpy(tmp, path, cp-path);
-    tmp[cp-path] = '\0';
-    if (strlen(tmp) == 0)
-      continue;
+  for (cp=path; cp; cp = (char*)strchr (cp+1, '/'))
+    {
+      if (!*cp)
+       break;
+      if (*cp != '/')
+       continue;
+      strncpy (tmp, path, cp-path);
+      tmp[cp-path] = '\0';
+      if (strlen (tmp) == 0)
+       continue;
 #ifdef WIN32_NATIVE
-    if (mkdir(tmp)){
+      if (mkdir (tmp))
 #else
-    if (mkdir(tmp,0777)){
+       if (mkdir (tmp, 0777))
 #endif
-      if (errno == EEXIST)
-       continue;
-      else
-       return -1;
+         {
+           if (errno == EEXIST)
+             continue;
+           else
+             return -1;
+         }
     }
-  }
   return 0;
 }
 
-  
-                    
+
 
 int
-main(int argc, char **argv)
+main (int argc, char **argv)
 {
   char fullname[MAXNAMELEN];
   char *basedir = ".";
@@ -101,124 +102,145 @@ main(int argc, char **argv)
   int directory = 0;
 
   if (argc < 2 || argc > 3)
-    Usage(argv[0]);
+    Usage (argv[0]);
 
   tarfile = argv[1];
   if (argc==3)
     basedir = argv[2];
 
-  if (! (infile = gzopen(tarfile,"rb"))){
-    fprintf(stderr,"Cannot open %s\n", tarfile);
-    exit(-2);
-  }
-  
-  while (1){
-  
-
-    nread = gzread(infile,block,512);
-
-    if (!in_block && nread == 0)
-      break;
-
-    if (nread != BLOCKSIZE){
-      fprintf(stderr,"Error: incomplete block read. Exiting.\n");
-      exit(-2);
+  if (! (infile = gzopen (tarfile, "rb")))
+    {
+      fprintf (stderr, "Cannot open %s\n", tarfile);
+      exit (-2);
     }
+  
+  while (1)
+    {
+      nread = gzread (infile, block, 512);
 
-    if (!in_block){
-      if (block[0]=='\0')  /* We're done */
+      if (!in_block && nread == 0)
        break;
 
-      strncpy(magic,block+257,6);
-      magic[6] = '\0';
-      if (strcmp(magic,"ustar ")){
-       fprintf(stderr,
-               "Error: incorrect magic number in tar header. Exiting\n");
-      }
-
-      strncpy(name,block,100);
-      name[100] = '\0';
-      sprintf(fullname,"%s/%s",basedir,name);
-      printf("%s\n",fullname);
-      type = block[156];
+      if (nread != BLOCKSIZE)
+       {
+         fprintf (stderr, "Error: incomplete block read. Exiting.\n");
+         exit (-2);
+       }
+
+      if (!in_block)
+       {
+         if (block[0]=='\0')  /* We're done */
+           break;
+
+         strncpy (magic, block+257, 6);
+         magic[6] = '\0';
+         if (strcmp (magic, "ustar "))
+           {
+             fprintf (stderr,
+                      "Error: incorrect magic number in tar header. Exiting\n");
+             exit (-2);
+           }
+
+         strncpy (name, block, 100);
+         name[100] = '\0';
+         sprintf (fullname, "%s/%s", basedir, name);
+         printf ("%s\n", fullname);
+         type = block[156];
       
-      switch(type){
-      case '0':
-      case '\0':
-       directory = 0;
-       break;
-      case '5':
-       directory = 1;
-       break;
-      default:
-       fprintf(stderr,"Error: unknown type flag %c. Exiting.\n",type);
-       break;
-      }
+         switch (type)
+           {
+           case '0':
+           case '\0':
+             directory = 0;
+             break;
+           case '5':
+             directory = 1;
+             break;
+           default:
+             fprintf (stderr, "Error: unknown type flag %c. Exiting.\n", type);
+             exit (-2);
+             break;
+           }
       
-      if (directory){
-       in_block = 0;
+         if (directory)
+           {
+             in_block = 0;
        
-       /* makepath will ignore the final path component, so make sure 
-          dirnames have a trailing slash */
-
-       if (fullname[strlen(fullname)-1] != '/')
-         strcat(fullname,"/");
-       if (makepath(fullname)){
-         fprintf(stderr, "Error: cannot create directory %s. Exiting.\n",
-                 fullname);
-         exit(-2);
+             /* makepath will ignore the final path component, so make sure 
+                dirnames have a trailing slash */
+
+             if (fullname[strlen (fullname)-1] != '/')
+               strcat (fullname, "/");
+             if (makepath (fullname))
+               {
+                 fprintf (stderr, "Error: cannot create directory %s. Exiting.\n",
+                          fullname);
+                 exit (-2);
+               }
+             continue;
+           }
+         else
+           { /*file */
+             in_block = 1;
+             if (outfile)
+               {
+                 if (fclose (outfile))
+                   {
+                     fprintf (stderr, "Error: cannot close file %s. Exiting.\n",
+                              fullname);
+                     exit (-2);
+                   }
+                 outfile = (FILE*)0;
+               }
+
+             if (!(outfile = fopen (fullname, "wb")))
+               {
+                 /*try creating the directory, maybe it's not there */
+                 if (makepath (fullname))
+                   {
+                     fprintf (stderr, "Error: cannot create file %s. Exiting.\n",
+                              fullname);
+                     exit (-2);
+                   }
+                 /* now try again to open the file */
+                 if (!(outfile = fopen (fullname, "wb")))
+                   {
+                     fprintf (stderr, "Error: cannot create file %s. Exiting.\n",
+                              fullname);
+                     exit (-2);
+                   }
+               }
+
+             strncpy (osize, block+124, 12);
+             osize[12] = '\0';
+             size = octal (osize);
+             if (size<0)
+               {
+                 fprintf (stderr, "Error: invalid size in tar header. Exiting.\n");
+                 exit (-2);
+               }
+             if (size==0)      /* file of size 0 is done */
+               in_block = 0;
+           }
        }
-       continue;
-      } else { /*file */
-       in_block = 1;
-       if (outfile){
-         if (fclose(outfile)){
-           fprintf(stderr,"Error: cannot close file %s. Exiting.\n",
-                   fullname);
-           exit(-2);
-         }
-         outfile = (FILE*)0;
-       }
-
-       if ( !(outfile = fopen(fullname,"wb"))){
-         /*try creating the directory, maybe it's not there */
-         if (makepath(fullname)){
-           fprintf(stderr,"Error: cannot create file %s. Exiting.\n",
-                   fullname);
-           exit(-2);
-         }
-         /* now try again to open the file */
-         if (!(outfile = fopen(fullname,"wb"))){
-           fprintf(stderr,"Error: cannot create file %s. Exiting.\n",
-                   fullname);
-           exit(-2);
-         }
-       }
-
-       strncpy(osize,block+124,12);
-       osize[12] = '\0';
-       size = octal(osize);
-       if (size<0){
-         fprintf(stderr,"Error: invalid size in tar header. Exiting.\n");
-         exit(-2);
-       }
-      }
-    } else { /* write or continue writing file contents */
-      nbytes = size>512? 512:size;
+      else
+       { /* write or continue writing file contents */
+         nbytes = size>512? 512:size;
       
-      nwritten = fwrite(block, 1, nbytes, outfile);
-      if (nwritten != nbytes){
-       fprintf(stderr, "Error: only wrote %d bytes to file %s. Exiting.\n",
-               nwritten, fullname);
-      }
-      size -= nbytes;
-      if (size==0)
-       in_block = 0;
+         nwritten = fwrite (block, 1, nbytes, outfile);
+         if (nwritten != nbytes)
+           {
+             fprintf (stderr, "Error: only wrote %d bytes to file %s. Exiting.\n",
+                      nwritten, fullname);
+             exit (-2);
+           }
+         size -= nbytes;
+         if (size==0)
+           in_block = 0;
+       }
     }
-  }
-  exit (0);
-}      
-
+  return 0;
+}
 
 
   
index 235937b..35ddb91 100644 (file)
@@ -44,16 +44,25 @@ LWLIB_SRCDIR=$(XEMACS)\lwlib
 MAKEDIRSTRING=$(MAKEDIR:\=\\)
 XEMACSDIRSTRING=$(MAKEDIRSTRING:\\nt=)
 
-
-# Define a variable for the 'del' command to use
-# N.B. Windows Millenium Edition's ERASE can only handle one target (file or
-# wildcard) per invocation.  Make sure each use has only one target!
-DEL=-del
-
 # Program name and version
 
 !include "$(XEMACS)\version.sh"
 
+# Put these before including config.inc so they can be overridden there.
+# Note that some versions of some commands are deficient.
+
+# Define a variable for the 'del' command to use.
+# WinME's DEL command can only handle one argument and only has the /P flag.
+# So only delete one glob at a time.  Override flags in config.inc.
+DEL=-del
+
+# Tell COPY, MOVE, and XCOPY to suppress confirmation for overwriting
+# files.
+COPYCMD=/y
+# Define the 'copy' command to use.
+COPY=xcopy /q
+COPYDIR=xcopy /q /e
+
 !include "config.inc"
 
 !if !defined(INFODOCK)
@@ -490,12 +499,15 @@ XEMACS_INCLUDES=\
 
 # #### Copying is cheap, we should just force these
 $(SRC)\config.h:       config.h
+       set COPYCMD=$(COPYCMD)
        copy config.h $(SRC)
 
 $(SRC)\Emacs.ad.h:     Emacs.ad.h
+       set COPYCMD=$(COPYCMD)
        copy Emacs.ad.h $(SRC)
 
 $(SRC)\paths.h:        paths.h
+       set COPYCMD=$(COPYCMD)
        copy paths.h $(SRC)
 
 #------------------------------------------------------------------------------
@@ -1405,6 +1417,7 @@ temacs: $(LASTFILE) $(TEMACS)
 # use this rule to install the system
 install:       all
        cd $(NT)
+       set COPYCMD=$(COPYCMD)
        @echo Installing in $(INSTALL_DIR) ...
        @echo PlaceHolder > PlaceHolder
        @xcopy /q PROBLEMS "$(INSTALL_DIR)\"
index b3605ba..42fb135 100644 (file)
        (Vcharset_thai_tis620): Likewise.
        (Vcharset_katakana_jisx0201): Likewise.
 
+2004-02-02  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.15 is released
+
+2004-01-30  Glynn Clements  <glynn.clements@virgin.net>
+
+       * device-x.c (x_error_handler): Don't call stderr_out
+
+2003-11-07  Katsumi Yamaoka <yamaoka@jpl.org>
+
+       * buffer.c (other-buffer): Clarify documentation of order of
+       arguments for FSF Emacs.
+
+2003-10-11  Olivier Galibert  <galibert@pobox.com>
+
+       * window.c (Fdelete_window): Dirty the mirror structure _before_
+       marking the window deleted.
+
+2003-09-15  Jerry James  <james@xemacs.org>
+
+       * event-msw.c (debug_mswin_messages): Conditionally compile
+       messages missing from the Cygwin headers.
+
+2003-06-16  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * data.c (eq_with_ebola_notice): Fix typo in comment.
+       (Ftrue_list_p): Improve docstring.
+
+2003-10-13  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * frame-x.c (x_update_frame_external_traits): Fix XtSetArg idiom.
+
+2003-09-27  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * search.c (trivial_regexp_p): Regexps containing "\{" are
+       nontrivial.  Thanks to Manfred Bartz for reporting the bug and
+       Stefan Monnier for suggesting a diagnosis.
+
+2003-09-25  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * elhash.c (make-hash-table): Clarify use of :test #'equal.
+
+2003-09-12  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * search.c (Fsearch_forward):
+       (Fsearch_backward):
+       Document negative count.
+
+2003-09-13  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * regex.c (re_max_failures): Bump to 20000 for REGEX_MALLOC, too.
+
+2003-09-13  Martin Buchholz  <martin@xemacs.org>
+
+       * s/sol2.h: Use OS_RELEASE=os_release_major*100+os_release_minor
+
+2003-09-15  Vin Shelton  <acs@xemacs.org>
+
+       * .gdbinit (pobj): Remove Ilya's fix that was only intended for
+       21.5.
+
+2003-09-12  Yoshiki Hayashi  <yoshiki@xemacs.org>
+
+       * regex.c (TRANSLATE_EXTENDED_UNSAFE): Remove.
+       (re_search_2): Match the first byte of Bufbyte, not Emchar.
+       (re_match_2_internal): Use TRANSLATE instead of
+       TRANSLATE_EXTENDED_UNSAFE.  The latter was a hack to bypass
+       non-ASCII char case conversion.
+
+2003-09-08  Mike Sperber  <mike@xemacs.org>
+
+       * symbols.c (Fvariable_binding_locus): Add, as per suggestion from
+       RMS at: http://article.gmane.org/gmane.emacs.pretest.bugs/1010
+
+2003-06-14  Ilya N. Golubev  <gin@mo.msk.ru>
+
+       * .gdbinit (pobj): fix printing of symbol name.
+
+2003-08-01  Ilya N. Golubev  <gin@mo.msk.ru>
+
+       * frame-x.c (x_layout_widgets): When resizing is about to cause
+       frame size slip, mark it for redisplay.
+
+2003-08-18  Jerry James  <james@xemacs.org>
+
+       * opaque.h: Remove unused (X)OPAQUE_MARKFUN definitions.
+
 2003-09-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.14 is released
index 5790dc9..ecb204c 100644 (file)
@@ -1000,8 +1000,8 @@ The ordering is for this frame; If second optional argument FRAME
 is provided, then the ordering is for that frame.  If the second arg
 is t, then the global ordering is returned.
 
-Note: In FSF Emacs, this function takes two arguments: BUFFER and
-VISIBLE-OK.
+Note: In FSF Emacs, this function takes the arguments in the order of
+BUFFER, VISIBLE-OK and FRAME.
 */
        (buffer, frame, visible_ok))
 {
index 6769058..21e5d26 100644 (file)
@@ -83,7 +83,7 @@ eq_with_ebola_notice (Lisp_Object obj1, Lisp_Object obj2)
       && ((CHARP (obj1) && INTP (obj2)) || (CHARP (obj2) && INTP (obj1))))
     {
       /* #### It would be really nice if this were a proper warning
-         instead of brain-dead print ro Qexternal_debugging_output.  */
+         instead of brain-dead print to Qexternal_debugging_output.  */
       write_c_string ("Comparison between integer and character is constant nil (",
                      Qexternal_debugging_output);
       Fprinc (obj1, Qexternal_debugging_output);
@@ -249,7 +249,7 @@ Return t if OBJECT is not a list.  `nil' is a list.
 }
 
 DEFUN ("true-list-p", Ftrue_list_p, 1, 1, 0, /*
-Return t if OBJECT is a non-dotted, i.e. nil-terminated, list.
+Return t if OBJECT is an acyclic, nil-terminated (ie, not dotted), list.
 */
        (object))
 {
index 4bfa4b0..6fc5ff9 100644 (file)
@@ -1057,10 +1057,14 @@ x_error_handler (Display *disp, XErrorEvent *event)
       }
 #endif /* EXTERNAL_WIDGET */
 
+#if 0
+      /* This ends up calling X, which isn't allowed in an X error handler
+       */
       stderr_out ("\n%s: ",
                  (STRINGP (Vinvocation_name)
                   ? (char *) XSTRING_DATA (Vinvocation_name)
                   : "xemacs"));
+#endif
       XmuPrintDefaultErrorMessage (disp, event, stderr);
     }
   return 0;
index b034860..0293331 100644 (file)
@@ -809,7 +809,7 @@ Use Common Lisp style keywords to specify hash table properties.
 Keyword :test can be `eq', `eql' (default) or `equal'.
 Comparison between keys is done using this function.
 If speed is important, consider using `eq'.
-When storing strings in the hash table, you will likely need to use `equal'.
+When hash table keys may be strings, you will likely need to use `equal'.
 
 Keyword :size specifies the number of keys likely to be inserted.
 This number of entries can be inserted without enlarging the hash table.
index bf87090..779f049 100644 (file)
@@ -3875,7 +3875,7 @@ FROB (WM_SETHOTKEY)
 FROB (WM_GETHOTKEY)
 FROB (WM_QUERYDRAGICON)
 FROB (WM_COMPAREITEM)
-#if(WINVER >= 0x0500)
+#if(WINVER >= 0x0500) && defined(WM_GETOBJECT)
 FROB (WM_GETOBJECT)
 #endif /* WINVER >= 0x0500 */
 FROB (WM_COMPACTING)
@@ -3957,10 +3957,18 @@ FROB (WM_MENUCHAR)
 FROB (WM_ENTERIDLE)
 #if(WINVER >= 0x0500)
 FROB (WM_MENURBUTTONUP)
+#ifdef WM_MENUDRAG
 FROB (WM_MENUDRAG)
+#endif
+#ifdef WM_MENUGETOBJECT
 FROB (WM_MENUGETOBJECT)
+#endif
+#ifdef WM_UNINITMENUPOPUP
 FROB (WM_UNINITMENUPOPUP)
+#endif
+#ifdef WM_MENUCOMMAND
 FROB (WM_MENUCOMMAND)
+#endif
 #endif /* WINVER >= 0x0500 */
 
 
@@ -4036,7 +4044,7 @@ FROB (WM_IME_COMPOSITIONFULL)
 FROB (WM_IME_SELECT)
 FROB (WM_IME_CHAR)
 #endif /* WINVER >= 0x0400 */
-#if(WINVER >= 0x0500)
+#if(WINVER >= 0x0500) && defined(WM_IME_REQUEST)
 FROB (WM_IME_REQUEST)
 #endif /* WINVER >= 0x0500 */
 #if(WINVER >= 0x0400) && !defined(CYGWIN)
index f174a06..f3aaef1 100644 (file)
@@ -1811,10 +1811,14 @@ x_layout_widgets (Widget w, XtPointer client_data, XtPointer call_data)
 #endif
 
   /* finally the text area */
-  XtConfigureWidget (text, text_x, text_y,
-                    width - 2*textbord,
-                    height - text_y - 2*textbord,
-                    textbord);
+  {
+    Dimension nw = width - 2*textbord;
+    Dimension nh = height - text_y - 2*textbord;
+
+    if (nh != f->pixheight || nw != f->pixwidth)
+      MARK_FRAME_SIZE_SLIPPED (f);
+    XtConfigureWidget (text, text_x, text_y, nw, nh, textbord);
+  }
 }
 
 static void
@@ -2744,9 +2748,11 @@ x_update_frame_external_traits (struct frame* frm, Lisp_Object name)
      Lisp_Object font = FACE_FONT (Vdefault_face, frame, Vcharset_ascii);
 
      if (!EQ (font, Vthe_null_font_instance))
-       XtSetArg (al[ac], XtNfont,
-                (void *) FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font)));
-     ac++;
+       {
+        XtSetArg (al[ac], XtNfont,
+                  (void *) FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font)));
+        ac++;
+       }
    }
   else
    abort ();
index 527ae6b..d308eb0 100644 (file)
@@ -47,10 +47,8 @@ DECLARE_LRECORD (opaque, Lisp_Opaque);
 
 #define OPAQUE_SIZE(op) ((op)->size)
 #define OPAQUE_DATA(op) ((void *) ((op)->data))
-#define OPAQUE_MARKFUN(op) ((op)->markfun)
 #define XOPAQUE_SIZE(op) OPAQUE_SIZE (XOPAQUE (op))
 #define XOPAQUE_DATA(op) OPAQUE_DATA (XOPAQUE (op))
-#define XOPAQUE_MARKFUN(op) OPAQUE_MARKFUN (XOPAQUE (op))
 
 Lisp_Object make_opaque (const void *data, size_t size);
 
index 44e8e0b..eb98c0b 100644 (file)
@@ -1136,7 +1136,7 @@ static const char *re_error_msgid[] =
    exactly that if always used MAX_FAILURE_SPACE each time we failed.
    This is a variable only so users of regex can assign to it; we never
    change it ourselves.  */
-#if defined (MATCH_MAY_ALLOCATE)
+#if defined (MATCH_MAY_ALLOCATE) || defined (REGEX_MALLOC)
 /* 4400 was enough to cause a crash on Alpha OSF/1,
    whose default stack limit is 2mb.  */
 int re_max_failures = 20000;
@@ -1592,13 +1592,6 @@ static unsigned char reg_unset_dummy;
    when we use a character as a subscript we must make it unsigned.  */
 #define TRANSLATE(d) (TRANSLATE_P (translate) ? RE_TRANSLATE (d) : (d))
 
-#ifdef MULE
-
-#define TRANSLATE_EXTENDED_UNSAFE(emch) \
-  (TRANSLATE_P (translate) && emch < 0x80 ? RE_TRANSLATE (emch) : (emch))
-
-#endif
-
 /* Macros for outputting the compiled pattern into `buffer'.  */
 
 /* If the buffer isn't allocated when it comes in, use this.  */
@@ -4145,10 +4138,12 @@ re_search_2 (struct re_pattern_buffer *bufp, const char *str1,
                  {
 #ifdef MULE
                    Emchar buf_ch;
+                   Bufbyte str[MAX_EMCHAR_LEN];
 
                    buf_ch = charptr_emchar (d);
                    buf_ch = RE_TRANSLATE (buf_ch);
-                   if (buf_ch >= 0200 || fastmap[(unsigned char) buf_ch])
+                   set_charptr_emchar (str, buf_ch);
+                   if (buf_ch >= 0200 || fastmap[(unsigned char) *str])
                      break;
 #else
                    if (fastmap[(unsigned char)RE_TRANSLATE (*d)])
@@ -4902,7 +4897,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, re_char *string1,
 
            REGEX_PREFETCH ();
            c = charptr_emchar ((const Bufbyte *) d);
-           c = TRANSLATE_EXTENDED_UNSAFE (c); /* The character to match.  */
+           c = TRANSLATE (c); /* The character to match.  */
 
            if (EQ (Qt, unified_range_table_lookup (p, c, Qnil)))
              not_p = !not_p;
index d780f91..be814d7 100644 (file)
@@ -11,7 +11,7 @@
 #endif
 
 /* Fix understandable GCC lossage on Solaris 2.6 */
-#if defined(__GNUC__) && OS_RELEASE >= 56 && !defined(NOT_C_CODE)
+#if defined(__GNUC__) && OS_RELEASE >= 506 && !defined(NOT_C_CODE)
 
 /* GCC va_list munging is a little messed up */
 #define __GNUC_VA_LIST
@@ -66,7 +66,7 @@ extern int     __xnet_getsockopt (int, int, int, void *, size_t *);
  */
 
 #undef UNEXEC
-#if OS_RELEASE < 56
+#if OS_RELEASE < 506
 #define UNEXEC "unexsol2.o"
 #else
 #define UNEXEC "unexsol2-6.o"
@@ -74,7 +74,7 @@ extern int     __xnet_getsockopt (int, int, int, void *, size_t *);
 
 #else /* C_CODE */
 
-#if OS_RELEASE <= 53
+#if OS_RELEASE <= 503
 /* Solaris 2.3 has a bug in XListFontsWithInfo.  */
 #define BROKEN_XLISTFONTSWITHINFO
 #endif
@@ -91,7 +91,7 @@ extern int     __xnet_getsockopt (int, int, int, void *, size_t *);
 #define BROKEN_SIGCHLD
 #endif
 
-#if OS_RELEASE < 55
+#if OS_RELEASE < 505
 
 #if __STDC__ == 1 && defined(__SUNPRO_C)
 #define _POSIX_C_SOURCE 1
@@ -103,7 +103,7 @@ extern int     __xnet_getsockopt (int, int, int, void *, size_t *);
 extern void *__builtin_alloca (size_t);
 #endif /* before SunOS 5.5 */
 
-#if OS_RELEASE == 55
+#if OS_RELEASE == 505
 /* The following functions were added in Solaris 2.5,
    but they forgot to add prototypes to the system header files. */
 int getpagesize (void);
@@ -113,13 +113,13 @@ int usleep (unsigned int useconds);
 #endif /* SunOS 5.5 */
 
 /* 2.5 now has `random' back in libc but we don't want to use it. */
-#if OS_RELEASE >= 55
+#if OS_RELEASE >= 505
 #undef HAVE_RANDOM
 /* Apparently not necessary here, and it causes 10% CPU chewage. */
 #undef BROKEN_SIGCHLD
 #endif /* >= SunOS 5.5 */
 
-#if OS_RELEASE < 56
+#if OS_RELEASE < 506
 /* Missing prototypes, added in Solaris 2.6 */
 struct timeval;
 int utimes (char *file, struct timeval *tvp);
index dcfefee..97ae5e1 100644 (file)
@@ -1120,6 +1120,7 @@ trivial_regexp_p (Lisp_Object regexp)
     {
       switch (*s++)
        {
+       /* ']' doesn't appear here because it's only special after ] */
        case '.': case '*': case '+': case '?': case '[': case '^': case '$':
          return 0;
        case '\\':
@@ -1129,7 +1130,7 @@ trivial_regexp_p (Lisp_Object regexp)
            {
            case '|': case '(': case ')': case '`': case '\'': case 'b':
            case 'B': case '<': case '>': case 'w': case 'W': case 's':
-           case 'S': case '=':
+           case 'S': case '=': case '{': case '}':
 #ifdef MULE
            /* 97/2/25 jhod Added for category matches */
            case 'c': case 'C':
index 9604bfa..1bdd929 100644 (file)
@@ -3192,6 +3192,31 @@ variable chain of symbols.
   return follow_varalias_pointers (object, follow_past_lisp_magic);
 }
 
+DEFUN ("variable-binding-locus", Fvariable_binding_locus, 1, 1, 0, /*
+Return a value indicating where VARIABLE's current binding comes from.
+If the current binding is buffer-local, the value is the current buffer.
+If the current binding is global (the default), the value is nil. 
+*/
+       (variable))
+{
+  Lisp_Object valcontents;
+
+  CHECK_SYMBOL (variable);
+  variable = Findirect_variable (variable, Qnil);
+
+  /* Make sure the current binding is actually swapped in.  */
+  find_symbol_value (variable);
+
+  valcontents = XSYMBOL (variable)->value;
+
+  if (SYMBOL_VALUE_MAGIC_P (valcontents)
+      && ((XSYMBOL_VALUE_MAGIC_TYPE (valcontents) == SYMVAL_BUFFER_LOCAL)
+         || (XSYMBOL_VALUE_MAGIC_TYPE (valcontents) == SYMVAL_SOME_BUFFER_LOCAL))
+      && (!NILP (Flocal_variable_p (variable, Fcurrent_buffer (), Qnil))))
+    return Fcurrent_buffer ();
+  else
+    return Qnil;
+}
 \f
 /************************************************************************/
 /*                            initialization                            */
@@ -3553,7 +3578,6 @@ syms_of_symbols (void)
   DEFSYMBOL (Qsymbol_value_in_buffer);
   DEFSYMBOL (Qsymbol_value_in_console);
   DEFSYMBOL (Qlocal_variable_p);
-
   DEFSYMBOL (Qconst_integer);
   DEFSYMBOL (Qconst_boolean);
   DEFSYMBOL (Qconst_object);
@@ -3600,6 +3624,7 @@ syms_of_symbols (void)
   DEFSUBR (Fdefvaralias);
   DEFSUBR (Fvariable_alias);
   DEFSUBR (Findirect_variable);
+  DEFSUBR (Fvariable_binding_locus);
   DEFSUBR (Fdontusethis_set_symbol_value_handler);
 }
 
index bdf7764..680c7b8 100644 (file)
@@ -2109,9 +2109,13 @@ will automatically call `save-buffers-kill-emacs'.)
   else if (!NILP (w->vchild))
     delete_all_subwindows (XWINDOW (w->vchild));
 
+  /* Warning: mark_window_as_deleted calls window_unmap_subwindows and
+     therefore redisplay, so it requires the mirror structure to be
+     correct.  We must dirty the mirror before it is called.  */
+  f->mirror_dirty = 1;
+
   mark_window_as_deleted (w);
 
-  f->mirror_dirty = 1;
   return Qnil;
 }
 
index 0fc8e1c..fcf1415 100644 (file)
@@ -1,3 +1,27 @@
+2004-02-02  Vin Shelton <acs@xemacs.org>
+
+       * XEmacs 21.4.15 is released
+
+2003-10-22  Vin Shelton  <acs@xemacs.org>
+
+       * automated/hash-table-tests.el: Remove debugging print
+       statements.
+
+2003-10-22  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * automated/test-harness.el: Synch to 21.5.
+
+2003-09-25  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * automated/regexp-tests.el (multiple-match): Test \{m,n\}.
+
+2003-09-09  Adrian Aichner  <adrian@xemacs.org>
+
+       * automated/test-harness.el (test-harness-from-buffer): Log
+       results when running noninteractive.
+       * automated/test-harness.el (batch-test-emacs): Remove misplaced
+       debugging code.
+
 2003-09-03  Vin Shelton <acs@xemacs.org>
 
        * XEmacs 21.4.14 is released
index 1c8af88..f3465c2 100644 (file)
 
   (let ((k-sum 0) (v-sum 0))
     (maphash #'(lambda (k v) (incf k-sum k) (incf v-sum v)) ht)
-    (print k-sum)
-    (print v-sum)
     (Assert (= k-sum (/ (* size (- size 1)) 2)))
     (Assert (= v-sum (- k-sum))))
 
index 98fd3a9..fde7991 100644 (file)
   (Assert (string-match "^\\(Ä\\)\\1$" "ÄÄ"))
   (Assert (not (string-match "^\\(Ä\\)\\1$" "Ää"))))
 
+;; multiple-match
+;; Thanks to Manfred Bartz <MBartz@xix.com>
+;; c.e.x <vn4rkkm7ouf3b5@corp.supernews.com>
+;; #### Need to do repetitions of more complex regexps
+;; #### WASH ME!
+(with-temp-buffer
+  (Assert (not (string-match "^a\\{4,4\\}$" "aaa")))
+  (Assert      (string-match "^a\\{4,4\\}$" "aaaa"))
+  (Assert (not (string-match "^a\\{4,4\\}$" "aaaaa")))
+  (Assert (not (string-match "^[a]\\{4,4\\}$" "aaa")))
+  (Assert      (string-match "^[a]\\{4,4\\}$" "aaaa"))
+  (Assert (not (string-match "^[a]\\{4,4\\}$" "aaaaa")))
+  (Assert (not (string-match "^\\(a\\)\\{4,4\\}$" "aaa")))
+  (Assert      (string-match "^\\(a\\)\\{4,4\\}$" "aaaa"))
+  (Assert (not (string-match "^\\(a\\)\\{4,4\\}$" "aaaaa")))
+  ;; Use class because repetition of single char broken in 21.5.15
+  (Assert (not (string-match "^[a]\\{3,5\\}$" "aa")))
+  (Assert      (string-match "^[a]\\{3,5\\}$" "aaa"))
+  (Assert      (string-match "^[a]\\{3,5\\}$" "aaaa"))
+  (Assert      (string-match "^[a]\\{3,5\\}$" "aaaaa"))
+  (Assert (not (string-match "^[a]\\{3,5\\}$" "aaaaaa")))
+  (insert "\
+aa
+aaa
+aaaa
+aaaaa
+aaaaaa
+baaaa
+")
+  (goto-char (point-min))
+  (forward-line 1)
+  (Assert (not (looking-at "^a\\{4,4\\}$")))
+  (forward-line 1)
+  (Assert      (looking-at "^a\\{4,4\\}$"))
+  (forward-line 1)
+  (Assert (not (looking-at "^a\\{4,4\\}$")))
+  (goto-char (point-min))
+  (forward-line 1)
+  (Assert (not (looking-at "^[a]\\{4,4\\}$")))
+  (forward-line 1)
+  (Assert      (looking-at "^[a]\\{4,4\\}$"))
+  (forward-line 1)
+  (Assert (not (looking-at "^[a]\\{4,4\\}$")))
+  (goto-char (point-min))
+  (forward-line 1)
+  (Assert (not (looking-at "^\\(a\\)\\{4,4\\}$")))
+  (forward-line 1)
+  (Assert      (looking-at "^\\(a\\)\\{4,4\\}$"))
+  (forward-line 1)
+  (Assert (not (looking-at "^\\(a\\)\\{4,4\\}$")))
+  ;; Use class because repetition of single char broken in 21.5.15
+  (goto-char (point-min))
+  (Assert (not (looking-at "^[a]\\{3,5\\}$")))
+  (forward-line 1)
+  (Assert      (looking-at "^[a]\\{3,5\\}$"))
+  (forward-line 1)
+  (Assert      (looking-at "^[a]\\{3,5\\}$"))
+  (forward-line 1)
+  (Assert      (looking-at "^[a]\\{3,5\\}$"))
+  (forward-line 1)
+  (Assert (not (looking-at "^[a]\\{3,5\\}$")))
+  (goto-char (point-min))
+  (Assert (= 12 (re-search-forward "a\\{4,4\\}")))
+  (goto-char (point-min))
+  (Assert (= 12 (re-search-forward "b?a\\{4,4\\}")))
+  (goto-char (point-min))
+  (Assert (= 31 (re-search-forward "ba\\{4,4\\}")))
+  (goto-char (point-min))
+  (Assert (= 31 (re-search-forward "[b]a\\{4,4\\}")))
+  (goto-char (point-min))
+  (Assert (= 31 (re-search-forward "\\(b\\)a\\{4,4\\}")))
+  (goto-char (point-min))
+  (Assert (= 12 (re-search-forward "^a\\{4,4\\}")))
+  (goto-char (point-min))
+  (Assert (= 12 (re-search-forward "^a\\{4,4\\}$")))
+  (goto-char (point-min))
+  (Assert (= 12 (re-search-forward "[a]\\{4,4\\}")))
+  (goto-char (point-min))
+  (Assert (= 12 (re-search-forward "^[a]\\{4,4\\}")))
+  (goto-char (point-min))
+  (Assert (= 12 (re-search-forward "^[a]\\{4,4\\}$")))
+  )
+
 ;; charset, charset_not
 ;; Not called because it takes too much time.
 (defun test-regexp-charset-paranoid ()
index 89852fc..6e8d632 100644 (file)
@@ -1,8 +1,10 @@
 ;; test-harness.el --- Run Emacs Lisp test suites.
 
-;;; Copyright (C) 1998 Free Software Foundation, Inc.
+;;; Copyright (C) 1998, 2002, 2003 Free Software Foundation, Inc.
+;;; Copyright (C) 2002 Ben Wing.
 
 ;; Author: Martin Buchholz
+;; Maintainer: Stephen J. Turnbull <stephen@xemacs.org>
 ;; Keywords: testing
 
 ;; This file is part of XEmacs.
 ;;; A test suite harness for testing XEmacs.
 ;;; The actual tests are in other files in this directory.
 ;;; Basically you just create files of emacs-lisp, and use the
-;;; Assert, Check-Error, and Check-Message functions to create tests.
+;;; Assert, Check-Error, Check-Message, and Check-Error-Message functions
+;;; to create tests.  See `test-harness-from-buffer' below.
+;;; Don't suppress tests just because they're due to known bugs not yet
+;;; fixed -- use the Known-Bug-Expect-Failure and
+;;; Implementation-Incomplete-Expect-Failure wrapper macros to mark them.
+;;; A lot of the tests we run push limits; suppress Ebola message with the
+;;; Ignore-Ebola wrapper macro.
+;;; 
 ;;; You run the tests using M-x test-emacs-test-file,
 ;;; or $(EMACS) -batch -l .../test-harness.el -f batch-test-emacs file ...
 ;;; which is run for you by the `make check' target in the top-level Makefile.
 
 (require 'bytecomp)
 
+(defvar test-harness-test-compiled nil
+  "Non-nil means the test code was compiled before execution.")
+
 (defvar test-harness-verbose
   (and (not noninteractive) (> (device-baud-rate) search-slow-speed))
   "*Non-nil means print messages describing progress of emacs-tester.")
 
+(defvar test-harness-file-results-alist nil
+  "Each element is a list (FILE SUCCESSES TESTS).
+The order is the reverse of the order in which tests are run.
+
+FILE is a string naming the test file.
+SUCCESSES is a non-negative integer, the number of successes.
+TESTS is a non-negative integer, the number of tests run.")
+
+(defvar test-harness-risk-infloops nil
+  "*Non-nil to run tests that may loop infinitely in buggy implementations.")
+
 (defvar test-harness-current-file nil)
 
 (defvar emacs-lisp-file-regexp (purecopy "\\.el\\'")
   "*Regexp which matches Emacs Lisp source files.")
 
+(defconst test-harness-file-summary-template
+  (format "%%-%ds %%%dd of %%%dd tests successful (%%3d%%%%)."
+         (length "byte-compiler-tests.el:") ; use the longest file name
+         5
+         5)
+  "Format for summary lines printed after each file is run.")
+
+(defconst test-harness-null-summary-template
+  (format "%%-%ds             No tests run."
+         (length "byte-compiler-tests.el:")) ; use the longest file name
+  "Format for \"No tests\" lines printed after a file is run.")
+
 ;;;###autoload
 (defun test-emacs-test-file (filename)
   "Test a file of Lisp code named FILENAME.
@@ -99,7 +134,8 @@ The output file's name is made by appending `c' to the end of FILENAME."
          (setq body (cons (read buffer) body)))
       (end-of-file nil)
       (error
-       (princ (format "Unexpected error %S reading forms from buffer\n" error-info))))
+       (princ (format "Unexpected error %S reading forms from buffer\n"
+                     error-info))))
     `(lambda ()
        (defvar passes)
        (defvar assertion-failures)
@@ -130,20 +166,60 @@ The output file's name is made by appending `c' to the end of FILENAME."
 
        (trick-optimizer nil)
        (unexpected-test-suite-failure nil)
-       (debug-on-error t))
+       (debug-on-error t)
+       (pass-stream nil))
     (with-output-to-temp-buffer "*Test-Log*"
+      (princ (format "Testing %s...\n\n" filename))
+
+      (defconst test-harness-failure-tag "FAIL")
+      (defconst test-harness-success-tag "PASS")
+
+      (defmacro Known-Bug-Expect-Failure (&rest body)
+       `(let ((test-harness-failure-tag "KNOWN BUG")
+              (test-harness-success-tag "PASS (FAILURE EXPECTED)"))
+         ,@body))
+    
+      (defmacro Implementation-Incomplete-Expect-Failure (&rest body)
+       `(let ((test-harness-failure-tag "IMPLEMENTATION INCOMPLETE")
+              (test-harness-success-tag "PASS (FAILURE EXPECTED)"))
+         ,@body))
+    
+      (defun Print-Failure (fmt &rest args)
+       (setq fmt (format "%s: %s" test-harness-failure-tag fmt))
+       (if (noninteractive) (apply #'message fmt args))
+       (princ (concat (apply #'format fmt args) "\n")))
+
+      (defun Print-Pass (fmt &rest args)
+       (setq fmt (format "%s: %s" test-harness-success-tag fmt))
+       (and test-harness-verbose
+            (princ (concat (apply #'format fmt args) "\n"))))
+
+      (defun Print-Skip (test reason &optional fmt &rest args)
+       (setq fmt (concat "SKIP: %S BECAUSE %S" fmt))
+       (princ (concat (apply #'format fmt test reason args) "\n")))
+
+      (defmacro Skip-Test-Unless (condition reason description &rest body)
+       "Unless CONDITION is satisfied, skip test BODY.
+REASON is a description of the condition failure, and must be unique (it
+is used as a hash key).  DESCRIPTION describes the tests that were skipped.
+BODY is a sequence of expressions and may contain several tests."
+       `(if (not ,condition)
+            (let ((count (gethash ,reason skipped-test-reasons)))
+              (puthash ,reason (if (null count) 1 (1+ count))
+                       skipped-test-reasons)
+              (Print-Skip ,description ,reason))
+          ,@body))
 
       (defmacro Assert (assertion)
        `(condition-case error-info
             (progn
               (assert ,assertion)
-              (princ (format "PASS: %S" (quote ,assertion)))
-              (terpri)
+              (Print-Pass "%S" (quote ,assertion))
               (incf passes))
           (cl-assertion-failed
-           (princ (format "FAIL: Assertion failed: %S\n" (quote ,assertion)))
+           (Print-Failure "Assertion failed: %S" (quote ,assertion))
            (incf assertion-failures))
-          (t (princ (format "FAIL: %S ==> error: %S\n" (quote ,assertion) error-info))
+          (t (Print-Failure "%S ==> error: %S" (quote ,assertion) error-info)
              (incf other-failures)
              )))
 
@@ -153,60 +229,52 @@ The output file's name is made by appending `c' to the end of FILENAME."
          `(condition-case error-info
               (progn
                 (setq trick-optimizer (progn ,@body))
-                (princ (format "FAIL: %S executed successfully, but expected error %S\n"
+                (Print-Failure "%S executed successfully, but expected error %S"
                                ,quoted-body
-                               ',expected-error))
+                               ',expected-error)
                 (incf no-error-failures))
             (,expected-error
-             (princ (format "PASS: %S ==> error %S, as expected\n"
-                            ,quoted-body ',expected-error))
+             (Print-Pass "%S ==> error %S, as expected"
+                         ,quoted-body ',expected-error)
              (incf passes))
             (error
-             (princ (format "FAIL: %S ==> expected error %S, got error %S instead\n"
-                            ,quoted-body ',expected-error error-info))
+             (Print-Failure "%S ==> expected error %S, got error %S instead"
+                            ,quoted-body ',expected-error error-info)
              (incf wrong-error-failures)))))
 
-      (defmacro Check-Error-Message (expected-error expected-error-regexp &rest body)
+      (defmacro Check-Error-Message (expected-error expected-error-regexp
+                                                   &rest body)
        (let ((quoted-body (if (= 1 (length body))
                               `(quote ,(car body)) `(quote (progn ,@body)))))
          `(condition-case error-info
               (progn
                 (setq trick-optimizer (progn ,@body))
-                (princ (format "FAIL: %S executed successfully, but expected error %S\n"
-                               ,quoted-body
-                               ',expected-error))
+                (Print-Failure "%S executed successfully, but expected error %S"
+                               ,quoted-body ',expected-error)
                 (incf no-error-failures))
             (,expected-error
              (let ((error-message (second error-info)))
                (if (string-match ,expected-error-regexp error-message)
                    (progn
-                     (princ (format "PASS: %S ==> error %S %S, as expected\n"
-                                    ,quoted-body error-message ',expected-error))
+                     (Print-Pass "%S ==> error %S %S, as expected"
+                                 ,quoted-body error-message ',expected-error)
                      (incf passes))
-                 (princ (format "FAIL: %S ==> got error %S as expected, but error message %S did not match regexp %S\n"
-                                ,quoted-body ',expected-error error-message ,expected-error-regexp))
+                 (Print-Failure "%S ==> got error %S as expected, but error message %S did not match regexp %S"
+                                ,quoted-body ',expected-error error-message ,expected-error-regexp)
                  (incf wrong-error-failures))))
             (error
-             (princ (format "FAIL: %S ==> expected error %S, got error %S instead\n"
-                            ,quoted-body ',expected-error error-info))
+             (Print-Failure "%S ==> expected error %S, got error %S instead"
+                            ,quoted-body ',expected-error error-info)
              (incf wrong-error-failures)))))
 
-      (defun Print-Skip (test reason &optional fmt &rest args)
-       (setq fmt (concat "SKIP: %S.  REASON: %S" fmt))
-       (princ (concat (apply #'format fmt test reason args) "\n")))
-
 
       (defmacro Check-Message (expected-message-regexp &rest body)
-       (if (not (fboundp 'defadvice))
-           ;; #### This whole thing should go inside a macro Skip-Test
-           (let* ((reason "advice unavailable")
-                  (count (gethash reason skipped-test-reasons)))
-             ;(message "%S: %S" reason count)
-             (puthash reason (if (null count) 1 (1+ count))
-                      skipped-test-reasons)
-             `(Print-Skip ,expected-message-regexp ,reason))
+       (Skip-Test-Unless (fboundp 'defadvice)
+                         "can't defadvice"
+                         expected-message-regexp
          (let ((quoted-body (if (= 1 (length body))
-                                `(quote ,(car body)) `(quote (progn ,@body)))))
+                                `(quote ,(car body))
+                              `(quote (progn ,@body)))))
            `(let ((messages ""))
               (defadvice message (around collect activate)
                 (defvar messages)
@@ -218,15 +286,16 @@ The output file's name is made by appending `c' to the end of FILENAME."
                     (setq trick-optimizer (progn ,@body))
                     (if (string-match ,expected-message-regexp messages)
                         (progn
-                          (princ (format "PASS: %S ==> value %S, message %S, matching %S, as expected\n"
-                                         ,quoted-body trick-optimizer messages ',expected-message-regexp))
+                          (Print-Pass "%S ==> value %S, message %S, matching %S, as expected"
+                                      ,quoted-body trick-optimizer messages ',expected-message-regexp)
                           (incf passes))
-                      (princ (format "FAIL: %S ==> value %S, message %S, NOT matching expected %S\n"
-                                     ,quoted-body  trick-optimizer messages ',expected-message-regexp))
+                      (Print-Failure "%S ==> value %S, message %S, NOT matching expected %S"
+                                     ,quoted-body  trick-optimizer messages
+                                     ',expected-message-regexp)
                       (incf missing-message-failures)))
                 (error
-                 (princ (format "FAIL: %S ==> unexpected error %S\n"
-                                ,quoted-body error-info))
+                 (Print-Failure "%S ==> unexpected error %S"
+                                ,quoted-body error-info)
                  (incf other-failures)))
               (ad-unadvise 'message)))))
 
@@ -251,7 +320,8 @@ The output file's name is made by appending `c' to the end of FILENAME."
         (message "Test suite execution aborted." error-info)
         ))
       (princ "\nTesting Compiled Lisp\n\n")
-      (let (code)
+      (let (code
+           (test-harness-test-compiled t))
        (condition-case error-info
            (setq code
                  ;; our lisp code is often intentionally dubious,
@@ -269,7 +339,7 @@ The output file's name is made by appending `c' to the end of FILENAME."
           (message "Unexpected error %S while executing byte-compiled code." error-info)
           (message "Test suite execution aborted." error-info)
           )))
-      (princ "\nSUMMARY:\n")
+      (princ (format "\nSUMMARY for %s:\n" filename))
       (princ (format "\t%5d passes\n" passes))
       (princ (format "\t%5d assertion failures\n" assertion-failures))
       (princ (format "\t%5d errors that should have been generated, but weren't\n" no-error-failures))
@@ -285,14 +355,16 @@ The output file's name is made by appending `c' to the end of FILENAME."
             (basename (file-name-nondirectory filename))
             (summary-msg
              (if (> total 0)
-                 (format "%s: %d of %d (%d%%) tests successful."
-                         basename passes total (/ (* 100 passes) total))
-               (format "%s: No tests run" basename)))
+                 (format test-harness-file-summary-template
+                         (concat basename ":")
+                         passes total (/ (* 100 passes) total))
+               (format test-harness-null-summary-template
+                       (concat basename ":"))))
             (reasons ""))
        (maphash (lambda (key value)
                   (setq reasons
                         (concat reasons
-                                (format "\n    %d tests skipped because %s"
+                                (format "\n    %d tests skipped because %s."
                                         value key))))
                 skipped-test-reasons)
        (when (> (length reasons) 1)
@@ -300,6 +372,9 @@ The output file's name is made by appending `c' to the end of FILENAME."
     Probably XEmacs cannot find your installed packages.  Set EMACSPACKAGEPATH
     to the package hierarchy root or configure with --package-path to enable
     the skipped tests.")))
+       (setq test-harness-file-results-alist
+             (cons (list filename passes total)
+                   test-harness-file-results-alist))
        (message "%s" summary-msg))
       (when unexpected-test-suite-failure
        (message "Test suite execution failed unexpectedly."))
@@ -309,6 +384,9 @@ The output file's name is made by appending `c' to the end of FILENAME."
       (fmakunbound 'Check-Error-Message)
       (fmakunbound 'Ignore-Ebola)
       (fmakunbound 'Int-to-Marker)
+      (and noninteractive
+          (message "%s" (buffer-substring-no-properties
+                         nil nil "*Test-Log*")))
       )))
 
 (defvar test-harness-results-point-max nil)
@@ -388,8 +466,45 @@ For example, invoke \"xemacs -batch -f batch-test-emacs tests/*.el\""
                  (setq error t))))
        (or (batch-test-emacs-1 file)
            (setq error t))))
-    ;;(message "%s" (buffer-string nil nil "*Test-Log*"))
-    (message "Done")
+    (let ((namelen 0)
+         (succlen 0)
+         (testlen 0)
+         (results test-harness-file-results-alist))
+      ;; compute maximum lengths of variable components of report
+      ;; probably should just use (length "byte-compiler-tests.el")
+      ;; and 5-place sizes -- this will also work for the file-by-file
+      ;; printing when Adrian's kludge gets reverted
+      (flet ((print-width (i)
+              (let ((x 10) (y 1))
+                (while (>= i x)
+                  (setq x (* 10 x) y (1+ y)))
+                y)))
+       (while results
+         (let* ((head (car results))
+                (nn (length (file-name-nondirectory (first head))))
+                (ss (print-width (second head)))
+                (tt (print-width (third head))))
+           (when (> nn namelen) (setq namelen nn))
+           (when (> ss succlen) (setq succlen ss))
+           (when (> tt testlen) (setq testlen tt)))
+         (setq results (cdr results))))
+      ;; create format and print
+      (let ((results (reverse test-harness-file-results-alist)))
+       (while results
+         (let* ((head (car results))
+                (basename (file-name-nondirectory (first head)))
+                (nsucc (second head))
+                (ntest (third head)))
+           (if (> ntest 0)
+               (message test-harness-file-summary-template
+                        (concat basename ":")
+                        nsucc
+                        ntest
+                        (/ (* 100 nsucc) ntest))
+             (message test-harness-null-summary-template
+                      (concat basename ":")))
+           (setq results (cdr results))))))
+    (message "\nDone")
     (kill-emacs (if error 1 0))))
 
 (provide 'test-harness)
index 7faed11..03a4ee2 100644 (file)
@@ -2,8 +2,8 @@
 emacs_is_beta=
 emacs_major_version=21
 emacs_minor_version=4
-emacs_beta_version=14
-xemacs_codename="Reasonable Discussion"
+emacs_beta_version=15
+xemacs_codename="Security Through Obscurity"
 emacs_kit_version=
 infodock_major_version=4
 infodock_minor_version=0