changeset 318:afd57c14dfc8 r21-0b57

Import from CVS: tag r21-0b57
author cvs
date Mon, 13 Aug 2007 10:45:36 +0200
parents a2fc9afbef65
children 5164ebf671d9
files CHANGES-beta ChangeLog INSTALL PROBLEMS configure configure.in lib-src/ChangeLog lib-src/gnuclient.c lisp/ChangeLog lisp/about.el lisp/cl-macs.el lisp/dumped-lisp.el lisp/files.el lisp/font.el lisp/help.el lisp/info.el lisp/isearch-mode.el lisp/minibuf.el lisp/msw-faces.el lisp/package-admin.el lisp/package-get-base.el lisp/package-get-custom.el lisp/package-get.el lisp/packages.el lisp/sound.el lwlib/xlwmenu.c lwlib/xlwscrollbar.c man/ChangeLog man/internals/internals.texi man/lispref/customize.texi man/lispref/lispref.texi man/xemacs/calendar.texi nt/ChangeLog nt/PROBLEMS nt/README nt/tiff.mak nt/xemacs.mak src/ChangeLog src/config.h.in src/console-msw.h src/device-msw.c src/faces.c src/objects-msw.c src/process-nt.c src/redisplay.c src/regex.c src/s/cygwin32.h src/s/freebsd.h src/unexelf.c src/window.c version.sh
diffstat 51 files changed, 3591 insertions(+), 1115 deletions(-) [+]
line wrap: on
line diff
--- a/CHANGES-beta	Mon Aug 13 10:44:47 2007 +0200
+++ b/CHANGES-beta	Mon Aug 13 10:45:36 2007 +0200
@@ -1,4 +1,21 @@
 							-*- indented-text -*-
+to 21.0 "Poitou"
+-- port to Motif >= 2.0
+-- help keymap fixes from Jan Vroonhof
+-- isearch mixed case bugfix from Hrvoje Niksic
+-- cygwin gnuclient fix from Raymond Toy
+-- fix for divide by 0 error in non-English MS Windows from Jonathan Harris
+-- subprocess signalling fix for MS windows from Jonathan Harris
+-- PROBLEMS file for MS windows from Jonathan Harris
+-- BSD Fix from Kazuyuki IENAGA
+-- miscellaneous bug fixes from Altrasoft
+-- various package fixes
+-- various documentation updates
+-- widening fix from Gunnar Everman
+-- signal fix in find-file-noselect from Hrvoje Niksic
+-- Memory leak fix from Martin Buchholz
+-- Memory leak fix from CDE DnD from Oliver Graf
+
 to 21.0 "Norwegian"
 -- PNG memleak fix from Andy Piper
 -- MS Windows NT directory separator check fix from Jonathan Harris
--- a/ChangeLog	Mon Aug 13 10:44:47 2007 +0200
+++ b/ChangeLog	Mon Aug 13 10:45:36 2007 +0200
@@ -1,3 +1,26 @@
+1998-09-29  SL Baur  <steve@altair.xemacs.org>
+
+	* XEmacs 21.0-pre14 is released.
+
+1998-09-09  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>
+
+	* lwlib/xlwmenu.c:
+	* lwlib/xlwscrollbar: fix for Motif >=2.0
+	Patch provided by Glenn Barry <gtb@eng.sun.com>
+
+	* PROBLEMS: XEmacs 21.0 now works on HP-UX 11.0
+
+1998-09-02  Andy Piper  <andyp@parallax.co.uk>
+
+	* configure.in: check for cygwin32/version.h.
+
+1998-09-21  Martin Buchholz  <martin@xemacs.org>
+
+	* lwlib/xlwmenu.c (string_draw_u): 
+	* lwlib/xlwmenu.c (string_width_u): 
+	Fix killer memory leak.
+	Free memory allocated by XmStringGetLtoR.
+
 1998-08-31  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
 
 	* PROBLEMS: Added AIX 4.3 note.
--- a/INSTALL	Mon Aug 13 10:44:47 2007 +0200
+++ b/INSTALL	Mon Aug 13 10:45:36 2007 +0200
@@ -80,7 +80,7 @@
 packages `mule-base' and `egg-its'.  By default, packages will be
 searched for in the path
 
-~/.xemacs::$prefix/lib/xemacs-${version}/mule-packages:$prefix/lib/xemacs/mule-packages:$prefix/lib/xemacs-${version}/packages:$prefix/lib/xemacs/packages
+~/.xemacs::$prefix/lib/xemacs-${version}/mule-packages:$prefix/lib/xemacs/mule-packages:$prefix/lib/xemacs-${version}/xemacs-packages:$prefix/lib/xemacs/xemacs-packages
 
 This may be changed by specifying a different value with the
 --package-path configuration option.
--- a/PROBLEMS	Mon Aug 13 10:44:47 2007 +0200
+++ b/PROBLEMS	Mon Aug 13 10:45:36 2007 +0200
@@ -376,7 +376,7 @@
 
 Marcus Thiessel <marcus_thiessel@hp.com>
 
-  Unfortunately, XEmacs releases don't work with Motif2.1. It
+  Unfortunately, XEmacs releases <21.0 don't work with Motif2.1. It
   will compile but you will get excessive X11 errors like
 
   xemacs: X Error of failed request:  BadGC (invalid GC parameter)
--- a/configure	Mon Aug 13 10:44:47 2007 +0200
+++ b/configure	Mon Aug 13 10:45:36 2007 +0200
@@ -1034,9 +1034,9 @@
     *-*-aix3.1*  ) opsys=aix3-1	;;
   *-*-aix3.2.5 ) opsys=aix3-2-5	;;
   *-*-aix3*    ) opsys=aix3-2	;;
-  *-*-aix4.2*  ) opsys=aix4-2	;;
+  *-*-aix4.0*  ) opsys=aix4	;;
   *-*-aix4.1*  ) opsys=aix4-1	;;
-  *-*-aix4*    ) opsys=aix4	;;
+  *-*-aix4*    ) opsys=aix4-2	;;
 
     *-gnu* )			opsys=gnu    ;;
   *-*-bsd4.[01] )		opsys=bsd4-1 ;;
@@ -2296,7 +2296,7 @@
   elif test "$__DECC" = "yes"; then
     CFLAGS="-O3"
   elif test "$CC" = "xlc"; then
-    CFLAGS="-O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000"
+    CFLAGS="-g -O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000"
     else
     CFLAGS="-O" ;  fi
 fi
@@ -2965,7 +2965,7 @@
 fi
 done
 
-for ac_hdr in utime.h locale.h libgen.h fcntl.h ulimit.h
+for ac_hdr in utime.h locale.h libgen.h fcntl.h ulimit.h cygwin32/version.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
@@ -9347,6 +9347,271 @@
 EOF
 }
 
+for ac_hdr in unistd.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:9355: checking for $ac_hdr" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9358 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:9363: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  { test "$extra_verbose" = "yes" && cat << EOF
+    Defining $ac_tr_hdr
+EOF
+cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+}
+ 
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+for ac_func in getpagesize
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:9395: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9398 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:9421: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  { test "$extra_verbose" = "yes" && cat << EOF
+    Defining $ac_tr_func
+EOF
+cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+}
+ 
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+echo $ac_n "checking for working mmap""... $ac_c" 1>&6
+echo "configure:9449: checking for working mmap" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9452 "configure"
+#include "confdefs.h"
+
+/* Thanks to Mike Haertel and Jim Avera for this test.
+   Here is a matrix of mmap possibilities:
+	mmap private not fixed
+	mmap private fixed at somewhere currently unmapped
+	mmap private fixed at somewhere already mapped
+	mmap shared not fixed
+	mmap shared fixed at somewhere currently unmapped
+	mmap shared fixed at somewhere already mapped
+   For private mappings, we should verify that changes cannot be read()
+   back from the file, nor mmap's back from the file at a different
+   address.  (There have been systems where private was not correctly
+   implemented like the infamous i386 svr4.0, and systems where the
+   VM page cache was not coherent with the filesystem buffer cache
+   like early versions of FreeBSD and possibly contemporary NetBSD.)
+   For shared mappings, we should conversely verify that changes get
+   propogated back to all the places they're supposed to be.
+
+   Grep wants private fixed already mapped.
+   The main things grep needs to know about mmap are:
+   * does it exist and is it safe to write into the mmap'd area
+   * how to use it (BSD variants)  */
+#include <sys/types.h>
+#include <fcntl.h>
+#include <sys/mman.h>
+
+/* This mess was copied from the GNU getpagesize.h.  */
+#ifndef HAVE_GETPAGESIZE
+# ifdef HAVE_UNISTD_H
+#  include <unistd.h>
+# endif
+
+/* Assume that all systems that can run configure have sys/param.h.  */
+# ifndef HAVE_SYS_PARAM_H
+#  define HAVE_SYS_PARAM_H 1
+# endif
+
+# ifdef _SC_PAGESIZE
+#  define getpagesize() sysconf(_SC_PAGESIZE)
+# else /* no _SC_PAGESIZE */
+#  ifdef HAVE_SYS_PARAM_H
+#   include <sys/param.h>
+#   ifdef EXEC_PAGESIZE
+#    define getpagesize() EXEC_PAGESIZE
+#   else /* no EXEC_PAGESIZE */
+#    ifdef NBPG
+#     define getpagesize() NBPG * CLSIZE
+#     ifndef CLSIZE
+#      define CLSIZE 1
+#     endif /* no CLSIZE */
+#    else /* no NBPG */
+#     ifdef NBPC
+#      define getpagesize() NBPC
+#     else /* no NBPC */
+#      ifdef PAGESIZE
+#       define getpagesize() PAGESIZE
+#      endif /* PAGESIZE */
+#     endif /* no NBPC */
+#    endif /* no NBPG */
+#   endif /* no EXEC_PAGESIZE */
+#  else /* no HAVE_SYS_PARAM_H */
+#   define getpagesize() 8192	/* punt totally */
+#  endif /* no HAVE_SYS_PARAM_H */
+# endif /* no _SC_PAGESIZE */
+
+#endif /* no HAVE_GETPAGESIZE */
+
+#ifdef __cplusplus
+extern "C" { void *malloc(unsigned); }
+#else
+char *malloc();
+#endif
+
+int
+main()
+{
+	char *data, *data2, *data3;
+	int i, pagesize;
+	int fd;
+
+	pagesize = getpagesize();
+
+	/*
+	 * First, make a file with some known garbage in it.
+	 */
+	data = malloc(pagesize);
+	if (!data)
+		exit(1);
+	for (i = 0; i < pagesize; ++i)
+		*(data + i) = rand();
+	umask(0);
+	fd = creat("conftestmmap", 0600);
+	if (fd < 0)
+		exit(1);
+	if (write(fd, data, pagesize) != pagesize)
+		exit(1);
+	close(fd);
+
+	/*
+	 * Next, try to mmap the file at a fixed address which
+	 * already has something else allocated at it.  If we can,
+	 * also make sure that we see the same garbage.
+	 */
+	fd = open("conftestmmap", O_RDWR);
+	if (fd < 0)
+		exit(1);
+	data2 = malloc(2 * pagesize);
+	if (!data2)
+		exit(1);
+	data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
+	if (data2 != mmap(data2, pagesize, PROT_READ | PROT_WRITE,
+	    MAP_PRIVATE | MAP_FIXED, fd, 0L))
+		exit(1);
+	for (i = 0; i < pagesize; ++i)
+		if (*(data + i) != *(data2 + i))
+			exit(1);
+
+	/*
+	 * Finally, make sure that changes to the mapped area
+	 * do not percolate back to the file as seen by read().
+	 * (This is a bug on some variants of i386 svr4.0.)
+	 */
+	for (i = 0; i < pagesize; ++i)
+		*(data2 + i) = *(data2 + i) + 1;
+	data3 = malloc(pagesize);
+	if (!data3)
+		exit(1);
+	if (read(fd, data3, pagesize) != pagesize)
+		exit(1);
+	for (i = 0; i < pagesize; ++i)
+		if (*(data + i) != *(data3 + i))
+			exit(1);
+	close(fd);
+	unlink("conftestmmap");
+	exit(0);
+}
+
+EOF
+if { (eval echo configure:9592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+then
+  ac_cv_func_mmap_fixed_mapped=yes
+else
+  conftest_rc="$?"
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  ac_cv_func_mmap_fixed_mapped=no
+fi
+rm -fr conftest*
+
+echo "$ac_t""$ac_cv_func_mmap_fixed_mapped" 1>&6
+if test $ac_cv_func_mmap_fixed_mapped = yes; then
+  { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining HAVE_MMAP
+EOF
+cat >> confdefs.h <<\EOF
+#define HAVE_MMAP 1
+EOF
+}
+
+fi
+
 
 test "$GNU_MALLOC" != "yes"   -a "$have_mmap" != "yes" && rel_alloc=no
 test "$rel_alloc" = "default" -a "$have_mmap"  = "yes" && rel_alloc=yes
@@ -9361,15 +9626,15 @@
 
 ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for termios.h""... $ac_c" 1>&6
-echo "configure:9365: checking for termios.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9368 "configure"
+echo "configure:9630: checking for termios.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9633 "configure"
 #include "confdefs.h"
 #include <termios.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9373: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9638: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9412,15 +9677,15 @@
   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:9416: checking for termio.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9419 "configure"
+echo "configure:9681: checking for termio.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9684 "configure"
 #include "confdefs.h"
 #include <termio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9424: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9689: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9452,10 +9717,10 @@
 
 
 echo $ac_n "checking for socket""... $ac_c" 1>&6
-echo "configure:9456: checking for socket" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9459 "configure"
+echo "configure:9721: checking for socket" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9724 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char socket(); below.  */
@@ -9478,7 +9743,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:9482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:9747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_socket=yes"
 else
@@ -9493,15 +9758,15 @@
   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:9497: checking for netinet/in.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9500 "configure"
+echo "configure:9762: checking for netinet/in.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9765 "configure"
 #include "confdefs.h"
 #include <netinet/in.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9505: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9770: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9518,15 +9783,15 @@
   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:9522: checking for arpa/inet.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9525 "configure"
+echo "configure:9787: checking for arpa/inet.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9790 "configure"
 #include "confdefs.h"
 #include <arpa/inet.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9530: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9795: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9551,9 +9816,9 @@
 }
 
       echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6
-echo "configure:9555: checking "for sun_len member in struct sockaddr_un"" >&5
+echo "configure:9820: checking "for sun_len member in struct sockaddr_un"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 9557 "configure"
+#line 9822 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -9564,7 +9829,7 @@
 static struct sockaddr_un x; x.sun_len = 1;
 ; return 0; }
 EOF
-if { (eval echo configure:9568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:9833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_SOCKADDR_SUN_LEN
@@ -9582,9 +9847,9 @@
 fi
 rm -f conftest*
       echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6
-echo "configure:9586: checking "for ip_mreq struct in netinet/in.h"" >&5
+echo "configure:9851: checking "for ip_mreq struct in netinet/in.h"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 9588 "configure"
+#line 9853 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -9594,7 +9859,7 @@
 static struct ip_mreq x;
 ; return 0; }
 EOF
-if { (eval echo configure:9598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:9863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_MULTICAST
@@ -9625,10 +9890,10 @@
 
 
 echo $ac_n "checking for msgget""... $ac_c" 1>&6
-echo "configure:9629: checking for msgget" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9632 "configure"
+echo "configure:9894: checking for msgget" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9897 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char msgget(); below.  */
@@ -9651,7 +9916,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:9655: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:9920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_msgget=yes"
 else
@@ -9666,15 +9931,15 @@
   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:9670: checking for sys/ipc.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9673 "configure"
+echo "configure:9935: checking for sys/ipc.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9938 "configure"
 #include "confdefs.h"
 #include <sys/ipc.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9678: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9943: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9691,15 +9956,15 @@
   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:9695: checking for sys/msg.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9698 "configure"
+echo "configure:9960: checking for sys/msg.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 9963 "configure"
 #include "confdefs.h"
 #include <sys/msg.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9703: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9968: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9737,15 +10002,15 @@
 
 ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dirent.h""... $ac_c" 1>&6
-echo "configure:9741: checking for dirent.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9744 "configure"
+echo "configure:10006: checking for dirent.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10009 "configure"
 #include "confdefs.h"
 #include <dirent.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9749: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10014: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9772,15 +10037,15 @@
   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:9776: checking for sys/dir.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9779 "configure"
+echo "configure:10041: checking for sys/dir.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10044 "configure"
 #include "confdefs.h"
 #include <sys/dir.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9784: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10049: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9813,15 +10078,15 @@
 
 ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for nlist.h""... $ac_c" 1>&6
-echo "configure:9817: checking for nlist.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9820 "configure"
+echo "configure:10082: checking for nlist.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10085 "configure"
 #include "confdefs.h"
 #include <nlist.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9825: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10090: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9851,7 +10116,7 @@
 
 
 echo "checking "for sound support"" 1>&6
-echo "configure:9855: checking "for sound support"" >&5
+echo "configure:10120: checking "for sound support"" >&5
 case "$with_sound" in
   native | both ) with_native_sound=yes;;
   nas    | no   ) with_native_sound=no;;
@@ -9862,15 +10127,15 @@
     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:9866: checking for multimedia/audio_device.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9869 "configure"
+echo "configure:10131: checking for multimedia/audio_device.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10134 "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:9874: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10139: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9918,12 +10183,12 @@
       if test -z "$native_sound_lib"; then
         
 echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6
-echo "configure:9922: checking for ALopenport in -laudio" >&5
+echo "configure:10187: 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 9927 "configure"
+#line 10192 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9934,7 +10199,7 @@
 ALopenport()
 ; return 0; }
 EOF
-if { (eval echo configure:9938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9965,12 +10230,12 @@
       if test -z "$native_sound_lib"; then
 	
 echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6
-echo "configure:9969: checking for AOpenAudio in -lAlib" >&5
+echo "configure:10234: 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 9974 "configure"
+#line 10239 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9981,7 +10246,7 @@
 AOpenAudio()
 ; return 0; }
 EOF
-if { (eval echo configure:9985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10019,15 +10284,15 @@
     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:10023: checking for ${dir}/soundcard.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10026 "configure"
+echo "configure:10288: checking for ${dir}/soundcard.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10291 "configure"
 #include "confdefs.h"
 #include <${dir}/soundcard.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10031: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10296: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10097,7 +10362,7 @@
  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 10101 "configure"
+#line 10366 "configure"
 #include "confdefs.h"
 #include <audio/Xtutil.h>
 EOF
@@ -10124,7 +10389,7 @@
 
 if test "$with_tty" = "yes"  ; then
   echo "checking for TTY-related features" 1>&6
-echo "configure:10128: checking for TTY-related features" >&5
+echo "configure:10393: checking for TTY-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_TTY
 EOF
@@ -10140,12 +10405,12 @@
     if test -z "$with_ncurses"; then
     
 echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
-echo "configure:10144: checking for tgetent in -lncurses" >&5
+echo "configure:10409: 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 10149 "configure"
+#line 10414 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10156,7 +10421,7 @@
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:10160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10189,15 +10454,15 @@
 
     ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6
-echo "configure:10193: checking for ncurses/curses.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10196 "configure"
+echo "configure:10458: checking for ncurses/curses.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10461 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10201: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10466: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10219,15 +10484,15 @@
 
     ac_safe=`echo "ncurses/term.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6
-echo "configure:10223: checking for ncurses/term.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10226 "configure"
+echo "configure:10488: checking for ncurses/term.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10491 "configure"
 #include "confdefs.h"
 #include <ncurses/term.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10231: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10496: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10257,15 +10522,15 @@
       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:10261: checking for ncurses/curses.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10264 "configure"
+echo "configure:10526: checking for ncurses/curses.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10529 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10269: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10534: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10300,12 +10565,12 @@
 	for lib in curses termlib termcap; do
 	  
 echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6
-echo "configure:10304: checking for tgetent in -l$lib" >&5
+echo "configure:10569: 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 10309 "configure"
+#line 10574 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10316,7 +10581,7 @@
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:10320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10347,12 +10612,12 @@
       else
 	
 echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6
-echo "configure:10351: checking for tgetent in -lcurses" >&5
+echo "configure:10616: 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 10356 "configure"
+#line 10621 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10363,7 +10628,7 @@
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:10367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10632: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10381,12 +10646,12 @@
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6
-echo "configure:10385: checking for tgetent in -ltermcap" >&5
+echo "configure:10650: 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 10390 "configure"
+#line 10655 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10397,7 +10662,7 @@
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:10401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10445,15 +10710,15 @@
 
     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:10449: checking for gpm.h" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10452 "configure"
+echo "configure:10714: checking for gpm.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10717 "configure"
 #include "confdefs.h"
 #include <gpm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10457: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10722: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10476,12 +10741,12 @@
  }
   test -z "$with_gpm" && { 
 echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
-echo "configure:10480: checking for Gpm_Open in -lgpm" >&5
+echo "configure:10745: 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 10485 "configure"
+#line 10750 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10492,7 +10757,7 @@
 Gpm_Open()
 ; return 0; }
 EOF
-if { (eval echo configure:10496: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10541,22 +10806,22 @@
 
 
 echo "checking for database support" 1>&6
-echo "configure:10545: checking for database support" >&5
+echo "configure:10810: checking for database support" >&5
 
 if test "$with_database_gnudbm" != "no"; then
   for ac_hdr in ndbm.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10552: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10555 "configure"
+echo "configure:10817: checking for $ac_hdr" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10820 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10560: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10825: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10588,12 +10853,12 @@
   if test "$have_ndbm_h" = "yes"; then
     
 echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6
-echo "configure:10592: checking for dbm_open in -lgdbm" >&5
+echo "configure:10857: 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 10597 "configure"
+#line 10862 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10604,7 +10869,7 @@
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:10608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10873: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10627,10 +10892,10 @@
   fi
   if test "$with_database_gnudbm" != "yes"; then
     echo $ac_n "checking for dbm_open""... $ac_c" 1>&6
-echo "configure:10631: checking for dbm_open" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10634 "configure"
+echo "configure:10896: checking for dbm_open" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10899 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbm_open(); below.  */
@@ -10653,7 +10918,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:10657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_dbm_open=yes"
 else
@@ -10689,10 +10954,10 @@
 
 if test "$with_database_dbm" != "no"; then
   echo $ac_n "checking for dbm_open""... $ac_c" 1>&6
-echo "configure:10693: checking for dbm_open" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10696 "configure"
+echo "configure:10958: checking for dbm_open" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 10961 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbm_open(); below.  */
@@ -10715,7 +10980,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:10719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:10984: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_dbm_open=yes"
 else
@@ -10736,12 +11001,12 @@
   if test "$need_libdbm" != "no"; then
     
 echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
-echo "configure:10740: checking for dbm_open in -ldbm" >&5
+echo "configure:11005: 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 10745 "configure"
+#line 11010 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10752,7 +11017,7 @@
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:10756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:11021: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10789,10 +11054,10 @@
 
 if test "$with_database_berkdb" != "no"; then
   echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6
-echo "configure:10793: checking for Berkeley db.h" >&5
+echo "configure:11058: checking for Berkeley db.h" >&5
   for path in "db/db.h" "db.h"; do
     cat > conftest.$ac_ext <<EOF
-#line 10796 "configure"
+#line 11061 "configure"
 #include "confdefs.h"
 #ifdef HAVE_INTTYPES_H
 #define __BIT_TYPES_DEFINED__
@@ -10810,7 +11075,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:10814: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   db_h_path="$path"; break
 else
@@ -10826,9 +11091,9 @@
 
   if test "$with_database_berkdb" != "no"; then
     echo $ac_n "checking for Berkeley DB version""... $ac_c" 1>&6
-echo "configure:10830: checking for Berkeley DB version" >&5
+echo "configure:11095: checking for Berkeley DB version" >&5
     cat > conftest.$ac_ext <<EOF
-#line 10832 "configure"
+#line 11097 "configure"
 #include "confdefs.h"
 #include <$db_h_path>
 #if DB_VERSION_MAJOR > 1
@@ -10847,10 +11112,10 @@
 rm -f conftest*
 
     echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6
-echo "configure:10851: checking for $dbfunc" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10854 "configure"
+echo "configure:11116: checking for $dbfunc" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 11119 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $dbfunc(); below.  */
@@ -10873,7 +11138,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:10877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:11142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$dbfunc=yes"
 else
@@ -10892,12 +11157,12 @@
 
     
 echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6
-echo "configure:10896: checking for $dbfunc in -ldb" >&5
+echo "configure:11161: 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 10901 "configure"
+#line 11166 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10908,7 +11173,7 @@
 $dbfunc()
 ; return 0; }
 EOF
-if { (eval echo configure:10912: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:11177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10972,12 +11237,12 @@
 if test "$with_socks" = "yes"; then
   
 echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6
-echo "configure:10976: checking for SOCKSinit in -lsocks" >&5
+echo "configure:11241: 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 10981 "configure"
+#line 11246 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10988,7 +11253,7 @@
 SOCKSinit()
 ; return 0; }
 EOF
-if { (eval echo configure:10992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:11257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11045,15 +11310,15 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11049: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 11052 "configure"
+echo "configure:11314: checking for $ac_hdr" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 11317 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11057: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11322: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11084,12 +11349,12 @@
 
 test -z "$with_shlib" && test ! -z "$have_dlfcn" && { 
 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:11088: checking for dlopen in -ldl" >&5
+echo "configure:11353: checking for dlopen in -ldl" >&5
 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldl "
 cat > conftest.$ac_ext <<EOF
-#line 11093 "configure"
+#line 11358 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11100,7 +11365,7 @@
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:11104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:11369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11129,12 +11394,12 @@
  }
 test -z "$with_shlib" && test ! -z "$have_dlfcn" && { 
 echo $ac_n "checking for _dlopen in -lc""... $ac_c" 1>&6
-echo "configure:11133: checking for _dlopen in -lc" >&5
+echo "configure:11398: checking for _dlopen in -lc" >&5
 ac_lib_var=`echo c'_'_dlopen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lc "
 cat > conftest.$ac_ext <<EOF
-#line 11138 "configure"
+#line 11403 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11145,7 +11410,7 @@
 _dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:11149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:11414: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11174,12 +11439,12 @@
  }
 test -z "$with_shlib" && test ! -z "$have_dlfcn" && { 
 echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6
-echo "configure:11178: checking for dlopen in -lc" >&5
+echo "configure:11443: checking for dlopen in -lc" >&5
 ac_lib_var=`echo c'_'dlopen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lc "
 cat > conftest.$ac_ext <<EOF
-#line 11183 "configure"
+#line 11448 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11190,7 +11455,7 @@
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:11194: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:11459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11219,12 +11484,12 @@
  }
 test -z "$with_shlib" && { 
 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:11223: checking for shl_load in -ldld" >&5
+echo "configure:11488: 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 11228 "configure"
+#line 11493 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11235,7 +11500,7 @@
 shl_load()
 ; return 0; }
 EOF
-if { (eval echo configure:11239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:11504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11264,12 +11529,12 @@
  }
 test -z "$with_shlib" && { 
 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6
-echo "configure:11268: checking for dld_init in -ldld" >&5
+echo "configure:11533: 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 11273 "configure"
+#line 11538 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11280,7 +11545,7 @@
 dld_init()
 ; return 0; }
 EOF
-if { (eval echo configure:11284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:11549: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11330,7 +11595,7 @@
 dll_oflags="-o "
 
 echo $ac_n "checking how to build a shared library""... $ac_c" 1>&6
-echo "configure:11334: checking how to build a shared library" >&5
+echo "configure:11599: checking how to build a shared library" >&5
 case `uname -rs` in
 	UNIX_SV*|UNIX_System_V*)
 		dll_lflags="-G"
@@ -11421,10 +11686,10 @@
   for ac_func in dlerror
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11425: checking for $ac_func" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 11428 "configure"
+echo "configure:11690: checking for $ac_func" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 11693 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11447,7 +11712,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:11451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:11716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -11483,11 +11748,11 @@
 fi
 
 cat > conftest.$ac_ext <<EOF
-#line 11487 "configure"
+#line 11752 "configure"
 #include "confdefs.h"
 int main(int c,char *v[]){return 0;}
 EOF
-if { (eval echo configure:11491: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:11756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
--- a/configure.in	Mon Aug 13 10:44:47 2007 +0200
+++ b/configure.in	Mon Aug 13 10:45:36 2007 +0200
@@ -2081,7 +2081,7 @@
 
 dnl checks for header files
 AC_CHECK_HEADERS(mach/mach.h sys/stropts.h sys/timeb.h sys/time.h unistd.h)
-AC_CHECK_HEADERS(utime.h locale.h libgen.h fcntl.h ulimit.h)
+AC_CHECK_HEADERS(utime.h locale.h libgen.h fcntl.h ulimit.h cygwin32/version.h)
 AC_CHECK_HEADERS(linux/version.h kstat.h sys/pstat.h inttypes.h sys/un.h a.out.h)
 AC_HEADER_SYS_WAIT
 AC_HEADER_STDC
@@ -3227,6 +3227,7 @@
 esac
 AC_MSG_RESULT($have_mmap)
 test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP)
+AC_FUNC_MMAP
 
 dnl rel_alloc requires either GNU malloc or system malloc with mmap
 dnl We only turn rel_alloc on by default if mmap is available.
--- a/lib-src/ChangeLog	Mon Aug 13 10:44:47 2007 +0200
+++ b/lib-src/ChangeLog	Mon Aug 13 10:45:36 2007 +0200
@@ -1,3 +1,13 @@
+1998-09-29  SL Baur  <steve@altair.xemacs.org>
+
+	* XEmacs 21.0-pre14 is released.
+
+1998-09-08  Raymond Toy  <toy@rtp.ericsson.se>
+
+	* gnuclient.c (filename_expand): Added better recognition of
+	absolute pathnames for CYGWIN.  Convert absolute pathnames with
+	drive letters to something xemacs can handle.
+
 1998-09-05  SL Baur  <steve@altair.xemacs.org>
 
 	* XEmacs 21.0-pre12 is released.
--- a/lib-src/gnuclient.c	Mon Aug 13 10:44:47 2007 +0200
+++ b/lib-src/gnuclient.c	Mon Aug 13 10:45:36 2007 +0200
@@ -179,8 +179,37 @@
 
   fullpath[0] = '\0';
 
-  if (filename[0] && filename[0] != '/')
-    {	/* relative filename */
+  if (filename[0] && filename[0] == '/')
+     {
+       /* Absolute (unix-style) pathname.  Do nothing */
+       strcat (fullpath, filename);
+     }
+#ifdef  __CYGWIN32__
+  else if (filename[0] && filename[0] == '\\' &&
+           filename[1] && filename[1] == '\\')
+    {
+      /* This path includes the server name (something like
+         "\\server\path"), so we assume it's absolute.  Do nothing to
+         it. */
+      strcat (fullpath, filename);
+    }
+  else if (filename[0] &&
+           filename[1] && filename[1] == ':' &&
+           filename[2] && filename[2] == '\\')
+    {
+      /* Absolute pathname with drive letter.  Convert "<drive>:"
+         to "//<drive>/". */
+      strcat (fullpath, "//");
+      strncat (fullpath, filename, 1);
+      strcat (fullpath, &filename[2]);
+    }
+#endif
+  else
+    {
+      /* Assume relative Unix style path.  Get the current directory
+       and prepend it.  FIXME: need to fix the case of DOS paths like
+       "\foo", where we need to get the current drive. */
+      
       strcat (fullpath, get_current_working_directory ());
       len = strlen (fullpath);
 
@@ -188,10 +217,7 @@
 	;					/* yep */
       else
 	strcat (fullpath, "/");		/* nope, append trailing slash */
-    } /* if */
-
-  strcat (fullpath,filename);
-
+    }
 } /* filename_expand */
 
 /* Encase the string in quotes, escape all the backslashes and quotes
--- a/lisp/ChangeLog	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/ChangeLog	Mon Aug 13 10:45:36 2007 +0200
@@ -1,3 +1,114 @@
+1998-09-29  SL Baur  <steve@altair.xemacs.org>
+
+	* XEmacs 21.0-pre14 is released.
+
+1998-08-14  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* files.el (auto-mode-alist): Enhanced regexp for perl-mode
+
+1998-09-22  Karl M. Hegbloom  <karlheg@bittersweet.inetarena.com>
+
+	* info.el (Info-mode): Document page turning by double clicks in
+	docstring so `M-x describe-mode' will display it.
+
+1998-09-20  Karl M. Hegbloom  <karlheg@bittersweet.inetarena.com>
+
+	* info.el (Info-mouse-track-double-click-hook): Use character
+	widths to calculate a border region where double clicking does
+	page turning, and return `nil' by default so other hooks, such as
+	region highlighting, will be run.
+
+1998-09-29  Colin Rafferty   <colin@xemacs.org>
+
+	* sound.el (default-sound-directory-list): Initialize with all the 
+	"sounds" directories in `data-directory-list'.  It used to just be 
+	the first one.
+
+	* packages.el (locate-data-directory-list): Created.  This gives
+	the list of matching directories, unlike `locate-data-directory',
+	which just gives the first one.
+
+1998-09-28  Raymond Wiker <raymond@orion.no>
+
+	* packages.el: Added "man" as a special subdirectory of packages.
+
+1998-09-26  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+	* minibuf.el (read-from-minibuffer): No longer bind help-form but
+	make a binding in the local keymap until help-char handling is
+	improved. 
+
+	* help.el (help-keymap-with-help-key): Provide keymap with help
+	binding.
+	(help-print-help-form): New helper function.
+
+1998-09-23  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* isearch-mode.el (isearch-highlight): set-extent-endpoints can
+	move extent to another buffer; no need to create a new extent.
+	(isearch-fix-case): New function.
+	(isearch-search-and-update): Use it.
+
+1998-09-20  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* msw-faces.el (mswindows-init-device-faces): Don't try to
+	  specify a default font at this late stage. Do try to force
+	  creation of the default face font so that if it fails we get
+	  an error now instead of a crash at frame creation.
+
+	  mswindows-font-canonicalize-name, mswindows-make-font-unbold,
+	  mswindows-make-font-unitalic: Canonical default weight
+	  changed from "Normal" to "Regular".
+
+	  mswindows-make-font-bold / -bold-italic: Supplied device was
+	  not being passed into call to mswindows-find-smaller-font.
+
+1998-09-10  Björn Torkelsson  <torkel@hpc2n.umu.se>
+
+	* package-get.el (package-get-remote): Fix the path where to find
+	  the packages on xemacs.org.
+
+1998-09-08  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* about.el (about-maintainer-info): Update Ben's entry.
+
+1998-09-20  Darryl Okahata  <darrylo@sr.hp.com>
+
+	* packages.el: Added new function, `package-delete-name', to
+	  delete existing packages from the installed package database
+ 	  (`packages-package-list').  Also added the "pkginfo" directory
+ 	  to `packages-special-base-regexp', so that the pkginfo directory
+ 	  would not get added to `late-packages'.
+
+	* package-admin.el: Added ability to delete an installed package
+	  (added low-level function, `package-admin-delete-package').
+  	  Understands how to use the pkginfo/MANIFEST.<package> file to
+ 	  delete the package.  When installing a package, will also
+ 	  create a MANIFEST.* file if one is not provided by the
+ 	  package.  If the MANIFEST.* doesn't exist when deleting a
+ 	  package, the functions will fall back to attempting to delete
+ 	  any package-specific lisp directory.
+
+	* package-get.el: Moved some functions to package-admin.el.
+	  Added interactive function `package-get-delete-package', for
+	  use by users for deleting a package.
+
+	  Also modified to not require the prescence of efs.
+
+1998-09-22  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* files.el (find-file-noselect): Handle all signals, kill the
+	buffer and resignal.
+
+1998-09-23  SL Baur  <steve@altair.xemacs.org>
+
+	* cl-macs.el (glyph-image): Add setf method.
+
+1998-09-15  SL Baur  <steve@altair.xemacs.org>
+
+	* dumped-lisp.el (preloaded-file-list): Eliminate reference to
+	InfoDock-specific id-menus.el.
+
 1998-09-06  Darryl Okahata  <darrylo@sr.hp.com>
 
 	* package-get.el: Fixed broken EFS downloading.  Also, look for
--- a/lisp/about.el	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/about.el	Mon Aug 13 10:45:36 2007 +0200
@@ -100,6 +100,8 @@
 (defvar about-url-alist
   '((ajc       . "http://www-personal.monash.edu.au/~ajc/")
     (altrasoft . "http://www.altrasoft.com/")
+    (ben       . "http://www.666.com/ben/")
+    (ben-xemacs . "http://www.666.com/xemacs/")
     (baw       . "http://www.python.org/~bwarsaw/")
     (cc-mode   . "http://www.python.org/ftp/emacs/")
     (chr       . "http://www.xemacs.org/faq/")
@@ -586,26 +588,21 @@
 Volunteer.\n"))
     (hniksic
      (widget-insert "\
-Hrvoje is currently a student at the Faculty of Electrical
-Engineering and Computing in Zagreb, Croatia.  He works part-time
-at SRCE, where he helps run the network machines.  In his free time he
-is helping develop free software (especially XEmacs, as well as GNU
-software) and is writing his own -- he has written a small network
-mirroring utility Wget, see ")
-     (about-url-link 'wget "Download Wget")
-     (widget-insert ".\n"))
+Hrvoje is a student at the Faculty of Electrical Engineering and
+Computing in Zagreb, Croatia, working part-time at system administration
+at SRCE.  His hobby is hacking free software, particularly XEmacs and
+GNU Wget, the latter being his very own creation.
+
+His contribution to XEmacs consists of a multitude of hours spent
+adding new features and bugs, and fixing old ones.  He dreams of
+writing a home page.\n"))
     (wing
      (widget-insert
       "\
-I'm not a thug -- I just play one on video.
-My roommate says I'm a San Francisco \"Mission Critter\".\n\n"
-      (about-with-face "Gory stuff follows:" 'italic)
-      "\n
-In 1992 I left a stuffy East-Coast university, set out into the real
-world, and ended up a co-founder of Pearl Software.  As part of this
-company, I became the principal architect of Win-Emacs, a port of
-Lucid Emacs to Microsoft Windows and Windows NT (for more info, e-mail
-to info@pearlsoft.com).
+I began my Emacs life in 1992 as the co-founder of the now defunct
+Pearl Software.  As part of this company, I became the principal
+architect of Win-Emacs, an early port of Lucid Emacs to Microsoft
+Windows and Windows NT.
 
 Since April 1993, I've worked on XEmacs as a contractor for various
 companies, changing hats faster than Ronald Reagan's hair color (oops,
@@ -616,8 +613,19 @@
 manual), and being a general nuisance ... er, brainstormer for many of
 the new features of XEmacs.
 
-Recently I took a job at Dimension X, where I'm working on a
-Java-based toolkit for developing VRML applications.\n"))
+Alas, life has not been good to me recently.  This former San Francisco
+\"Mission Critter\" was exiled to \"Stroller Valley\" and, after a brief
+stint developing a Java-based VRML toolkit for the now also defunct
+Dimension X, I developed insidious hand and neck problems, and I was
+forced to quit working.  Since then, I have been learning how to interact
+with the computer by using foot pedals and by dictating text to other
+people.  Recently I completed Architecting XEmacs, a web site about the
+future of XEmacs.\n\n")
+     (widget-insert "Architecting XEmacs: ")
+     (about-url-link 'ben-xemacs "Find the miracles in store for XEmacs")
+     (widget-insert "\nBen's home page:     ")
+     (about-url-link 'ben "Visit Ben's page")
+     (widget-insert "\n"))
     (cthomp
      (widget-insert "\
 Chuck, through being in the wrong place at the right time, has gotten
@@ -1494,6 +1502,7 @@
        (print-short "Peter B. West" "p.west@uq.net.au")
        (print-short "Rod Whitby" "rwhitby@asc.corp.mot.com")
        (print-short "Rich Williams" "rdw@hplb.hpl.hp.com")
+       (print-short "Raymond Wiker" "raymond@orion.no")
        (print-short "Peter Windle" "peterw@SDL.UG.EDS.COM")
        (print-short "David C Worenklein" "dcw@gcm.com")
        (print-short "Takeshi Yamada" "yamada@sylvie.kecl.ntt.jp")
--- a/lisp/cl-macs.el	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/cl-macs.el	Mon Aug 13 10:45:36 2007 +0200
@@ -1736,6 +1736,8 @@
 ;; Avoid adding various face and glyph functions.
 (defsetf frame-selected-window (&optional f) (v)
   `(set-frame-selected-window ,f ,v))
+(defsetf glyph-image (glyph &optional domain) (i)
+  (list 'set-glyph-image glyph i domain))
 (defsetf itimer-function set-itimer-function)
 (defsetf itimer-function-arguments set-itimer-function-arguments)
 (defsetf itimer-is-idle set-itimer-is-idle)
--- a/lisp/dumped-lisp.el	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/dumped-lisp.el	Mon Aug 13 10:45:36 2007 +0200
@@ -165,7 +165,6 @@
 ;; preload the X code, for faster startup.
 	(when-feature (and (not infodock)
 			   (or x mswindows) menubar) "menubar-items")
-	(when-feature (and infodock (or x mswindows) menubar) "id-menus")
 	(when-feature x "x-faces")
 	(when-feature x "x-iso8859-1")
 	(when-feature x "x-mouse")
--- a/lisp/files.el	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/files.el	Mon Aug 13 10:45:36 2007 +0200
@@ -976,65 +976,69 @@
 ;;;		(message "Symbolic link to file in buffer %s"
 ;;;			 (buffer-name linked-buf))))
 	  (setq buf (create-file-buffer filename))
-	  (set-buffer-major-mode buf)
-	  (set-buffer buf)
-	  (erase-buffer)
-	  (if rawfile
-	      (condition-case ()
-		  (insert-file-contents-literally filename t)
-		(file-error
-		 (when (and (file-exists-p filename)
-			    (not (file-readable-p filename)))
-		   (kill-buffer buf)
-		   (signal 'file-error (list "File is not readable" filename)))
-		 ;; Unconditionally set error
-		 (setq error t)))
-	    (condition-case ()
-		(insert-file-contents filename t)
-	      (file-error
-	       (when (and (file-exists-p filename)
-			  (not (file-readable-p filename)))
-		 (kill-buffer buf)
-		 (signal 'file-error (list "File is not readable" filename)))
-	       ;; Run find-file-not-found-hooks until one returns non-nil.
-	       (or (run-hook-with-args-until-success 'find-file-not-found-hooks)
-		   ;; If they fail too, set error.
-		   (setq error t)))))
-	  ;; Find the file's truename, and maybe use that as visited name.
-	  ;; automatically computed in XEmacs, unless jka-compr was used!
-	  (unless buffer-file-truename
-	    (setq buffer-file-truename truename))
-	  (setq buffer-file-number number)
-	  ;; On VMS, we may want to remember which directory in a search list
-	  ;; the file was found in.
-	  (and (eq system-type 'vax-vms)
-	       (let (logical)
-		 (if (string-match ":" (file-name-directory filename))
-		     (setq logical (substring (file-name-directory filename)
-					      0 (match-beginning 0))))
-		 (not (member logical find-file-not-true-dirname-list)))
-	       (setq buffer-file-name buffer-file-truename))
-	  (and find-file-use-truenames
-	       ;; This should be in C.  Put pathname abbreviations that have
-	       ;; been explicitly requested back into the pathname.  Most
-	       ;; importantly, strip out automounter /tmp_mnt directories so
-	       ;; that auto-save will work
-	       (setq buffer-file-name (abbreviate-file-name buffer-file-name)))
-	  ;; Set buffer's default directory to that of the file.
-	  (setq default-directory (file-name-directory buffer-file-name))
-	  ;; Turn off backup files for certain file names.  Since
-	  ;; this is a permanent local, the major mode won't eliminate it.
-	  (and (not (funcall backup-enable-predicate buffer-file-name))
-	       (progn
-		 (make-local-variable 'backup-inhibited)
-		 (setq backup-inhibited t)))
-	  (if rawfile
-	      ;; #### FSF 20.3 sets buffer-file-coding-system to
-	      ;; `no-conversion' here.  Should we copy?  It also makes
-	      ;; `find-file-literally' a local variable and sets it to t.
-	      nil
-	    (after-find-file error (not nowarn))
-	    (setq buf (current-buffer)))))
+	  ;; Catch various signals, such as QUIT, and kill the buffer
+	  ;; in that case.
+	  (condition-case data
+	      (progn
+		(set-buffer-major-mode buf)
+		(set-buffer buf)
+		(erase-buffer)
+		(condition-case ()
+		    (if rawfile
+			(insert-file-contents-literally filename t)
+		      (insert-file-contents filename t))
+		  (file-error
+		   (when (and (file-exists-p filename)
+			      (not (file-readable-p filename)))
+		     (signal 'file-error (list "File is not readable" filename)))
+		   (if rawfile
+		       ;; Unconditionally set error
+		       (setq error t)
+		     (or
+		      ;; Run find-file-not-found-hooks until one returns non-nil.
+		      (run-hook-with-args-until-success 'find-file-not-found-hooks)
+		      ;; If they fail too, set error.
+		      (setq error t)))))
+		;; Find the file's truename, and maybe use that as visited name.
+		;; automatically computed in XEmacs, unless jka-compr was used!
+		(unless buffer-file-truename
+		  (setq buffer-file-truename truename))
+		(setq buffer-file-number number)
+		;; On VMS, we may want to remember which directory in
+		;; a search list the file was found in.
+		(and (eq system-type 'vax-vms)
+		     (let (logical)
+		       (if (string-match ":" (file-name-directory filename))
+			   (setq logical (substring (file-name-directory filename)
+						    0 (match-beginning 0))))
+		       (not (member logical find-file-not-true-dirname-list)))
+		     (setq buffer-file-name buffer-file-truename))
+		(and find-file-use-truenames
+		     ;; This should be in C.  Put pathname
+		     ;; abbreviations that have been explicitly
+		     ;; requested back into the pathname.  Most
+		     ;; importantly, strip out automounter /tmp_mnt
+		     ;; directories so that auto-save will work
+		     (setq buffer-file-name (abbreviate-file-name buffer-file-name)))
+		;; Set buffer's default directory to that of the file.
+		(setq default-directory (file-name-directory buffer-file-name))
+		;; Turn off backup files for certain file names.  Since
+		;; this is a permanent local, the major mode won't eliminate it.
+		(and (not (funcall backup-enable-predicate buffer-file-name))
+		     (progn
+		       (make-local-variable 'backup-inhibited)
+		       (setq backup-inhibited t)))
+		(if rawfile
+		    ;; #### FSF 20.3 sets buffer-file-coding-system to
+		    ;; `no-conversion' here.  Should we copy?  It also
+		    ;; makes `find-file-literally' a local variable
+		    ;; and sets it to t.
+		    nil
+		  (after-find-file error (not nowarn))
+		  (setq buf (current-buffer))))
+	    (t
+	     (kill-buffer buf)
+	     (signal (car data) (cdr data))))))
       buf)))
 
 ;; FSF has `insert-file-literally' and `find-file-literally' here.
@@ -1154,7 +1158,7 @@
     ("\\.[fF]90\\'" . f90-mode)
 ;;; Less common extensions come here
 ;;; so more common ones above are found faster.
-    ("\\.p[lm]\\'" . perl-mode)
+    ("\\.\\([pP][Llm]\\|al\\)\\'" . perl-mode)
     ("\\.py\\'" . python-mode)
     ("\\.texi\\(nfo\\)?\\'" . texinfo-mode)
     ("\\.ad[abs]\\'" . ada-mode)
--- a/lisp/font.el	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/font.el	Mon Aug 13 10:45:36 2007 +0200
@@ -776,7 +776,7 @@
 ;;; A maximal mswindows font spec looks like:
 ;;;	Courier New:Bold Italic:10:underline strikeout:western
 ;;; Missing parts of the font spec should be filled in with these values:
-;;;	Courier New:Normal:10::western
+;;;	Courier New:Regular:10::western
 ;;  "^[a-zA-Z ]+:[a-zA-Z ]*:[0-9]+:[a-zA-Z ]*:[a-zA-Z 0-9]*$"
 (defvar font-mswindows-font-regexp 
   (let
--- a/lisp/help.el	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/help.el	Mon Aug 13 10:45:36 2007 +0200
@@ -1416,4 +1416,25 @@
 		(if cmd (princ " ")))))
 	  (terpri))))))
 
+;; Stop gap for 21.0 untill we do help-char etc properly.
+(defun help-keymap-with-help-key (keymap form)
+  "Return a copy of KEYMAP with an help-key binding according to help-char
+ invoking FORM like help-form.  An existing binding is not overridden.
+ If FORM is nil then no binding is made."
+  (let ((map (copy-keymap keymap))
+	(key (if (characterp help-char)
+		 (vector (character-to-event help-char))
+	       help-char)))
+    (when (and form key (not (lookup-key map key)))
+      (define-key map key
+	`(lambda () (interactive) (help-print-help-form ,form))))
+    map))
+
+(defun help-print-help-form (form)
+  (let ((string (eval form)))
+    (if (stringp string)
+	(with-displaying-help-buffer
+	 (insert string)))))
+
+
 ;;; help.el ends here
--- a/lisp/info.el	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/info.el	Mon Aug 13 10:45:36 2007 +0200
@@ -2614,39 +2614,20 @@
   (if (/= click-count 2)
       ;; Return nil so any other hooks are performed.
       nil
-      (let* ((x (event-x-pixel event))
-	     (y (event-y-pixel event))
-	     (w (window-pixel-width (event-window event)))
-	     (h (window-pixel-height (event-window event)))
-	     (w/3 (/ w 3))
-	     (w/2 (/ w 2))
-	     (h/4 (/ h 4)))
+      (let* ((fw (face-width 'default))
+	     (fh (face-height 'default))
+	     (x (/ (event-x-pixel event) fw))
+	     (y (/ (event-y-pixel event) fw))
+	     (w (/ (window-pixel-width (event-window event)) fw))
+	     (h (/ (window-pixel-height (event-window event)) fh))
+	     (bx 3)
+	     (by 2))
 	(cond
-	  ;; In the top 1/4 and inside the middle 1/3
-	  ((and (<= y h/4)
-		(and (>= x w/3) (<= x (+ w/3 w/3))))
-	   (Info-up)
-	   t)
-	  ;; In the bottom 1/4 and inside the middle 1/3
-	  ((and (>= y (+ h/4 h/4 h/4))
-		(and (>= x w/3) (<= x (+ w/3 w/3))))
-	   (Info-nth-menu-item 1)
-	   t)
-	  ;; In the lower 3/4 and the right 1/2
-	  ;; OR in the upper 1/4 and the right 1/3
-	  ((or (and (>= y h/4) (>= x w/2))
-	       (and (< y h/4) (>= x (+ w/3 w/3))))
-	   (Info-next)
-	   t)
-	  ;; In the lower 3/4 and the left 1/2
-	  ;; OR in the upper 1/4 and the left 1/3
-	  ((or (and (>= y h/4) (< x w/2))
-	       (and (< y h/4) (<= x w/3)))
-	   (Info-prev)
-	   t)
-	  ;; This shouldn't happen.
-	  (t
-	   (error "event out of bounds: %s %s" x y))))))
+	  ((<= y by) (Info-up) t)
+	  ((>= y (- h by)) (Info-nth-menu-item 1) t)
+	  ((<= x bx) (Info-prev) t)
+	  ((>= x (- w bx)) (Info-next) t)
+	  (t nil)))))
 
 (defvar Info-mode-map nil
   "Keymap containing Info commands.")
@@ -2742,10 +2723,16 @@
 TAB	Go to next cross-reference.     Meta-TAB  Go to previous ref.
 
 Mouse commands:
-Left Button	Set point.
+Left Button	Set point (usual text-mode functionality)
 Middle Button	Click on a highlighted node reference to go to it.
 Right Button	Pop up a menu of applicable Info commands.
 
+Left Button Double Click in window edges:
+ Top edge:    Go up to the parent node, like `u'.
+ Left edge:   Go to the previous node, like `p'.
+ Right edge:  Go to the next node, like `n'.
+ Bottom edge: Follow first menu item, like `1'.
+
 Advanced commands:
 g	Move to node, file, or annotation tag specified by name.
 	Examples:  `g Rectangles' `g (Emacs)Rectangles' `g Emacs'.
--- a/lisp/isearch-mode.el	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/isearch-mode.el	Mon Aug 13 10:45:36 2007 +0200
@@ -936,6 +936,20 @@
   (interactive)
   (isearch-yank (x-get-clipboard)))
 
+(defun isearch-fix-case ()
+  (if (and isearch-case-fold-search search-caps-disable-folding)
+      (setq isearch-case-fold-search (isearch-no-upper-case-p isearch-string)))
+  (setq isearch-mode (if case-fold-search
+                         (if isearch-case-fold-search
+                             " Isearch"  ;As God Intended Mode
+			   " ISeARch") ;Warn about evil case via StuDLYcAps.
+		       "Isearch"
+;		         (if isearch-case-fold-search
+;                            " isearch"    ;Presumably case-sensitive losers
+;                                          ;will notice this 1-char difference.
+;                            " Isearch")   ;Weenie mode.
+			 )))
+
 (defun isearch-search-and-update ()
   ;; Do the search and update the display.
   (if (and (not isearch-success)
@@ -951,12 +965,15 @@
     ;; long as the match does not extend past search origin.
     (if (and (not isearch-forward) (not isearch-adjusted)
 	     (condition-case ()
-		 (looking-at (if isearch-regexp isearch-string
-			       (regexp-quote isearch-string)))
+		 (progn
+		   (isearch-fix-case)
+		   (let ((case-fold-search isearch-case-fold-search))
+		     (looking-at (if isearch-regexp isearch-string
+				   (regexp-quote isearch-string)))))
 	       (error nil))
-	       (or isearch-yank-flag
-		   (<= (match-end 0) 
-		       (min isearch-opoint isearch-barrier))))
+	     (or isearch-yank-flag
+		 (<= (match-end 0) 
+		     (min isearch-opoint isearch-barrier))))
 	(setq isearch-success t 
 	      isearch-invalid-regexp nil
 	      isearch-other-end (match-end 0))
@@ -1460,12 +1477,9 @@
   (if (null isearch-highlight)
       nil
     ;; make sure isearch-extent is in the current buffer
-    (cond ((not (extentp isearch-extent))
-	   (isearch-make-extent begin end))
-	  ((not (eq (extent-object isearch-extent) (current-buffer)))
-	   (delete-extent isearch-extent)
-	   (isearch-make-extent begin end)))
-    (set-extent-endpoints isearch-extent begin end)))
+    (or (extentp isearch-extent)
+	(isearch-make-extent begin end))
+    (set-extent-endpoints isearch-extent begin end (current-buffer))))
 
 (defun isearch-dehighlight (totally)
   (if (and isearch-highlight isearch-extent)
@@ -1485,19 +1499,7 @@
 (defun isearch-search ()
   ;; Do the search with the current search string.
   (isearch-message nil t)
-  (if (and isearch-case-fold-search search-caps-disable-folding)
-      (setq isearch-case-fold-search (isearch-no-upper-case-p isearch-string)))
-
-  (setq isearch-mode (if case-fold-search
-                         (if isearch-case-fold-search
-                             " Isearch"  ;As God Intended Mode
-                             " ISeARch") ;Warn about evil case via StuDLYcAps.
-		         "Isearch"
-;		         (if isearch-case-fold-search
-;                            " isearch"    ;Presumably case-sensitive losers
-;                                          ;will notice this 1-char difference.
-;                            " Isearch")   ;Weenie mode.
-			 ))
+  (isearch-fix-case)
   (condition-case lossage
       (let ((inhibit-quit nil)
 	    (case-fold-search isearch-case-fold-search))
--- a/lisp/minibuf.el	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/minibuf.el	Mon Aug 13 10:45:36 2007 +0200
@@ -243,6 +243,7 @@
        (delete-region (point-min) (point)))
   (insert ?~))
 
+
 (defvar read-file-name-map
   (let ((map (make-sparse-keymap 'read-file-name-map)))
     (set-keymap-parents map (list minibuffer-local-completion-map))
@@ -447,12 +448,14 @@
 		 (insert initial-contents)
 		 (setq current-minibuffer-contents initial-contents
 		       current-minibuffer-point (point))))
-           (use-local-map (or keymap minibuffer-local-map))
+           (use-local-map (help-keymap-with-help-key
+			   (or keymap minibuffer-local-map)
+			   minibuffer-help-form))
            (let ((mouse-grabbed-buffer
 		  (and minibuffer-smart-completion-tracking-behavior
 		       (current-buffer)))
                  (current-prefix-arg current-prefix-arg)
-                 (help-form minibuffer-help-form)
+;;                 (help-form minibuffer-help-form)
                  (minibuffer-history-variable (cond ((not _history_)
                                                      'minibuffer-history)
                                                     ((consp _history_)
--- a/lisp/msw-faces.el	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/msw-faces.el	Mon Aug 13 10:45:36 2007 +0200
@@ -26,15 +26,14 @@
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
-;; This file does the magic to parse mswindows font names, and make sure that the
-;; default and modeline attributes of new frames are specified enough.
+;; This file does the magic to parse mswindows font names, and make sure that
+;; the default and modeline attributes of new frames are specified enough.
 
-;;; ensure that the default face has some reasonable fallbacks if nothing
-;;; else is specified.
+;;; Force creation of the default face font so that if it fails we get an
+;;; error now instead of a crash at frame creation.
 (defun mswindows-init-device-faces (device)
-  (set-face-font 'default 
-		 '((mswindows default) . "Courier New:Regular:10") 'global)
-  )
+  (unless (face-font-instance 'default device)
+    (error "Can't find a suitable default font")))
 
 
 (defun mswindows-init-frame-faces (frame)
@@ -48,12 +47,12 @@
 ;;; A minimal mswindows font spec looks like:
 ;;;	Courier New
 ;;; A maximal mswindows font spec looks like:
-;;;	Courier New:Bold Italic:10:underline strikeout:western
+;;;	Courier New:Bold Italic:10:underline strikeout:Western
 ;;; Missing parts of the font spec should be filled in with these values:
-;;;	Courier New:Normal:10::western
+;;;	Courier New:Regular:10::Western
 (defun mswindows-font-canonicalize-name (font)
-  "Given a mswindows font or font specification, this returns its
-specification in canonical form."
+  "Given a mswindows font or font name, this returns its name in
+canonical form."
   (if (or (font-instance-p font)
 	  (stringp font))
       (let ((name (if (font-instance-p font) 
@@ -63,14 +62,14 @@
 		"^[a-zA-Z ]+:[a-zA-Z ]*:[0-9]+:[a-zA-Z ]*:[a-zA-Z 0-9]*$"
 		name) name)
 	      ((string-match "^[a-zA-Z ]+:[a-zA-Z ]*:[0-9]+:[a-zA-Z ]*$"
-			     name) (concat name ":western"))
+			     name) (concat name ":Western"))
 	      ((string-match "^[a-zA-Z ]+:[a-zA-Z ]*:[0-9]+$" name)
-	       (concat name "::western"))
+	       (concat name "::Western"))
 	      ((string-match "^[a-zA-Z ]+:[a-zA-Z ]*$" name)
-	       (concat name ":10::western"))
+	       (concat name ":10::Western"))
 	      ((string-match "^[a-zA-Z ]+$" name)
-	       (concat name ":Normal:10::western"))
-	      (t "Courier New:Normal:10::western")))))
+	       (concat name ":Regular:10::Western"))
+	      (t "Courier New:Regular:10::Western")))))
 
 (defun mswindows-make-font-bold (font &optional device)
   "Given a mswindows font specification, this attempts to make a bold font.
@@ -88,7 +87,7 @@
 ; makes it the same width (maybe at the expense of making it one pixel shorter)
 	  (if (font-instance-p newfont)
 	      (if (> (font-instance-width newfont) oldwidth)
-		  (mswindows-find-smaller-font newfont)
+		  (mswindows-find-smaller-font newfont device)
 		newfont))))))
 
 (defun mswindows-make-font-unbold (font &optional device)
@@ -99,7 +98,7 @@
 	(string-match "^[a-zA-Z ]+:\\([a-zA-Z ]*\\):" name)
 	(make-font-instance (concat
 			     (substring name 0 (match-beginning 1))
-			     "Normal" (substring name (match-end 1)))
+			     "Regular" (substring name (match-end 1)))
 			    device t))))
 
 (defun mswindows-make-font-italic (font &optional device)
@@ -121,7 +120,7 @@
 	(string-match "^[a-zA-Z ]+:\\([a-zA-Z ]*\\):" name)
 	(make-font-instance (concat
 			     (substring name 0 (match-beginning 1))
-			     "Normal" (substring name (match-end 1)))
+			     "Regular" (substring name (match-end 1)))
 			    device t))))
 
 (defun mswindows-make-font-bold-italic (font &optional device)
@@ -140,7 +139,7 @@
 ; makes it the same width (maybe at the expense of making it one pixel shorter)
 	  (if (font-instance-p newfont)
 	      (if (> (font-instance-width newfont) oldwidth)
-		  (mswindows-find-smaller-font newfont)
+		  (mswindows-find-smaller-font newfont device)
 		newfont))))))
 
 (defun mswindows-find-smaller-font (font &optional device)
--- a/lisp/package-admin.el	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/package-admin.el	Mon Aug 13 10:45:36 2007 +0200
@@ -77,6 +77,31 @@
 This is awful, but it exists because error return codes aren't reliable
 under MS Windows.")
 
+(defvar package-admin-tar-filename-regexps
+  '(
+    ;; GNU tar:
+    ;; drwxrwxr-x john/doe 123 1997-02-18 15:48 pathname
+    "\\S-+\\s-+[-a-z0-9_/]+\\s-+[0-9]+\\s-+[-0-9]+\\s-+[0-9:]+\\s-+\\(\\S-.*\\)"
+    ;; HP-UX & SunOS tar:
+    ;; rwxrwxr-x 501/501    123 Feb 18 15:46 1997 pathname
+    ;; Solaris tar (phooey!):
+    ;; rwxrwxr-x501/501    123 Feb 18 15:46 1997 pathname
+    ;; AIX tar:
+    ;; -rw-r--r-- 147 1019   32919 Mar 26 12:00:09 1992 pathname
+    "\\S-+\\s-*[-a-z0-9_]+[/ ][-a-z0-9_]+\\s-+[0-9]+\\s-+[a-z][a-z][a-z]\\s-+[0-9]+\\s-+[0-9:]+\\s-+[0-9]+\\s-+\\(\\S-.*\\)"
+
+    ;; djtar:
+    ;; drwx Aug 31 02:01:41 1998       123 pathname
+    "\\S-+\\s-+[a-z][a-z][a-z]\\s-+[0-9]+\\s-+[0-9:]+\\s-+[0-9]+\\s-+[0-9]+\\s-+\\(\\S-.*\\)"
+
+    )
+  "List of regexps to use to search for tar filenames.
+Note that \"\\(\" and \"\\)\" must be used to delimit the pathname (as
+match #1).  Don't put \"^\" to match the beginning of the line; this
+is already implicit, as `looking-at' is used.  Filenames can,
+unfortunately, contain spaces, so be careful in constructing any
+regexps.")
+
 ;;;###autoload
 (defun package-admin-add-single-file-package (file destdir &optional pkg-dir)
   "Install a single file Lisp package into XEmacs package hierarchy.
@@ -108,6 +133,7 @@
 to buffer BUF."
   (let (filename)
     (setq filename (expand-file-name file pkg-dir))
+    ;; Don't assume GNU tar.
     (if (shell-command (concat "gunzip -c " filename " | tar xvf -") buf)
 	0
       1)
@@ -129,15 +155,151 @@
   pkg-dir
   )
 
+(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)
+    ))
+
+(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)
+    (unwind-protect
+	(save-excursion				;; Probably redundant.
+	  (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\\...*")
+
+	  ;; Look for the manifest.
+	  (if (not (re-search-forward regexp nil t))
+	      (progn
+		;; We didn't find a manifest.  Make one.
+
+		;; 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".
+		;; 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)
+			(while dirs
+			  (setq rexp (concat "\\b" (car dirs)
+					     "[\\/]\\([^\\/]+\\)[\//]"))
+			  (if (re-search-forward rexp nil t)
+			      (throw 'done t))
+			  (setq dirs (cdr dirs))
+			  )))
+		    (progn
+		      (setq package-name (buffer-substring (match-beginning 1)
+							   (match-end 1)))
+
+		      ;; Get and erase the manifest buffer
+		      (setq manifest-buf (get-buffer-create manifest-buf))
+		      (buffer-disable-undo manifest-buf)
+		      (erase-buffer manifest-buf)
+
+		      ;; Now, scan through the output buffer, looking for
+		      ;; file and directory names.
+		      (goto-char (point-min))
+		      ;; for each line ...
+		      (while (< (point) (point-max))
+			(beginning-of-line)
+			(setq pathname nil)
+
+			;; scan through the regexps, looking for a pathname
+			(if (catch 'found-path
+			      (setq regexps package-admin-tar-filename-regexps)
+			      (while regexps
+				(if (looking-at (car regexps))
+				    (progn
+				      (setq pathname
+					    (buffer-substring
+					     (match-beginning 1)
+					     (match-end 1)))
+				      (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)
+			)
+
+		      ;; Processed all lines.
+		      ;; Now, create the file, pkginfo/MANIFEST.<pkgname>
+
+		      ;; We use `expand-file-name' instead of `concat',
+		      ;; for portability.
+		      (setq pathname (expand-file-name "pkginfo"
+						       pkg-topdir))
+		      ;; Create pkginfo, if necessary
+		      (if (not (file-directory-p pathname))
+			  (make-directory pathname))
+		      (setq pathname (expand-file-name 
+				      (concat "MANIFEST." package-name)
+				      pathname))
+		      (save-excursion
+			(set-buffer manifest-buf)
+			;; Put the files in sorted order
+			(sort-lines nil (point-min) (point-max))
+			;; 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.
+		    ))
+		))
+	  )
+      ;; Restore old case-fold-search status
+      (setq case-fold-search old-case-fold-search))
+    ))
+
 ;;;###autoload
 (defun package-admin-add-binary-package (file &optional pkg-dir)
   "Install a pre-bytecompiled XEmacs package into package hierarchy."
   (interactive "fPackage tarball: ")
-  (setq pkg-dir (package-admin-get-install-dir pkg-dir))
   (let ((buf (get-buffer-create package-admin-temp-buffer))
 	(status 1)
 	start err-list
 	)
+    (setq pkg-dir (package-admin-get-install-dir pkg-dir))
     ;; Insure that the current directory doesn't change
     (save-excursion
       (set-buffer buf)
@@ -147,22 +309,169 @@
       (goto-char (setq start (point-max)))
       (if (= 0 (setq status (funcall package-admin-install-function
 				     file pkg-dir buf)))
-	  (catch 'done
-	    (goto-char start)
-	    (setq err-list package-admin-error-messages)
-	    (while err-list
-	      (if (re-search-forward (car err-list) nil t)
-		  (progn
-		    (setq status 1)
-		    (throw 'done nil)
-		    ))
-	      (setq err-list (cdr err-list))
+	  (progn
+	    ;; First, check for errors.
+	    ;; We can't necessarily rely upon process error codes.
+	    (catch 'done
+	      (goto-char start)
+	      (setq err-list package-admin-error-messages)
+	      (while err-list
+		(if (re-search-forward (car err-list) nil t)
+		    (progn
+		      (setq status 1)
+		      (throw 'done nil)
+		      ))
+		(setq err-list (cdr err-list))
+		)
 	      )
+	    ;; Make sure that the MANIFEST file exists
+	    (package-admin-check-manifest buf pkg-dir)
 	    ))
       )
     status
     ))
 
+(defun package-admin-rmtree (directory)
+  "Delete a directory and all of its contents, recursively.
+This is a feeble attempt at making a portable rmdir."
+  (let ( (orig-default-directory default-directory) files dirs dir)
+    (unwind-protect
+	(progn
+	  (setq directory (file-name-as-directory directory))
+	  (setq files (directory-files directory nil nil nil t))
+	  (setq dirs (directory-files directory nil nil nil 'dirs))
+	  (while dirs
+	    (setq dir (car dirs))
+	    (if (file-symlink-p dir)	;; just in case, handle symlinks
+		(delete-file dir)
+	      (if (not (or (string-equal dir ".") (string-equal dir "..")))
+		  (package-admin-rmtree (expand-file-name dir directory))))
+	    (setq dirs (cdr dirs))
+	    )
+	  (setq default-directory directory)
+	  (condition-case err
+	      (progn
+		(while files
+		  (delete-file (car files))
+		  (setq files (cdr files))
+		  )
+		(delete-directory directory)
+		)
+	    (file-error
+	     (message "%s: %s: \"%s\"" (nth 1 err) (nth 2 err) (nth 3 err)))
+	    )
+	  )
+      (progn
+	(setq default-directory orig-default-directory)
+	))
+    ))
+
+(defun package-admin-get-lispdir  (pkg-topdir package)
+  (let (package-lispdir)
+    (if (and (setq package-lispdir (expand-file-name "lisp" pkg-topdir))
+	     (setq package-lispdir (expand-file-name (symbol-name package)
+						     package-lispdir))
+	     (file-accessible-directory-p 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)
+    (if (not pkg-topdir)
+	(setq pkg-topdir (package-admin-get-install-dir nil)))
+    (setq manifest-file (package-admin-get-manifest-file pkg-topdir package))
+    (if (file-exists-p manifest-file)
+	(progn
+	  ;; 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))
+	  (save-excursion
+	    (set-buffer tmpbuf)
+	    (buffer-disable-undo tmpbuf)
+	    (erase-buffer tmpbuf)
+	    (insert-file-contents manifest-file)
+	    (goto-char (point-min))
+	    ;; For each entry in the MANIFEST ...
+	    (while (< (point) (point-max))
+	      (beginning-of-line)
+	      (setq file (expand-file-name (buffer-substring
+					    (point)
+					    (save-excursion (end-of-line)
+							    (point)))
+					   pkg-topdir))
+	      (if (file-directory-p file)
+		  ;; Keep a record of each directory
+		  (setq dirs (cons file dirs))
+		(progn
+		  ;; Delete each file.
+		  ;; Make sure that the file is writable.
+		  ;; (This is important under MS Windows.)
+		  (set-file-modes file 438) ;; 438 -> #o666
+		  (delete-file file)
+		  ))
+	      (forward-line 1)
+	      )
+	    ;; Delete empty directories.
+	    (if dirs
+		(let ( (orig-default-directory default-directory)
+		       directory files file )
+		  ;; Make sure we preserve the existing `default-directory'.
+		  (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))
+			  )
+			)
+		    (setq default-directory orig-default-directory)
+		    )))
+	    )
+	  (kill-buffer tmpbuf)
+	  ;; Delete the MANIFEST file
+	  (set-file-modes manifest-file 438) ;; 438 -> #o666
+	  (delete-file manifest-file)
+	  (message "Removing old files for package \"%s\" ... done" package)
+	  )
+      (progn
+	;; 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.
+	(if (setq package-lispdir (package-admin-get-lispdir pkg-topdir
+							     package))
+	    (progn
+	      (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)
+    ))
+
 (provide 'package-admin)
 
 ;;; package-admin.el ends here
--- a/lisp/package-get-base.el	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/package-get-base.el	Mon Aug 13 10:45:36 2007 +0200
@@ -1,172 +1,191 @@
 (setq package-get-base
-'((eudc
+'((bbdb
   (standards-version 1.0
-   version "1.21"
+   version "1.01"
+   author-version "2.0"
+   date "1998-07-19"
+   build-date "1998-09-19"
+   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
+   distribution stable
+   priority medium
+   category "comm"
+   dump nil
+   description "The Big Brother Data Base"
+   filename "bbdb-1.01-pkg.tar.gz"
+   md5sum "95ab2746d9cf3a105cab61eb65ecd64d"
+   size 274056
+   provides (bbdb)
+   requires (bbdb edit-utils gnus mh-e rmail supercite vm tm apel mail-lib xemacs-base)
+   type regular
+))
+(eudc
+  (standards-version 1.0
+   version "1.22"
    author-version "1.21"
    date "1998-08-22"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "Oscar Figueiredo <Oscar.Figueiredo@epfl.ch>"
    distribution stable
    priority low
    category "comm"
    dump nil
    description "Emacs Unified Directory Client (LDAP, PH)."
-   filename "eudc-1.21-pkg.tar.gz"
-   md5sum "85966de150cc4520ca2eae9d5621a892"
-   size 44543
+   filename "eudc-1.22-pkg.tar.gz"
+   md5sum "25cd2405e5adcf796923f206d55cd3d6"
+   size 45221
    provides (eudc eudc-ldap eudc-ph)
    requires (fsf-compat xemacs-base)
    type regular
 ))
 (footnote
   (standards-version 1.0
-   version "1.05"
+   version "1.06"
    author-version "0.18x"
    date "1998-08-27"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "SL Baur <steve@xemacs.org>"
    distribution stable
    priority low
    category "comm"
    dump nil
    description "Footnoting in mail message editing modes."
-   filename "footnote-1.05-pkg.tar.gz"
-   md5sum "165173440716f2b4967cf6bce08bc636"
-   size 18329
+   filename "footnote-1.06-pkg.tar.gz"
+   md5sum "796323a84d97bade70a5d78fd9076a2e"
+   size 13551
    provides (footnote)
    requires (mail-lib xemacs-base)
    type regular
 ))
 (gnats
   (standards-version 1.0
-   version "1.05"
+   version "1.06"
    author-version "3.101"
    date "1998-08-01"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority high
    category "comm"
    dump nil
    description "XEmacs bug reports."
-   filename "gnats-1.05-pkg.tar.gz"
-   md5sum "95382a2ea212c5e6c6119a54a10a1d72"
-   size 126461
+   filename "gnats-1.06-pkg.tar.gz"
+   md5sum "5759d3cdefcc57f7a36c2f30a5868abe"
+   size 186656
    provides (gnats gnats-admin send-pr)
    requires (mail-lib xemacs-base)
    type regular
 ))
 (gnus
   (standards-version 1.0
-   version "1.27"
+   version "1.28"
    author-version "5.6.43x1"
    date "1998-09-05"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "comm"
    dump nil
    description "The Gnus Newsreader and Mailreader."
-   filename "gnus-1.27-pkg.tar.gz"
-   md5sum "0e95cfd9320d4ad32034c15c79c5ecb6"
-   size 1714710
+   filename "gnus-1.28-pkg.tar.gz"
+   md5sum "fc47129ff589191a7361d2eac494bde6"
+   size 1871939
    provides (gnus message)
    requires (gnus w3 mh-e mailcrypt rmail mail-lib xemacs-base)
    type regular
 ))
 (irchat
   (standards-version 1.0
-   version "1.00"
+   version "1.01"
    author-version "980625-2"
    date "oc
 	  key "
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "comm"
    dump nil
    description "ZENIRC IRC Client."
-   filename "irchat-1.00-pkg.tar.gz"
-   md5sum "741b2b044cc5b4e169c05699c9c540ea"
-   size 213257
+   filename "irchat-1.01-pkg.tar.gz"
+   md5sum "c94bd691cb42e5ba23fbfe26daea2dc8"
+   size 169192
    provides (irchat)
    requires ()
    type regular
 ))
 (mailcrypt
   (standards-version 1.0
-   version "1.04"
+   version "1.05"
    author-version "3.4"
    date "1998-01-24"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "comm"
    dump nil
    description "Support for messaging encryption with PGP."
-   filename "mailcrypt-1.04-pkg.tar.gz"
-   md5sum "39e7a8b49731d3be30bb869c8308c04c"
-   size 66866
+   filename "mailcrypt-1.05-pkg.tar.gz"
+   md5sum "9ae0b8a3dd2c9b308024813fef24cc3c"
+   size 88944
    provides (mailcrypt)
    requires (gnus vm mail-lib xemacs-base)
    type regular
 ))
 (mew
   (standards-version 1.0
-   version "1.0"
+   version "1.01"
    author-version "1.93b38"
    date "1998-06-21"
-   build-date "1998-06-21"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution contrib
    priority low
    category "comm"
    dump nil
    description "Messaging in an Emacs World."
-   filename "mew-1.0-pkg.tar.gz"
-   md5sum "be366b8dd9495ecb7b3b6a7a46563faa"
-   size 441775
+   filename "mew-1.01-pkg.tar.gz"
+   md5sum "769d0647f7a411a8026aab4bf56d93c6"
+   size 523578
    provides (mew)
    requires (mew)
    type regular
 ))
 (mh-e
   (standards-version 1.0
-   version "1.06"
+   version "1.07"
    author-version "21.0"
    date "1998-07-12"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution contrib
    priority low
    category "comm"
    dump nil
    description "Front end support for MH."
-   filename "mh-e-1.06-pkg.tar.gz"
-   md5sum "8708ee26e3a70d607bc9dc4e2d47400a"
-   size 129233
+   filename "mh-e-1.07-pkg.tar.gz"
+   md5sum "d9ac55c06077c00a4db554dcc6e41dea"
+   size 178838
    provides (mh-e)
    requires (mail-lib xemacs-base)
    type regular
 ))
 (net-utils
   (standards-version 1.0
-   version "1.08"
+   version "1.09"
    author-version "21.0"
    date "1998-07-01"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "comm"
    dump nil
    description "Miscellaneous Networking Utilities."
-   filename "net-utils-1.08-pkg.tar.gz"
-   md5sum "c8651b91a1c04dc23a024c1d985e6aa4"
-   size 107828
+   filename "net-utils-1.09-pkg.tar.gz"
+   md5sum "597c6bc3aac41b64768d4eb7ae167805"
+   size 115926
    provides (ilisp-browse-cltl2 emacsbug feedmail metamail net-utils rcompile shadowfile webjump webster-www)
    requires (w3 efs mail-lib xemacs-base)
    type single
@@ -174,9 +193,9 @@
 (gnus
   (standards-version 1.0
    version "1.01"
-   author-version "0.22"
+   author-version "0.31"
    date "1998-09-08"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution unstable
    priority medium
@@ -184,1338 +203,1338 @@
    dump nil
    description "The Gnus Newsreader and Mailreader."
    filename "pgnus-1.01-pkg.tar.gz"
-   md5sum "79482bfa6ca955d5e66fdb0048c83d26"
-   size 1702564
+   md5sum "2725e2f5f52079a1966f6e2195aab479"
+   size 1969810
    provides (gnus message)
    requires (pgnus w3 mh-e mailcrypt rmail mail-lib xemacs-base)
    type regular
 ))
 (rmail
   (standards-version 1.0
-   version "1.04"
+   version "1.06"
    author-version "21.0"
    date "1998-06-28"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution contrib
    priority low
    category "comm"
    dump nil
    description "An obsolete Emacs mailer."
-   filename "rmail-1.04-pkg.tar.gz"
-   md5sum "ec8be37410dc5475b4b3ccb58f8a1c64"
-   size 85651
+   filename "rmail-1.06-pkg.tar.gz"
+   md5sum "cc42e7660a4eb911b8cbc151f331c36b"
+   size 96472
    provides (rmail rmailsum)
    requires (tm apel mail-lib xemacs-base)
    type regular
 ))
 (supercite
   (standards-version 1.0
-   version "1.08"
+   version "1.09"
    author-version "3.55x2"
    date "1998-08-9"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "comm"
    dump nil
    description "An Emacs citation tool for News & Mail messages."
-   filename "supercite-1.08-pkg.tar.gz"
-   md5sum "3d6bbfe35baf2155a9c6541d5dd20f96"
-   size 71099
+   filename "supercite-1.09-pkg.tar.gz"
+   md5sum "3b2758fd09e036b9c7ce258d0ee61d5a"
+   size 98926
    provides (supercite)
    requires (mail-lib xemacs-base)
    type regular
 ))
 (tm
   (standards-version 1.0
-   version "1.12"
+   version "1.13"
    author-version "21.0"
    date "1998-08-27"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "comm"
    dump nil
    description "Emacs MIME support."
-   filename "tm-1.12-pkg.tar.gz"
-   md5sum "e64cc11c6745b9646b26b941920a7b2d"
-   size 253432
+   filename "tm-1.13-pkg.tar.gz"
+   md5sum "ba0feda4e61c1006c8e17c641de0b6d2"
+   size 336736
    provides (tm tm-edit tm-view mime-setup)
    requires (gnus mh-e rmail vm mailcrypt mail-lib apel xemacs-base)
    type regular
 ))
 (vm
   (standards-version 1.0
-   version "1.10"
-   author-version "6.53"
-   date "1998-06-26"
-   build-date "1998-09-08"
+   version "1.11"
+   author-version "6.62"
+   date "1998-09-19"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "comm"
    dump nil
    description "An Emacs mailer."
-   filename "vm-1.10-pkg.tar.gz"
-   md5sum "691141b94c047a1f58a22d733b02dbd1"
-   size 514282
+   filename "vm-1.11-pkg.tar.gz"
+   md5sum "56e65cbfb38283de030195b33f80be1b"
+   size 503615
    provides (vm)
    requires (mail-lib xemacs-base)
    type regular
 ))
 (w3
   (standards-version 1.0
-   version "1.08"
+   version "1.09"
    author-version "4.0pre23"
    date "1998-07-18"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution experimental
    priority high
    category "comm"
    dump nil
    description "A Web browser."
-   filename "w3-1.08-pkg.tar.gz"
-   md5sum "cacdacb402f1ed0b6224e80965c781cd"
-   size 586456
+   filename "w3-1.09-pkg.tar.gz"
+   md5sum "ceb4e1e0d9e11102b1ff2a5cb7b77d0f"
+   size 638496
    provides (w3 url)
    requires (w3 mail-lib xemacs-base)
    type regular
 ))
 (zenirc
   (standards-version 1.0
-   version "1.00"
+   version "1.01"
    author-version "2.112"
    date "1998-08-15"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "comm"
    dump nil
    description "ZENIRC IRC Client."
-   filename "zenirc-1.00-pkg.tar.gz"
-   md5sum "b72851cd145ace5471ceba4730fd0a98"
-   size 167344
+   filename "zenirc-1.01-pkg.tar.gz"
+   md5sum "558723a7d70b1608a046068444f5045f"
+   size 290655
    provides (zenirc)
    requires (zenirc)
    type regular
 ))
 (cookie
   (standards-version 1.0
-   version "1.07"
+   version "1.08"
    author-version "21.0"
    date "1998-04-07"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "games"
    dump nil
    description "Spook and Yow (Zippy quotes)."
-   filename "cookie-1.07-pkg.tar.gz"
-   md5sum "ff60d46c5870beb8a71688bf65305124"
-   size 34138
+   filename "cookie-1.08-pkg.tar.gz"
+   md5sum "aa71e9df700ad89eb803d1100af331dd"
+   size 34274
    provides (cookie1 yow)
    requires (xemacs-base)
    type regular
 ))
 (games
   (standards-version 1.0
-   version "1.05"
+   version "1.06"
    author-version "1.04"
    date "1998-06-04"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "Glynn Clements <glynn@sensei.co.uk>"
    distribution stable
    priority low
    category "games"
    dump nil
    description "Tetris, Sokoban, and Snake."
-   filename "games-1.05-pkg.tar.gz"
-   md5sum "92f45860326df073e2f7adcd5c0e4b88"
-   size 32019
+   filename "games-1.06-pkg.tar.gz"
+   md5sum "6db6e872cdcce09b3e9b1e3425dcc20a"
+   size 31993
    provides (gamegrid snake tetris sokoban)
    requires (xemacs-base)
    type regular
 ))
 (mine
   (standards-version 1.0
-   version "1.07"
+   version "1.08"
    author-version "1.9"
    date "1998-05-09"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "games"
    dump nil
    description "Minehunt Game."
-   filename "mine-1.07-pkg.tar.gz"
-   md5sum "059368060d8e426281aec30349047875"
-   size 66619
+   filename "mine-1.08-pkg.tar.gz"
+   md5sum "468ed5ccd1b86cd91572a901e156e7e2"
+   size 66924
    provides (xmine)
    requires (xemacs-base)
    type regular
 ))
 (misc-games
   (standards-version 1.0
-   version "1.06"
+   version "1.07"
    author-version "21.0"
    date "1998-03-22"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "games"
    dump nil
    description "Other amusements and diversions."
-   filename "misc-games-1.06-pkg.tar.gz"
-   md5sum "a8e06ce7c9ff12511b5b711c5f969f88"
-   size 165516
+   filename "misc-games-1.07-pkg.tar.gz"
+   md5sum "c7898266da95831f5797e849f740fd4c"
+   size 175489
    provides (decipher gomoku hanoi life morse rot13)
    requires (xemacs-base)
    type single
 ))
 (Sun
   (standards-version 1.0
-   version "1.07"
+   version "1.08"
    author-version "21.0"
    date "1998-07-25"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution sun
    priority low
    category "libs"
    dump nil
    description "Support for Sparcworks."
-   filename "Sun-1.07-pkg.tar.gz"
-   md5sum "05aec92d0b8acc2e75930a60568c8255"
-   size 63676
+   filename "Sun-1.08-pkg.tar.gz"
+   md5sum "faeaa48c2700604e5742b7a509b2a154"
+   size 72951
    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
 ))
 (apel
   (standards-version 1.0
-   version "1.05"
+   version "1.06"
    author-version "3.3"
    date "1998-07-23"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution mule
    priority high
    category "libs"
    dump nil
    description "A Portable Emacs Library.  Used by XEmacs MIME support."
-   filename "apel-1.05-pkg.tar.gz"
-   md5sum "c5442528944c29b904a9cf04bb65e0bb"
-   size 34645
+   filename "apel-1.06-pkg.tar.gz"
+   md5sum "56aabd95da4333887bfd9134f5cbe6ac"
+   size 38742
    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
 ))
 (dired
   (standards-version 1.0
-   version "1.01"
+   version "1.02"
    author-version "7.9"
    date "1998-05-05"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "Mike Sperber <sperber@informatik.uni-tuebingen.de>"
    distribution stable
    priority medium
    category "libs"
    dump nil
    description "Manage file systems."
-   filename "dired-1.01-pkg.tar.gz"
-   md5sum "6ee4d5d0852ad1f28d55286881e0291d"
-   size 187407
+   filename "dired-1.02-pkg.tar.gz"
+   md5sum "fd009a9bcff0f9a14d9f51665fe9c685"
+   size 197926
    provides (diff dired)
    requires (xemacs-base)
    type regular
 ))
 (edebug
   (standards-version 1.0
-   version "1.04"
+   version "1.05"
    author-version "21.0"
    date "1998-03-12"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "libs"
    dump nil
    description "An Emacs Lisp debugger."
-   filename "edebug-1.04-pkg.tar.gz"
-   md5sum "a7581751c28136a22cade2e3c1d7b775"
-   size 118090
+   filename "edebug-1.05-pkg.tar.gz"
+   md5sum "26ff707c557ce5ae53317f391897dde9"
+   size 113971
    provides (edebug cl-read cust-print eval-reg cl-specs)
    requires (xemacs-base)
    type regular
 ))
 (efs
   (standards-version 1.0
-   version "1.09"
+   version "1.10"
    author-version "1.17"
    date "1998-08-23"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "Mike Sperber <sperber@informatik.uni-tuebingen.de>"
    distribution stable
    priority medium
    category "libs"
    dump nil
    description "Treat files on remote systems the same as local files."
-   filename "efs-1.09-pkg.tar.gz"
-   md5sum "704ef7214f994457d7caccb7b71ea76d"
-   size 349181
+   filename "efs-1.10-pkg.tar.gz"
+   md5sum "5f4fdf921b2800eb5dc0de6241253419"
+   size 363608
    provides (efs)
    requires (xemacs-base vm dired)
    type regular
 ))
 (fsf-compat
   (standards-version 1.0
-   version "1.01"
+   version "1.02"
    author-version "21.0"
    date "1998-03-25"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution mule
    priority high
    category "libs"
    dump nil
    description "FSF Emacs compatibility files."
-   filename "fsf-compat-1.01-pkg.tar.gz"
-   md5sum "3c4e671b25bb2dbccb16781f6b49ef47"
-   size 17256
+   filename "fsf-compat-1.02-pkg.tar.gz"
+   md5sum "3beb2ba9863cbee8a857acf5af00a8e8"
+   size 18208
    provides (overlay thingatpt timer)
    requires ()
    type single
 ))
 (mail-lib
   (standards-version 1.0
-   version "1.16"
+   version "1.17"
    author-version "21.0"
    date "1998-06-08"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "libs"
    dump nil
    description "Fundamental lisp files for providing email support."
-   filename "mail-lib-1.16-pkg.tar.gz"
-   md5sum "3b5f544f4b170056b893e6ec68784066"
-   size 120135
+   filename "mail-lib-1.17-pkg.tar.gz"
+   md5sum "efe51eec9acce37695c5fb092dabb079"
+   size 127025
    provides (browse-url highlight-headers mail-abbrevs mail-extr mail-utils reporter rfc822 rmail-mini rmailout sendmail smtpmail)
    requires (xemacs-base)
    type regular
 ))
 (sounds-au
   (standards-version 1.0
-   version "1.02"
+   version "1.03"
    author-version "21.0"
    date "1998-06-30"
-   build-date "1998-07-09"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority high
    category "libs"
    dump nil
    description "XEmacs Sun sound files."
-   filename "sounds-au-1.02-pkg.tar.gz"
-   md5sum "061ab67267c7cdfe37472141130d19ff"
-   size 125736
+   filename "sounds-au-1.03-pkg.tar.gz"
+   md5sum "9ae6e0154c4fce763cfd453e98f94682"
+   size 125773
    provides ()
    requires ()
    type regular
 ))
 (sounds-wav
   (standards-version 1.0
-   version "1.02"
+   version "1.03"
    author-version "21.0"
    date "1998-06-30"
-   build-date "1998-07-09"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority high
    category "libs"
    dump nil
    description "XEmacs Microsoft sound files."
-   filename "sounds-wav-1.02-pkg.tar.gz"
-   md5sum "c970808088c408bfd780dc8466a848b3"
-   size 148621
+   filename "sounds-wav-1.03-pkg.tar.gz"
+   md5sum "15a8c6e740202d0c7542c5ebc2837838"
+   size 148595
    provides ()
    requires ()
    type regular
 ))
 (tooltalk
   (standards-version 1.0
-   version "1.06"
+   version "1.07"
    author-version "21.0"
    date "1998-07-25"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution contrib
    priority low
    category "libs"
    dump nil
    description "Support for building with Tooltalk."
-   filename "tooltalk-1.06-pkg.tar.gz"
-   md5sum "0beeeb0b40ee019d4914d88e1d1a15cb"
-   size 9224
+   filename "tooltalk-1.07-pkg.tar.gz"
+   md5sum "d9a97f43212d794ceebc964dc563dd17"
+   size 9213
    provides ()
    requires ()
    type regular
 ))
 (xemacs-base
   (standards-version 1.0
-   version "1.23"
+   version "1.24"
    author-version "21.0"
    date "1998-08-06"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution mule
    priority high
    category "libs"
    dump nil
    description "Fundamental XEmacs support, you almost certainly need this."
-   filename "xemacs-base-1.23-pkg.tar.gz"
-   md5sum "4b3a6cd98fecf4c627b3632fcc09d3d4"
-   size 457497
+   filename "xemacs-base-1.24-pkg.tar.gz"
+   md5sum "505536311107548faff51c7a4510ad08"
+   size 456033
    provides (add-log 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 overlay passwd pp regi ring shell skeleton sort thing time-stamp timezone xbm-button xpm-button)
    requires ()
    type regular
 ))
 (xemacs-devel
   (standards-version 1.0
-   version "1.15"
+   version "1.16"
    author-version "21.0"
    date "1998-08-19"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "libs"
    dump nil
    description "Emacs Lisp developer support."
-   filename "xemacs-devel-1.15-pkg.tar.gz"
-   md5sum "1f2da3463cbab96af2c5fa28ef13df43"
-   size 83123
+   filename "xemacs-devel-1.16-pkg.tar.gz"
+   md5sum "e5b592061957f041afcd45ed5ecc30cf"
+   size 85457
    provides (docref eldoc elp find-func hide-copyleft ielm regexp-opt trace)
    requires (xemacs-base)
    type single
 ))
 (edict
   (standards-version 1.0
-   version "1.04"
+   version "1.05"
    author-version "0.9.8"
    date "1998-07-23"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "Stephen J. Turnbull <turnbull@sk.tsukuba.ac.jp>"
    distribution mule
    priority high
    category "mule"
    dump nil
    description "Lisp Interface to EDICT, Kanji Dictionary"
-   filename "edict-1.04-pkg.tar.gz"
-   md5sum "5bdedfddd679fe9a9327985b94a08b6e"
-   size 94841
+   filename "edict-1.05-pkg.tar.gz"
+   md5sum "f3b0db7eb896cbbb0409d04d1f02ebbe"
+   size 75070
    provides (dui-registry dui edict-edit edict-english edict-japanese edict-morphology edict-test edict ts-mode)
    requires (mule-base xemacs-base)
    type regular
 ))
 (egg-its
   (standards-version 1.0
-   version "1.09"
+   version "1.10"
    author-version "21.0"
    date "1998-08-11"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution mule
    priority high
    category "mule"
    dump t
    description "Wnn (4.2 and 6) support.  SJ3 support."
-   filename "egg-its-1.09-pkg.tar.gz"
-   md5sum "88f603bfae38084acffca60640fd26ba"
-   size 260116
+   filename "egg-its-1.10-pkg.tar.gz"
+   md5sum "2eb3fb60b3cfb1f3d7b63bd8a95426a6"
+   size 255348
    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
 ))
 (leim
   (standards-version 1.0
-   version "1.08"
+   version "1.09"
    author-version "21.0"
    date "1998-07-23"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution mule
    priority medium
    category "mule"
    dump nil
    description "Quail.  All non-English and non-Japanese language support."
-   filename "leim-1.08-pkg.tar.gz"
-   md5sum "acc0e392b08cefe3361caddc423963f0"
-   size 1743827
+   filename "leim-1.09-pkg.tar.gz"
+   md5sum "dab730405c3843bd2a14a9821a46d1cf"
+   size 1742759
    provides ()
    requires (mule-base fsf-compat xemacs-base)
    type regular
 ))
 (locale
   (standards-version 1.0
-   version "1.08"
+   version "1.09"
    author-version "21.0"
    date "1998-07-24"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution mule
    priority high
    category "mule"
    dump nil
    description "Localized menubars and localized splash screens."
-   filename "locale-1.08-pkg.tar.gz"
-   md5sum "f573b91df2d30c248d7413614c7e24c1"
-   size 33944
+   filename "locale-1.09-pkg.tar.gz"
+   md5sum "c5d2bb5bcd35e8f2f3033b5ef03398fe"
+   size 32872
    provides ()
    requires (mule-base)
    type regular
 ))
 (mule-base
   (standards-version 1.0
-   version "1.21"
+   version "1.22"
    author-version "21.0"
    date "1998-08-12"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "SL Baur <steve@altair.xemacs.org>"
    distribution mule
    priority high
    category "mule"
    dump t
    description "Basic Mule support, required for building with Mule."
-   filename "mule-base-1.21-pkg.tar.gz"
-   md5sum "f6d9fbf4c632d88b0bcf13442e9aad07"
-   size 488832
+   filename "mule-base-1.22-pkg.tar.gz"
+   md5sum "82741caa8f936d8e007b3adf1e9c63c2"
+   size 519183
    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)
    type regular
 ))
 (skk
   (standards-version 1.0
-   version "1.08"
+   version "1.09"
    author-version "10.38"
    date "1998-07-23"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "SL Baur <steve@altair.xemacs.org>"
    distribution mule
    priority medium
    category "mule"
    dump t
    description "Japanese Language Input Method."
-   filename "skk-1.08-pkg.tar.gz"
-   md5sum "59d39ddb769788645d688a9b1c3c29d6"
-   size 1466805
+   filename "skk-1.09-pkg.tar.gz"
+   md5sum "21b1d3bb5bdfe939fb629719b67c68ac"
+   size 1524350
    provides (skk skk-tut)
    requires (viper mule-base xemacs-base)
    type regular
 ))
 (calc
   (standards-version 1.0
-   version "1.07"
+   version "1.08"
    author-version "2.02fX3"
    date "1998-07-25"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "oa"
    dump nil
    description "Emacs calculator"
-   filename "calc-1.07-pkg.tar.gz"
-   md5sum "a015bd4b6a0eb61ee9e376189e35bb8b"
-   size 1160723
+   filename "calc-1.08-pkg.tar.gz"
+   md5sum "b5ffe11d94688709d4131c9d39541866"
+   size 1609129
    provides (calc)
    requires ()
    type regular
 ))
 (calendar
   (standards-version 1.0
-   version "1.06"
+   version "1.07"
    author-version "21.0"
    date "1998-09-01"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "oa"
    dump nil
    description "Calendar and diary support."
-   filename "calendar-1.06-pkg.tar.gz"
-   md5sum "4e34228aeed054f4f2757c3f118a1223"
-   size 248121
+   filename "calendar-1.07-pkg.tar.gz"
+   md5sum "61f7aafd5d103ed66cca835ed3583abe"
+   size 251917
    provides (appt cal-dst cal-french cal-mayan cal-x cal-xemacs calendar diary-ins diary-lib holidays lunar solar)
    requires (xemacs-base)
    type regular
 ))
 (edit-utils
   (standards-version 1.0
-   version "1.28"
+   version "1.30"
    author-version "21.0"
-   date "1998-08-25"
-   build-date "1998-09-08"
+   date "1998-09-18"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority high
    category "oa"
    dump nil
    description "Miscellaneous editor extensions, you probably need this."
-   filename "edit-utils-1.28-pkg.tar.gz"
-   md5sum "71b13d64ce30f14577af731a22a4308c"
-   size 603297
+   filename "edit-utils-1.30-pkg.tar.gz"
+   md5sum "9ed576dd1f01cd57a9f0b699cdce36fe"
+   size 595610
    provides (abbrevlist 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 man mic-paren paren popper mode-motion+ outl-mouse page-ext blink-paren paren permanent-buffers recent-files redo reportmail rsz-minibuf saveconfsavehist saveplace scroll-in-place tempo toolbar-utils tree-menu uniquify where-was-i-db)
    requires (xemacs-base)
    type single
 ))
 (forms
   (standards-version 1.0
-   version "1.06"
+   version "1.07"
    author-version "2.10"
    date "1998-01-25"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution contrib
    priority low
    category "oa"
    dump nil
    description "Forms editing support (obsolete, use Widget instead)."
-   filename "forms-1.06-pkg.tar.gz"
-   md5sum "102e244d579effe7c50a534c92972908"
-   size 39891
+   filename "forms-1.07-pkg.tar.gz"
+   md5sum "5efd98c58eb5ba6dce1e1a1e4059238d"
+   size 47896
    provides (forms forms-mode)
    requires ()
    type regular
 ))
 (frame-icon
   (standards-version 1.0
-   version "1.03"
+   version "1.04"
    author-version "21.0"
    date "1998-07-14"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution contrib
    priority low
    category "oa"
    dump nil
    description "Set up mode-specific icons for each frame under XEmacs"
-   filename "frame-icon-1.03-pkg.tar.gz"
-   md5sum "7c0b61a552a18cc4bdbb0e803d0d19e0"
-   size 33157
+   filename "frame-icon-1.04-pkg.tar.gz"
+   md5sum "60c726b43b7dc20fcdd585796697e497"
+   size 33753
    provides (forms forms-mode)
    requires ()
    type regular
 ))
 (hm--html-menus
   (standards-version 1.0
-   version "1.06"
+   version "1.07"
    author-version "5.9"
    date "1998-01-25"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "oa"
    dump nil
    description "HTML editing."
-   filename "hm--html-menus-1.06-pkg.tar.gz"
-   md5sum "b48b110b9461b9090aa9e2ddce1d594c"
-   size 146671
+   filename "hm--html-menus-1.07-pkg.tar.gz"
+   md5sum "d90b6994d7d0868800b76042a6080bc5"
+   size 173431
    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 tmpl-minor-mode)
    requires (xemacs-base)
    type regular
 ))
 (ispell
   (standards-version 1.0
-   version "1.09"
+   version "1.10"
    author-version "3.0x2"
    date "1998-09-06"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "oa"
    dump nil
    description "Spell-checking with GNU ispell."
-   filename "ispell-1.09-pkg.tar.gz"
-   md5sum "c88c87bfdc46e1842ed28fb2bf6073ae"
-   size 65057
+   filename "ispell-1.10-pkg.tar.gz"
+   md5sum "f3b4ea8328648fde2ef6837e42e0e656"
+   size 66285
    provides (ispell)
    requires ()
    type regular
 ))
 (pc
   (standards-version 1.0
-   version "1.11"
+   version "1.12"
    author-version "21.0"
    date "1998-07-25"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "oa"
    dump nil
    description "PC style interface emulation."
-   filename "pc-1.11-pkg.tar.gz"
-   md5sum "a2f74510636f8c57b43ed7b6b630d62c"
-   size 16203
+   filename "pc-1.12-pkg.tar.gz"
+   md5sum "7d0860e82e54ddbd3467980df674f447"
+   size 17497
    provides (delbs fusion pc-select pending-del s-region)
    requires (xemacs-base)
    type regular
 ))
 (psgml
   (standards-version 1.0
-   version "1.08"
+   version "1.09"
    author-version "1.01"
    date "1998-07-06"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "oa"
    dump nil
    description "Validated HTML/SGML editing."
-   filename "psgml-1.08-pkg.tar.gz"
-   md5sum "6f22d59f1bcef9d68634a5cfcca4fdd6"
-   size 419160
+   filename "psgml-1.09-pkg.tar.gz"
+   md5sum "86bc71c63fc2e278717b4d91debfa2eb"
+   size 427133
    provides (psgml sgml)
    requires (edit-utils)
    type regular
 ))
 (sgml
   (standards-version 1.0
-   version "1.01"
+   version "1.02"
    author-version "21.0"
    date "1998-01-25"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution contrib
    priority low
    category "oa"
    dump nil
    description "SGML/Linuxdoc-SGML editing."
-   filename "sgml-1.01-pkg.tar.gz"
-   md5sum "158c46147854c9c1d1dd0108c0f17a81"
-   size 26860
+   filename "sgml-1.02-pkg.tar.gz"
+   md5sum "8e959375437e34425058fe348a9f0143"
+   size 29523
    provides (sgml linuxdoc-sgml)
    requires (xemacs-base)
    type regular
 ))
 (slider
   (standards-version 1.0
-   version "1.06"
+   version "1.07"
    author-version "0.3x1"
    date "1998-08-13"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution experimental
    priority low
    category "oa"
    dump nil
    description "User interface tool."
-   filename "slider-1.06-pkg.tar.gz"
-   md5sum "ec05edd02b4e375c97abd3558eec6342"
-   size 11926
+   filename "slider-1.07-pkg.tar.gz"
+   md5sum "ebfea81a8d3d52550e76ae4efb5e5399"
+   size 12174
    provides (slider color-selector)
    requires ()
    type regular
 ))
 (speedbar
   (standards-version 1.0
-   version "1.05"
+   version "1.06"
    author-version "0.6.2"
    date "1998-02-07"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "oa"
    dump nil
    description "??? Document me."
-   filename "speedbar-1.05-pkg.tar.gz"
-   md5sum "2bf2e35e1cbe39ec6b22cd5ac31d047d"
-   size 95003
+   filename "speedbar-1.06-pkg.tar.gz"
+   md5sum "533b3c4dbfd82d44ed1243c3e285920a"
+   size 65542
    provides (speedbar)
    requires (xemacs-base)
    type regular
 ))
 (strokes
   (standards-version 1.0
-   version "1.01"
+   version "1.02"
    author-version "21.0"
    date "1998-01-25"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "oa"
    dump nil
    description "Mouse enhancement utility."
-   filename "strokes-1.01-pkg.tar.gz"
-   md5sum "2f032112561f32a7f5502aad4dab83fc"
-   size 43416
+   filename "strokes-1.02-pkg.tar.gz"
+   md5sum "016516c550b4369a40f666f3dda9afcb"
+   size 42765
    provides (strokes)
    requires (text-modes edit-utils mail-lib xemacs-base)
    type regular
 ))
 (text-modes
   (standards-version 1.0
-   version "1.09"
+   version "1.10"
    author-version "21.0"
    date "1998-08-29"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority high
    category "oa"
    dump nil
    description "Miscellaneous support for editing text files."
-   filename "text-modes-1.09-pkg.tar.gz"
-   md5sum "301f1707f7ab7812ba8173746f41a889"
-   size 191185
+   filename "text-modes-1.10-pkg.tar.gz"
+   md5sum "732ecc924eff930b5674453588c0bd2c"
+   size 204272
    provides (autoinsert crontab-edit filladapt fold-isearch folding image-mode iso-acc iso-ascii iso-cvt iso-insert iso-swed swedish tabify whitespace-mode winmgr-mode xpm-mode xrdb-mode)
    requires (ispell fsf-compat xemacs-base)
    type regular
 ))
 (time
   (standards-version 1.0
-   version "1.04"
+   version "1.05"
    author-version "1.17"
    date "1998-04-24"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "oa"
    dump nil
    description "Display time & date on the modeline."
-   filename "time-1.04-pkg.tar.gz"
-   md5sum "fa9be7b5661727e7b6ed4d6862ab9b47"
-   size 19903
+   filename "time-1.05-pkg.tar.gz"
+   md5sum "b6a082e80e20a4caceed5f30826a4b22"
+   size 19932
    provides (time)
    requires (xemacs-base)
    type regular
 ))
 (eterm
   (standards-version 1.0
-   version "1.05"
+   version "1.06"
    author-version "21.0"
    date "1998-06-28"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "os"
    dump nil
    description "Terminal emulation."
-   filename "eterm-1.05-pkg.tar.gz"
-   md5sum "3b74ba8c519754db3113090b2d1f575e"
-   size 144217
+   filename "eterm-1.06-pkg.tar.gz"
+   md5sum "086de2e838a20a30d67c4f4bb99171d2"
+   size 110620
    provides (eterm)
    requires (xemacs-base)
    type regular
 ))
 (igrep
   (standards-version 1.0
-   version "1.02"
+   version "1.03"
    author-version "2.83"
    date "1998-08-11"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "os"
    dump nil
    description "Enhanced front-end for Grep."
-   filename "igrep-1.02-pkg.tar.gz"
-   md5sum "bd8c8548174d927ca39e1ae0042fd023"
-   size 14872
+   filename "igrep-1.03-pkg.tar.gz"
+   md5sum "9a8946cef1c03e74d78382447bc345eb"
+   size 15263
    provides (igrep)
    requires (dired xemacs-base)
    type regular
 ))
 (ilisp
   (standards-version 1.0
-   version "1.04"
+   version "1.05"
    author-version "5.8"
    date "1998-01-24"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "os"
    dump nil
    description "Front-end for Inferior Lisp."
-   filename "ilisp-1.04-pkg.tar.gz"
-   md5sum "ea480efef35b846277117f1b8aaa9ca3"
-   size 223483
+   filename "ilisp-1.05-pkg.tar.gz"
+   md5sum "a21c63df2265048e3f0fd4e290ee732f"
+   size 272263
    provides (ilisp completer)
    requires (xemacs-base)
    type regular
 ))
 (os-utils
   (standards-version 1.0
-   version "1.09"
+   version "1.10"
    author-version "21.0"
    date "1998-07-14"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "os"
    dump nil
    description "Miscellaneous O/S utilities."
-   filename "os-utils-1.09-pkg.tar.gz"
-   md5sum "c169be0a718da981600bdd9f2a65c3d4"
-   size 229732
+   filename "os-utils-1.10-pkg.tar.gz"
+   md5sum "d2f6b6f8d3f2dcfb024a0e601d3e81cf"
+   size 224824
    provides (archive-mode background crypt crypt++ inf-lisp jka-compr lpr mchat ps-print tar-mode telnet terminal uncompress)
    requires (xemacs-base)
    type single
 ))
 (view-process
   (standards-version 1.0
-   version "1.03"
+   version "1.04"
    author-version "2.4"
    date "1998-01-24"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "os"
    dump nil
    description "A Unix process browsing tool."
-   filename "view-process-1.03-pkg.tar.gz"
-   md5sum "2e936c342f89c5ed33a6f63521a12ede"
-   size 59840
+   filename "view-process-1.04-pkg.tar.gz"
+   md5sum "3ad505fa09f8300c034e7c44ab211d15"
+   size 62718
    provides (view-process-mode)
    requires (xemacs-base)
    type regular
 ))
 (ada
   (standards-version 1.0
-   version "1.03"
+   version "1.04"
    author-version "2.27"
    date "1998-01-24"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "prog"
    dump nil
    description "Ada language support."
-   filename "ada-1.03-pkg.tar.gz"
-   md5sum "06126172fee3ae1f3fc8727ee2aff619"
-   size 54301
+   filename "ada-1.04-pkg.tar.gz"
+   md5sum "3eb8dc6d057fd9e3c2248f40df0c34f0"
+   size 55190
    provides (ada-mode ada-stmt)
    requires ()
    type regular
 ))
 (c-support
   (standards-version 1.0
-   version "1.07"
+   version "1.08"
    author-version "21.0"
    date "1998-03-25"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution contrib
    priority low
    category "prog"
    dump nil
    description "Basic single-file add-ons for editing C code."
-   filename "c-support-1.07-pkg.tar.gz"
-   md5sum "33226f4219167decefbd21da394633d1"
-   size 68611
+   filename "c-support-1.08-pkg.tar.gz"
+   md5sum "e03535f146371f8fa3ea440ecdb18f55"
+   size 73625
    provides (c-comment-edit cmacexp ctypes hideif hideshow)
    requires (cc-mode xemacs-base)
    type regular
 ))
 (cc-mode
   (standards-version 1.0
-   version "1.11"
+   version "1.12"
    author-version "5.22"
    date "1998-03-05"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "Barry Warsaw <cc-mode-help@python.org>"
    distribution stable
    priority medium
    category "prog"
    dump nil
    description "C, C++ and Java language support."
-   filename "cc-mode-1.11-pkg.tar.gz"
-   md5sum "94a219794c1f6e2c69d17974e27ab8f1"
-   size 151056
+   filename "cc-mode-1.12-pkg.tar.gz"
+   md5sum "47a0d9fe2c0753985fa65596b68b8db6"
+   size 191141
    provides (cc-mode)
    requires (xemacs-base)
    type regular
 ))
 (debug
   (standards-version 1.0
-   version "1.04"
+   version "1.05"
    author-version "21.0"
    date "1998-07-09"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution contrib
    priority low
    category "prog"
    dump nil
    description "GUD, gdb, dbx debugging support."
-   filename "debug-1.04-pkg.tar.gz"
-   md5sum "bbda895f68ad9fcbde78bac36659725a"
-   size 90258
+   filename "debug-1.05-pkg.tar.gz"
+   md5sum "bbb9783b4e81cd085adcf2e383cd4fe7"
+   size 91169
    provides (dbx gdb-highlight gdb gdbsrc gud history)
    requires (xemacs-base)
    type regular
 ))
 (ediff
   (standards-version 1.0
-   version "1.09"
+   version "1.10"
    author-version "2.70.2"
    date "1998-04-27"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "prog"
    dump nil
    description "Interface over GNU patch."
-   filename "ediff-1.09-pkg.tar.gz"
-   md5sum "85705826d993f26db27385c72be94a74"
-   size 243921
+   filename "ediff-1.10-pkg.tar.gz"
+   md5sum "a2b4d368c71a21e32660f061f1b52086"
+   size 274999
    provides (ediff)
    requires (pcl-cvs dired xemacs-base)
    type regular
 ))
 (emerge
   (standards-version 1.0
-   version "1.02"
+   version "1.03"
    author-version "21.0"
    date "1998-04-07"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "prog"
    dump nil
    description "Another interface over GNU patch."
-   filename "emerge-1.02-pkg.tar.gz"
-   md5sum "782cd4a2097abc3405107823513be775"
-   size 60938
+   filename "emerge-1.03-pkg.tar.gz"
+   md5sum "2ca964df916ec1f0b0a3f12a85e6741c"
+   size 60474
    provides (emerge)
    requires ()
    type regular
 ))
 (jde
   (standards-version 1.0
-   version "1.04"
+   version "1.05"
    author-version "2.05"
    date "1998-07-09"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "Andy Piper <andyp@parallax.co.uk>"
    distribution stable
    priority medium
    category "prog"
    dump nil
    description "Java language and development support."
-   filename "jde-1.04-pkg.tar.gz"
-   md5sum "4adccfa15e917411a935c0beafd9d11e"
-   size 126806
+   filename "jde-1.05-pkg.tar.gz"
+   md5sum "fa4444d0c5cbfef6d3f14e4ed04faef7"
+   size 129630
    provides (jde)
    requires (cc-mode debug speedbar edit-utils mail-lib xemacs-base)
    type regular
 ))
 (pcl-cvs
   (standards-version 1.0
-   version "1.11"
+   version "1.12"
    author-version "21.0"
    date "1998-06-18"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "prog"
    dump nil
    description "CVS frontend."
-   filename "pcl-cvs-1.11-pkg.tar.gz"
-   md5sum "25b7da145b740a96fe50b5e467848075"
-   size 141539
+   filename "pcl-cvs-1.12-pkg.tar.gz"
+   md5sum "f69a484d2d8c7c829793f0a12c89ec91"
+   size 159090
    provides (pcl-cvs dll elib-node generic-sc)
    requires (xemacs-base)
    type regular
 ))
 (prog-modes
   (standards-version 1.0
-   version "1.09"
+   version "1.10"
    author-version "21.0"
    date "1998-09-04"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "prog"
    dump nil
    description "Support for various programming languages."
-   filename "prog-modes-1.09-pkg.tar.gz"
-   md5sum "2b97d6c18ef8009dc3768319533929ff"
-   size 543482
+   filename "prog-modes-1.10-pkg.tar.gz"
+   md5sum "61e1d86aba5774f74a5611b1eb7cf62c"
+   size 548374
    provides (autoconf-mode cperl-mode eiffel3 f90 fortran ksh-mode m4-mode makefile perl-mode postscript python-mode rexx-mode simula-mode tcl teco verilog-mod)
    requires (mail-lib xemacs-base)
    type regular
 ))
 (scheme
   (standards-version 1.0
-   version "1.03"
+   version "1.04"
    author-version "21.0"
    date "1998-04-11"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "Karl M. Hegbloom <karlheg@bittersweet.inetarena.com>"
    distribution contrib
    priority low
    category "prog"
    dump nil
    description "Front-end support for Inferior Scheme."
-   filename "scheme-1.03-pkg.tar.gz"
-   md5sum "e51b93f4fdd80dad0b94dff8ff987498"
-   size 36733
+   filename "scheme-1.04-pkg.tar.gz"
+   md5sum "0815a048274697b7213604e02db0c2a9"
+   size 39734
    provides (scheme xscheme cmuscheme cmuscheme48)
    requires (xemacs-base)
    type regular
 ))
 (sh-script
   (standards-version 1.0
-   version "1.05"
+   version "1.06"
    author-version "2.0e"
    date "1998-05-12"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "prog"
    dump nil
    description "Support for editing shell scripts."
-   filename "sh-script-1.05-pkg.tar.gz"
-   md5sum "90eef7bab3cb665468ba9d74062978e6"
-   size 33744
+   filename "sh-script-1.06-pkg.tar.gz"
+   md5sum "b87b528df00464cbe1533ffdde81cd8e"
+   size 34485
    provides (sh-script executable)
    requires (xemacs-base)
    type regular
 ))
 (vc-cc
   (standards-version 1.0
-   version "1.07"
+   version "1.08"
    author-version "21.0"
    date "1998-07-24"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution contrib
    priority low
    category "prog"
    dump nil
    description "Version Control for ClearCase (UnFree) systems."
-   filename "vc-cc-1.07-pkg.tar.gz"
-   md5sum "16f5976691d32b054227d5b66f4a950b"
-   size 96411
+   filename "vc-cc-1.08-pkg.tar.gz"
+   md5sum "81e1ce88b7389e872d732441a5fdb29f"
+   size 97261
    provides (vc)
    requires (dired xemacs-base)
    type regular
 ))
 (vc
   (standards-version 1.0
-   version "1.11"
+   version "1.12"
    author-version "21.0"
    date "1998-08-05"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "prog"
    dump nil
    description "Version Control for Free systems."
-   filename "vc-1.11-pkg.tar.gz"
-   md5sum "c2d94277d9b072d3b5b237a75c9a1994"
-   size 83761
+   filename "vc-1.12-pkg.tar.gz"
+   md5sum "bf42fcd4d4dd78b5514e0d56e21082fc"
+   size 83630
    provides (vc)
    requires (dired xemacs-base)
    type regular
 ))
 (vhdl
   (standards-version 1.0
-   version "1.04"
+   version "1.05"
    author-version "2.74"
    date "1998-01-24"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "prog"
    dump nil
    description "Support for VHDL."
-   filename "vhdl-1.04-pkg.tar.gz"
-   md5sum "a06f7083d5cab8daba508b80e2a16ab3"
-   size 54125
+   filename "vhdl-1.05-pkg.tar.gz"
+   md5sum "486c16af86f0901d5c5385479b5c0e6a"
+   size 65812
    provides (vhdl-mode)
    requires ()
    type regular
 ))
 (auctex
   (standards-version 1.0
-   version "1.11"
+   version "1.12"
    author-version "9.7p"
    date "1998-08-05"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "wp"
    dump nil
    description "Basic TeX/LaTeX support."
-   filename "auctex-1.11-pkg.tar.gz"
-   md5sum "4c3d8be845bc6a383c0729fa7789d7e2"
-   size 306622
+   filename "auctex-1.12-pkg.tar.gz"
+   md5sum "a2826368828e89f0113401a38a49082b"
+   size 364768
    provides (auc-old bib-cite font-latex latex multi-prompt tex-buf tex-info tex-jp tex-site tex)
    requires (xemacs-base)
    type regular
 ))
 (crisp
   (standards-version 1.0
-   version "1.06"
+   version "1.07"
    author-version "1.34"
    date "1998-08-18"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "wp"
    dump nil
    description "Crisp/Brief emulation."
-   filename "crisp-1.06-pkg.tar.gz"
-   md5sum "dc2b9f31176f60bcf98d41996242702f"
-   size 9999
+   filename "crisp-1.07-pkg.tar.gz"
+   md5sum "1c8ef81e2dce5a0f0f2625dd66fcbcfb"
+   size 10273
    provides (crisp scroll-lock)
    requires ()
    type regular
 ))
 (edt
   (standards-version 1.0
-   version "1.04"
+   version "1.05"
    author-version "21.0"
    date "1998-04-07"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution contrib
    priority low
    category "wp"
    dump nil
    description "DEC EDIT/EDT emulation."
-   filename "edt-1.04-pkg.tar.gz"
-   md5sum "651a544d2abf8b23c7cbe44afbb53d39"
-   size 46058
+   filename "edt-1.05-pkg.tar.gz"
+   md5sum "c2d94f654e748bc3170d21f699faee5d"
+   size 48534
    provides (edt)
    requires (xemacs-base)
    type regular
 ))
 (reftex
   (standards-version 1.0
-   version "1.06"
+   version "1.07"
    author-version "3.38"
    date "1998-08-11"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "Carsten Dominik <dominik@strw.LeidenUniv.nl>"
    distribution stable
    priority medium
    category "wp"
    dump nil
    description "Emacs support for LaTeX cross-references, citations.."
-   filename "reftex-1.06-pkg.tar.gz"
-   md5sum "c263f50225a1d7a80c3d26ed6e2d08cf"
-   size 164779
+   filename "reftex-1.07-pkg.tar.gz"
+   md5sum "cb821b60e394f6a285d2a43617384c79"
+   size 200286
    provides (reftex)
    requires (fsf-compat xemacs-base)
    type regular
 ))
 (texinfo
   (standards-version 1.0
-   version "1.11"
+   version "1.12"
    author-version "21.0"
    date "1998-07-20"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority high
    category "wp"
    dump nil
    description "XEmacs TeXinfo support."
-   filename "texinfo-1.11-pkg.tar.gz"
-   md5sum "7894680802a24d001ca6e3ac300416a9"
-   size 127668
+   filename "texinfo-1.12-pkg.tar.gz"
+   md5sum "ec1ff24ddc7c2e3dd0c121717a6ea6c1"
+   size 134975
    provides (makeinfo tex-mode texinfmt texinfo texnfo-tex texnfo-upd)
    requires (xemacs-base)
    type regular
 ))
 (textools
   (standards-version 1.0
-   version "1.05"
+   version "1.06"
    author-version "21.0"
    date "1998-04-29"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stabl
    priority medium
    category "wp"
    dump nil
    description "Miscellaneous TeX support."
-   filename "textools-1.05-pkg.tar.gz"
-   md5sum "57265e315a4509bbc3e5999d3bc78156"
-   size 79104
+   filename "textools-1.06-pkg.tar.gz"
+   md5sum "6805183aa443242b45689ffe6e46855f"
+   size 83197
    provides (bib-mode bibtex refer-to-bibtex)
    requires (xemacs-base)
    type single
 ))
 (tpu
   (standards-version 1.0
-   version "1.05"
+   version "1.06"
    author-version "4.2X"
    date "1998-07-23"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "Kevin Oberman <oberman@es.net>"
    distribution normal
    priority medium
    category "wp"
    dump nil
    description "DEC EDIT/TPU support."
-   filename "tpu-1.05-pkg.tar.gz"
-   md5sum "bb740318aba612f0ee072c1698edafab"
-   size 57763
+   filename "tpu-1.06-pkg.tar.gz"
+   md5sum "cd777d6be222b85810927858d88fd642"
+   size 59897
    provides (tpu)
    requires ()
    type regular
 ))
 (viper
   (standards-version 1.0
-   version "1.08"
+   version "1.09"
    author-version "3.03"
    date "1998-02-25"
-   build-date "1998-09-08"
+   build-date "1998-09-19"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "wp"
    dump nil
    description "VI emulation support."
-   filename "viper-1.08-pkg.tar.gz"
-   md5sum "59311b886f33d92012f4bf0b91beba32"
-   size 261066
+   filename "viper-1.09-pkg.tar.gz"
+   md5sum "1636a0aece86e5713e8587eea92c81c8"
+   size 318061
    provides (viper)
    requires (xemacs-base)
    type regular
--- a/lisp/package-get-custom.el	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/package-get-custom.el	Mon Aug 13 10:45:36 2007 +0200
@@ -27,6 +27,12 @@
   :initialize 'package-get-ever-installed-p
   :type 'boolean)
 
+(defcustom irchat-package nil 
+  "ZENIRC IRC Client."
+  :group 'comm-packages
+  :initialize 'package-get-ever-installed-p
+  :type 'boolean)
+
 (defcustom mailcrypt-package nil 
   "Support for messaging encryption with PGP."
   :group 'comm-packages
@@ -51,6 +57,12 @@
   :initialize 'package-get-ever-installed-p
   :type 'boolean)
 
+(defcustom gnus-package nil 
+  "The Gnus Newsreader and Mailreader."
+  :group 'comm-packages
+  :initialize 'package-get-ever-installed-p
+  :type 'boolean)
+
 (defcustom rmail-package nil 
   "An obsolete Emacs mailer."
   :group 'comm-packages
@@ -81,6 +93,12 @@
   :initialize 'package-get-ever-installed-p
   :type 'boolean)
 
+(defcustom zenirc-package nil 
+  "ZENIRC IRC Client."
+  :group 'comm-packages
+  :initialize 'package-get-ever-installed-p
+  :type 'boolean)
+
 (defgroup games-packages nil
   "games package group"
   :group 'packages)
--- a/lisp/package-get.el	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/package-get.el	Mon Aug 13 10:45:36 2007 +0200
@@ -149,10 +149,7 @@
   "*Where to store temporary files for staging.")
 
 (defvar package-get-remote
-  '(
-    ("ftp.xemacs.org" "/pub/xemacs/beta/xemacs-21.0/packages/binary-packages")
-    ("ftp.xemacs.org" "/pub/xemacs/beta/xemacs-21.0/packages/single-file-packages")
-    ("ftp.xemacs.org" "/pub/xemacs/package"))
+  '(("ftp.xemacs.org" "/pub/xemacs/packages"))
   "*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
@@ -162,53 +159,6 @@
   "*After copying and installing a package, if this is T, then remove the
 copy.  Otherwise, keep it around.")
 
-(defun package-get-rmtree (directory)
-  "Delete a directory and all of its contents, recursively.
-This is a feeble attempt at making a portable rmdir."
-  (let ( (orig-default-directory default-directory) files dirs dir)
-    (unwind-protect
-	(progn
-	  (setq directory (file-name-as-directory directory))
-	  (setq files (directory-files directory nil nil nil t))
-	  (setq dirs (directory-files directory nil nil nil 'dirs))
-	  (while dirs
-	    (setq dir (car dirs))
-	    (if (file-symlink-p dir)	;; just in case, handle symlinks
-		(delete-file dir)
-	      (if (not (or (string-equal dir ".") (string-equal dir "..")))
-		  (package-get-rmtree (expand-file-name dir directory))))
-	    (setq dirs (cdr dirs))
-	    )
-	  (setq default-directory directory)
-	  (condition-case err
-	      (progn
-		(while files
-		  (delete-file (car files))
-		  (setq files (cdr files))
-		  )
-		(delete-directory directory)
-		)
-	    (file-error
-	     (message "%s: %s: \"%s\"" (nth 1 err) (nth 2 err) (nth 3 err)))
-	    )
-	  )
-      (progn
-	(setq default-directory orig-default-directory)
-	))
-    ))
-
-;;;###autoload
-(defun package-get-update-all ()
-  "Fetch and install the latest versions of all currently installed packages."
-  (interactive)
-  ;; Load a fresh copy
-  (catch 'exit
-    (mapcar (lambda (pkg)
-	      (if (not (package-get (car pkg) nil 'never))
-		  (throw 'exit nil)		;; Bail out if error detected
-		  ))
-	    packages-package-list)))
-
 (defun package-get-interactive-package-query (get-version package-symbol)
   "Perform interactive querying for package and optional version.
 Query for a version if GET-VERSION is non-nil.  Return package name as
@@ -245,6 +195,26 @@
       )))
 
 ;;;###autoload
+(defun package-get-delete-package (package &optional pkg-topdir)
+  "Delete an installation of PACKAGE below directory PKG-TOPDIR.
+PACKAGE is a symbol, not a string.
+This is just an interactive wrapper for `package-admin-delete-binary-package'."
+  (interactive (package-get-interactive-package-query nil t))
+  (package-admin-delete-binary-package package pkg-topdir))
+
+;;;###autoload
+(defun package-get-update-all ()
+  "Fetch and install the latest versions of all currently installed packages."
+  (interactive)
+  ;; Load a fresh copy
+  (catch 'exit
+    (mapcar (lambda (pkg)
+	      (if (not (package-get (car pkg) nil 'never))
+		  (throw 'exit nil)		;; Bail out if error detected
+		  ))
+	    packages-package-list)))
+
+;;;###autoload
 (defun package-get-all (package version &optional fetched-packages)
   "Fetch PACKAGE with VERSION and all other required packages.
 Uses `package-get-base' to determine just what is required and what
@@ -366,7 +336,7 @@
 	 (search-dirs package-get-remote)
 	 (base-filename (package-get-info-prop this-package 'filename))
 	 (package-status t)
-	 filenames full-package-filename package-lispdir)
+	 filenames full-package-filename)
     (if (null this-package)
 	(error "Couldn't find package %s with version %s"
 	       package version))
@@ -466,19 +436,7 @@
 						 'md5sum)))
 	    (error "Package %s does not match md5 checksum" base-filename)))
 
-      ;; Now delete old lisp directory, if any
-      ;;
-      ;; Gads, this is ugly.  However, we're not supposed to use `concat'
-      ;; in the name of portability.
-      (if (and (setq package-lispdir (expand-file-name "lisp" install-dir))
-	       (setq package-lispdir (expand-file-name (symbol-name package)
-						       package-lispdir))
-	       (file-accessible-directory-p package-lispdir))
-	  (progn
-	    (message "Removing old lisp directory \"%s\" ..." package-lispdir)
-	    (sit-for 0)
-	    (package-get-rmtree package-lispdir)
-	    ))
+      (package-admin-delete-binary-package package install-dir)
 
       (message "Installing package `%s' ..." package) (sit-for 0)
       (let ((status
@@ -489,7 +447,8 @@
 	      ;; clear messages so that only messages from
 	      ;; package-get-init-package are seen, below.
 	      (clear-message)
-	      (if (package-get-init-package package-lispdir)
+	      (if (package-get-init-package (package-admin-get-lispdir
+					     install-dir package))
 		  (progn
 		    (message "Added package `%s'" package)
 		    (sit-for 0)
@@ -581,9 +540,10 @@
   (if (not (file-exists-p package-get-dir))
       (make-directory package-get-dir))
   (expand-file-name
-   (file-name-nondirectory (or (nth 2 (efs-ftp-path filename)) filename))
+   (file-name-nondirectory (or (and (fboundp 'efs-ftp-path)
+				    (nth 2 (efs-ftp-path filename)))
+			       filename))
    (file-name-as-directory package-get-dir)))
-       
 
 (defun package-get-remote-filename (search filename)
   "Return FILENAME as a remote filename.
--- a/lisp/packages.el	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/packages.el	Mon Aug 13 10:45:36 2007 +0200
@@ -136,6 +136,18 @@
 		  version name (cdr pkg)))
 	  (t t))))
 
+(defun package-delete-name (name)
+  (let (pkg)
+    ;; Delete ALL versions of package.
+    ;; This is pretty memory-intensive, as we use copy-alist when deleting
+    ;; package entries, to prevent side-effects in functions that call this
+    ;; one.
+    (while (setq pkg (assq name packages-package-list))
+      (setq packages-package-list (delete pkg (copy-alist
+					       packages-package-list)))
+      )
+    ))
+
 ;;; Build time stuff
 
 (defvar autoload-file-name "auto-autoloads.el"
@@ -293,6 +305,23 @@
 ;; Data-directory is really a list now.  Provide something to search it for
 ;; directories.
 
+(defun locate-data-directory-list (name &optional dir-list)
+  "Locate the matching list of directories in a search path DIR-LIST.
+If no DIR-LIST is supplied, it defaults to `data-directory-list'."
+  (unless dir-list
+    (setq dir-list data-directory-list))
+  (let (found found-dir found-dir-list)
+    (while dir-list
+      (setq found (file-name-as-directory (concat (car dir-list) name))
+	    found-dir (file-directory-p found))
+      (and found-dir
+	   (setq found-dir-list (cons found found-dir-list)))
+      (setq dir-list (cdr dir-list)))
+    (nreverse found-dir-list)))
+
+;; Data-directory is really a list now.  Provide something to search it for
+;; a directory.
+
 (defun locate-data-directory (name &optional dir-list)
   "Locate a directory in a search path DIR-LIST (a list of directories).
 If no DIR-LIST is supplied, it defaults to `data-directory-list'."
@@ -330,7 +359,7 @@
      (and version-directory (list version-directory))
      (and site-directory (list site-directory)))))
 
-(defvar packages-special-base-regexp "^\\(etc\\|info\\|lisp\\|lib-src\\|bin\\)$"
+(defvar packages-special-base-regexp "^\\(etc\\|info\\|lisp\\|lib-src\\|bin\\|pkginfo\\|man\\)$"
   "Special subdirectories of packages.")
 
 (defvar packages-no-package-hierarchy-regexp
--- a/lisp/sound.el	Mon Aug 13 10:44:47 2007 +0200
+++ b/lisp/sound.el	Mon Aug 13 10:45:36 2007 +0200
@@ -113,7 +113,7 @@
   :group 'sound
   :type 'string)
 
-(defcustom default-sound-directory-list ( list default-sound-directory )
+(defcustom default-sound-directory-list (locate-data-directory-list "sounds")
 
   "List of directories which to search for sound files"
   :group 'sound
--- a/lwlib/xlwmenu.c	Mon Aug 13 10:44:47 2007 +0200
+++ b/lwlib/xlwmenu.c	Mon Aug 13 10:45:36 2007 +0200
@@ -444,6 +444,7 @@
   newstring = XmStringLtoRCreate (newchars, XmFONTLIST_DEFAULT_TAG);
   XmStringExtent (mw->menu.font_list, newstring, &width, &height);
   XmStringFree (newstring);
+  XtFree (chars);
   return width;
 #else
 # ifdef USE_XFONTSET
@@ -891,6 +892,9 @@
       }
   }
   x += string_draw_range (mw, window, x, y, gc, chars, s, i);
+#ifdef NEED_MOTIF
+  XtFree (chars);
+#endif
 }
 
 static void
@@ -2803,13 +2807,31 @@
   xgcv.fill_style = FillOpaqueStippled;
   xgcv.foreground = mw->menu.top_shadow_color;
   xgcv.background = mw->core.background_pixel;
+/*  xgcv.stipple = mw->menu.top_shadow_pixmap; gtb */
+#ifdef NEED_MOTIF
+  if (mw->menu.top_shadow_pixmap &&
+      mw->menu.top_shadow_pixmap != XmUNSPECIFIED_PIXMAP)
+     xgcv.stipple = mw->menu.top_shadow_pixmap;
+  else
+     xgcv.stipple = 0;
+#else
   xgcv.stipple = mw->menu.top_shadow_pixmap;
+#endif /* NEED_MOTIF */
   pm = (xgcv.stipple ? GCStipple|GCFillStyle : 0);
   mw->menu.shadow_top_gc =
     XtGetGC((Widget)mw, GCForeground|GCBackground|pm, &xgcv);
 
   xgcv.foreground = mw->menu.bottom_shadow_color;
+/*  xgcv.stipple = mw->menu.bottom_shadow_pixmap; gtb */
+#ifdef NEED_MOTIF
+  if (mw->menu.top_shadow_pixmap &&
+      mw->menu.top_shadow_pixmap != XmUNSPECIFIED_PIXMAP)
+     xgcv.stipple = mw->menu.bottom_shadow_pixmap;
+  else
+     xgcv.stipple = 0;
+#else
   xgcv.stipple = mw->menu.bottom_shadow_pixmap;
+#endif /* NEED_MOTIF */
   pm = (xgcv.stipple ? GCStipple|GCFillStyle : 0);
   mw->menu.shadow_bottom_gc =
     XtGetGC ((Widget)mw, GCForeground|GCBackground|pm, &xgcv);
--- a/lwlib/xlwscrollbar.c	Mon Aug 13 10:44:47 2007 +0200
+++ b/lwlib/xlwscrollbar.c	Mon Aug 13 10:45:36 2007 +0200
@@ -485,6 +485,12 @@
 }
 
 /*-------------------------- GC and Pixel allocation --------------------*/
+#ifdef NEED_MOTIF
+#ifndef XmUNSPECIFIED_PIXMAP
+#define XmUNSPECIFIED_PIXMAP 2
+#endif
+#endif /* NEED_MOTIF */
+
 static GC
 get_gc (XlwScrollBarWidget w, Pixel fg, Pixel bg, Pixmap pm)
 {
@@ -506,8 +512,19 @@
   values.background = bg;
   values.fill_style = FillOpaqueStippled;
   values.stipple    = pm;
+/*  mask = GCForeground | GCBackground |
+    (pm == None ? 0 : GCStipple | GCFillStyle); gtb */
+#ifdef NEED_MOTIF
+  if (pm != None && pm != 0 && pm != XmUNSPECIFIED_PIXMAP)
+     values.stipple = pm;
+  else
+     values.stipple = None;
+#else
+  values.stipple = pm;
+#endif /* NEED_MOTIF */
   mask = GCForeground | GCBackground |
-    (pm == None ? 0 : GCStipple | GCFillStyle);
+   (values.stipple == None ? 0 : GCStipple | GCFillStyle);
+
   return XtGetGC((Widget) w, mask, &values);
 }
 
--- a/man/ChangeLog	Mon Aug 13 10:44:47 2007 +0200
+++ b/man/ChangeLog	Mon Aug 13 10:45:36 2007 +0200
@@ -1,3 +1,16 @@
+1998-09-29  SL Baur  <steve@altair.xemacs.org>
+
+	* XEmacs 21.0-pre14 is released.
+
+1998-09-20  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* lispref/customize.texi: New file.
+
+1998-09-09  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* internals/internals.texi (Coding for Mule): New node and
+	section.
+
 1998-09-03  Darryl Okahata  <darrylo@sr.hp.com>
 
 	* xemacs/packages.texi: Document manually installing binary packages.
--- a/man/internals/internals.texi	Mon Aug 13 10:44:47 2007 +0200
+++ b/man/internals/internals.texi	Mon Aug 13 10:45:36 2007 +0200
@@ -598,6 +598,8 @@
 version 20.1 released September 17, 1997.
 @item
 version 20.2 released September 20, 1997.
+@item
+version 20.3 released August 19, 1998.
 @end itemize
 
 @node XEmacs
@@ -1654,6 +1656,7 @@
 * General Coding Rules::
 * Writing Lisp Primitives::
 * Adding Global Lisp Variables::
+* Coding for Mule::
 * Techniques for XEmacs Developers::
 @end menu
 
@@ -1754,7 +1757,7 @@
     @{
       val = Feval (XCAR (args));
       if (!NILP (val))
-	break;
+        break;
       args = XCDR (args);
     @}
 
@@ -2024,6 +2027,352 @@
 Lisp object, and you will be the one who's unhappy when you can't figure
 out how your variable got overwritten.
 
+@node Coding for Mule
+@section Coding for Mule
+@cindex Coding for Mule
+
+Although Mule support is not compiled by default in XEmacs, many people
+are using it, and we consider it crucial that new code works correctly
+with multibyte characters.  This is not hard; it is only a matter of
+following several simple user-interface guidelines.  Even if you never
+compile with Mule, with a little practice you will find it quite easy
+to code Mule-correctly.
+
+Note that these guidelines are not necessarily tied to the current Mule
+implementation; they are also a good idea to follow on the grounds of
+code generalization for future I18N work.
+
+@menu
+* Character-Related Data Types::
+* Working With Character and Byte Positions::
+* Conversion of External Data::
+* General Guidelines for Writing Mule-Aware Code::
+* An Example of Mule-Aware Code::
+@end menu
+
+@node Character-Related Data Types
+@subsection Character-Related Data Types
+
+First, we will list the basic character-related datatypes used by
+XEmacs.  Note that the separate @code{typedef}s are not required for the 
+code to work (all of them boil down to @code{unsigned char} or
+@code{int}), but they improve clarity of code a great deal, because one
+glance at the declaration can tell the intended use of the variable.
+
+@table @code
+@item Emchar
+@cindex Emchar
+An @code{Emchar} holds a single Emacs character.
+
+Obviously, the equality between characters and bytes is lost in the Mule
+world.  Characters can be represented by one or more bytes in the
+buffer, and @code{Emchar} is the C type large enough to hold any
+character.
+
+Without Mule support, an @code{Emchar} is equivalent to an
+@code{unsigned char}.
+
+@item Bufbyte
+@cindex Bufbyte
+The data representing the text in a buffer or string is logically a set
+of @code{Bufbyte}s.
+
+XEmacs does not work with character formats all the time; when reading
+characters from the outside, it decodes them to an internal format, and
+likewise encodes them when writing.  @code{Bufbyte} (in fact
+@code{unsigned char}) is the basic unit of XEmacs internal buffers and
+strings format.
+
+One character can correspond to one or more @code{Bufbyte}s.  In the
+current implementation, an ASCII character is represented by the same
+@code{Bufbyte}, and extended characters are represented by a sequence of
+@code{Bufbyte}s.
+
+Without Mule support, a @code{Bufbyte} is equivalent to an
+@code{Emchar}.
+
+@item Bufpos
+@itemx Charcount
+A @code{Bufpos} represents a character position in a buffer or string.
+A @code{Charcount} represents a number (count) of characters.
+Logically, subtracting two @code{Bufpos} values yields a
+@code{Charcount} value.  Although all of these are @code{typedef}ed to
+@code{int}, we use them in preference to @code{int} to make it clear
+what sort of position is being used.
+
+@code{Bufpos} and @code{Charcount} values are the only ones that are
+ever visible to Lisp.
+
+@item Bytind
+@itemx Bytecount
+A @code{Bytind} represents a byte position in a buffer or string.  A
+@code{Bytecount} represents the distance between two positions in bytes.
+The relationship between @code{Bytind} and @code{Bytecount} is the same
+as the relationship between @code{Bufpos} and @code{Charcount}.
+
+@item Extbyte
+@itemx Extcount
+When dealing with the outside world, XEmacs works with @code{Extbyte}s,
+which are equivalent to @code{unsigned char}.  Obviously, an
+@code{Extcount} is the distance between two @code{Extbyte}s.  Extbytes
+and Extcounts are not all that frequent in XEmacs code.
+@end table
+
+@node Working With Character and Byte Positions
+@subsection Working With Character and Byte Positions
+
+Now that we have defined the basic character-related types, we can look
+at the macros and functions designed for work with them and for
+conversion between them.  Most of these macros are defined in
+@file{buffer.h}, and we don't discuss all of them here, but only the
+most important ones.  Examining the existing code is the best way to
+learn about them.
+
+@table @code
+@item MAX_EMCHAR_LEN
+This preprocessor constant is the maximum number of buffer bytes per
+Emacs character, i.e. the byte length of an @code{Emchar}.  It is useful
+when allocating temporary strings to keep a known number of characters.
+For instance:
+
+@example
+@group
+@{
+  Charcount cclen;
+  ...
+  @{
+    /* Allocate place for @var{cclen} characters. */
+    Bufbyte *tmp_buf = (Bufbyte *)alloca (cclen * MAX_EMCHAR_LEN);
+...
+@end group
+@end example
+
+If you followed the previous section, you can guess that, logically,
+multiplying a @code{Charcount} value with @code{MAX_EMCHAR_LEN} produces 
+a @code{Bytecount} value.
+
+In the current Mule implementation, @code{MAX_EMCHAR_LEN} equals 4.
+Without Mule, it is 1.
+
+@item charptr_emchar
+@item set_charptr_emchar
+@code{charptr_emchar} macro takes a @code{Bufbyte} pointer and returns
+the underlying @code{Emchar}.  If it were a function, its prototype
+would be:
+
+@example
+Emchar charptr_emchar (Bufbyte *p);
+@end example
+
+@code{set_charptr_emchar} stores an @code{Emchar} to the specified byte
+position.  It returns the number of bytes stored:
+
+@example
+Bytecount set_charptr_emchar (Bufbyte *p, Emchar c);
+@end example
+
+It is important to note that @code{set_charptr_emchar} is safe only for
+appending a character at the end of a buffer, not for overwriting a
+character in the middle.  This is because the width of characters
+varies, and @code{set_charptr_emchar} cannot resize the string if it
+writes, say, a two-byte character where a single-byte character used to
+reside.
+
+A typical use of @code{set_charptr_emchar} can be demonstrated by this
+example, which copies characters from buffer @var{buf} to a temporary
+string of Bufbytes.
+
+@example
+@group
+@{
+  Bufpos pos;
+  for (pos = beg; pos < end; pos++)
+    @{
+      Emchar c = BUF_FETCH_CHAR (buf, pos);
+      p += set_charptr_emchar (buf, c);
+    @}
+@}
+@end group
+@end example
+
+Note how @code{set_charptr_emchar} is used to store the @code{Emchar}
+and increment the counter, at the same time.
+
+@item INC_CHARPTR
+@itemx DEC_CHARPTR
+These two macros increment and decrement a @code{Bufbyte} pointer,
+respectively.  The pointer needs to be correctly positioned at the
+beginning of a valid character position.
+
+Without Mule support, @code{INC_CHARPTR (p)} and @code{DEC_CHARPTR (p)}
+simply expand to @code{p++} and @code{p--}, respectively.
+
+@item bytecount_to_charcount
+Given a pointer to a text string and a length in bytes, return the
+equivalent length in characters.
+
+@example
+Charcount bytecount_to_charcount (Bufbyte *p, Bytecount bc);
+@end example
+
+@item charcount_to_bytecount
+Given a pointer to a text string and a length in characters, return the
+equivalent length in bytes.
+
+@example
+Bytecount charcount_to_bytecount (Bufbyte *p, Charcount cc);
+@end example
+
+@item charptr_n_addr
+Return a pointer to the beginning of the character offset @var{cc} (in
+characters) from @var{p}.
+
+@example
+Bufbyte *charptr_n_addr (Bufbyte *p, Charcount cc);
+@end example
+@end table
+
+@node Conversion of External Data
+@subsection Conversion of External Data
+
+When an external function, such as a C library function, returns a
+@code{char} pointer, you should never treat it as @code{Bufbyte}.  This
+is because these returned strings may contain 8bit characters which can
+be misinterpreted by XEmacs, and cause a crash.  Instead, you should use
+a conversion macro.  Many different conversion macros are defined in
+@file{buffer.h}, so I will try to order them logically, by direction and
+by format.
+
+Thus the basic conversion macros are @code{GET_CHARPTR_INT_DATA_ALLOCA}
+and @code{GET_CHARPTR_EXT_DATA_ALLOCA}.  The former is used to convert
+external data to internal format, and the latter is used to convert the
+other way around.  The arguments each of these receives are @var{ptr}
+(pointer to the text in external format), @var{len} (length of texts in
+bytes), @var{fmt} (format of the external text), @var{ptr_out} (lvalue
+to which new text should be copied), and @var{len_out} (lvalue which
+will be assigned the length of the internal text in bytes).  The
+resulting text is stored to a stack-allocated buffer.  If the text
+doesn't need changing, these macros will do nothing, except for setting
+@var{len_out}.
+
+Currently meaningful formats are @code{FORMAT_BINARY},
+@code{FORMAT_FILENAME}, @code{FORMAT_OS}, and @code{FORMAT_CTEXT}.
+
+The two macros above take many arguments which makes them unwieldy.  For
+this reason, several convenience macros are defined with obvious
+functionality, but accepting less arguments:
+
+@table @code
+@item GET_C_CHARPTR_EXT_DATA_ALLOCA
+@itemx GET_C_CHARPTR_INT_DATA_ALLOCA
+These two macros work on ``C char pointers'', which are zero-terminated, 
+and thus do not need @var{len} or @var{len_out} parameters.
+
+@item GET_STRING_EXT_DATA_ALLOCA
+@itemx GET_C_STRING_EXT_DATA_ALLOCA
+These two macros work on Lisp strings, thus also not needing a @var{len}
+parameter.  However, @code{GET_STRING_EXT_DATA_ALLOCA} still provides a
+@var{len_out} parameter.  Note that for Lisp strings only one conversion
+direction makes sense.
+
+@item GET_C_CHARPTR_EXT_BINARY_DATA_ALLOCA
+@itemx GET_C_CHARPTR_EXT_FILENAME_DATA_ALLOCA
+@itemx GET_C_CHARPTR_EXT_CTEXT_DATA_ALLOCA
+@itemx ...
+These macros are a combination of the above, but with the @var{fmt}
+argument encoded into the name of the macro.
+@end table
+
+@node General Guidelines for Writing Mule-Aware Code
+@subsection General Guidelines for Writing Mule-Aware Code
+
+This section contains some general guidance on how to write Mule-aware
+code, as well as some pitfalls you should avoid.
+
+@table @emph
+@item Never use @code{char} and @code{char *}.
+In XEmacs, the use of @code{char} and @code{char *} is almost always a
+mistake.  If you want to manipulate an Emacs character from ``C'', use
+@code{Emchar}.  If you want to examine a specific octet in the internal
+format, use @code{Bufbyte}.  If you want a Lisp-visible character, use a
+@code{Lisp_Object} and @code{make_char}.  If you want a pointer to move
+through the internal text, use @code{Bufbyte *}.  Also note that you
+almost certainly do not need @code{Emchar *}.
+
+@item Be careful not to confuse @code{Charcount}, @code{Bytecount}, and @code{Bufpos}.
+The whole point of using different types is to avoid confusion about the 
+use of certain variables.  Lest this effect be nullified, you need to be 
+careful about using the right types.
+
+@item Always convert external data
+It is extremely important to always convert external data, because
+XEmacs can crash if unexpected 8bit sequences are copied to its internal 
+buffers literally.
+
+This means that when a system function, such as @code{readdir}, returns
+a string, you need to convert it using one of the conversion macros
+described in the previous chapter, before passing it further to Lisp.
+In the case of @code{readdir}, you would use the
+@code{GET_C_CHARPTR_INT_FILENAME_DATA_ALLOCA} macro.
+
+Also note that many internal functions, such as @code{make_string},
+accept Bufbytes, which removes the need for them to convert the data
+they receive.  This increases efficiency because that way external data
+needs to be decoded only once, when it is read.  After that, it is
+passed around in internal format.
+@end table
+
+@node An Example of Mule-Aware Code
+@subsection An Example of Mule-Aware Code
+
+As an example of Mule-aware code, we shall will analyze the
+@code{string} function, which conses up a Lisp string from the character
+arguments it receives.  Here is the definition, pasted from
+@code{alloc.c}:
+
+@example
+@group
+DEFUN ("string", Fstring, 0, MANY, 0, /*
+Concatenate all the argument characters and make the result a string.
+*/
+       (int nargs, Lisp_Object *args))
+@{
+  Bufbyte *storage = alloca_array (Bufbyte, nargs * MAX_EMCHAR_LEN);
+  Bufbyte *p = storage;
+
+  for (; nargs; nargs--, args++)
+    @{
+      Lisp_Object lisp_char = *args;
+      CHECK_CHAR_COERCE_INT (lisp_char);
+      p += set_charptr_emchar (p, XCHAR (lisp_char));
+    @}
+  return make_string (storage, p - storage);
+@}
+@end group
+@end example
+
+Now we can analyze the source line by line.
+
+Obviously, string will be as long as there are arguments to the
+function.  This is why we allocate @code{MAX_EMCHAR_LEN} * @var{nargs}
+bytes on the stack, i.e. the worst-case number of bytes for @var{nargs}
+@code{Emchar}s to fit in the string.
+
+Then, the loop checks that each element is a character, converting
+integers in the process.  Like many other functions in XEmacs, this
+function silently accepts integers where characters are expected, for
+historical and compatibility reasons.  Unless you know what you are
+doing, @code{CHECK_CHAR} will also suffice.  @code{XCHAR (lisp_char)}
+extracts the @code{Emchar} from the @code{Lisp_Object}, and
+@code{set_charptr_emchar} stores it to storage, increasing @code{p} in
+the process.
+
+Other instructing examples of correct coding under Mule can be found all
+over XEmacs code.  For starters, I recommend
+@code{Fnormalize_menu_item_name} in @file{menubar.c}.  After you have
+understood this section of the manual and studied the examples, you can
+proceed writing new Mule-aware code.
+
 @node Techniques for XEmacs Developers
 @section Techniques for XEmacs Developers
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/man/lispref/customize.texi	Mon Aug 13 10:45:36 2007 +0200
@@ -0,0 +1,750 @@
+@c -*-texinfo-*-
+@c This is part of the XEmacs Lisp Reference Manual.
+@c Copyright (C) 1997, 1998 Free Software Foundation, Inc. 
+@c See the file lispref.texi for copying conditions.
+@setfilename ../info/customize
+@node Customization, , , Top
+@chapter Writing Customization Definitions
+
+  This chapter describes how to declare user options for customization,
+and also customization groups for classifying them.  We use the term
+@dfn{customization item} to include both kinds of customization
+definitions---as well as face definitions.
+
+@menu
+* Common Keywords::
+* Group Definitions::            
+* Variable Definitions::         
+* Customization Types::
+@end menu
+
+@node Common Keywords
+@section Common Keywords for All Kinds of Items
+
+  All kinds of customization declarations (for variables and groups, and
+for faces) accept keyword arguments for specifying various information.
+This section describes some keywords that apply to all kinds.
+
+  All of these keywords, except @code{:tag}, can be used more than once
+in a given item.  Each use of the keyword has an independent effect.
+The keyword @code{:tag} is an exception because any given item can only
+display one name.
+
+@table @code
+@item :tag @var{name}
+Use @var{name}, a string, instead of the item's name, to label the item
+in customization menus and buffers.
+
+@item :group @var{group}
+Put this customization item in group @var{group}.  When you use
+@code{:group} in a @code{defgroup}, it makes the new group a subgroup of
+@var{group}.
+
+If you use this keyword more than once, you can put a single item into
+more than one group.  Displaying any of those groups will show this
+item.  Be careful not to overdo this!
+
+@item :link @var{link-data}
+Include an external link after the documentation string for this item.
+This is a sentence containing an active field which references some
+other documentation.
+
+There are three alternatives you can use for @var{link-data}:
+
+@table @code
+@item (custom-manual @var{info-node})
+Link to an Info node; @var{info-node} is a string which specifies the
+node name, as in @code{"(emacs)Top"}.  The link appears as
+@samp{[manual]} in the customization buffer.
+
+@item (info-link @var{info-node})
+Like @code{custom-manual} except that the link appears
+in the customization buffer with the Info node name.
+
+@item (url-link @var{url})
+Link to a web page; @var{url} is a string which specifies the @sc{url}.
+The link appears in the customization buffer as @var{url}.
+@end table
+
+You can specify the text to use in the customization buffer by adding
+@code{:tag @var{name}} after the first element of the @var{link-data};
+for example, @code{(info-link :tag "foo" "(emacs)Top")} makes a link to
+the Emacs manual which appears in the buffer as @samp{foo}.
+
+An item can have more than one external link; however, most items have
+none at all.
+
+@item :load @var{file}
+Load file @var{file} (a string) before displaying this customization
+item.  Loading is done with @code{load-library}, and only if the file is
+not already loaded.
+
+@item :require @var{feature}
+Require feature @var{feature} (a symbol) when installing a value for
+this item (an option or a face) that was saved using the customization
+feature.  This is done by calling @code{require}.
+
+The most common reason to use @code{:require} is when a variable enables
+a feature such as a minor mode, and just setting the variable won't have
+any effect unless the code which implements the mode is loaded.
+@end table
+
+@node Group Definitions
+@section Defining Custom Groups
+
+  Each Emacs Lisp package should have one main customization group which
+contains all the options, faces and other groups in the package.  If the
+package has a small number of options and faces, use just one group and
+put everything in it.  When there are more than twelve or so options and
+faces, then you should structure them into subgroups, and put the
+subgroups under the package's main customization group.  It is OK to
+put some of the options and faces in the package's main group alongside
+the subgroups.
+
+  The package's main or only group should be a member of one or more of
+the standard customization groups.  (To display the full list of them,
+use @kbd{M-x customize}.)  Choose one or more of them (but not too
+many), and add your group to each of them using the @code{:group}
+keyword.
+
+  The way to declare new customization groups is with @code{defgroup}.
+
+@tindex defgroup
+@defmac defgroup group members doc [keyword value]...
+Declare @var{group} as a customization group containing @var{members}.
+Do not quote the symbol @var{group}.  The argument @var{doc} specifies
+the documentation string for the group.
+
+The argument @var{members} is a list specifying an initial set of
+customization items to be members of the group.  However, most often
+@var{members} is @code{nil}, and you specify the group's members by
+using the @code{:group} keyword when defining those members.
+
+If you want to specify group members through @var{members}, each element
+should have the form @code{(@var{name} @var{widget})}.  Here @var{name}
+is a symbol, and @var{widget} is a widget type for editing that symbol.
+Useful widgets are @code{custom-variable} for a variable,
+@code{custom-face} for a face, and @code{custom-group} for a group.
+
+In addition to the common keywords (@pxref{Common Keywords}), you can
+use this keyword in @code{defgroup}:
+
+@table @code
+@item :prefix @var{prefix}
+If the name of an item in the group starts with @var{prefix}, then the
+tag for that item is constructed (by default) by omitting @var{prefix}.
+
+One group can have any number of prefixes.
+@end table
+@end defmac
+
+@c Doesn't apply to XEmacs
+@c
+@c   The prefix-discarding feature is currently turned off, which means
+@c that @code{:prefix} currently has no effect.  We did this because we
+@c found that discarding the specified prefixes often led to confusing
+@c names for options.  This happened because the people who wrote the
+@c @code{defgroup} definitions for various groups added @code{:prefix}
+@c keywords whenever they make logical sense---that is, whenever the
+@c variables in the library have a common prefix.
+
+@c   In order to obtain good results with @code{:prefix}, it would be
+@c necessary to check the specific effects of discarding a particular
+@c prefix, given the specific items in a group and their names and
+@c documentation.  If the resulting text is not clear, then @code{:prefix}
+@c should not be used in that case.
+
+@c   It should be possible to recheck all the customization groups, delete
+@c the @code{:prefix} specifications which give unclear results, and then
+@c turn this feature back on, if someone would like to do the work.
+
+@node Variable Definitions
+@section Defining Customization Variables
+
+  Use @code{defcustom} to declare user-editable variables.
+
+@tindex defcustom
+@defmac defcustom option default doc [keyword value]...
+Declare @var{option} as a customizable user option variable.  Do not
+quote @var{option}.  The argument @var{doc} specifies the documentation
+string for the variable.
+
+If @var{option} is void, @code{defcustom} initializes it to
+@var{default}.  @var{default} should be an expression to compute the
+value; be careful in writing it, because it can be evaluated on more
+than one occasion.
+
+The following additional keywords are defined:
+
+@table @code
+@item :type @var{type}
+Use @var{type} as the data type for this option.  It specifies which
+values are legitimate, and how to display the value.
+@xref{Customization Types}, for more information.
+
+@item :options @var{list}
+Specify @var{list} as the list of reasonable values for use in this
+option.
+
+Currently this is meaningful only when the type is @code{hook}.  In that
+case, the elements of @var{list} should be functions that are useful as
+elements of the hook value.  The user is not restricted to using only
+these functions, but they are offered as convenient alternatives.
+
+@item :version @var{version}
+This option specifies that the variable was first introduced, or its
+default value was changed, in Emacs version @var{version}.  The value
+@var{version} must be a string.  For example,
+
+@example
+(defcustom foo-max 34
+  "*Maximum number of foo's allowed."
+  :type 'integer
+  :group 'foo
+  :version "20.3")
+@end example
+
+@item :set @var{setfunction}
+Specify @var{setfunction} as the way to change the value of this option.
+The function @var{setfunction} should take two arguments, a symbol and
+the new value, and should do whatever is necessary to update the value
+properly for this option (which may not mean simply setting the option
+as a Lisp variable).  The default for @var{setfunction} is
+@code{set-default}.
+
+@item :get @var{getfunction}
+Specify @var{getfunction} as the way to extract the value of this
+option.  The function @var{getfunction} should take one argument, a
+symbol, and should return the ``current value'' for that symbol (which
+need not be the symbol's Lisp value).  The default is
+@code{default-value}.
+
+@item :initialize @var{function}
+@var{function} should be a function used to initialize the variable when
+the @code{defcustom} is evaluated.  It should take two arguments, the
+symbol and value.  Here are some predefined functions meant for use in
+this way:
+
+@table @code
+@item custom-initialize-set
+Use the variable's @code{:set} function to initialize the variable, but
+do not reinitialize it if it is already non-void.  This is the default
+@code{:initialize} function.
+
+@item custom-initialize-default
+Like @code{custom-initialize-set}, but use the function
+@code{set-default} to set the variable, instead of the variable's
+@code{:set} function.  This is the usual choice for a variable whose
+@code{:set} function enables or disables a minor mode; with this choice,
+defining the variable will not call the minor mode function, but
+customizing the variable will do so.
+
+@item custom-initialize-reset
+Always use the @code{:set} function to initialize the variable.  If the
+variable is already non-void, reset it by calling the @code{:set}
+function using the current value (returned by the @code{:get} method).
+
+@item custom-initialize-changed
+Use the @code{:set} function to initialize the variable, if it is
+already set or has been customized; otherwise, just use
+@code{set-default}.
+@end table
+@end table
+@end defmac
+
+  The @code{:require} option is useful for an option that turns on the
+operation of a certain feature.  Assuming that the package is coded to
+check the value of the option, you still need to arrange for the package
+to be loaded.  You can do that with @code{:require}.  @xref{Common
+Keywords}.  Here is an example, from the library @file{paren.el}:
+
+@example
+(defcustom show-paren-mode nil
+  "Toggle Show Paren mode@enddots{}"
+  :set (lambda (symbol value)
+	 (show-paren-mode (or value 0)))
+  :initialize 'custom-initialize-default
+  :type 'boolean
+  :group 'paren-showing
+  :require 'paren)
+@end example
+
+@ignore
+Use @code{custom-add-option} to specify that a specific function is
+useful as an member of a hook.
+
+@defun custom-add-option symbol option
+To the variable @var{symbol} add @var{option}.
+
+If @var{symbol} is a hook variable, @var{option} should be a hook
+member.  For other types variables, the effect is undefined."
+@end defun
+@end ignore
+
+Internally, @code{defcustom} uses the symbol property
+@code{standard-value} to record the expression for the default value,
+and @code{saved-value} to record the value saved by the user with the
+customization buffer.  The @code{saved-value} property is actually a
+list whose car is an expression which evaluates to the value.
+
+@node Customization Types
+@section Customization Types
+
+  When you define a user option with @code{defcustom}, you must specify
+its @dfn{customization type}.  That is a Lisp object which describes (1)
+which values are legitimate and (2) how to display the value in the
+customization buffer for editing.
+
+  You specify the customization type in @code{defcustom} with the
+@code{:type} keyword.  The argument of @code{:type} is evaluated; since
+types that vary at run time are rarely useful, normally you use a quoted
+constant.  For example:
+
+@example
+(defcustom diff-command "diff"
+  "*The command to use to run diff."
+  :type '(string)
+  :group 'diff)
+@end example
+
+  In general, a customization type is a list whose first element is a
+symbol, one of the customization type names defined in the following
+sections.  After this symbol come a number of arguments, depending on
+the symbol.  Between the type symbol and its arguments, you can
+optionally write keyword-value pairs (@pxref{Type Keywords}).
+
+  Some of the type symbols do not use any arguments; those are called
+@dfn{simple types}.  For a simple type, if you do not use any
+keyword-value pairs, you can omit the parentheses around the type
+symbol.  For example just @code{string} as a customization type is
+equivalent to @code{(string)}.
+
+@menu
+* Simple Types::
+* Composite Types::
+* Splicing into Lists::
+* Type Keywords::
+@end menu
+
+@node Simple Types
+@subsection Simple Types
+
+  This section describes all the simple customization types.
+
+@table @code
+@item sexp
+The value may be any Lisp object that can be printed and read back.  You
+can use @code{sexp} as a fall-back for any option, if you don't want to
+take the time to work out a more specific type to use.
+
+@item integer
+The value must be an integer, and is represented textually
+in the customization buffer.
+
+@item number
+The value must be a number, and is represented textually in the
+customization buffer.
+
+@item string
+The value must be a string, and the customization buffer shows just the
+contents, with no delimiting @samp{"} characters and no quoting with
+@samp{\}.
+
+@item regexp
+Like @code{string} except that the string must be a valid regular
+expression.
+
+@item character
+The value must be a character code.  A character code is actually an
+integer, but this type shows the value by inserting the character in the
+buffer, rather than by showing the number.
+
+@item file
+The value must be a file name, and you can do completion with
+@kbd{M-@key{TAB}}.
+
+@item (file :must-match t)
+The value must be a file name for an existing file, and you can do
+completion with @kbd{M-@key{TAB}}.
+
+@item directory
+The value must be a directory name, and you can do completion with
+@kbd{M-@key{TAB}}.
+
+@item symbol
+The value must be a symbol.  It appears in the customization buffer as
+the name of the symbol.
+
+@item function
+The value must be either a lambda expression or a function name.  When
+it is a function name, you can do completion with @kbd{M-@key{TAB}}.
+
+@item variable
+The value must be a variable name, and you can do completion with
+@kbd{M-@key{TAB}}.
+
+@item face
+The value must be a symbol which is a face name.
+
+@item boolean
+The value is boolean---either @code{nil} or @code{t}.  Note that by
+using @code{choice} and @code{const} together (see the next section),
+you can specify that the value must be @code{nil} or @code{t}, but also
+specify the text to describe each value in a way that fits the specific
+meaning of the alternative.
+@end table
+
+@node Composite Types
+@subsection Composite Types
+
+  When none of the simple types is appropriate, you can use composite
+types, which build new types from other types.  Here are several ways of
+doing that:
+
+@table @code
+@item (restricted-sexp :match-alternatives @var{criteria})
+The value may be any Lisp object that satisfies one of @var{criteria}.
+@var{criteria} should be a list, and each elements should be
+one of these possibilities:
+
+@itemize @bullet
+@item
+A predicate---that is, a function of one argument that returns non-@code{nil}
+if the argument fits a certain type.  This means that objects of that type
+are acceptable.
+
+@item
+A quoted constant---that is, @code{'@var{object}}.  This means that
+@var{object} itself is an acceptable value.
+@end itemize
+
+For example,
+
+@example
+(restricted-sexp :match-alternatives (integerp 't 'nil))
+@end example
+
+@noindent
+allows integers, @code{t} and @code{nil} as legitimate values.
+
+The customization buffer shows all legitimate values using their read
+syntax, and the user edits them textually.
+
+@item (cons @var{car-type} @var{cdr-type})
+The value must be a cons cell, its @sc{car} must fit @var{car-type}, and
+its @sc{cdr} must fit @var{cdr-type}.  For example, @code{(cons string
+symbol)} is a customization type which matches values such as
+@code{("foo" . foo)}.
+
+In the customization buffer, the @sc{car} and the @sc{cdr} are
+displayed and edited separately, each according to the type
+that you specify for it.
+
+@item (list @var{element-types}@dots{})
+The value must be a list with exactly as many elements as the
+@var{element-types} you have specified; and each element must fit the
+corresponding @var{element-type}.
+
+For example, @code{(list integer string function)} describes a list of
+three elements; the first element must be an integer, the second a
+string, and the third a function.
+
+In the customization buffer, the each element is displayed and edited
+separately, according to the type specified for it.
+
+@item (vector @var{element-types}@dots{})
+Like @code{list} except that the value must be a vector instead of a
+list.  The elements work the same as in @code{list}.
+
+@item (choice @var{alternative-types}...)
+The value must fit at least one of @var{alternative-types}.
+For example, @code{(choice integer string)} allows either an
+integer or a string.
+
+In the customization buffer, the user selects one of the alternatives
+using a menu, and can then edit the value in the usual way for that
+alternative.
+
+Normally the strings in this menu are determined automatically from the
+choices; however, you can specify different strings for the menu by
+including the @code{:tag} keyword in the alternatives.  For example, if
+an integer stands for a number of spaces, while a string is text to use
+verbatim, you might write the customization type this way,
+
+@smallexample
+(choice (integer :tag "Number of spaces")
+        (string :tag "Literal text"))
+@end smallexample
+
+@noindent
+so that the menu offers @samp{Number of spaces} and @samp{Literal Text}.
+
+In any alternative for which @code{nil} is not a valid value, other than
+a @code{const}, you should specify a valid default for that alternative
+using the @code{:value} keyword.  @xref{Type Keywords}.
+
+@item (const @var{value})
+The value must be @var{value}---nothing else is allowed.
+
+The main use of @code{const} is inside of @code{choice}.  For example,
+@code{(choice integer (const nil))} allows either an integer or
+@code{nil}.
+
+@code{:tag} is often used with @code{const}, inside of @code{choice}.
+For example,
+
+@smallexample
+(choice (const :tag "Yes" t)
+        (const :tag "No" nil)
+        (const :tag "Ask" foo))
+@end smallexample
+
+@item (function-item @var{function})
+Like @code{const}, but used for values which are functions.  This
+displays the documentation string as well as the function name.
+The documentation string is either the one you specify with
+@code{:doc}, or @var{function}'s own documentation string.
+
+@item (variable-item @var{variable})
+Like @code{const}, but used for values which are variable names.  This
+displays the documentation string as well as the variable name.  The
+documentation string is either the one you specify with @code{:doc}, or
+@var{variable}'s own documentation string.
+
+@item (set @var{elements}@dots{})
+The value must be a list and each element of the list must be one of the
+@var{elements} specified.  This appears in the customization buffer as a
+checklist.
+
+@item (repeat @var{element-type})
+The value must be a list and each element of the list must fit the type
+@var{element-type}.  This appears in the customization buffer as a
+list of elements, with @samp{[INS]} and @samp{[DEL]} buttons for adding
+more elements or removing elements.
+@end table
+
+@node Splicing into Lists
+@subsection Splicing into Lists
+
+  The @code{:inline} feature lets you splice a variable number of
+elements into the middle of a list or vector.  You use it in a
+@code{set}, @code{choice} or @code{repeat} type which appears among the
+element-types of a @code{list} or @code{vector}.
+
+  Normally, each of the element-types in a @code{list} or @code{vector}
+describes one and only one element of the list or vector.  Thus, if an
+element-type is a @code{repeat}, that specifies a list of unspecified
+length which appears as one element.
+
+  But when the element-type uses @code{:inline}, the value it matches is
+merged directly into the containing sequence.  For example, if it
+matches a list with three elements, those become three elements of the
+overall sequence.  This is analogous to using @samp{,@@} in the backquote
+construct.
+
+  For example, to specify a list whose first element must be @code{t}
+and whose remaining arguments should be zero or more of @code{foo} and
+@code{bar}, use this customization type:
+
+@example
+(list (const t) (set :inline t foo bar))
+@end example
+
+@noindent
+This matches values such as @code{(t)}, @code{(t foo)}, @code{(t bar)}
+and @code{(t foo bar)}.
+
+  When the element-type is a @code{choice}, you use @code{:inline} not
+in the @code{choice} itself, but in (some of) the alternatives of the
+@code{choice}.  For example, to match a list which must start with a
+file name, followed either by the symbol @code{t} or two strings, use
+this customization type:
+
+@example
+(list file
+      (choice (const t)
+              (list :inline t string string)))
+@end example
+
+@noindent
+If the user chooses the first alternative in the choice, then the
+overall list has two elements and the second element is @code{t}.  If
+the user chooses the second alternative, then the overall list has three
+elements and the second and third must be strings.
+
+@node Type Keywords
+@subsection Type Keywords
+
+You can specify keyword-argument pairs in a customization type after the
+type name symbol.  Here are the keywords you can use, and their
+meanings:
+
+@table @code
+@item :value @var{default}
+This is used for a type that appears as an alternative inside of
+@code{choice}; it specifies the default value to use, at first, if and
+when the user selects this alternative with the menu in the
+customization buffer.
+
+Of course, if the actual value of the option fits this alternative, it
+will appear showing the actual value, not @var{default}.
+
+If @code{nil} is not a valid value for the alternative, then it is
+essential to specify a valid default with @code{:value}.
+
+@item :format @var{format-string}
+This string will be inserted in the buffer to represent the value
+corresponding to the type.  The following @samp{%} escapes are available
+for use in @var{format-string}:
+
+@table @samp
+@item %[@var{button}%]
+Display the text @var{button} marked as a button.  The @code{:action}
+attribute specifies what the button will do if the user invokes it;
+its value is a function which takes two arguments---the widget which
+the button appears in, and the event.
+
+There is no way to specify two different buttons with different
+actions.
+
+@item %@{@var{sample}%@}
+Show @var{sample} in a special face specified by @code{:sample-face}.
+
+@item %v
+Substitute the item's value.  How the value is represented depends on
+the kind of item, and (for variables) on the customization type.
+
+@item %d
+Substitute the item's documentation string.
+
+@item %h
+Like @samp{%d}, but if the documentation string is more than one line,
+add an active field to control whether to show all of it or just the
+first line.
+
+@item %t
+Substitute the tag here.  You specify the tag with the @code{:tag}
+keyword.
+
+@item %%
+Display a literal @samp{%}. 
+@end table
+
+@item :action @var{action}
+Perform @var{action} if the user clicks on a button.
+
+@item :button-face @var{face}
+Use the face @var{face} (a face name or a list of face names) for button
+text displayed with @samp{%[@dots{}%]}.
+
+@item :button-prefix @var{prefix}
+@itemx :button-suffix @var{suffix}
+These specify the text to display before and after a button.
+Each can be:
+
+@table @asis
+@item @code{nil}
+No text is inserted.
+
+@item a string
+The string is inserted literally.
+
+@item a symbol
+The symbol's value is used.
+@end table
+
+@item :tag @var{tag}
+Use @var{tag} (a string) as the tag for the value (or part of the value)
+that corresponds to this type.
+
+@item :doc @var{doc}
+Use @var{doc} as the documentation string for this value (or part of the
+value) that corresponds to this type.  In order for this to work, you
+must specify a value for @code{:format}, and use @samp{%d} or @samp{%h}
+in that value.
+
+The usual reason to specify a documentation string for a type is to
+provide more information about the meanings of alternatives inside a
+@code{:choice} type or the parts of some other composite type.
+
+@item :help-echo @var{motion-doc}
+When you move to this item with @code{widget-forward} or
+@code{widget-backward}, it will display the string @var{motion-doc}
+in the echo area.
+
+@item :match @var{function}
+Specify how to decide whether a value matches the type.  The
+corresponding value, @var{function}, should be a function that accepts
+two arguments, a widget and a value; it should return non-@code{nil} if
+the value is acceptable.
+
+@ignore
+@item :indent @var{columns}
+Indent this item by @var{columns} columns.  The indentation is used for
+@samp{%n}, and automatically for group names, for checklists and radio
+buttons, and for editable lists.  It affects the whole of the
+item except for the first line.
+
+@item :offset @var{columns}
+An integer indicating how many extra spaces to indent the subitems of
+this item.  By default, subitems are indented the same as their parent.
+
+@item :extra-offset
+An integer indicating how many extra spaces to add to this item's
+indentation, compared to its parent.
+
+@item :notify
+A function called each time the item or a subitem is changed.  The
+function is called with two or three arguments.  The first argument is
+the item itself, the second argument is the item that was changed, and
+the third argument is the event leading to the change, if any.
+
+@item :menu-tag
+Tag used in the menu when the widget is used as an option in a
+@code{menu-choice} widget.
+
+@item :menu-tag-get
+Function used for finding the tag when the widget is used as an option
+in a @code{menu-choice} widget.  By default, the tag used will be either the
+@code{:menu-tag} or @code{:tag} property if present, or the @code{princ}
+representation of the @code{:value} property if not.
+
+@item :validate
+A function which takes a widget as an argument, and return nil if the
+widgets current value is valid for the widget.  Otherwise, it should
+return the widget containing the invalid data, and set that widgets
+@code{:error} property to a string explaining the error.
+
+You can use the function @code{widget-children-validate} for this job;
+it tests that all children of @var{widget} are valid.
+
+@item :tab-order
+Specify the order in which widgets are traversed with
+@code{widget-forward} or @code{widget-backward}.  This is only partially
+implemented.
+
+@enumerate a
+@item
+Widgets with tabbing order @code{-1} are ignored.
+
+@item 
+(Unimplemented) When on a widget with tabbing order @var{n}, go to the
+next widget in the buffer with tabbing order @var{n+1} or @code{nil},
+whichever comes first.
+
+@item
+When on a widget with no tabbing order specified, go to the next widget
+in the buffer with a positive tabbing order, or @code{nil}
+@end enumerate
+
+@item :parent
+The parent of a nested widget (e.g. a @code{menu-choice} item or an
+element of a @code{editable-list} widget).
+
+@item :sibling-args
+This keyword is only used for members of a @code{radio-button-choice} or
+@code{checklist}.  The value should be a list of extra keyword
+arguments, which will be used when creating the @code{radio-button} or
+@code{checkbox} associated with this item.
+@end ignore
+@end table
--- a/man/lispref/lispref.texi	Mon Aug 13 10:44:47 2007 +0200
+++ b/man/lispref/lispref.texi	Mon Aug 13 10:45:36 2007 +0200
@@ -140,6 +140,7 @@
 * Functions::               A function is a Lisp program
                               that can be invoked from other functions.
 * Macros::                  Macros are a way to extend the Lisp language.
+* Customization::           Writing customization declarations.
 
 * Loading::                 Reading files of Lisp code into Lisp.
 * Byte Compilation::        Compilation makes programs run faster.
@@ -1144,6 +1145,7 @@
 @include variables.texi
 @include functions.texi
 @include macros.texi
+@include customize.texi
 
 @include loading.texi
 @include compile.texi
--- a/man/xemacs/calendar.texi	Mon Aug 13 10:44:47 2007 +0200
+++ b/man/xemacs/calendar.texi	Mon Aug 13 10:45:36 2007 +0200
@@ -1226,10 +1226,6 @@
   All of the above commands make marking diary entries by default.  To
 make a nonmarking diary entry, give a numeric argument to the command.
 For example, @kbd{C-u i w} makes a nonmarking weekly diary entry.
- 
-  All of the above commands make marking diary entries.  If you want the diary
-entry to be nonmarking, give a prefix argument to the command.  For example,
-@kbd{C-u i w} makes a nonmarking, weekly diary entry.
 
   When you modify the diary file, be sure to save the file before
 exiting Emacs.
--- a/nt/ChangeLog	Mon Aug 13 10:44:47 2007 +0200
+++ b/nt/ChangeLog	Mon Aug 13 10:45:36 2007 +0200
@@ -1,3 +1,24 @@
+1998-09-29  SL Baur  <steve@altair.xemacs.org>
+
+	* XEmacs 21.0-pre14 is released.
+
+1998-09-19  Adrian Aichner  <aichner@ecf.teradyne.com>
+
+	* tiff.mak: New file provided by Charles Wilson
+	  <cwilson@ee.gatech.edu>
+
+	* README: Update provided by Charles Wilson
+	  <cwilson@ee.gatech.edu>.  Documenting use of the newly
+	  introduced tiff.mak.  Renumbering subsequent build instruction
+	  items.
+
+1998-09-20  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* PROBLEMS: New file.
+
+	* xemacs.mak: Install the PROBLEMS file in the root directory of
+	  the XEmacs installation.
+
 1998-09-05  SL Baur  <steve@altair.xemacs.org>
 
 	* XEmacs 21.0-pre12 is released.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/PROBLEMS	Mon Aug 13 10:45:36 2007 +0200
@@ -0,0 +1,177 @@
+                                                  -*- mode:outline -*-
+
+This file describes various problems that have been encountered in
+running XEmacs on Windows 95, 98 and NT. It has been updated for
+XEmacs 21.0.
+
+This is the first release of XEmacs on Windows. In testing it has
+proved to be extremely stable in general use (but see the gnus and
+subprocess problems below), but not all features or packages work
+correctly yet.
+
+Use `C-c C-f' to move to the next equal level of outline, and
+`C-c C-b' to move to previous equal level.  `C-h m' will give more
+info about the Outline mode.
+
+Also, Try finding the things you need using one of the search commands
+XEmacs provides (e.g. `C-s').
+
+General advice:
+    Remember your .emacs file! ~\.emacs is your Emacs init file.  If
+    you observe strange problems, invoke XEmacs with the `-q' option
+    and see if you can repeat the problem.
+
+
+* Problems with running XEmacs
+==============================
+** Conflicts with FSF NTEmacs
+
+Depending on how it is installed, FSF NTEmacs may setup various EMACS*
+variables in your environment. The presence of these variables may
+cause XEmacs to fail at startup, cause you to see corrupted
+doc-strings, or cause other random problems.
+
+You should remove these variables from your environment. These
+variables are not required to run FSF NTEmacs if you start it by
+running emacs.bat.
+
+** XEmacs can't find my .emacs file
+
+XEmacs looks for your .emacs in your "home" directory. XEmacs decides
+that your "home" directory is, in order of preference:
+	
+- The value of the HOME environment variable, if the variable exists.
+- The value of the HOMEDRIVE and HOMEPATH environment variables, if
+  these variables both exist.
+- The directory that XEmacs was started from.
+
+** XEmacs can't find any packages
+
+The directory tree under which XEmacs looks for your packages is set
+at compile-time, and defaults to C:\Program Files\XEmacs\Packages. The
+variable configure-package-path holds the actual value that was
+compiled into your copy of XEmacs.
+
+The compile-time default location can be overridden by the
+EMACSPACKAGEPATH environment variable or by the
+SOFTWARE\GNU\XEmacs\EMACSPACKAGEPATH registry entry. You should check
+that these variables, if they exist, point to the actual location of
+your package tree.
+
+** XEmacs sometimes crashes when using gnus
+
+This is a known bug in this release of XEmacs on Windows.
+
+If you want to use gnus anyway, you should minimize any possible data
+loss by saving any modified buffers before you start and ensuring that
+you haven't set gnus-use-dribble-file to nil or disabled the normal
+XEmacs auto-save mechanism.
+
+** XEmacs doesn't die when shutting down Windows 95 or 98
+
+When shutting down Windows 95 or 98 you may see a dialog that says
+  "xemacs / You must quit this program before you quit Windows".
+It is safe to
+  "Click OK to quit the program and Windows",
+but you won't be offered a chance to save any modified XEmacs buffers.
+
+* Look and feel
+===============
+** Key bindings
+
+The C-z, C-x, C-c, and C-v keystrokes have traditional uses in both
+emacs and Windows programs. XEmacs binds these keys to their
+traditional emacs uses, and provides Windows 3.x style bindings for
+the Cut, Copy and Paste functions.
+
+	Function	XEmacs binding
+	--------	--------------
+	Undo		C-_
+	Cut		C-Insert
+	Copy		C-Insert
+	Paste		Sh-Del
+
+You can rebind keys to make XEmacs more Windows-compatible; for
+example, to bind C-z to undo:
+
+       (global-set-key [(control z)] 'undo)
+
+Rebindind C-x and C-c is trickier because by default these are prefix
+keys in XEmacs. See the "Key Bindings" node in the XEmacs manual.
+
+** Behaviour of selected regions
+
+Selected regions behave differently in XEmacs from typical Windows
+programs. The pc-select package provides various functions to enable
+the standard Windows behaviour for selected regions (eg mark via
+shift-arrow, self-inserting deletes region, etc).
+
+** Limitations on the use of the AltGr key.
+
+In some locale and OS combinations you can't generate M-AltGr-key or
+C-M-AltGr-key sequences at all.
+
+To generate C-AltGr-key or C-M-AltGr-key sequences you must use the
+right-hand Control key and you must press it *after* AltGr.
+
+These limitations arise from fundamental problems in the way that the
+win32 API reports AltGr key events. There isn't anything that XEmacs
+can do to work round these problems that it isn't already doing.
+
+You may want to create alternative bindings if any of the standard
+XEmacs bindings require you to use some combination of Control or Meta
+and AltGr.
+
+
+* Features not fully supported in this release
+==============================================
+** Limited support for subprocesses
+
+Attempting to use call-process to run a 16bit program gives a
+"Spawning child process: Exec format error". For example shell-command
+fails under Windows 95 and 98 if you use command.com or any other
+16bit program as your shell.
+
+XEmacs may incorrectly quote your call-process command if it contains
+double quotes, backslashes or spaces.
+
+start-process and functions that rely on it are supported under Windows 95,
+98 and NT. However, starting a 16bit program that requires keyboard input
+may cause XEmacs to hang or crash under Windows 95 and 98, and will leave
+the orphaned 16bit program consuming all available CPU time.
+
+Sending signals to subprocesses started by call-process or by
+start-process fails with a "Cannot send signal to process" error under
+Windows 95 and 98. As a side effect of this, quitting XEmacs while it
+is still running subprocesses causes it to crash under Windows 95 and
+98.
+
+** Changing fonts from the Options menu
+
+The "Font" and "Size" entries on the Options menu don't work yet. This
+will be fixed in a future release. In the meantime, you can either
+change face fonts with customize or manually; for example:
+
+    (set-face-font 'default "Lucida Console:Regular:10::Western")
+    (set-face-font 'modeline "MS Sans Serif:Regular:10::Western")
+
+Font weight and style and character set must be supplied in English as
+above. Common weights and styles are "Regular", "Regular Italic",
+"Bold" and "Bold Italic". Common character sets are "Western",
+"Central European" and "OEM/DOS".
+
+Windows 95 only comes with one fixed-width font that is suitable for
+use by XEmacs, namely "Courier New".
+
+** No MULE support
+
+This release of XEmacs on Windows does not contain MULE support. MULE
+support has not been a priority for the XEmacs on Windows developers.
+
+** Printing
+
+This release of XEmacs on Windows does not support printing natively.
+
+You can use the lpr-command and lpr-switches variables to specify an
+external print program.
+
--- a/nt/README	Mon Aug 13 10:44:47 2007 +0200
+++ b/nt/README	Mon Aug 13 10:45:36 2007 +0200
@@ -46,14 +46,21 @@
     cd to the libpng directory, rename or move the zlib directory to ..\zlib
     and type 'nmake -f scripts\makefile.w32'.
 
-3.  If you want JPEG and/or TIFF support grab the latest versions of jpegsrc
-    and/or libtiff and read the respective READMEs for details on how to build
-    them.
+3.  If you want TIFF support, grap the latest version of libtiff (tiff-v3.4
+    at time of writing) and unpack it somewhere. Copy nt\tiff.mak from the 
+    xemacs sources to the contrib\winnt subdirectory of the tiff sources, 
+    cd to that directory and build libtiff with 'nmake -f tiff.mak'. Note:
+    tiff.mak has only been verified to work under WinNT, not Win95 or 98. 
+    However, the lastest distribution of libtiff includes a 
+    contrib\win95\makefile.w95; that might work.
 
-4.  cd to the nt subdirectory of the xemacs distribution and build xemacs:
+4.  If you want JPEG support grab the latest version of jpegsrc (jpeg-6b at 
+    time of writing) and read the README for details on how to build it.
+
+5.  cd to the nt subdirectory of the xemacs distribution and build xemacs:
     `nmake install -f xemacs.mak`, but read on before hitting Enter.
 
-5.  If you're building with XPM support, add this to the nmake command line:
+6.  If you're building with XPM support, add this to the nmake command line:
 	HAVE_XPM=1 XPM_DIR="x:\location\of\your\xpm\sources"
     and similarly for JPEG and TIFF support.
 
@@ -64,7 +71,7 @@
     If you want to build with GIF support, add this to the nmake command line:
 	HAVE_GIF=1
 
-6.  By default, XEmacs will look for packages in
+7.  By default, XEmacs will look for packages in
     "c:\Program Files\XEmacs\packages". If you want it to look elsewhere,
     add this to the nmake command line:
 	PACKAGEPATH="x:\\location\\of\\your\\packages"
@@ -72,19 +79,19 @@
     package path after you've already built XEmacs, delete the file
     .\obj\emacs.obj before rebuilding with the new value of PACKAGEPATH.
 
-7.  By default, XEmacs will be installed in directories under the directory
+8.  By default, XEmacs will be installed in directories under the directory
     "c:\Program Files\XEmacs\XEmacs-21.0". If you want to install it
     elsewhere, add this to the nmake command line:
 	INSTALL_DIR="x:\your\installation\directory"
 
-8.  Now you can press Enter. nmake will build temacs, the DOC file, update the
+9.  Now you can press Enter. nmake will build temacs, the DOC file, update the
     elc's, dump xemacs and install the relevant files in the directories under
     the installation directory. Unless you set INSTALL_DIR above, the file that
     you should run to start XEmacs will be installed as
     "c:\Program Files\XEmacs\XEmacs-21.0\i386-pc-win32\runemacs.exe". You may
     want to create a shortcut to that file from your Desktop or Start Menu.
 
-9.  The build process always creates debugging and "Source Browser" information
+10. The build process always creates debugging and "Source Browser" information
     in the source tree for use with MS DevStudio. If you actually want to debug
     XEmacs you should run XEmacs from the source directory instead of from the
     installation directory. You should probably also build a debug version of
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/tiff.mak	Mon Aug 13 10:45:36 2007 +0200
@@ -0,0 +1,156 @@
+#
+# TIFF makefile for Microsoft nmake
+#
+!if !defined(DEBUG_XEMACS)
+DEBUG_XEMACS=0
+!endif
+
+!if $(DEBUG_XEMACS)
+OPT=-Od -Zi
+!else
+OPT=-O2 -G5
+!endif
+
+WARN_CPP_FLAGS = -W3
+CFLAGS=-nologo -DFOR_MSW $(WARN_CPP_FLAGS) $(OPT) -c
+
+OUTDIR=.\WinRel
+OBJDIR=.\WinRel
+# the following is because fax3sm.c references "tiff.h" and "tif_fax3.h",
+# under the assumption that those header files are in the same directory
+# as fax3sm.c  But, since we're using a special fax3sm.c file, and we
+# can't be sure the user has patch to change "xx" to "..\..\libtiff\xx",
+# let's just copy these header files to this directory. (Symbolic links
+# would be _so_ nice)
+NEED_FOR_COMPILE= tiff.h tif_fax3.h
+
+CPP=cl.exe
+CPP_PROJ= /GX /YX /I "." /I ".." /D "WIN32" /D "NDEBUG" /D\
+ "_WINDOWS" /FR$(OBJDIR)/ /Fp$(OUTDIR)/"libtiff.pch" $(CFLAGS)
+
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o$(OUTDIR)/libtiff.bsc 
+
+LIB32=lib.exe
+LIB32_FLAGS=/NOLOGO /OUT:$(OUTDIR)\libtiff.lib 
+DEF_FLAGS=
+DEF_FILE=
+
+BSC32_SBRS= \
+	$(OBJDIR)\tif_jpeg.sbr \
+	$(OBJDIR)\tif_dirinfo.sbr \
+	$(OBJDIR)\tif_win32.sbr \
+	$(OBJDIR)\tif_flush.sbr \
+	$(OBJDIR)\tif_thunder.sbr \
+	$(OBJDIR)\tif_compress.sbr \
+	$(OBJDIR)\tif_print.sbr \
+	$(OBJDIR)\tif_dirread.sbr \
+	$(OBJDIR)\tif_getimage.sbr \
+	$(OBJDIR)\tif_fax3.sbr \
+	$(OBJDIR)\tif_version.sbr \
+	$(OBJDIR)\tif_codec.sbr \
+	$(OBJDIR)\tif_dir.sbr \
+	$(OBJDIR)\tif_predict.sbr \
+	$(OBJDIR)\tif_close.sbr \
+	$(OBJDIR)\tif_dumpmode.sbr \
+	$(OBJDIR)\tif_aux.sbr \
+	$(OBJDIR)\tif_error.sbr \
+	$(OBJDIR)\tif_lzw.sbr \
+	$(OBJDIR)\tif_zip.sbr \
+	$(OBJDIR)\tif_read.sbr \
+	$(OBJDIR)\tif_packbits.sbr \
+	$(OBJDIR)\tif_swab.sbr \
+	$(OBJDIR)\tif_dirwrite.sbr \
+	$(OBJDIR)\tif_open.sbr \
+	$(OBJDIR)\tif_warning.sbr \
+	$(OBJDIR)\tif_tile.sbr \
+	$(OBJDIR)\tif_strip.sbr \
+	$(OBJDIR)\tif_next.sbr \
+	$(OBJDIR)\tif_write.sbr \
+	$(OBJDIR)\fax3sm.sbr
+
+LIB32_OBJS= \
+	$(OBJDIR)\tif_jpeg.obj \
+	$(OBJDIR)\tif_dirinfo.obj \
+	$(OBJDIR)\tif_win32.obj \
+	$(OBJDIR)\tif_flush.obj \
+	$(OBJDIR)\tif_thunder.obj \
+	$(OBJDIR)\tif_compress.obj \
+	$(OBJDIR)\tif_print.obj \
+	$(OBJDIR)\tif_dirread.obj \
+	$(OBJDIR)\tif_getimage.obj \
+	$(OBJDIR)\tif_fax3.obj \
+	$(OBJDIR)\tif_version.obj \
+	$(OBJDIR)\tif_codec.obj \
+	$(OBJDIR)\tif_dir.obj \
+	$(OBJDIR)\tif_predict.obj \
+	$(OBJDIR)\tif_close.obj \
+	$(OBJDIR)\tif_dumpmode.obj \
+	$(OBJDIR)\tif_aux.obj \
+	$(OBJDIR)\tif_error.obj \
+	$(OBJDIR)\tif_lzw.obj \
+	$(OBJDIR)\tif_zip.obj \
+	$(OBJDIR)\tif_read.obj \
+	$(OBJDIR)\tif_packbits.obj \
+	$(OBJDIR)\tif_swab.obj \
+	$(OBJDIR)\tif_dirwrite.obj \
+	$(OBJDIR)\tif_open.obj \
+	$(OBJDIR)\tif_warning.obj \
+	$(OBJDIR)\tif_tile.obj \
+	$(OBJDIR)\tif_strip.obj \
+	$(OBJDIR)\tif_next.obj \
+	$(OBJDIR)\tif_write.obj \
+	$(OBJDIR)\fax3sm.obj
+
+# nmake rule
+
+.SUFFIXES:
+.SUFFIXES:	.c .obj
+
+{..\..\libtiff}.c{$(OBJDIR)}.obj:
+	$(CPP) $(CPP_PROJ) $< -Fo$@
+
+
+ALL : $(OUTDIR)/libtiff.lib $(OUTDIR)/libtiff.bsc
+
+clean : 
+	-del tiff.h
+	-del tif_fax3.h
+	-del t4.h
+	-del tiffcomp.h
+	-del tiffconf.h
+	-del tiffio.h
+	-del ..\..\libtiff\libtiff.lib
+	-del *.pdb
+	-del $(OBJDIR)\*.obj
+	-del $(OBJDIR)\*.sbr
+	-del $(OUTDIR)\libtiff.lib
+	-del $(OUTDIR)\libtiff.bsc
+	-del $(OUTDIR)\libtiff.pch
+	-rmdir $(OUTDIR)
+
+tiff.h :
+	if not exist ./tiff.h copy ..\..\libtiff\tiff.h .
+tif_fax3.h :
+	if not exist ./tif_fax3.h copy ..\..\libtiff\tif_fax3.h .
+
+$(OUTDIR) : $(NEED_FOR_COMPILE)
+        if not exist $(OUTDIR)/nul mkdir $(OUTDIR)
+
+$(OUTDIR)/libtiff.bsc : $(OUTDIR)  $(BSC32_SBRS)
+	$(BSC32) @<< 
+	$(BSC32_FLAGS) $(BSC32_SBRS) 
+<<
+
+$(OUTDIR)/libtiff.lib : $(OUTDIR)  $(DEF_FILE) $(LIB32_OBJS)
+	$(LIB32) @<< 
+	$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) 
+<<
+	copy $(OUTDIR)\libtiff.lib ..\..\libtiff\libtiff.lib
+
+DEP_FAX3S=\
+	..\..\libtiff\tiff.h     \
+	..\..\libtiff\tif_fax3.h
+$(OBJDIR)/fax3sm.obj :  $(DEP_FAX3S) $(OBJDIR)
+	$(CPP) $(CPP_PROJ) .\fax3sm.c -Fo$@
+
--- a/nt/xemacs.mak	Mon Aug 13 10:44:47 2007 +0200
+++ b/nt/xemacs.mak	Mon Aug 13 10:45:36 2007 +0200
@@ -946,6 +946,7 @@
 # use this rule to install the system
 install:	all
 	@echo Installing in $(INSTALL_DIR) ...
+	@xcopy /q PROBLEMS "$(INSTALL_DIR)\"
 	@xcopy /q README "$(INSTALL_DIR)\lock\"
 	@del "$(INSTALL_DIR)\lock\README"
 	@xcopy /q $(LIB_SRC)\*.exe "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)\"
--- a/src/ChangeLog	Mon Aug 13 10:44:47 2007 +0200
+++ b/src/ChangeLog	Mon Aug 13 10:45:36 2007 +0200
@@ -1,3 +1,75 @@
+1998-09-29  SL Baur  <steve@altair.xemacs.org>
+
+	* XEmacs 21.0-pre14 is released.
+
+1998-09-27  P. E. Jareth Hein  <jareth@camelot.co.jp>
+
+	* regex.c (re_match_2_internal): Add in code to reset lowest_active_reg
+	to prevent memory corruption in the case of jumping out of a series of
+	nested match patterns. This is a rather brute force approach, though.
+
+1998-09-02  Andy Piper  <andyp@parallax.co.uk>
+
+	* config.h.in: ditto.
+
+	* s/cygwin32.h: rearrange declarations to cope with cygwin
+ 	b20. Include cygwin32/version.h if it exists.
+
+1998-09-20  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* device-msw.c (mswindows_init_device): Call new
+	  mswindows_enumerate_fonts() function in objects-msw.c instead
+	  of font_enum_callback_1() to enumerate fonts.
+
+	  font_enum_callback_1() and _2() moved to objects-msw.c. 
+
+	* faces.c (complex_vars_of_faces): Make the mswindows default 
+	  face font fully specified and provide some fallbacks.
+
+	* objects-msw.c: font_enum_callback_1() and _2() moved here
+	  from objects-msw.c. Obtain the enumerated font's character
+	  sets by table lookup instead of using the locale-specific
+	  string provided by Windows.
+
+	  New public non-method mswindows_enumerate_fonts() that fills
+	  in the supplied mswindows device's font list.
+
+	  mswindows_initialize_font_instance: Use the supplied name
+	  variable instead of f->name when signalling errors. Match font
+	  weights and character sets using lookup tables which handle
+	  spaces instead of by frobbing.
+
+1998-09-20  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+	* process-nt.c: Define an arbitrary limit, FRAGMENT_CODE_SIZE,
+	  on the size of code fragments passed to run_in_other_process.
+
+	  run_in_other_process(): Use FRAGMENT_CODE_SIZE to determine
+	  the amount of memory to allocate in the other process.
+
+	  Removed sigkill_code_end(), sigint_code_end() and
+	  sig_enable_code_end() since they are now redundant.
+
+	  send_signal() and enable_child_signals(): Don't try to work
+	  out the end of the code fragments passed to 
+	  run_in_other_process()
+
+1998-09-10  Kazuyuki IENAGA  <ienaga@jsys.co.jp>
+
+	* src/s/freebsd.h: Added __ELF__ and compiler/liker flags for
+	FreeBSD-current.
+
+	* src/unexelf.c: Partially synched with FSF's 20.3.
+
+1998-09-11  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>
+
+	* redisplay.c (redisplay_window): make sure a new starting point
+	is chosen if it somehow got moved from the beginning of the line
+	-- this can happen because Fwiden was called recently.
+
+	* window.c (Fset_window_start): set start_at_line_beg correctly
+	(Fset_window_buffer): Ditto
+
 1998-09-06  Jan Vroonhof  <vroonhof@math.ethz.ch>
 
 	* process-unix.c (unix_create_process): Reset SIGHUP handler to
--- a/src/config.h.in	Mon Aug 13 10:44:47 2007 +0200
+++ b/src/config.h.in	Mon Aug 13 10:45:36 2007 +0200
@@ -194,6 +194,7 @@
 #undef HAVE_ULIMIT_H
 #undef HAVE_X11_XLOCALE_H
 #undef HAVE_LINUX_VERSION_H
+#undef HAVE_CYGWIN32_VERSION_H
 #undef HAVE_INTTYPES_H
 #undef HAVE_SYS_UN_H
 #undef HAVE_A_OUT_H
--- a/src/console-msw.h	Mon Aug 13 10:44:47 2007 +0200
+++ b/src/console-msw.h	Mon Aug 13 10:45:36 2007 +0200
@@ -251,4 +251,6 @@
 extern Lisp_Object Vmswindows_frame_being_created;
 extern Lisp_Object mswindows_frame_being_created;
 
+void mswindows_enumerate_fonts (struct device *d);
+
 #endif /* _XEMACS_CONSOLE_MSW_H_ */
--- a/src/device-msw.c	Mon Aug 13 10:44:47 2007 +0200
+++ b/src/device-msw.c	Mon Aug 13 10:45:36 2007 +0200
@@ -39,13 +39,6 @@
 #include "frame.h"
 #include "sysdep.h"
 
-#ifndef __CYGWIN32__
-#include <commctrl.h>
-#else
-#define FONTENUMPROC FONTENUMEXPROC
-#define ntmTm ntmentm
-#endif
-
 /* win32 DDE management library globals */
 #ifdef HAVE_DRAGNDROP
 DWORD mswindows_dde_mlid;
@@ -65,77 +58,11 @@
 
 Lisp_Object Qinit_pre_mswindows_win, Qinit_post_mswindows_win;
 
-struct font_enum_t
-{
-  HDC hdc;
-  struct device *d;
-};
-
 
 /************************************************************************/
 /*                               helpers                                */
 /************************************************************************/
 
-static int CALLBACK
-font_enum_callback_2 (ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme, 
-		      int FontType, struct font_enum_t *font_enum)
-{
-  struct mswindows_font_enum *fontlist, **fonthead;
-  char fontname[MSW_FONTSIZE];
-
-  /* The enumerated font weights are not to be trusted because:
-   *  a) lpelfe->elfStyle is only filled in for TrueType fonts.
-   *  b) Not all Bold and Italic styles of all fonts (inluding some Vector,
-   *     Truetype and Raster fonts) are enumerated.
-   * I guess that fonts for which Bold and Italic styles are generated
-   * 'on-the-fly' are not enumerated. It would be overly restrictive to
-   * disallow Bold And Italic weights for these fonts, so we just leave
-   * weights unspecified. This means that we have to weed out duplicates of
-   * those fonts that do get enumerated with different weights. */
-
-  if (FontType == 0 /*vector*/ || FontType == TRUETYPE_FONTTYPE)
-    /* Scalable, so leave pointsize blank */
-    sprintf (fontname, "%s::::%s", lpelfe->elfLogFont.lfFaceName,
-	     lpelfe->elfScript);
-  else
-    /* Formula for pointsize->height from LOGFONT docs in Platform SDK */
-    sprintf (fontname, "%s::%d::%s", lpelfe->elfLogFont.lfFaceName,
-	     MulDiv (lpntme->ntmTm.tmHeight - lpntme->ntmTm.tmInternalLeading,
-	             72, DEVICE_MSWINDOWS_LOGPIXELSY (font_enum->d)),
-             lpelfe->elfScript);
-
-  fonthead = &DEVICE_MSWINDOWS_FONTLIST (font_enum->d);
-  fontlist = *fonthead;
-  while (fontlist)
-    if (!strcmp (fontname, fontlist->fontname))
-      return 1;		/* found a duplicate */
-    else
-      fontlist = fontlist->next;
-
-  /* Insert entry at head */
-  fontlist = *fonthead;
-  *fonthead = xmalloc (sizeof (struct mswindows_font_enum));
-  if (*fonthead == NULL)
-    {
-      *fonthead = fontlist;
-      return 0;
-    }
-  strcpy ((*fonthead)->fontname, fontname);
-  (*fonthead)->next = fontlist;
-  return 1;
-}
-
-static int CALLBACK
-font_enum_callback_1 (ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme, 
-		      int FontType, struct font_enum_t *font_enum)
-{
-  /* This function gets called once per facename per character set.
-   * We call a second callback to enumerate the fonts in each facename */
-  return EnumFontFamiliesEx (font_enum->hdc, &lpelfe->elfLogFont,
-			     (FONTENUMPROC) font_enum_callback_2,
-			     (LPARAM) font_enum, 0);
-}
-
 static Lisp_Object
 build_syscolor_string (int index)
 {
@@ -182,8 +109,6 @@
 {
   WNDCLASSEX wc;
   HDC hdc;
-  LOGFONT logfont;
-  struct font_enum_t font_enum;
 
   DEVICE_CLASS (d) = Qcolor;
   DEVICE_INFD (d) = DEVICE_OUTFD (d) = -1;
@@ -204,16 +129,9 @@
   DEVICE_MSWINDOWS_HORZSIZE(d) = GetDeviceCaps(hdc, HORZSIZE);
   DEVICE_MSWINDOWS_VERTSIZE(d) = GetDeviceCaps(hdc, VERTSIZE);
   DEVICE_MSWINDOWS_BITSPIXEL(d) = GetDeviceCaps(hdc, BITSPIXEL);
+  DeleteDC (hdc);
 
-  DEVICE_MSWINDOWS_FONTLIST (d) = NULL;
-  logfont.lfCharSet = DEFAULT_CHARSET;
-  logfont.lfFaceName[0] = '\0';
-  logfont.lfPitchAndFamily = DEFAULT_PITCH;
-  font_enum.hdc = hdc;
-  font_enum.d = d;
-  EnumFontFamiliesEx (hdc, &logfont, (FONTENUMPROC) font_enum_callback_1,
-		      (LPARAM) (&font_enum), 0);
-  DeleteDC (hdc);
+  mswindows_enumerate_fonts (d);
 
   /* Register the main window class */
   wc.cbSize = sizeof (WNDCLASSEX);
--- a/src/faces.c	Mon Aug 13 10:44:47 2007 +0200
+++ b/src/faces.c	Mon Aug 13 10:45:36 2007 +0200
@@ -1919,8 +1919,12 @@
 		       inst_list);
 #endif /* HAVE_TTY */
 #ifdef HAVE_MS_WINDOWS
-    inst_list = Fcons (Fcons (list1 (Qmswindows), build_string ("Courier New")),
-		       inst_list);
+    inst_list = Fcons (Fcons (list1 (Qmswindows),
+		       build_string ("Fixedsys:Regular:9::Western")), inst_list);
+    inst_list = Fcons (Fcons (list1 (Qmswindows),
+		       build_string ("Courier:Regular:10::Western")), inst_list);
+    inst_list = Fcons (Fcons (list1 (Qmswindows),
+		       build_string ("Courier New:Regular:10::Western")), inst_list);
 #endif /* HAVE_MS_WINDOWS */
     set_specifier_fallback (Fget (Vdefault_face, Qfont, Qnil), inst_list);
   }
--- a/src/objects-msw.c	Mon Aug 13 10:44:47 2007 +0200
+++ b/src/objects-msw.c	Mon Aug 13 10:45:36 2007 +0200
@@ -51,12 +51,14 @@
 
 #ifdef __CYGWIN32__
 #define stricmp strcasecmp
+#define FONTENUMPROC FONTENUMEXPROC
+#define ntmTm ntmentm
 #endif
 
 typedef struct colormap_t 
 {
-  char *name;
-  COLORREF colorref;
+  CONST char *name;
+  CONST COLORREF colorref;
 } colormap_t;
 
 /* Colors from X11R6 "XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp" */
@@ -721,6 +723,58 @@
   {"LightGreen"			, PALETTERGB (144, 238, 144) }
 };
 
+
+typedef struct fontmap_t 
+{
+  CONST char *name;
+  CONST int value;
+} fontmap_t;
+
+/* Default weight first, preferred names listed before synonyms */
+static CONST fontmap_t fontweight_map[] = 
+{
+  {"Regular"		, FW_REGULAR},	/* The standard font weight */
+  {"Thin"		, FW_THIN},
+  {"Extra Light"	, FW_EXTRALIGHT},
+  {"Ultra Light"	, FW_ULTRALIGHT},
+  {"Light"		, FW_LIGHT},
+  {"Normal"		, FW_NORMAL},
+  {"Medium"		, FW_MEDIUM},
+  {"Semi Bold"		, FW_SEMIBOLD},
+  {"Demi Bold"		, FW_DEMIBOLD},
+  {"Bold"		, FW_BOLD},	/* The standard bold font weight */
+  {"Extra Bold"		, FW_EXTRABOLD},
+  {"Ultra Bold"		, FW_ULTRABOLD},
+  {"Heavy"		, FW_HEAVY},
+  {"Black"		, FW_BLACK}
+};
+
+/* Default charset first, no synonyms allowed because these names are 
+ * matched against the names reported by win32 by match_font() */
+static CONST fontmap_t charset_map[] = 
+{
+  {"Western"		, ANSI_CHARSET},
+  {"Symbol"		, SYMBOL_CHARSET},
+  {"Shift JIS"		, SHIFTJIS_CHARSET},	/* #### Name to be verified */
+  {"GB2312"		, GB2312_CHARSET},	/* #### Name to be verified */
+  {"Hanguel"		, HANGEUL_CHARSET},
+  {"Chinese Big 5"	, CHINESEBIG5_CHARSET},	/* #### Name to be verified */
+#if (WINVER >= 0x0400)
+  {"Johab"		, JOHAB_CHARSET},	/* #### Name to be verified */
+  {"Hebrew"		, HEBREW_CHARSET},	/* #### Name to be verified */
+  {"Arabic"		, ARABIC_CHARSET},	/* #### Name to be verified */
+  {"Greek"		, GREEK_CHARSET},
+  {"Turkish"		, TURKISH_CHARSET},
+  {"Vietnamese"		, VIETNAMESE_CHARSET},	/* #### Name to be verified */
+  {"Thai"		, THAI_CHARSET},	/* #### Name to be verified */
+  {"Central European"	, EASTEUROPE_CHARSET},
+  {"Cyrillic"		, RUSSIAN_CHARSET},
+  {"Mac"		, MAC_CHARSET},
+  {"Baltic"		, BALTIC_CHARSET},
+#endif
+  {"OEM/DOS"		, OEM_CHARSET}
+};
+
 
 /************************************************************************/
 /*                               helpers                                */
@@ -872,6 +926,120 @@
   return 1;
 }
 
+
+
+
+
+/************************************************************************/
+/*                                 exports                              */
+/************************************************************************/
+
+struct font_enum_t
+{
+  HDC hdc;
+  struct device *d;
+};
+
+static int CALLBACK
+font_enum_callback_2 (ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme, 
+		      int FontType, struct font_enum_t *font_enum)
+{
+  struct mswindows_font_enum *fontlist, **fonthead;
+  char fontname[MSW_FONTSIZE];
+  int i;
+
+  /*
+   * The enumerated font weights are not to be trusted because:
+   *  a) lpelfe->elfStyle is only filled in for TrueType fonts.
+   *  b) Not all Bold and Italic styles of all fonts (inluding some Vector,
+   *     Truetype and Raster fonts) are enumerated.
+   * I guess that fonts for which Bold and Italic styles are generated
+   * 'on-the-fly' are not enumerated. It would be overly restrictive to
+   * disallow Bold And Italic weights for these fonts, so we just leave
+   * weights unspecified. This means that we have to weed out duplicates of
+   * those fonts that do get enumerated with different weights.
+   */
+  if (FontType == 0 /*vector*/ || FontType == TRUETYPE_FONTTYPE)
+    /* Scalable, so leave pointsize blank */
+    sprintf (fontname, "%s::::", lpelfe->elfLogFont.lfFaceName);
+  else
+    /* Formula for pointsize->height from LOGFONT docs in Platform SDK */
+    sprintf (fontname, "%s::%d::", lpelfe->elfLogFont.lfFaceName,
+	     MulDiv (lpntme->ntmTm.tmHeight - lpntme->ntmTm.tmInternalLeading,
+	             72, DEVICE_MSWINDOWS_LOGPIXELSY (font_enum->d)));
+
+  /*
+   * The enumerated font character set strings are not to be trusted because
+   * lpelfe->elfScript is returned in the host language and not in English.
+   * We can't know a priori the translations of "Western", "Central European"
+   * etc into the host language, so we must use English. The same argument
+   * applies to the font weight string when matching fonts.
+   */
+  for (i=0; i<countof (charset_map); i++)
+    if (lpelfe->elfLogFont.lfCharSet == charset_map[i].value)
+      {
+	strcat (fontname, charset_map[i].name);
+	break;
+      }
+  if (i==countof (charset_map))
+    strcpy (fontname, charset_map[0].name);
+
+  /* Check that the new font is not a duplicate */
+  fonthead = &DEVICE_MSWINDOWS_FONTLIST (font_enum->d);
+  fontlist = *fonthead;
+  while (fontlist)
+    if (!strcmp (fontname, fontlist->fontname))
+      return 1;		/* found a duplicate */
+    else
+      fontlist = fontlist->next;
+
+  /* Insert entry at head */
+  fontlist = *fonthead;
+  *fonthead = xmalloc (sizeof (struct mswindows_font_enum));
+  if (*fonthead == NULL)
+    {
+      *fonthead = fontlist;
+      return 0;
+    }
+  strcpy ((*fonthead)->fontname, fontname);
+  (*fonthead)->next = fontlist;
+  return 1;
+}
+
+static int CALLBACK
+font_enum_callback_1 (ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme, 
+		      int FontType, struct font_enum_t *font_enum)
+{
+  /* This function gets called once per facename per character set.
+   * We call a second callback to enumerate the fonts in each facename */
+  return EnumFontFamiliesEx (font_enum->hdc, &lpelfe->elfLogFont,
+			     (FONTENUMPROC) font_enum_callback_2,
+			     (LPARAM) font_enum, 0);
+}
+
+/*
+ * Enumerate the available fonts. Called by mswindows_init_device().
+ * Fills in the device's device-type-specfic fontlist.
+ */
+void
+mswindows_enumerate_fonts (struct device *d)
+{
+  HDC hdc = CreateCompatibleDC (NULL);
+  LOGFONT logfont;
+  struct font_enum_t font_enum;
+
+  assert (hdc!=NULL);
+  logfont.lfCharSet = DEFAULT_CHARSET;
+  logfont.lfFaceName[0] = '\0';
+  logfont.lfPitchAndFamily = DEFAULT_PITCH;
+  font_enum.hdc = hdc;
+  font_enum.d = d;
+  DEVICE_MSWINDOWS_FONTLIST (d) = NULL;
+  EnumFontFamiliesEx (hdc, &logfont, (FONTENUMPROC) font_enum_callback_1,
+		      (LPARAM) (&font_enum), 0);
+  DeleteDC (hdc);
+}
+
 
 /************************************************************************/
 /*                               methods                                */
@@ -970,19 +1138,23 @@
     }
 }
 
+
 static int
 mswindows_initialize_font_instance (struct Lisp_Font_Instance *f, Lisp_Object name,
 				    Lisp_Object device, Error_behavior errb)
 {
   CONST char *extname;
   LOGFONT logfont;
-  int fields;
+  int fields, i;
   int pt;
   char fontname[LF_FACESIZE], weight[LF_FACESIZE], *style, points[8];
   char effects[LF_FACESIZE], charset[LF_FACESIZE];
   char *c;
-  
-  GET_C_STRING_CTEXT_DATA_ALLOCA (f->name, extname);
+  HDC hdc;
+  HFONT holdfont;
+  TEXTMETRIC metrics;
+
+  extname = XSTRING_DATA (name);
 
   /*
    * mswindows fonts look like:
@@ -1003,12 +1175,12 @@
   /* This function is implemented in a fairly ad-hoc manner.
    * The general idea is to validate and canonicalize each of the above fields
    * at the same time as we build up the win32 LOGFONT structure. This enables
-   * us to use math_font() on a canonicalized font string to check the
+   * us to use match_font() on a canonicalized font string to check the
    * availability of the requested font */
 
-  if (fields<0)
+  if (fields < 0)
   {
-    maybe_signal_simple_error ("Invalid font", f->name, Qfont, errb);
+    maybe_signal_simple_error ("Invalid font", name, Qfont, errb);
     return (0);
   }
 
@@ -1019,13 +1191,13 @@
   }
   else
   {
-    maybe_signal_simple_error ("Must specify a font name", f->name, Qfont, errb);
+    maybe_signal_simple_error ("Must specify a font name", name, Qfont, errb);
     return (0);
   }
 
   /* weight */
   if (fields < 2)
-    strcpy (weight, "Regular");
+    strcpy (weight, fontweight_map[0].name);
 
   /* Maybe split weight into weight and style */
   if ((c=strchr(weight, ' ')))
@@ -1036,36 +1208,25 @@
   else
     style = NULL;
 
-#define FROB(wgt)				\
-  if (stricmp (weight, #wgt) == 0)		\
-    logfont.lfWeight = FW_##wgt
-
-  FROB (REGULAR);
-  else FROB (THIN);
-  else FROB (EXTRALIGHT);
-  else FROB (ULTRALIGHT);
-  else FROB (LIGHT);
-  else FROB (NORMAL);
-  else FROB (MEDIUM);
-  else FROB (SEMIBOLD);
-  else FROB (DEMIBOLD);
-  else FROB (BOLD);
-  else FROB (EXTRABOLD);
-  else FROB (ULTRABOLD);
-  else FROB (HEAVY);
-  else FROB (BLACK);
-  else if (!style)
+  for (i=0; i<countof (fontweight_map); i++)
+    if (!stricmp (weight, fontweight_map[i].name))
+      {	
+	logfont.lfWeight = fontweight_map[i].value;
+	break;
+      }
+  if (i == countof (fontweight_map))	/* No matching weight */
     {
-      logfont.lfWeight = FW_REGULAR;
-      style = weight;	/* May have specified style without weight */
+      if (!style)
+	{
+	  logfont.lfWeight = FW_REGULAR;
+	  style = weight;	/* May have specified style without weight */
+	}
+      else
+	{
+	  maybe_signal_simple_error ("Invalid font weight", name, Qfont, errb);
+	  return (0);
+	}
     }
-  else
-    {
-      maybe_signal_simple_error ("Invalid font weight", f->name, Qfont, errb);
-      return (0);
-    }
-
-#undef FROB
 
   if (style)
     {
@@ -1074,7 +1235,7 @@
 	logfont.lfItalic = TRUE;
       else
       {
-        maybe_signal_simple_error ("Invalid font weight or style", f->name, Qfont, errb);
+        maybe_signal_simple_error ("Invalid font weight or style", name, Qfont, errb);
 	return (0);
       }
 
@@ -1089,12 +1250,12 @@
     pt = 10;	/* #### Should we reject strings that don't specify a size? */
   else if ((pt=atoi(points)) == 0)
     {
-      maybe_signal_simple_error ("Invalid font pointsize", f->name, Qfont, errb);
+      maybe_signal_simple_error ("Invalid font pointsize", name, Qfont, errb);
       return (0);
     }
 
   /* Formula for pointsize->height from LOGFONT docs in MSVC5 Platform SDK */
-  logfont.lfHeight = -MulDiv(pt, DEVICE_MSWINDOWS_LOGPIXELSY(XDEVICE (device)), 72);
+  logfont.lfHeight = -MulDiv(pt, DEVICE_MSWINDOWS_LOGPIXELSY (XDEVICE (device)), 72);
   logfont.lfWidth = 0;
 
   /* Effects */
@@ -1119,8 +1280,7 @@
 	logfont.lfStrikeOut = TRUE;
       else
         {
-          maybe_signal_simple_error ("Invalid font effect", f->name,
-				     Qfont, errb);
+          maybe_signal_simple_error ("Invalid font effect", name, Qfont, errb);
 	  return (0);
 	}
 
@@ -1132,7 +1292,7 @@
 	    logfont.lfStrikeOut = TRUE;
 	  else
 	    {
-	      maybe_signal_simple_error ("Invalid font effect", f->name,
+	      maybe_signal_simple_error ("Invalid font effect", name,
 					 Qfont, errb);
 	      return (0);
 	    }
@@ -1152,63 +1312,50 @@
   else
     effects[0] = '\0';
 
-#define FROB(cs)				\
-  else if (stricmp (charset, #cs) == 0)		\
-    logfont.lfCharSet = cs##_CHARSET
-
-  /* Charset aliases. Hangeul = Hangul is defined in windows.h.
-     We do not use the name "russian", only "cyrillic", as it is
-     the common name of this charset, used in other languages
-     than Russian. */
-#define CYRILLIC_CHARSET RUSSIAN_CHARSET
-#define CENTRALEUROPEAN_CHARSET EASTEUROPE_CHARSET
-#define CENTRALEUROPEAN_CHARSET EASTEUROPE_CHARSET
-
+  /* Charset */
   /* charset can be specified even if earlier fields havn't been */
-  if ((fields < 5) && (c=strchr (extname, ':')) && (c=strchr (c+1, ':')) &&
-      (c=strchr (c+1, ':')) && (c=strchr (c+1, ':')))
-    {
-      strncpy (charset, c+1, LF_FACESIZE);
-      charset[LF_FACESIZE-1] = '\0';
-    }
-  else
-    charset[0] = '\0';
-	  
-  if (charset[0] == '\0' || (stricmp (charset, "ansi") == 0) ||
-      (stricmp (charset, "western") == 0))
+  if (fields < 5)
     {
-      logfont.lfCharSet = ANSI_CHARSET;
-      strcpy (charset, "western");
+      if ((c=strchr (extname, ':')) && (c=strchr (c+1, ':')) &&
+	  (c=strchr (c+1, ':')) && (c=strchr (c+1, ':')))
+	{
+	  strncpy (charset, c+1, LF_FACESIZE);
+	  charset[LF_FACESIZE-1] = '\0';
+	}
+      else
+	strcpy (charset, charset_map[0].name);
     }
-  FROB (SYMBOL);
-  FROB (SHIFTJIS);
-  FROB (GB2312);
-  FROB (HANGEUL);
-  FROB (CHINESEBIG5);
-  FROB (JOHAB);
-  FROB (HEBREW);
-  FROB (ARABIC);
-  FROB (GREEK);
-  FROB (TURKISH);
-  FROB (THAI);
-  FROB (EASTEUROPE);
-  FROB (CENTRALEUROPEAN);
-  FROB (CYRILLIC);
-  FROB (MAC);
-  FROB (BALTIC);
-  else if (stricmp (charset, "oem/dos") == 0)
-    logfont.lfCharSet = OEM_CHARSET;
-  else
+
+  for (i=0; i<countof (charset_map); i++)
+    if (!stricmp (charset, charset_map[i].name))
+      {
+	logfont.lfCharSet = charset_map[i].value;
+	break;
+      }
+
+  if (i == countof (charset_map))	/* No matching charset */
     {
-      maybe_signal_simple_error ("Invalid charset", f->name, Qfont, errb);
+      maybe_signal_simple_error ("Invalid charset", name, Qfont, errb);
       return 0;
     }
 
-#undef FROB
+  /* Misc crud */
+  logfont.lfEscapement = logfont.lfOrientation = 0;
+#if 1
+  logfont.lfOutPrecision = OUT_DEFAULT_PRECIS;
+  logfont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
+  logfont.lfQuality = DEFAULT_QUALITY;
+#else
+  logfont.lfOutPrecision = OUT_STROKE_PRECIS;
+  logfont.lfClipPrecision = CLIP_STROKE_PRECIS;
+  logfont.lfQuality = PROOF_QUALITY;
+#endif
+  /* Default to monospaced if the specified fontname doesn't exist. */
+  logfont.lfPitchAndFamily = FF_MODERN;
 
   /* Windows will silently substitute a default font if the fontname 
    * specifies a non-existent font. So we check the font against the device's
-   * list of font patterns to make sure that at least one of them matches */
+   * list of font patterns to make sure that at least one of them matches. */
   {
     struct mswindows_font_enum *fontlist;
     char truename[MSW_FONTSIZE];
@@ -1223,58 +1370,37 @@
       }
     if (!done)
       {
-	maybe_signal_simple_error ("No matching font", f->name, Qfont, errb);
+	maybe_signal_simple_error ("No matching font", name, Qfont, errb);
 	return 0;
       }
   }
 
-  /* Misc crud */
-  logfont.lfEscapement = logfont.lfOrientation = 0;
-#if 1
-  logfont.lfOutPrecision = OUT_DEFAULT_PRECIS;
-  logfont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
-  logfont.lfQuality = DEFAULT_QUALITY;
-#else
-  logfont.lfOutPrecision = OUT_STROKE_PRECIS;
-  logfont.lfClipPrecision = CLIP_STROKE_PRECIS;
-  logfont.lfQuality = PROOF_QUALITY;
-#endif
-  /* Default to monospaced if the specified fontname doesn't exist.
-   * The match_font calls above should mean that this can't happen. */
-  logfont.lfPitchAndFamily = FF_MODERN;
-
   if ((f->data = CreateFontIndirect(&logfont)) == NULL)
   {
-    maybe_signal_simple_error ("Couldn't create font", f->name, Qfont, errb);
+    maybe_signal_simple_error ("Couldn't create font", name, Qfont, errb);
     return 0;
   }
 
-  {
-    HDC hdc;
-    HFONT holdfont;
-    TEXTMETRIC metrics;
-
-    hdc = CreateCompatibleDC (NULL);
-    if (hdc)
-      {
-	holdfont = SelectObject(hdc, f->data);
-	if (holdfont)
-	  {
-	    GetTextMetrics (hdc, &metrics);
-	    SelectObject(hdc, holdfont);
-	    DeleteDC (hdc);
-	    f->width = (unsigned short) metrics.tmAveCharWidth;
-	    f->height = (unsigned short) metrics.tmHeight;
-	    f->ascent = (unsigned short) metrics.tmAscent;
-	    f->descent = (unsigned short) metrics.tmDescent;
-	    f->proportional_p = (metrics.tmPitchAndFamily & TMPF_FIXED_PITCH);
-	    return 1;
-	  }
-	DeleteDC (hdc);
-      }
-    mswindows_finalize_font_instance (f);
-    maybe_signal_simple_error ("Couldn't map font", f->name, Qfont, errb);
-  }
+  hdc = CreateCompatibleDC (NULL);
+  if (hdc)
+    {
+      holdfont = SelectObject(hdc, f->data);
+      if (holdfont)
+	{
+	  GetTextMetrics (hdc, &metrics);
+	  SelectObject(hdc, holdfont);
+	  DeleteDC (hdc);
+	  f->width = (unsigned short) metrics.tmAveCharWidth;
+	  f->height = (unsigned short) metrics.tmHeight;
+	  f->ascent = (unsigned short) metrics.tmAscent;
+	  f->descent = (unsigned short) metrics.tmDescent;
+	  f->proportional_p = (metrics.tmPitchAndFamily & TMPF_FIXED_PITCH);
+	  return 1;
+	}
+      DeleteDC (hdc);
+    }
+  mswindows_finalize_font_instance (f);
+  maybe_signal_simple_error ("Couldn't map font", name, Qfont, errb);
   return 0;
 }
 
--- a/src/process-nt.c	Mon Aug 13 10:44:47 2007 +0200
+++ b/src/process-nt.c	Mon Aug 13 10:45:36 2007 +0200
@@ -39,6 +39,9 @@
 #include <winsock.h>
 #endif
 
+/* Arbitrary size limit for code fragments passed to run_in_other_process */
+#define FRAGMENT_CODE_SIZE 32
+
 /* Bound by winnt.el */
 Lisp_Object Qnt_quote_process_args;
 
@@ -143,8 +146,8 @@
 
 /*
  * Run ROUTINE in the context of process determined by H_PROCESS. The
- * routine is passed the address of DATA as parameter. CODE_END is the 
- * address immediately after ROUTINE's code. DATA_SIZE is the size of
+ * routine is passed the address of DATA as parameter. The ROUTINE must
+ * not be longer than ROUTINE_CODE_SIZE bytes. DATA_SIZE is the size of
  * DATA structure.
  *
  * Note that the code must be positionally independent, and compiled
@@ -157,11 +160,11 @@
  */
 static DWORD
 run_in_other_process (HANDLE h_process,
-		      LPTHREAD_START_ROUTINE routine, LPVOID code_end,
+		      LPTHREAD_START_ROUTINE routine,
 		      LPVOID data, size_t data_size)
 {
   process_memory pm;
-  size_t code_size = (LPBYTE)code_end - (LPBYTE)routine;
+  CONST size_t code_size = FRAGMENT_CODE_SIZE;
   /* Need at most 3 extra bytes of memory, for data alignment */
   size_t total_size = code_size + data_size + 3;
   LPVOID remote_data;
@@ -223,6 +226,11 @@
  * SIGKILL, SIGTERM, SIGQUIT, SIGHUP - These four translate to ExitProcess
  *    executed by the remote process
  * SIGINT - The remote process is sent CTRL_BREAK_EVENT
+ *
+ * The MSVC5.0 compiler feels free to re-order functions within a
+ * compilation unit, so we have no way of finding out the size of the
+ * following functions. Therefore these functions must not be larger than
+ * FRAGMENT_CODE_SIZE.
  */
 
 /*
@@ -240,12 +248,6 @@
   return 1;
 }
 
-/* Watermark in code space */
-static void
-sigkill_code_end (void)
-{
-}
-
 /*
  * Sending break or control c
  */
@@ -261,12 +263,6 @@
   return (*data->adr_GenerateConsoleCtrlEvent) (data->event, 0);
 }
 
-/* Watermark in code space */
-static void
-sigint_code_end (void)
-{
-}
-
 /*
  * Enabling signals
  */
@@ -282,12 +278,6 @@
   return 1;
 }
 
-/* Watermark in code space */
-static void
-sig_enable_code_end (void)
-{
-}
-
 /*
  * Send signal SIGNO to process H_PROCESS.
  * Return nonzero if successful.
@@ -316,8 +306,7 @@
 	sigkill_data d;
 	d.adr_ExitProcess = GetProcAddress (h_kernel, "ExitProcess");
 	assert (d.adr_ExitProcess);
-	retval = run_in_other_process (h_process,
-				       sigkill_proc, sigkill_code_end,
+	retval = run_in_other_process (h_process, sigkill_proc,
 				       &d, sizeof (d));
 	break;
       }
@@ -328,8 +317,7 @@
 	  GetProcAddress (h_kernel, "GenerateConsoleCtrlEvent");
 	assert (d.adr_GenerateConsoleCtrlEvent);
 	d.event = CTRL_C_EVENT;
-	retval = run_in_other_process (h_process,
-				       sigint_proc, sigint_code_end,
+	retval = run_in_other_process (h_process, sigint_proc,
 				       &d, sizeof (d));
 	break;
       }
@@ -353,8 +341,7 @@
   d.adr_SetConsoleCtrlHandler =
     GetProcAddress (h_kernel, "SetConsoleCtrlHandler");
   assert (d.adr_SetConsoleCtrlHandler);
-  run_in_other_process (h_process,
-			sig_enable_proc, sig_enable_code_end,
+  run_in_other_process (h_process, sig_enable_proc,
 			&d, sizeof (d));
 }
   
--- a/src/redisplay.c	Mon Aug 13 10:44:47 2007 +0200
+++ b/src/redisplay.c	Mon Aug 13 10:45:36 2007 +0200
@@ -5066,7 +5066,10 @@
          temporary change to the echo area. */
       && !(MINI_WINDOW_P (w) && f->buffers_changed)
       && !f->frame_changed
-      && !truncation_changed)
+      && !truncation_changed
+      /* check whether start is really at the begining of a line  GE */
+      && (!w->start_at_line_beg || beginning_of_line_p (b, startp))
+      )
     {
       /* Check if the cursor has actually moved. */
       if (EQ (Fmarker_buffer (w->last_point[CURRENT_DISP]), w->buffer)
--- a/src/regex.c	Mon Aug 13 10:44:47 2007 +0200
+++ b/src/regex.c	Mon Aug 13 10:45:36 2007 +0200
@@ -4857,8 +4857,16 @@
                   highest_active_reg = NO_HIGHEST_ACTIVE_REG;
                 }
               else
-                highest_active_reg = r;
-            }
+		{
+		  highest_active_reg = r;
+
+		  /* 98/9/21 jhod:  We've also gotta set lowest_active_reg, don't we? */
+		  r = 1;
+		  while (r < highest_active_reg && !IS_ACTIVE(reg_info[r]))
+		    r++;
+		  lowest_active_reg = r;
+		}
+	    }
 
           /* If just failed to match something this time around with a
              group that's operated on by a repetition operator, try to
--- a/src/s/cygwin32.h	Mon Aug 13 10:44:47 2007 +0200
+++ b/src/s/cygwin32.h	Mon Aug 13 10:45:36 2007 +0200
@@ -71,15 +71,21 @@
 /* cheesy way to determine cygwin version */
 #ifndef NOT_C_CODE
 #include <signal.h>
+#ifdef HAVE_CYGWIN32_VERSION_H
+#include <cygwin32/version.h>
+#else
 #ifdef SIGIO
 #define CYGWIN_B19
 #else
 #define BROKEN_CYGWIN
 #endif
+#endif
+
 extern void cygwin32_win32_to_posix_path_list(const char*, char*);
 extern int cygwin32_win32_to_posix_path_list_buf_size(const char*);
 extern void cygwin32_posix_to_win32_path_list(const char*, char*);
 extern int cygwin32_posix_to_win32_path_list_buf_size(const char*);
+#ifndef CYGWIN_DLL_VERSION_MAJOR
 struct timeval;
 struct timezone;
 struct itimerval;
@@ -102,6 +108,14 @@
 
 extern int srandom( unsigned seed);
 extern long random();
+
+#define SND_ASYNC		1
+#define SND_NODEFAULT		2
+#define SND_MEMORY		4
+#define SND_FILENAME		0x2000L
+#define VK_APPS			0x5D
+#define SIF_TRACKPOS	0x0010
+#endif
 #endif
 
 #ifdef HAVE_MS_WINDOWS
@@ -117,12 +131,10 @@
 #define LIBS_SYSTEM -lwinmm
 
 #define ICC_BAR_CLASSES 4
-#define SIF_TRACKPOS	0x0010
 #define FW_BLACK	FW_HEAVY
 #define FW_ULTRABOLD	FW_EXTRABOLD
 #define FW_DEMIBOLD	FW_SEMIBOLD
 #define FW_ULTRALIGHT	FW_EXTRALIGHT
-#define VK_APPS			0x5D
 #define APPCMD_FILTERINITS	0x20L
 #define CBF_FAIL_SELFCONNECTIONS 0x1000
 #define CBF_SKIP_ALLNOTIFICATIONS	0x3C0000
@@ -130,10 +142,6 @@
 #define CBF_FAIL_POKES		0x10000
 #define CBF_FAIL_REQUESTS	0x20000
 #define SZDDESYS_TOPIC		"System"
-#define SND_ASYNC		1
-#define SND_NODEFAULT		2
-#define SND_MEMORY		4
-#define SND_FILENAME		0x2000L
 #define JOHAB_CHARSET 		130
 #define MAC_CHARSET 		77
 
--- a/src/s/freebsd.h	Mon Aug 13 10:44:47 2007 +0200
+++ b/src/s/freebsd.h	Mon Aug 13 10:45:36 2007 +0200
@@ -49,6 +49,20 @@
 
 #define LIBS_TERMCAP "-ltermcap"
 
+#ifdef __ELF__ /* since from 3.0-CURRENT(maybe 19980831 or later) */
+#ifndef NOT_C_CODE
+#include <stddef.h>
+#endif
+#define LD_SWITCH_SYSTEM
+#define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o
+#define UNEXEC unexelf.o
+#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtend.o /usr/lib/crtn.o
+#define LINKER "$(CC) -nostdlib"
+#undef LIB_GCC
+#define LIB_GCC
+
+#else /* not __ELF__ */
+
 #ifndef NO_SHARED_LIBS
 #if 0 /* mrb */
 #define LIB_GCC "-lgcc"
@@ -79,6 +93,8 @@
 #endif /* __FreeBSD__ */
 #endif /* NO_SHARED_LIBS */
 
+#endif /* not __ELF__ */
+
 #define HAVE_GETLOADAVG
 /* #define NO_TERMIO */ /* detected in configure */
 #define DECLARE_GETPWUID_WITH_UID_T
--- a/src/unexelf.c	Mon Aug 13 10:44:47 2007 +0200
+++ b/src/unexelf.c	Mon Aug 13 10:45:36 2007 +0200
@@ -866,7 +866,9 @@
 
       for (; symp < symendp; symp ++)
 	if (strcmp ((char *) (symnames + symp->st_name), "_end") == 0
-	    || strcmp ((char *) (symnames + symp->st_name), "_edata") == 0)
+	    || strcmp ((char *) (symnames + symp->st_name), "end") == 0
+	    || strcmp ((char *) (symnames + symp->st_name), "_edata") == 0
+	    || strcmp ((char *) (symnames + symp->st_name), "edata") == 0)
 	  memcpy (&symp->st_value, &new_bss_addr, sizeof (new_bss_addr));
     }
 
--- a/src/window.c	Mon Aug 13 10:44:47 2007 +0200
+++ b/src/window.c	Mon Aug 13 10:45:36 2007 +0200
@@ -1633,7 +1633,9 @@
   CHECK_INT_COERCE_MARKER (pos);
   set_marker_restricted (w->start[CURRENT_DISP], pos, w->buffer);
   /* this is not right, but much easier than doing what is right. */
-  w->start_at_line_beg = 0;
+  /* w->start_at_line_beg = 0; */
+  /* WTF is the above supposed to mean?  GE */
+  w->start_at_line_beg = beginning_of_line_p (XBUFFER (w->buffer), XINT (pos));
   if (NILP (noforce))
     w->force_start = 1;
   w->redo_modeline = 1;
@@ -3163,7 +3165,9 @@
 			 make_int (XBUFFER (buffer)->last_window_start),
 			 buffer);
   Fset_marker (w->sb_point, w->start[CURRENT_DISP], buffer);
-  w->start_at_line_beg = 0;
+  /* set start_at_line_beg correctly. GE */
+  w->start_at_line_beg = beginning_of_line_p (XBUFFER (buffer),
+					      XBUFFER (buffer)->last_window_start);  
   w->force_start = 0;           /* Lucid fix */
   SET_LAST_MODIFIED (w, 1);
   SET_LAST_FACECHANGE (w);
--- a/version.sh	Mon Aug 13 10:44:47 2007 +0200
+++ b/version.sh	Mon Aug 13 10:45:36 2007 +0200
@@ -2,7 +2,7 @@
 emacs_major_version=21
 emacs_minor_version=0
 emacs_beta_version=
-xemacs_codename="Norwegian"
+xemacs_codename="Poitou"
 infodock_major_version=4
 infodock_minor_version=0
-infodock_build_version=4
+infodock_build_version=5