changeset 118:7d55a9ba150c r20-1b11

Import from CVS: tag r20-1b11
author cvs
date Mon, 13 Aug 2007 09:24:17 +0200
parents 578fd4947a72
children d101af7320b8
files CHANGES-beta ChangeLog Makefile.in configure configure.in etc/auctex/style/amsart.el etc/auctex/style/amsbook.el etc/auctex/style/amstex.el etc/auctex/style/article.el etc/auctex/style/book.el etc/auctex/style/dinbrief.el etc/auctex/style/dk.el etc/auctex/style/dutch.el etc/auctex/style/epsf.el etc/auctex/style/foils.el etc/auctex/style/german.el etc/auctex/style/harvard.el etc/auctex/style/j-article.el etc/auctex/style/j-book.el etc/auctex/style/j-report.el etc/auctex/style/jarticle.el etc/auctex/style/jbook.el etc/auctex/style/jreport.el etc/auctex/style/latexinfo.el etc/auctex/style/letter.el etc/auctex/style/plfonts.el etc/auctex/style/plhb.el etc/auctex/style/psfig.el etc/auctex/style/report.el etc/auctex/style/slides.el etc/auctex/style/swedish.el etc/auctex/style/virtex.el etc/dmoore.xpm.Z etc/dmoorem.xpm.Z etc/frame-icon/tree.xbm etc/gnats/xemacs.org etc/mine/1_16_flat_sel.gif etc/mine/2_16_flat_sel.gif etc/mine/3_16_flat_sel.gif etc/mine/4_16_flat_sel.gif etc/mine/5_16_flat_sel.gif etc/mine/6_16_flat_sel.gif etc/mine/7_16_flat_sel.gif etc/mine/8_16_flat_sel.gif etc/mine/empty_16_flat_sel.gif etc/mine/empty_16_up.gif etc/mine/empty_16_up_sel.gif etc/mine/flagged_16_up.gif etc/mine/flagged_16_up_sel.gif etc/mine/new_down.gif etc/mine/new_up.gif etc/mine/quit_down.gif etc/mine/quit_up.gif etc/spook.lines etc/vm/document-colorful.xpm etc/vm/document-simple.xpm etc/vm/film-colorful.xpm etc/vm/film-simple.xpm etc/vm/gear-colorful.xpm etc/vm/gear-simple.xpm etc/vm/message-colorful.xpm etc/vm/message-simple.xpm etc/vm/stuffed_box-colorful.xpm etc/vm/stuffed_box-simple.xpm etc/w3/stylesheet lib-src/ChangeLog lib-src/Makefile.in.in lib-src/movemail.c lib-src/pop.c lib-src/pop.h lib-src/send-pr lisp/ChangeLog lisp/auctex/ChangeLog lisp/auctex/Makefile lisp/auctex/style/amsart.el lisp/auctex/style/amsbook.el lisp/auctex/style/amstex.el lisp/auctex/style/article.el lisp/auctex/style/book.el lisp/auctex/style/dinbrief.el lisp/auctex/style/dk.el lisp/auctex/style/dutch.el lisp/auctex/style/epsf.el lisp/auctex/style/foils.el lisp/auctex/style/german.el lisp/auctex/style/harvard.el lisp/auctex/style/j-article.el lisp/auctex/style/j-book.el lisp/auctex/style/j-report.el lisp/auctex/style/jarticle.el lisp/auctex/style/jbook.el lisp/auctex/style/jreport.el lisp/auctex/style/latexinfo.el lisp/auctex/style/letter.el lisp/auctex/style/plfonts.el lisp/auctex/style/plhb.el lisp/auctex/style/psfig.el lisp/auctex/style/report.el lisp/auctex/style/slides.el lisp/auctex/style/swedish.el lisp/auctex/style/virtex.el lisp/auctex/tex.el lisp/bytecomp/bytecomp.el lisp/calendar/appt.el lisp/custom/ChangeLog lisp/custom/cus-edit.el lisp/custom/cus-face.el lisp/custom/custom.el lisp/custom/wid-browse.el lisp/custom/wid-edit.el lisp/custom/widget-example.el lisp/custom/widget.el lisp/efs/Makefile lisp/efs/default-dir.el lisp/efs/dired.el lisp/efs/efs-auto.el lisp/efs/efs-dired.el lisp/efs/efs-dump.el lisp/efs/efs-fnh.el lisp/efs/efs.el lisp/egg/egg-kinsoku.el lisp/egg/egg-wnn-client.el lisp/games/xmine.el lisp/gnats/send-pr.el lisp/gnus/ChangeLog lisp/gnus/gnus-art.el lisp/gnus/gnus-ems.el lisp/gnus/gnus-group.el lisp/gnus/gnus-msg.el lisp/gnus/gnus-score.el lisp/gnus/gnus-start.el lisp/gnus/gnus-sum.el lisp/gnus/gnus-topic.el lisp/gnus/gnus-undo.el lisp/gnus/gnus-util.el lisp/gnus/gnus-xmas.el lisp/gnus/gnus.el lisp/gnus/message.el lisp/gnus/nnbabyl.el lisp/gnus/nnfolder.el lisp/gnus/nnmbox.el lisp/gnus/nnmh.el lisp/gnus/nnml.el lisp/modes/cc-mode.el lisp/mule/canna.el lisp/mule/kinsoku.el lisp/packages/supercite.el lisp/packages/time.el lisp/packages/webster-ucb.el lisp/packages/webster-www.el lisp/packages/webster.el lisp/prim/about.el lisp/prim/auto-autoloads.el lisp/prim/cmdloop.el lisp/prim/custom-load.el lisp/prim/faces.el lisp/prim/help.el lisp/prim/process.el lisp/prim/winnt.el lisp/tl/tl-num.el lisp/utils/edmacro.el lisp/utils/finder-inf.el lisp/utils/finder.el lisp/version.el lisp/vm/Makefile lisp/vm/vm-autoload.el lisp/vm/vm-digest.el lisp/vm/vm-folder.el lisp/vm/vm-menu.el lisp/vm/vm-mime.el lisp/vm/vm-misc.el lisp/vm/vm-page.el lisp/vm/vm-sort.el lisp/vm/vm-startup.el lisp/vm/vm-summary.el lisp/vm/vm-toolbar.el lisp/vm/vm-vars.el lisp/vm/vm-version.el lisp/vm/vm-window.el lisp/w3/ChangeLog lisp/w3/FAQ lisp/w3/Makefile lisp/w3/css.el lisp/w3/custom-check lisp/w3/font.el lisp/w3/mm.el lisp/w3/ssl.el lisp/w3/url-cache.el lisp/w3/url-gw.el lisp/w3/url-http.el lisp/w3/url-vars.el lisp/w3/url.el lisp/w3/w3-auto.el lisp/w3/w3-display.el lisp/w3/w3-e19.el lisp/w3/w3-forms.el lisp/w3/w3-parse.el lisp/w3/w3-print.el lisp/w3/w3-vars.el lisp/w3/w3-xemac.el lisp/w3/w3.el lwlib/lwlib.c man/Makefile man/custom.texi man/gnus.texi man/internals/Makefile man/message.texi man/w3.texi man/widget.texi nt/ChangeLog nt/config.h nt/inc/arpa/inet.h nt/inc/netdb.h nt/inc/netinet/in.h nt/inc/pwd.h nt/inc/sys/dir.h nt/inc/sys/file.h nt/inc/sys/ioctl.h nt/inc/sys/param.h nt/inc/sys/socket.h nt/inc/sys/time.h nt/inc/unistd.h nt/xemacs.mak src/ChangeLog src/Makefile.in.in src/alloc.c src/alloca.c src/config.h.in src/dired.c src/fns.c src/inline.c src/lread.c src/md5.c src/puresize.h src/s/decosf4.0-static.h
diffstat 235 files changed, 10500 insertions(+), 7412 deletions(-) [+]
line wrap: on
line diff
--- a/CHANGES-beta	Mon Aug 13 09:23:08 2007 +0200
+++ b/CHANGES-beta	Mon Aug 13 09:24:17 2007 +0200
@@ -1,4 +1,25 @@
 							-*- indented-text -*-
+to 20.1 beta11
+-- Move lisp/auctex/style/*.el to etc/auctex/style/.
+-- regenerated finder database (every lisp file should have a Keywords: line)
+-- VM-6.23
+-- dired-1.15-x4
+-- time-1.13
+-- xmine-1.2
+-- More MS Windows NT patches Courtesy of Marc Paquette
+-- webster-www.el Courtesy of Tomasz Cholewo
+-- webster.el, webster-ucb.el removed from distribution
+-- movemail imported from Emacs 19.34 (With POP/Hesiod/Kerberos support)
+-- Custom-1.69
+-- miscellaneous bug fixes
+-- W3-3.0.79
+-- Gnus-5.4.40
+-- GNATS/send-pr fixes, should work now
+-- edmacro-3.07
+-- configure fixes
+-- cc-mode-4.390
+-- restore inline.c
+
 to 20.1 beta10
 -- custom-1.68 [Beyond 19.15]
 -- W3-3.0.75
--- a/ChangeLog	Mon Aug 13 09:23:08 2007 +0200
+++ b/ChangeLog	Mon Aug 13 09:24:17 2007 +0200
@@ -1,3 +1,26 @@
+Sat Apr  5 09:11:36 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+	* XEmacs 20.1-b11 is released.
+
+Wed Apr  2 15:27:35 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+	* Makefile.in (install-only): New target.  Functionality suggested 
+	by Larry Schwimmer, correct way of doing it suggested by Chuck
+	Thompson.
+
+	* configure.in: Default to "-Olimit 2000" as suggested by Jamie
+	Zawinski for SGI cc and Irix 6.
+
+Tue Apr  1 12:23:13 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+	* configure.in: Add configuration parameters for Emacs 19.34
+	movemail.c (--with-pop, --with-kerberos, --with-hesiod).
+
+Fri Mar 28 19:58:41 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+	* configure.in: Remove garbage if [ ... ] constructs and a
+	mispatch.
+
 Thu Mar 27 18:24:19 1997  Steven L Baur  <steve@altair.xemacs.org>
 
 	* XEmacs 20.1-b10 is released.
--- a/Makefile.in	Mon Aug 13 09:23:08 2007 +0200
+++ b/Makefile.in	Mon Aug 13 09:24:17 2007 +0200
@@ -20,7 +20,8 @@
 # Boston, MA 02111-1307, USA.
 
 # make all	to compile and build XEmacs.
-# make install	to install it.
+# make install	to build and install it.
+# make install-only	to install after a previous complete build
 # make TAGS	to update tags tables.
 #
 # make clean  or  make mostlyclean
@@ -351,6 +352,8 @@
 ## inconsistency in the build process.  So we go ahead and depend on
 ## all.  --cet
 
+install-only: ${MAKE_SUBDIR} install-arch-dep install-arch-indep
+
 install: all install-arch-dep install-arch-indep;
 
 install-arch-dep: mkdir
--- a/configure	Mon Aug 13 09:23:08 2007 +0200
+++ b/configure	Mon Aug 13 09:24:17 2007 +0200
@@ -262,6 +262,9 @@
 			to run.
 --usage-tracking	Enable some Sun-internal code.  If you don't
 			know what this is, you don't want it.
+--with-pop		support POP for mail retrieval
+--with-kerberos		support Kerberos-authenticated POP
+--with-hesiod		support Hesiod to get the POP server host
 
 Internationalization options:
 
@@ -420,6 +423,9 @@
 	with_energize	| \
 	with_sparcworks | \
 	with_tooltalk   | \
+	with_pop	| \
+	with_kerberos	| \
+	with_hesiod	| \
 	external_widget | \
 	extra_verbose   | \
 	const_is_losing | \
@@ -1293,7 +1299,9 @@
   ## Iris 4D
   mips-sgi-irix3.*      ) machine=iris4d opsys=irix3-3 ;;
   mips-sgi-irix4.*      ) machine=iris4d opsys=irix4-0 ;;
-  mips-sgi-irix6*       ) machine=iris4d opsys=irix6-0 ;;
+  mips-sgi-irix6*       ) machine=iris4d
+			opsys=irix6-0
+			NON_GNU_CC="cc -Olimit 2000" ;;
   mips-sgi-irix5.[3-9]* ) machine=iris4d opsys=irix5-3 ;;
   mips-sgi-irix5.2*     ) machine=iris4d opsys=irix5-2 ;;
   mips-sgi-irix5.1*     ) machine=iris4d opsys=irix5-1 ;;
@@ -1517,7 +1525,7 @@
   esac
 elif test "${dynamic}" = "no" ; then
   case "${opsys}" in
-    sol2* | decosf1-3 | decosf3-* | linux ) opsys="${opsys}-static" ;;
+    sol2* | decosf1-3 | decosf3-* | decosf4-* | linux ) opsys="${opsys}-static" ;;
   esac
 fi
 
@@ -2688,7 +2696,7 @@
     # In the IRIX 5.3 ld, only the last -rpath arg has any effect.  This is 
     # fundamentaly incompatible with having separate LD_SWITCH_X_SITE
     # and LD_SWITCH_SITE variables.  Fortunately, SGI fixed this by 6.2.
-    if [ -n "${x_libraries}" ] || [ -n "${site_runtime_libraries}" ]; then
+    if test -n "${x_libraries}" || test -n "${site_runtime_libraries}" ; then
       (echo "WARNING: The IRIX 5 ld ignores all but the last -rpath argument,";
        echo "         so if you need to specify more than one additional";
        echo "         runtime library directory, you will have to do so";
@@ -2880,11 +2888,11 @@
 CPP=`eval "echo $CPP"`
 eval `${CPP} -Isrc ${tempcname} \
        | grep 'configure___' \
-       | sed -n -e 's/^configure___ \(^=*=\)\(.*\)$/\1"\2"/p'`
+       | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'`
 if test "x$SPECIFIED_CFLAGS" = x ; then
   eval `${CPP} -Isrc -DTHIS_IS_CONFIGURE ${tempcname} \
 	 | grep 'configure___' \
-	 | sed -n -e 's/^configure___ \(^=*=\)\(.*\)$/\1"\2"/p'`
+	 | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'`
 else
   REAL_CFLAGS="$CFLAGS"
 fi
@@ -2916,7 +2924,7 @@
 
 #### Add the libraries to LIBS and check for some functions.
 
-]
+
 CPPFLAGS="${C_SWITCH_SITE} $c_switch_system $c_switch_machine $c_switch_x_system $CPPFLAGS"
 DEFS="${C_SWITCH_SITE} $c_switch_system $c_switch_machine $c_switch_x_system $DEFS"
 LIBS="${LD_SWITCH_SITE} $ld_switch_x_system $libsrc_libs $LIBS"
@@ -5881,7 +5889,7 @@
     case "${arg}" in
 	-L*) if test -f `echo "${arg}/libtt.a" | sed 's/^\-L//'` ; then
 		 dash_r=''
-		 if  "${add_runtime_flag}" = "yes" ; then
+		 if test "${add_runtime_flag}" = "yes" ; then
 		     dash_r=`echo ${arg} | sed "s/^-L */${runtime_arg}/"`
 		 fi
 		 LD_SWITCH_X_SITE="${LD_SWITCH_X_SITE} ${arg} ${dash_r}"
@@ -6849,6 +6857,42 @@
 "
 }
 
+test "${with_pop}" = yes && 
+{
+test -n "$verbose" && \
+echo "	defining MAIL_USE_POP"
+echo "#define" MAIL_USE_POP "1" >> confdefs.h
+DEFS="$DEFS -DMAIL_USE_POP=1"
+ac_sed_defs="${ac_sed_defs}\${ac_dA}MAIL_USE_POP\${ac_dB}MAIL_USE_POP\${ac_dC}1\${ac_dD}
+\${ac_uA}MAIL_USE_POP\${ac_uB}MAIL_USE_POP\${ac_uC}1\${ac_uD}
+\${ac_eA}MAIL_USE_POP\${ac_eB}MAIL_USE_POP\${ac_eC}1\${ac_eD}
+"
+}
+
+test "${with_kerberos}" = yes && 
+{
+test -n "$verbose" && \
+echo "	defining KERBEROS"
+echo "#define" KERBEROS "1" >> confdefs.h
+DEFS="$DEFS -DKERBEROS=1"
+ac_sed_defs="${ac_sed_defs}\${ac_dA}KERBEROS\${ac_dB}KERBEROS\${ac_dC}1\${ac_dD}
+\${ac_uA}KERBEROS\${ac_uB}KERBEROS\${ac_uC}1\${ac_uD}
+\${ac_eA}KERBEROS\${ac_eB}KERBEROS\${ac_eC}1\${ac_eD}
+"
+}
+
+test "${with_hesiod}" = yes && 
+{
+test -n "$verbose" && \
+echo "	defining HESIOD"
+echo "#define" HESIOD "1" >> confdefs.h
+DEFS="$DEFS -DHESIOD=1"
+ac_sed_defs="${ac_sed_defs}\${ac_dA}HESIOD\${ac_dB}HESIOD\${ac_dC}1\${ac_dD}
+\${ac_uA}HESIOD\${ac_uB}HESIOD\${ac_uC}1\${ac_uD}
+\${ac_eA}HESIOD\${ac_eB}HESIOD\${ac_eC}1\${ac_eD}
+"
+}
+
 
 test "${error_check_extents}" = yes && 
 {
@@ -7001,7 +7045,11 @@
 
 
 
-echo "$0 $configure_args" >> Installation
+(
+echo "uname -a: `uname -a`" 
+echo "" 
+echo "$0 $configure_args" 
+) >> Installation
 # Start stdout redirection to '| tee -a Installation'
 (
 echo "
@@ -7030,7 +7078,7 @@
 elif test -n "$site_runtime_libraries"; then
   echo "  Additional libraries:                                   ${site_runtime_libraries}"
 fi
-if test "$with_wnn"; then
+if test "$with_wnn" = yes ; then
   echo "  Finding WNN includes with:                              ${wnn_includes}"
   echo "  Loading WNN libs with:                                  ${wnn_libraries}"
 fi
@@ -7062,7 +7110,7 @@
 test "$with_database_dbm"    = yes && echo "  Compiling in support for DBM."
 test "$with_database_gnudbm" = yes && echo "  Compiling in support for GNU DBM."
 
-test "$with_ncurses"  = yes && echo "  Compiling in support for ncurses."
+test "$have_ncurses"  = yes && echo "  Compiling in support for ncurses."
 test "$with_socks"    = yes && echo "  Compiling in support for SOCKS."
 
 test "$with_mule"     = yes && echo "  Compiling in Mule (multi-lingual) support."
@@ -7094,14 +7142,19 @@
 test "$with_dialogs"    = motif  && echo "  Using the Motif dialog boxes."
 test "$with_dialogs"    = athena && echo "  Using the Athena dialog boxes."
 test "$with_dialogs"    = athena3d && echo "  Using the Athena-3d dialog boxes."
+test "$with_pop"	= yes && "Using POP for mail access"
+test "$with_kerberos"	= yes && "Using Kerberos for POP authentication"
+test "$with_hesiod"	= yes && "Using Hesiod to get POP server host"
 
 test "${use_union_type}"     = yes && echo "  Using the union type for Lisp_Objects."
 test "${debug}"              = yes && echo "  Compiling in extra code for debugging."
 test "${memory_usage_stats}" = yes && echo "  Compiling in code for checking XEmacs memory usage."
 test "$usage_tracking"       = yes && echo "  Compiling with usage tracking active (Sun internal)."
+echo ""
 ) | tee -a Installation
-echo " | tee -a Installation
-"
+echo 'The above configure report is appended to "Installation" file.'
+echo ""
+
 
  
 # Remove any trailing slashes in these variables.
--- a/configure.in	Mon Aug 13 09:23:08 2007 +0200
+++ b/configure.in	Mon Aug 13 09:24:17 2007 +0200
@@ -278,6 +278,9 @@
 			to run.
 --usage-tracking	Enable some Sun-internal code.  If you don't
 			know what this is, you don't want it.
+--with-pop		support POP for mail retrieval
+--with-kerberos		support Kerberos-authenticated POP
+--with-hesiod		support Hesiod to get the POP server host
 
 Internationalization options:
 
@@ -436,6 +439,9 @@
 	with_energize	| \
 	with_sparcworks | \
 	with_tooltalk   | \
+	with_pop	| \
+	with_kerberos	| \
+	with_hesiod	| \
 	external_widget | \
 	extra_verbose   | \
 	const_is_losing | \
@@ -1299,7 +1305,9 @@
   ## Iris 4D
   mips-sgi-irix3.*      ) machine=iris4d opsys=irix3-3 ;;
   mips-sgi-irix4.*      ) machine=iris4d opsys=irix4-0 ;;
-  mips-sgi-irix6*       ) machine=iris4d opsys=irix6-0 ;;
+  mips-sgi-irix6*       ) machine=iris4d
+			opsys=irix6-0
+			NON_GNU_CC="cc -Olimit 2000" ;;
   mips-sgi-irix5.[3-9]* ) machine=iris4d opsys=irix5-3 ;;
   mips-sgi-irix5.2*     ) machine=iris4d opsys=irix5-2 ;;
   mips-sgi-irix5.1*     ) machine=iris4d opsys=irix5-1 ;;
@@ -1523,7 +1531,7 @@
   esac
 elif test "${dynamic}" = "no" ; then
   case "${opsys}" in
-    sol2* | decosf1-3 | decosf3-* | linux ) opsys="${opsys}-static" ;;
+    sol2* | decosf1-3 | decosf3-* | decosf4-* | linux ) opsys="${opsys}-static" ;;
   esac
 fi
 
@@ -1878,7 +1886,7 @@
     # In the IRIX 5.3 ld, only the last -rpath arg has any effect.  This is 
     # fundamentaly incompatible with having separate LD_SWITCH_X_SITE
     # and LD_SWITCH_SITE variables.  Fortunately, SGI fixed this by 6.2.
-    if [ -n "${x_libraries}" ] || [ -n "${site_runtime_libraries}" ]; then
+    if test -n "${x_libraries}" || test -n "${site_runtime_libraries}" ; then
       (echo "WARNING: The IRIX 5 ld ignores all but the last -rpath argument,";
        echo "         so if you need to specify more than one additional";
        echo "         runtime library directory, you will have to do so";
@@ -1899,7 +1907,7 @@
 esac
 
 if test -n "${x_libraries}" ; then
-    if test "${add_runtime_flag}" = "yes" ]; then
+    if test "${add_runtime_flag}" = "yes" ; then
 	LD_SWITCH_X_SITE="-L${x_libraries} ${runtime_arg}${x_libraries}"
   else
     LD_SWITCH_X_SITE="-L${x_libraries}"
@@ -2991,7 +2999,7 @@
     case "${arg}" in
 	-L*) if test -f `echo "${arg}/libtt.a" | sed 's/^\-L//'` ; then
 		 dash_r=''
-		 if [ "${add_runtime_flag}" = "yes" ]; then
+		 if test "${add_runtime_flag}" = "yes" ; then
 		     dash_r=`echo ${arg} | sed "s/^-L */${runtime_arg}/"`
 		 fi
 		 LD_SWITCH_X_SITE="${LD_SWITCH_X_SITE} ${arg} ${dash_r}"
@@ -3180,6 +3188,9 @@
 IF_YES_AC_DEFINE(debug,          DEBUG_XEMACS)
 IF_YES_AC_DEFINE(quantify,       QUANTIFY)
 IF_YES_AC_DEFINE(memory_usage_stats, MEMORY_USAGE_STATS)
+IF_YES_AC_DEFINE(with_pop,	 MAIL_USE_POP)
+IF_YES_AC_DEFINE(with_kerberos,	 KERBEROS)
+IF_YES_AC_DEFINE(with_hesiod,	 HESIOD)
 
 IF_YES_AC_DEFINE(error_check_extents,   ERROR_CHECK_EXTENTS)
 IF_YES_AC_DEFINE(error_check_typecheck, ERROR_CHECK_TYPECHECK)
@@ -3203,7 +3214,11 @@
 dnl #                     Report on what we decided to do                      #
 dnl ############################################################################
 
-echo "$0 $configure_args" >> Installation
+(
+echo "uname -a: `uname -a`" 
+echo "" 
+echo "$0 $configure_args" 
+) >> Installation
 # Start stdout redirection to '| tee -a Installation'
 (
 echo "
@@ -3232,7 +3247,7 @@
 elif test -n "$site_runtime_libraries"; then
   echo "  Additional libraries:                                   ${site_runtime_libraries}"
 fi
-if test "$with_wnn"; then
+if test "$with_wnn" = yes ; then
   echo "  Finding WNN includes with:                              ${wnn_includes}"
   echo "  Loading WNN libs with:                                  ${wnn_libraries}"
 fi
@@ -3264,7 +3279,7 @@
 test "$with_database_dbm"    = yes && echo "  Compiling in support for DBM."
 test "$with_database_gnudbm" = yes && echo "  Compiling in support for GNU DBM."
 
-test "$with_ncurses"  = yes && echo "  Compiling in support for ncurses."
+test "$have_ncurses"  = yes && echo "  Compiling in support for ncurses."
 test "$with_socks"    = yes && echo "  Compiling in support for SOCKS."
 
 test "$with_mule"     = yes && echo "  Compiling in Mule (multi-lingual) support."
@@ -3296,14 +3311,19 @@
 test "$with_dialogs"    = motif  && echo "  Using the Motif dialog boxes."
 test "$with_dialogs"    = athena && echo "  Using the Athena dialog boxes."
 test "$with_dialogs"    = athena3d && echo "  Using the Athena-3d dialog boxes."
+test "$with_pop"	= yes && "Using POP for mail access"
+test "$with_kerberos"	= yes && "Using Kerberos for POP authentication"
+test "$with_hesiod"	= yes && "Using Hesiod to get POP server host"
 
 test "${use_union_type}"     = yes && echo "  Using the union type for Lisp_Objects."
 test "${debug}"              = yes && echo "  Compiling in extra code for debugging."
 test "${memory_usage_stats}" = yes && echo "  Compiling in code for checking XEmacs memory usage."
 test "$usage_tracking"       = yes && echo "  Compiling with usage tracking active (Sun internal)."
+echo ""
 ) | tee -a Installation
-echo " | tee -a Installation
-"
+echo 'The above configure report is appended to "Installation" file.'
+echo ""
+
 dnl ############################################################################
 dnl #                                Now generate!                             #
 dnl ############################################################################
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/amsart.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,10 @@
+;;; amsart.el --- AMS article style hook.
+
+;;; Code:
+
+(TeX-add-style-hook "amsart"
+ (function
+  (lambda ()
+    (TeX-run-style-hooks "amstex"))))
+
+;;; amsart.el ends here.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/amsbook.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,10 @@
+;;; amsbook.el --- AMS book style hook.
+
+;;; Code:
+
+(TeX-add-style-hook "amsbook"
+ (function
+  (lambda ()
+    (TeX-run-style-hooks "amstex"))))
+
+;;; amsbook.el ends here.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/amstex.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,11 @@
+;;; amstex.el --- AMS LaTeX support.
+
+;;; Code:
+
+(TeX-add-style-hook "amstex"
+ (function
+  (lambda ()
+    (TeX-add-symbols
+     '("eqref" TeX-arg-label)))))
+
+;;; amstex.el ends here.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/article.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,11 @@
+;;; article.el - Special code for article style.
+
+;; $Id: article.el,v 1.1 1997/04/05 17:56:45 steve Exp $
+
+;;; Code:
+
+(TeX-add-style-hook "article"
+ (function (lambda ()
+  (setq LaTeX-largest-level (LaTeX-section-level "section")))))
+
+;;; article.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/book.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,11 @@
+;;; book.el - Special code for book style.
+
+;; $Id: book.el,v 1.1 1997/04/05 17:56:45 steve Exp $
+
+;;; Code:
+
+(TeX-add-style-hook "book"
+ (function (lambda () 
+  (setq LaTeX-largest-level (LaTeX-section-level "chapter")))))
+
+;;; book.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/dinbrief.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,163 @@
+;;; dinbrief.el - Special code for LaTeX-Style dinbrief.
+
+;; Contributed by Werner Fink <tex@itap.physik.uni-stuttgart.de>
+;; Please direct comments to him.
+
+;;; Commentary:
+
+;; LaTeX-Style: dinbrief.sty
+;;      Server: rusinfo.rus.uni-stuttgart.de
+;;   Directory: /pub/soft/tex/macros/latex/contrib/letters
+
+;;; Code:
+
+(TeX-add-style-hook "dinbrief"
+ (function
+  (lambda ()
+    (LaTeX-add-environments
+     '("letter" LaTeX-recipient-hook))
+    (TeX-add-symbols
+     '("Absender" "Absender: ")
+     '("Postvermerk" "Postvermerk: ")
+     '("Datum" "Datum: ")
+     '("Betreff" "Betreff: ")
+     '("Behandlungsvermerk" "Behandlungsvermerk: ")
+     '("Verteiler" "Verteiler: ")
+     "makelabel" "Retourlabel"
+     '("Anlagen" "Anlagen: ")
+     '("Fenster" "Fenster \(ja/nein\): ")
+     '("Retouradresse" "Retouradresse: ")
+     '("signature" "Unterschrift: ")
+     '("opening" "Anrede: ")
+     '("closing" "Schlu\"s: ")))))
+
+(defun LaTeX-recipient-hook (environment)
+  "Insert ENVIRONMENT and prompt for recipient and address."
+  (let ((sender (read-input "Absender: " (user-full-name)))
+	(recipient (read-input "Empf\"anger: "))
+	(address (read-input "Anschrift: "))
+	(postvermerk (read-input "Postvermerk: "))
+	(date (read-input "Datum: " (LaTeX-today)))
+	(betreff (read-input "Betreff: "))
+	(vermerk (read-input "Behandlungsvermerk: "))
+	(verteil (read-input "Verteiler: "))
+	(anlage (read-input "Anlagen: "))
+	(opening (read-input "Anrede: "))
+	(closing (read-input "Schlu\"s: "))
+	(fenster (read-input "Fenster \(ja/nein\): "))
+	(signature (read-input "Unterschrift: "))
+	)
+
+    (if (not (zerop (length sender)))
+	(progn
+	  (insert TeX-esc "Absender" TeX-grop sender TeX-grcl)
+	  (newline-and-indent)))
+    (if (not (zerop (length postvermerk)))
+	(progn
+	  (insert TeX-esc "Postvermerk" TeX-grop postvermerk TeX-grcl)
+	  (newline-and-indent)))
+    (if (not (zerop (length betreff)))
+	(progn
+	  (insert TeX-esc "Betreff" TeX-grop betreff TeX-grcl)
+	  (newline-and-indent)))
+    (if (not (zerop (length vermerk)))
+	(progn
+	  (insert TeX-esc "Behandlungsvermerk" TeX-grop vermerk TeX-grcl)
+	  (newline-and-indent)))
+    (if (not (zerop (length verteil)))
+	(progn
+	  (insert TeX-esc "Verteiler" TeX-grop verteil TeX-grcl)
+	  (newline-and-indent)))
+    (if (not (zerop (length anlage)))
+	(progn
+	  (insert TeX-esc "Anlagen" TeX-grop anlage TeX-grcl)
+	  (newline-and-indent)))
+    (if (string= fenster "ja")
+	(progn
+	  (insert TeX-esc "Fenster")
+	  (let ((retouradr (read-input "Retouradresse: " (user-full-name))))
+	    (newline-and-indent)
+	  (if (not (zerop (length retouradr)))
+	      (progn
+		(insert TeX-esc "Retouradresse" TeX-grop retouradr TeX-grcl)
+		(newline-and-indent))))))
+    (if (not (zerop (length signature)))
+	(progn
+	  (insert TeX-esc "signature" TeX-grop signature TeX-grcl)
+	  (newline-and-indent)))
+    (if (not (zerop (length date)))
+	(progn
+	  (insert TeX-esc "Datum" TeX-grop date TeX-grcl)
+	  (newline-and-indent)))
+    (newline-and-indent)
+
+    (let ((indentation (current-column)))
+      (LaTeX-insert-environment
+       environment
+       (concat TeX-grop recipient
+	       (if (not (zerop (length address)))
+		   (concat
+		    (if (not (zerop (length recipient)))
+			(concat " " TeX-esc TeX-esc " "))
+		    address))
+	       TeX-grcl))
+      (save-excursion			; Fix indentation of address
+	(if (search-backward TeX-grcl nil 'move)
+	    (let ((addr-end (point-marker)))
+	      (if (search-backward TeX-grop nil 'move)
+		  (let ((addr-column (current-column)))
+		    (while (search-forward
+			    (concat TeX-esc TeX-esc)
+			    (marker-position addr-end) 'move)
+		      (progn
+			(newline)
+			(indent-to addr-column))))))))
+      (insert "\n")
+      (indent-to indentation))
+    (insert TeX-esc "opening"
+	    TeX-grop
+	    (if (zerop (length opening))
+		(concat TeX-esc " ")
+	      opening)
+	    TeX-grcl "\n")
+
+    (indent-relative-maybe)
+    (save-excursion
+      (insert "\n" TeX-esc "closing"
+	      TeX-grop
+	      (if (zerop (length closing))
+		  (concat TeX-esc " ")
+		closing)
+	      TeX-grcl "\n")
+      (indent-relative-maybe))))
+
+(defun LaTeX-today nil
+  "Return a string representing todays date according to flavor."
+  (interactive)
+   (let ((ctime-string (current-time-string))
+	(month-alist '(("Jan" . "Januar")
+		       ("Feb" . "Februar")
+		       ("Mar" . "M\\\"arz")
+		       ("Apr" . "April")
+		       ("May" . "Mai")
+		       ("Jun" . "Juni")
+		       ("Jul" . "Juli")
+		       ("Aug" . "August")
+		       ("Sep" . "September")
+		       ("Oct" . "Oktober")
+		       ("Nov" . "November")
+		       ("Dec" . "Dezember"))))
+    (string-match
+     "^\\S-+\\s-+\\(\\S-+\\)\\s-+\\(\\S-+\\)\\s-+\\S-+\\s-+\\(\\S-+\\)"
+     ctime-string)
+    (let ((year (substring ctime-string (match-beginning 3) (match-end 3)))
+	  (month (substring ctime-string (match-beginning 1) (match-end 1)))
+	  (day (substring ctime-string (match-beginning 2) (match-end 2))))
+      (if (assoc month month-alist)
+	  (progn
+	    (setq month (cdr (assoc month month-alist)))
+	    (if (> 2 (length day))
+		(setq day (concat "0" day)))))
+      (format "Stuttgart, den %s. %s %s" day month year))))
+
+;;; dinbrief.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/dk.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,11 @@
+;;; dk.el - Setup AUC TeX for editing Danish text.
+
+;; $Id: dk.el,v 1.1 1997/04/05 17:56:45 steve Exp $
+
+;;; Code:
+
+(TeX-add-style-hook "dk"
+ (function (lambda ()
+   (run-hooks 'TeX-language-dk-hook))))
+
+;;; dk.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/dutch.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,11 @@
+;;; dutch.el - Setup AUC TeX for editing Dutch text.
+
+;; $Id: dutch.el,v 1.1 1997/04/05 17:56:45 steve Exp $
+
+;;; Code:
+
+(TeX-add-style-hook "dutch"
+ (function (lambda ()
+   (run-hooks 'TeX-language-nl-hook))))
+
+;;; dutch.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/epsf.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,96 @@
+;;; epsf.el - Support for the epsf style option.
+
+;; Contributed by Marc Gemis <makke@wins.uia.ac.be>
+
+;;; Code: 
+
+(TeX-add-style-hook "epsf"
+ (function
+  (lambda ()
+    (TeX-add-symbols
+     '("epsfsize" TeX-arg-epsfsize)
+     '("epsffile" TeX-arg-file)
+     '("epsfbox" TeX-arg-file)
+     "epsflly" "epsfury" "testit" "epsfgetlitbb"
+     "epsfnormal" "epsfgetbb" "other" "epsfsetgraph"
+     "PsFragSpecialArgs" "epsfaux" "testit" "epsfgrab"
+     "epsfllx" "epsflly" "epsfury" "epsfverbosetrue"
+     )
+    (LaTeX-add-environments
+     '("epsffig" LaTeX-env-epsffigure)
+     )
+
+    )))
+
+
+(defun LaTeX-env-epsffigure (environment)
+  "Create a `figure'-environment with \\label and \\caption and \\epsfbox
+commands. Eventually a `psfrags'-environment is inserted round the \\epsfbox."
+
+  (let ((float (read-input "Float to: " LaTeX-float))
+	(caption (read-input "Caption: "))
+	(label (read-input "Label: " LaTeX-figure-label))
+        ; gf: ask if there is an psfrag environment needed
+	(psfrag (y-or-n-p "PS fragments: "))
+	(psfile (read-file-name "EPS-file: " "" "" nil))
+	)
+
+    (setq LaTeX-float (if (zerop (length float))
+			  LaTeX-float
+			float))
+
+    (LaTeX-insert-environment "figure"
+			      (concat LaTeX-optop LaTeX-float LaTeX-optcl))
+    (LaTeX-insert-environment "center")
+    (if psfrag
+	(progn
+	  (LaTeX-insert-environment "psfrags")
+	  (newline-and-indent)
+	  ))
+    (if (or (zerop (length label))
+	    (and (string= "figure" environment)
+		 (equal LaTeX-figure-label label))
+	    )
+	()
+      (newline-and-indent)
+      (insert TeX-esc "label" TeX-grop label TeX-grcl)
+      (end-of-line 0)
+      (LaTeX-indent-line))
+
+
+    (newline-and-indent)
+    (insert TeX-esc "leavevmode")
+    (newline-and-indent)
+    (insert TeX-esc "epsfbox" TeX-grop psfile TeX-grcl)
+    (if (zerop (length caption))
+	()
+      (newline-and-indent)
+      (insert TeX-esc "caption" TeX-grop caption TeX-grcl))
+    (newline)
+    (forward-line 4)
+    (newline)
+
+))
+
+(defun TeX-arg-epsfsize (optional &optional prompt definition)
+  "Create a line that print epsf figures at a certain percentage"
+  (interactive)
+  (let ((scale (read-input "Scale (%): "))
+	)
+    (setq scalestr (if (zerop (length scale))
+		       "75"
+		     (format "%s" scale)
+		     ))
+    (save-excursion
+      ; append #1#{scale#1}
+      (insert "#1#2" TeX-grop "0." scale "#1" TeX-grcl)
+      ; insert \def before \epsfsize
+      (beginning-of-line 1)
+      (newline)
+      (insert TeX-esc "def")
+      (forward-line -1)
+      (insert "% From now on print figures at " scale "% of original size")
+      )
+    (end-of-line)))
+
+;;; epsf.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/foils.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,47 @@
+;;; foils.el - Special code for FoilTeX.
+
+;; $Id: foils.el,v 1.1 1997/04/05 17:56:45 steve Exp $
+
+;;; Code:
+
+(require 'latex)
+
+(TeX-add-style-hook "foils"
+ (function
+  (lambda ()
+    (add-hook 'LaTeX-document-style-hook 'LaTeX-style-foils)
+    (setq LaTeX-default-style "foils")
+    (setq LaTeX-default-options '("landscape"))
+    (TeX-add-symbols
+     '("foilhead" [ "Rubric-body separation" ] "Foil rubric")))))
+
+(defun LaTeX-style-foils nil
+  "Prompt for and insert foiltex options."
+  (require 'timezone)
+  (let* ((date (timezone-parse-date (current-time-string)))
+	 (year   (string-to-int (aref date 0)))
+	 (month  (string-to-int (aref date 1)))
+	 (day    (string-to-int (aref date 2)))
+	 (title (read-input "Title: ")))
+    (save-excursion
+      (goto-char (point-max))
+      (re-search-backward ".begin.document.")
+      (insert TeX-esc "title"
+	      TeX-grop title TeX-grcl "\n")
+      (insert TeX-esc "author"
+	      TeX-grop (user-full-name) TeX-grcl "\n")
+      (insert TeX-esc "date" TeX-grop
+	      (format "%d-%02d-%02d" year month day)
+	      TeX-grcl "\n")
+      (insert "" TeX-esc "\nMyLogo" TeX-grop TeX-grcl "\n")
+      (insert "%" TeX-esc "Restriction" TeX-grop TeX-grcl "\n")
+      (insert "%" TeX-esc "rightfooter" TeX-grop TeX-grcl "\n")
+      (insert "%" TeX-esc "leftheader" TeX-grop TeX-grcl "\n")
+      (insert "%" TeX-esc "rightheader" TeX-grop TeX-grcl "\n\n")
+      (re-search-forward ".begin.document.")
+      (end-of-line)
+      (newline-and-indent)
+      (insert "" TeX-esc "maketitle\n\n"))
+    (forward-line -1)))
+
+;;; foils.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/german.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,28 @@
+;;; german.el - Setup AUC TeX for editing German text.
+
+;; $Id: german.el,v 1.1 1997/04/05 17:56:46 steve Exp $
+
+;;; Commentary:
+;;
+;; `german.sty' use `"' to give next character an umlaut.
+
+;;; Code:
+
+(defvar LaTeX-german-mode-syntax-table
+  (copy-syntax-table LaTeX-mode-syntax-table)
+  "Syntax table used in LaTeX mode when using `german.sty'.")
+
+(modify-syntax-entry ?\"  "w"  LaTeX-german-mode-syntax-table)
+
+(TeX-add-style-hook "german"
+ (function (lambda ()
+   (set-syntax-table LaTeX-german-mode-syntax-table)
+   (make-local-variable 'TeX-open-quote)
+   (make-local-variable 'TeX-close-quote)
+   (make-local-variable 'TeX-quote-after-quote)
+   (setq TeX-quote-after-quote t)
+   (setq TeX-open-quote "\"`")
+   (setq TeX-close-quote "\"'")
+   (run-hooks 'TeX-language-de-hook))))
+
+;;; german.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/harvard.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,97 @@
+;; harvard.el --- Support for Harvard Citation style package for AUC-TeX
+
+;; Copyright (C) 1994 Berwin Turlach <berwin@core.ucl.ac.be>
+
+;; Version: $Id: harvard.el,v 1.1 1997/04/05 17:56:46 steve Exp $
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 1, or (at your option)
+;; any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, write to the Free Software
+;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;;; Commentary:
+
+;; Harvard citation style is from Peter Williams available on the CTAN
+;; servers
+
+;;; Code:
+
+(require 'latex)
+
+(TeX-add-style-hook "harvard"
+ (function
+  (lambda ()
+
+    (LaTeX-add-environments
+     '("thebibliography" LaTeX-env-harvardbib ignore))
+
+    (TeX-add-symbols
+     "harvardand"
+     '("citeasnoun"
+       (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil)
+       TeX-arg-cite)
+     '("possessivecite"
+       (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil)
+       TeX-arg-cite)
+     '("citeaffixed"
+       (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil)
+       TeX-arg-cite "Affix")
+     '("citeyear"
+       (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil)
+       TeX-arg-cite)
+     '("citename"
+       (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil)
+       TeX-arg-cite)
+     '("citationstyle"
+       (TeX-arg-eval completing-read "Citation style: " '(("agsm") ("dcu"))))
+     '("citationmode"
+       (TeX-arg-eval completing-read "Citation mode: "
+                     '(("full") ("abbr") ("default"))))
+     '("harvardparenthesis"
+       (TeX-arg-eval completing-read "Harvardparenthesis: "
+                     '(("round") ("curly") ("angle") ("square"))))
+     '("bibliographystyle"
+       (TeX-arg-eval
+	completing-read "Bibliography style: "
+        '(("agsm") ("dcu") ("jmr") ("jphysicsB") ("kluwer") ("nederlands")))
+       ignore)
+     '("harvarditem" [ "Short citation" ]
+       "Complete citation" "Year" TeX-arg-define-cite))
+
+    (setq TeX-complete-list
+	  (append '(("\\\\citeasnoun{\\([^{}\n\m\\%]*\\)"
+		     1 LaTeX-bibitem-list "}")
+		    ("\\\\citeyear{\\([^{}\n\m\\%]*\\)"
+		     1 LaTeX-bibitem-list "}")
+		    ("\\\\citename{\\([^{}\n\m\\%]*\\)"
+		     1 LaTeX-bibitem-list "}"))
+		  TeX-complete-list))
+
+    (setq LaTeX-item-list
+	  (cons '("thebibliography" . LaTeX-item-harvardbib)
+		LaTeX-item-list)))))
+
+(defun LaTeX-env-harvardbib (environment &optional ignore)
+  "Insert ENVIRONMENT with label for harvarditem."
+  (LaTeX-insert-environment environment
+			    (concat TeX-grop "xx" TeX-grcl))
+  (end-of-line 0)
+  (delete-char 1)
+  (delete-horizontal-space)
+  (LaTeX-insert-item))
+
+;; Analog to LaTeX-item-bib from latex.el
+(defun LaTeX-item-harvardbib ()
+  "Insert a new harvarditem."
+  (TeX-insert-macro "harvarditem"))
+
+;; harvard.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/j-article.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,11 @@
+;;; j-article.el - Special code for j-article style.
+
+;; $Id: j-article.el,v 1.1 1997/04/05 17:56:46 steve Exp $
+
+;;; Code:
+
+(TeX-add-style-hook "j-article"
+ (function (lambda ()
+  (setq LaTeX-largest-level (LaTeX-section-level "section")))))
+
+;;; j-article.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/j-book.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,11 @@
+;;; j-book.el - Special code for j-book style.
+
+;; $Id: j-book.el,v 1.1 1997/04/05 17:56:46 steve Exp $
+
+;;; Code:
+
+(TeX-add-style-hook "j-book"
+ (function (lambda () (setq LaTeX-largest-level
+			    (LaTeX-section-level "chapter")))))
+
+;;; j-book.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/j-report.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,11 @@
+;;; j-report.el - Special code for j-report style.
+
+;; $Id: j-report.el,v 1.1 1997/04/05 17:56:46 steve Exp $
+
+;;; Code:
+
+(TeX-add-style-hook "j-report"
+ (function (lambda () (setq LaTeX-largest-level
+			    (LaTeX-section-level "chapter")))))
+
+;;; j-report.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/jarticle.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,10 @@
+;;; jarticle.el - Special code for jarticle style.
+
+;; $Id: jarticle.el,v 1.1 1997/04/05 17:56:46 steve Exp $
+
+;;; Code:
+
+(TeX-add-style-hook "jarticle"
+ (function (lambda () (setq LaTeX-largest-level 2))))
+
+;;; jarticle.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/jbook.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,11 @@
+;;; jbook.el - Special code for jbook style.
+
+;; $Id: jbook.el,v 1.1 1997/04/05 17:56:46 steve Exp $
+
+;;; Code:
+
+(TeX-add-style-hook "jbook"
+ (function (lambda () (setq LaTeX-largest-level
+			    (LaTeX-section-level "chapter")))))
+
+;;; jbook.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/jreport.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,12 @@
+;;; jreport.el - Special code for jreport style.
+
+;; $Id: jreport.el,v 1.1 1997/04/05 17:56:47 steve Exp $
+
+;;; Code:
+
+(TeX-add-style-hook "jreport"
+ (function (lambda () (setq LaTeX-largest-level
+			    (LaTeX-section-level "chapter")))))
+
+
+;;; jreport.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/latexinfo.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,183 @@
+;;; latexinfo.el - Support for LaTeXinfo files.
+
+;; Copyright (C) 1993 Marc Gemis <makke@wins.uia.ac.be>
+
+;; Author: Marc Gemis <makke@wins.uia.ac.be>
+;; Version: $Id: latexinfo.el,v 1.1 1997/04/05 17:56:47 steve Exp $
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+;; 
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;; 
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, write to the Free Software
+;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;;; Code:
+
+(require 'latex)
+
+;;; LaTeXinfo mode
+
+(defvar TeX-latexinfo-node-regexp
+  '("\\\\node[ \t]+\\([^,\n\r%]+\\)" 1 TeX-auto-label)
+  "Matches LaTeXinfo \\node commands, only current node will be found.
+We ignore next, previous and up fields.")
+
+(defvar LaTeXinfo-mode nil
+  "Non-nil means LaTeXinfo minor mode is active.")
+  (make-variable-buffer-local 'LaTeXinfo-mode)
+
+(defvar LaTeXinfo-mode-map nil
+  "Keymap containing LaTeXinfo commands.")
+
+(if LaTeXinfo-mode-map
+    ()
+  (setq LaTeXinfo-mode-map (make-sparse-keymap))
+  (define-key LaTeXinfo-mode-map "\C-c\C-u\C-b" 'latexinfo-format-buffer)
+  (define-key LaTeXinfo-mode-map "\C-c\C-u\C-r" 'latexinfo-format-region)
+  (define-key LaTeXinfo-mode-map "\C-c\C-u\C-s" 'latexinfo-show-structure)
+  (define-key LaTeXinfo-mode-map "\C-c\C-ud" 'makke:latexinfo-delete-structure)
+  (define-key LaTeXinfo-mode-map "\C-c\C-ug" 'latexinfo-goto-node)
+  (define-key LaTeXinfo-mode-map "\C-c\C-ui" 'makke:latexinfo-structure))
+
+(or (assq 'LaTeXinfo-mode minor-mode-map-alist)
+    (setq minor-mode-map-alist
+	  (cons (cons 'LaTeXinfo-mode LaTeXinfo-mode-map)
+		minor-mode-map-alist)))
+
+(defun TeX-arg-latexinfo-index (optional &optional prompt)
+  "Prompt for a LaTeXinfo index type with completion."
+  (TeX-argument-insert
+   (completing-read (TeX-argument-prompt optional prompt "Index")
+		    '(("cp") ("vr") ("fn") ("tp") ("pg") ("ky"))
+		    nil t)
+   optional))
+
+(defun LaTeX-item-latexinfo-menu ()
+  "Insert a new menu item"
+  (insert "* ::")
+  (backward-char 2))
+
+(defun latexinfo-goto-node () ; temporarily here, later in latexinfo-upd.el ??
+  "Place pointer on the node given by the user, read node with completion
+This fails when the user types in the label of something else"
+  (interactive)
+  (let ((node-name (completing-read "Goto Node: " (LaTeX-label-list))))
+    (goto-char (point-min))
+    (if (re-search-forward
+	 (concat
+	  TeX-esc "node[ \\t]+" node-name ","
+	  "\\|"
+	  TeX-esc "label{" LaTeX-section-label node-name
+	  "\\|"
+	  TeX-esc "label{" node-name
+	  )
+	 (point-max) t)
+	(beginning-of-line 1)
+    (error "No such node"))))
+
+;;; Hook
+
+(TeX-add-style-hook "latexinfo"
+ (function
+  (lambda ()
+    (require 'latexinfo)
+    (require 'latexinfo-structure)
+
+    (require 'min-map)
+    (setq LaTeXinfo-mode t)
+    
+    (TeX-auto-add-regexp TeX-latexinfo-node-regexp)
+
+    (TeX-add-symbols
+     '("node"
+       (TeX-arg-literal " ")
+       (TeX-arg-free TeX-arg-define-label "Node name")
+       (TeX-arg-literal ", ")
+       (TeX-arg-free TeX-arg-label "Next node")
+       (TeX-arg-literal ", ")
+       (TeX-arg-free TeX-arg-label "Previous node")
+       (TeX-arg-literal ", ")
+       (TeX-arg-free TeX-arg-label "Up node"))
+     '("setfilename" TeX-arg-file)
+
+     '("var" t)
+     '("dfn" t)
+     '("emph" t)
+     '("kbd" t)
+     '("code" t)
+     '("samp" t)
+     '("key" t)
+     '("ctrl" t)
+     '("file" t)
+
+     '("comment"
+       (TeX-arg-literal " ")
+       (TeX-arg-free "Comment"))
+     '("c"
+       (TeX-arg-literal " ")
+       (TeX-arg-free "Comment"))
+
+     '("cindex" t)
+     '("cpsubindex" 2)
+     '("cpindexbold" t)
+
+     '("newindex" TeX-arg-latexinfo-index)
+
+     '("br" nil)
+     '("w" "Text")
+     '("dots" nil)
+     '("refill" nil)
+     '("bullet" nil)
+     '("copyright" nil)
+     '("sp" nil)
+
+     '("xref" TeX-arg-label)
+     '("pxref" TeX-arg-label)
+     '("inforef"
+       (TeX-arg-literal "{")
+       (TeX-arg-free "Name of node")
+       (TeX-arg-literal ", ")
+       (TeX-arg-free "Name for note")
+       (TeX-arg-literal ", ")
+       (TeX-arg-free TeX-arg-file "Info file")
+       (TeX-arg-literal "}")))
+
+    (LaTeX-add-environments "menu" "tex" "ignore" "ifinfo" "iftex"
+			    "example" "same" "display" "format")
+
+    ; Menu's have a special kind of items
+    (make-local-variable 'LaTeX-item-list)
+    (setq LaTeX-item-list (cons '("menu" . LaTeX-item-latexinfo-menu)
+				LaTeX-item-list))
+
+    (make-local-variable 'TeX-font-list)
+    (setq TeX-font-list
+	  (list (list ?\C-b (concat TeX-esc "b{") "}")
+		(list ?\C-c (concat TeX-esc "sc{") "}")
+		(list ?\C-e (concat TeX-esc "emph{") "}")
+		(list ?\C-i (concat TeX-esc "i{") "}")
+		(list ?\C-r (concat TeX-esc "r{") "}")
+		(list ?\C-s (concat TeX-esc "samp{") "}")
+		(list ?\C-t (concat TeX-esc "t{") "}")
+		(list ?s    (concat TeX-esc "strong{") "}")
+		(list ?\C-f (concat TeX-esc "file{") "}")
+		(list ?\C-d (concat TeX-esc "dfn{") "}")
+		(list ?\C-v (concat TeX-esc "var{") "}")
+		(list ?k    (concat TeX-esc "key{") "}")
+		(list ?\C-k (concat TeX-esc "kbd{") "}")
+		(list ?c    (concat TeX-esc "code{") "}")
+		(list ?C    (concat TeX-esc "cite{") "}")))
+
+    ;; need the following stuff to let xref and pxref work
+    (make-local-variable 'LaTeX-section-label)
+    (setq LaTeX-section-label ""))))
+
+;;; latexinfo.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/letter.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,122 @@
+;;; letter.el - Special code for letter style.
+
+;; $Id: letter.el,v 1.1 1997/04/05 17:56:47 steve Exp $
+
+;;; Code:
+
+;; You may want to define this in tex-site.el to contain your
+;; organizations address.  
+(defvar LaTeX-letter-sender-address ""
+  "Initial value when prompting for a sender address in the letter style.")
+
+(TeX-add-style-hook "letter"
+ (function
+  (lambda ()
+    (LaTeX-add-environments
+     '("letter" LaTeX-env-recipient))
+    (TeX-add-symbols
+     '("name" "Sender: ") 
+     '("address" "Sender address: ")
+     '("signature" "Signature: ")
+     '("opening" "Opening: ")
+     '("closing" "Closing: ")))))
+
+(defun LaTeX-env-recipient (environment)
+  "Insert ENVIRONMENT and prompt for recipient and address."
+  (let ((sender (read-input "Sender: " (user-full-name)))
+	(sender-address (read-input "Sender address: "
+				    LaTeX-letter-sender-address))
+	(recipient (read-input "Recipient: "))
+	(address (read-input "Recipient address: "))
+	(signature (read-input "Signature: "))
+	(opening (read-input "Opening: "))
+	(closing (read-input "Closing: "))
+	(date (read-input "Date: " (LaTeX-today))))
+
+    (insert TeX-esc "name" TeX-grop sender TeX-grcl)
+    (newline-and-indent)
+    (if (not (zerop (length sender-address)))
+	(progn
+	  (setq LaTeX-letter-sender-address sender-address)
+	  (insert TeX-esc "address" TeX-grop sender-address TeX-grcl)
+	  (newline-and-indent)))
+    (if (not (zerop (length signature)))
+	(progn
+	  (insert TeX-esc "signature" TeX-grop signature TeX-grcl)
+	  (newline-and-indent)))
+    (if (not (zerop (length date)))
+	(progn
+	  (insert TeX-esc "def" TeX-esc "today" TeX-grop date TeX-grcl)
+	  (newline-and-indent)))
+    (newline-and-indent)
+
+    (let ((indentation (current-column)))
+      (LaTeX-insert-environment
+       environment
+       (concat TeX-grop recipient
+	       (if (not (zerop (length address)))
+		   (concat
+		    (if (not (zerop (length recipient)))
+			(concat " " TeX-esc TeX-esc " "))
+		    address))
+	       TeX-grcl))
+      (save-excursion			; Fix indentation of address
+	(if (search-backward TeX-grcl nil 'move)
+	    (let ((addr-end (point-marker)))
+	      (if (search-backward TeX-grop nil 'move)
+		  (let ((addr-column (current-column)))
+		    (while (search-forward
+			    (concat TeX-esc TeX-esc)
+			    (marker-position addr-end) 'move)
+		      (progn
+			(newline)
+			(indent-to addr-column))))))))
+      (insert "\n")
+      (indent-to indentation))
+    (insert TeX-esc "opening"
+	    TeX-grop
+	    (if (zerop (length opening))
+		(concat TeX-esc " ")
+	      opening)
+	    TeX-grcl "\n")
+
+    (indent-relative-maybe)
+    (save-excursion
+      (insert "\n" TeX-esc "closing"
+	      TeX-grop
+	      (if (zerop (length closing))
+		  (concat TeX-esc " ")
+		closing)
+	      TeX-grcl "\n")
+      (indent-relative-maybe))))
+
+(defun LaTeX-today nil
+  "Return a string representing todays date according to flavor."
+  (interactive)
+  (let ((ctime-string (current-time-string))
+	(month-alist '(("Jan". "01")
+		       ("Feb" . "02")
+		       ("Mar" . "03")
+		       ("Apr" . "04")
+		       ("May" . "05")
+		       ("Jun" . "06")
+		       ("Jul" . "07")
+		       ("Aug" . "08")
+		       ("Sep" . "09")
+		       ("Oct" . "10")
+		       ("Nov" . "11")
+		       ("Dec" . "12"))))
+    (string-match
+     "^\\S-+\\s-+\\(\\S-+\\)\\s-+\\(\\S-+\\)\\s-+\\S-+\\s-+\\(\\S-+\\)"
+     ctime-string)
+    (let ((year (substring ctime-string (match-beginning 3) (match-end 3)))
+	  (month (substring ctime-string (match-beginning 1) (match-end 1)))
+	  (day (substring ctime-string (match-beginning 2) (match-end 2))))
+      (if (assoc month month-alist)
+	  (progn
+	    (setq month (cdr (assoc month month-alist)))
+	    (if (> 2 (length day))
+		(setq day (concat "0" day)))))
+      (format "%s-%s-%s" year month day))))
+
+;;; letter.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/plfonts.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,31 @@
+;;; plfonts.el - Setup AUC TeX for editing Polish text with plfonts.sty
+
+;; $Id: plfonts.el,v 1.1 1997/04/05 17:56:47 steve Exp $
+
+;;; Commentary:
+;;
+;; `plfonts.sty' use `"' to make next character Polish.
+;; `plfonts.sty' <C> L. Holenderski, IIUW, lhol@mimuw.edu.pl
+
+;;; Code:
+
+(defvar LaTeX-plfonts-mode-syntax-table
+  (copy-syntax-table LaTeX-mode-syntax-table)
+  "Syntax table used in LaTeX mode when using `plfonts.sty'.")
+
+(modify-syntax-entry ?\"  "w"  LaTeX-plfonts-mode-syntax-table)
+
+(TeX-add-style-hook "plfonts"
+ (function (lambda ()
+   (set-syntax-table LaTeX-plfonts-mode-syntax-table)
+   (make-local-variable 'TeX-open-quote)
+   (make-local-variable 'TeX-close-quote)
+   (make-local-variable 'TeX-quote-after-quote)
+   (make-local-variable 'TeX-command-default)
+   (setq TeX-open-quote "\"<")
+   (setq TeX-close-quote "\">")
+   (setq TeX-quote-after-quote t)
+   (setq TeX-command-default "plLaTeX")
+   (run-hooks 'TeX-language-pl-hook))))
+
+;;; plfonts.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/plhb.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,31 @@
+;;; plhb.el - Setup AUC TeX for editing Polish text with plhb.sty
+
+;; $Id: plhb.el,v 1.1 1997/04/05 17:56:47 steve Exp $
+
+;;; Commentary:
+;;
+;; `plhb.sty' use `"' to make next character Polish.
+;; `plhb.sty' <C> J. S. Bie\'n, IIUW, jsbien@mimuw.edu.pl
+
+;;; Code:
+
+(defvar LaTeX-plhb-mode-syntax-table
+  (copy-syntax-table LaTeX-mode-syntax-table)
+  "Syntax table used in LaTeX mode when using `plhb.sty'.")
+
+(modify-syntax-entry ?\"  "w"  LaTeX-plhb-mode-syntax-table)
+
+(TeX-add-style-hook "plhb"
+ (function (lambda ()
+   (set-syntax-table LaTeX-plhb-mode-syntax-table)
+   (make-local-variable 'TeX-open-quote)
+   (make-local-variable 'TeX-close-quote)
+   (make-local-variable 'TeX-command-default)
+   (make-local-variable 'TeX-quote-after-quote)
+   (setq TeX-open-quote "\"<")
+   (setq TeX-close-quote "\">")
+   (setq TeX-quote-after-quote t)
+   (setq TeX-command-default "plLaTeX")
+   (run-hooks 'TeX-language-pl-hook))))
+
+;;; plhb.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/psfig.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,79 @@
+;;; psfig.el - Support for the psfig style option.
+
+;; Contributed by Marc Gemis <makke@wins.uia.ac.be>
+;; Please direct comments to him.
+
+;;; Code:
+
+(TeX-add-style-hook "psfig"
+ (function
+  (lambda ()
+	;; probable some of the following symbols may be removed
+    (TeX-add-symbols "protect" "figurepath"  "fbox"
+		     "other" "letter" "other" "then" "Sine" "Cosine"
+		     "psdraft" "psfull" "psscalefirst" "psrotatefirst"
+		     "psnodraftbox" "psdraftbox" "pssilent" "psnoisy"
+		     "minmaxtest"
+     '("psfig" TeX-arg-psfig)
+     '("psfigurepath" t)
+		     )
+    (LaTeX-add-environments
+     '("psfigure" LaTeX-env-psfigure)
+     )
+    )))
+
+(defun TeX-arg-psfig (optional)
+   "Ask for file, width and length. Insert psfig macro"
+   (let ((psfile (read-file-name "PS-file: " "" "" nil))
+	 (figwidth (read-input "Figure width: "))
+	 (figheight (read-input "Figure height: "))
+	 )
+
+     (insert TeX-grop "figure=" psfile)
+     (if (not (zerop (length figwidth)))
+	 (insert ",width=" figwidth))
+     (if (not (zerop (length figheight)))
+	 (insert ",height=" figheight))
+     (insert TeX-grcl)
+     )
+   )
+
+
+(defun LaTeX-env-psfigure (environment)
+  "Create  with \\label and \\caption and \\psfig commands."
+  (let ((float (read-input "Float to: " LaTeX-float))
+	(caption (read-input "Caption: "))
+	(label (read-input "Label: " LaTeX-figure-label))
+        ; gf: ask if this should be centered
+	(psfile (read-file-name "PS-file: " "" "" nil))
+	(figwidth (read-input "Figure width: "))
+	(figheight (read-input "Figure height: "))
+	)
+
+    (setq LaTeX-float (if (zerop (length float))
+			  LaTeX-float
+			float))
+
+    (LaTeX-insert-environment "figure"
+			      (concat LaTeX-optop LaTeX-float LaTeX-optcl))
+
+    (insert TeX-esc "centerline" TeX-grop TeX-esc "psfig" TeX-grop
+	    "figure=" psfile)
+    (if (not (zerop (length figwidth)))
+	(insert ",width=" figwidth))
+    (if (not (zerop (length figheight)))
+	(insert ",height=" figheight))
+    (insert TeX-grcl TeX-grcl)
+    (if (zerop (length caption))
+	()
+      (newline-and-indent)
+      (insert TeX-esc "caption" TeX-grop caption TeX-grcl))
+    (if (or (zerop (length label))
+	    (equal LaTeX-figure-label label))
+	()
+      (newline-and-indent)
+      (insert TeX-esc "label" TeX-grop label TeX-grcl))
+
+    (forward-line 2)))
+
+;;; psfig.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/report.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,11 @@
+;;; report.el - Special code for report style.
+
+;; $Id: report.el,v 1.1 1997/04/05 17:56:47 steve Exp $
+
+;;; Code:
+
+(TeX-add-style-hook "report"
+ (function (lambda () 
+  (setq LaTeX-largest-level (LaTeX-section-level "chapter")))))
+
+;;; report.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/slides.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,52 @@
+;;; slides.el - Special code for slitex.
+;;
+;; $Id: slides.el,v 1.1 1997/04/05 17:56:47 steve Exp $
+
+(require 'latex)
+
+;;; Code:
+
+(TeX-add-style-hook "slides"
+ (function
+  (lambda ()
+    (setq LaTeX-default-style "slides")
+    (add-hook 'LaTeX-document-style-hook 'LaTeX-style-slides)
+    (LaTeX-add-environments '("slide" LaTeX-env-slide)
+			    '("overlay" LaTeX-env-slide))
+    (TeX-run-style-hooks "SLITEX"))))
+
+(defvar LaTeX-slide-color "" 
+  "*Default slide color.")
+
+ (make-variable-buffer-local 'LaTeX-slide-color)
+
+(defun LaTeX-style-slides ()
+  "Prompt for and insert SliTeX options."
+  (let ((slide-file (read-input "Slide file: "))
+	(slide-colors (read-input "Slide colors (comma separetade list): "
+				  "black")))
+    (save-excursion
+      (goto-char (point-min))		; insert before \end{document}
+      (if (re-search-forward ".end.document." (point-max) t)
+	  (beginning-of-line 1))
+      (open-line 2)
+      (indent-relative-maybe)
+      (if (equal slide-colors "black")
+	  (insert TeX-esc "blackandwhite"
+		  TeX-grop slide-file TeX-grcl)
+	(progn
+	  (insert TeX-esc "colors"
+		  TeX-grop slide-colors TeX-grcl)
+	  (newline-and-indent)
+	  (insert TeX-esc "colorslides"
+		  TeX-grop slide-file TeX-grcl))))))
+
+(defun LaTeX-env-slide (environment)
+  "Insert ENVIRONMENT and prompt for slide colors."
+  (setq LaTeX-slide-color
+	(read-input "Slide colors: " LaTeX-slide-color))
+  (LaTeX-insert-environment environment
+			    (concat TeX-grop LaTeX-slide-color TeX-grcl)))
+
+
+;;; slides.el ends here
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/swedish.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,13 @@
+;;; swedish.el - Setup AUC TeX for editing Swedish text.
+
+;; $Id: swedish.el,v 1.1 1997/04/05 17:56:48 steve Exp $
+
+;;; Commentary:
+;;
+;; Apparently the Swedes use ''this style'' quotations.
+
+(TeX-add-style-hook "swedish"
+ (function (lambda ()
+   (make-local-variable 'TeX-open-quote)
+   (setq TeX-open-quote "''")
+   (run-hooks 'TeX-language-sv-hook))))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/auctex/style/virtex.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,83 @@
+;;; virtex.el - Common code for all TeX formats.
+
+;; $Id: virtex.el,v 1.1 1997/04/05 17:56:48 steve Exp $
+
+;;; Code:
+
+(TeX-add-style-hook "virtex"
+ (function
+  (lambda ()
+    (TeX-add-symbols "/" "above" "abovedisplayshortskip"
+		     "abovedisplayskip" "abovewithdelims" "accent"
+		     "adjdemerits" "advance" "afterassignment"
+		     "aftergroup" "atop" "atopwithdelims" "badness"
+		     "baselineskip" "batchmode" "begingroup"
+		     "belowdisplayshortskip" "belowdisplayskip"
+		     "binoppenalty" "botmark" "box" "boxmaxdepth"
+		     "brokenpenalty" "catcode" "char" "chardef"
+		     "cleaders" "closein" "closeout" "clubpenalty"
+		     "copy" "count" "countdef" "cr" "crcr" "csname"
+		     "day" "deadcycles" "def" "defaulthyphenchar"
+		     "defaultskewchar" "delcode" "delimiter"
+		     "delimiterfactor" "delimitershortfall" "dimen"
+		     "dimendef" "discretionary" "displayindent"
+		     "displaylimits" "displaystyle"
+		     "displaywidowpenalty" "displaywidth" "divide"
+		     "doublehyphendemerits" "dp" "dump" "edef" "else"
+		     "emergencystretch" "end" "endcsname" "endgroup"
+		     "endinput" "endlinechar" "eqno" "errhelp"
+		     "errmessage" "errorcontextlines" "errorstopmode"
+		     "escapechar" "everycr" "everydisplay"
+		     "everyhbox" "everyjob" "everymath" "everypar"
+		     "everyvbox" "exhyphenpenalty" "expandafter"
+		     "fam" "fi" "finalhyphendemerits" "firstmark"
+		     "floatingpenalty" "font" "fontdimen" "fontname"
+		     "futurelet" "gdef" "global" "globaldefs"
+		     "halign" "hangafter" "hangindent" "hbadness"
+		     "hbox" "hfil" "hfill" "hfilneg" "hfuzz"
+		     "hoffset" "holdinginserts" "hrule" "hsize"
+		     "hskip" "hss" "ht" "hyphenpenation" "hyphenchar"
+		     "hyphenpenalty" "if" "ifcase" "ifcat" "ifdim"
+		     "ifeof" "iffalse" "ifhbox" "ifinner" "ifhmode"
+		     "ifmmode" "ifnum" "ifodd" "iftrue" "ifvbox"
+		     "ifvoid" "ifx" "ignorespaces" "immediate"
+		     "indent" "input" "inputlineno" "insert"
+		     "insertpenalties" "interlinepenalty" "jobname"
+		     "kern" "language" "lastbox" "lastkern"
+		     "lastpenalty" "lastskip" "lccode" "leaders"
+		     "left" "lefthyphenmin" "leftskip" "leqno" "let"
+		     "limits" "linepenalty" "lineskip"
+		     "lineskiplimit" "long" "looseness" "lower"
+		     "lowercase" "mag" "markaccent" "mathbin"
+		     "mathchar" "mathchardef" "mathchoise"
+		     "mathclose" "mathcode" "mathinner" "mathhop"
+		     "mathopen" "mathord" "mathpunct" "mathrel"
+		     "mathsurround" "maxdeadcycles" "maxdepth"
+		     "meaning" "medmuskip" "message" "mkern" "month"
+		     "moveleft" "moveright" "mskip" "multiply"
+		     "muskip" "muskipdef" "newlinechar" "noalign"
+		     "noboundary" "noexpand" "noindent" "nolimits"
+		     "nonscript" "nonstopmode" "nulldelimiterspace"
+		     "nullfont" "number" "omit" "openin" "openout"
+		     "or" "outer" "output" "outputpenalty"
+		     "overfullrule" "parfillskip" "parindent"
+		     "parskip" "pausing" "postdisplaypenalty"
+		     "predisplaypenalty" "predisplaysize"
+		     "pretolerance" "relpenalty" "rightskip"
+		     "scriptspace" "showboxbreadth" "showboxdepth"
+		     "smallskipamount" "spaceskip" "splitmaxdepth"
+		     "splittopskip" "tabskip" "thickmuskip"
+		     "thinmuskip" "time" "tolerance" "topskip"
+		     "tracingcommands" "tracinglostchars"
+		     "tracingmacros" "tracingonline" "tracingoutput"
+		     "tracingpages" "tracingparagraphs"
+		     "tracingrestores" "tracingstats" "uccode"
+		     "uchyph" "underline" "unhbox" "unhcopy" "unkern"
+		     "unpenalty" "unskip" "unvbox" "unvcopy"
+		     "uppercase" "vadjust" "valign" "vbadness" "vbox"
+		     "vcenter" "vfil" "vfill" "vfilneg" "vfuzz"
+		     "voffset" "vrule" "vsize" "vskip" "vss" "vtop"
+		     "wd" "widowpenalty" "write" "xdef" "xleaders"
+		     "xspaceskip" "year"))))
+
+;;; virtex.el ends here
Binary file etc/dmoore.xpm.Z has changed
Binary file etc/dmoorem.xpm.Z has changed
--- a/etc/frame-icon/tree.xbm	Mon Aug 13 09:23:08 2007 +0200
+++ b/etc/frame-icon/tree.xbm	Mon Aug 13 09:24:17 2007 +0200
@@ -1,6 +1,6 @@
 #define tree_width 64
 #define tree_height 64
-static char tree.bits[] = {
+static char tree_bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/gnats/xemacs.org	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,14 @@
+pending
+auxillary
+configuration
+documentation
+frames
+i18n
+lisp
+menubars
+misc
+performance
+redisplay
+scrollbars
+tooblbars
+test
Binary file etc/mine/1_16_flat_sel.gif has changed
Binary file etc/mine/2_16_flat_sel.gif has changed
Binary file etc/mine/3_16_flat_sel.gif has changed
Binary file etc/mine/4_16_flat_sel.gif has changed
Binary file etc/mine/5_16_flat_sel.gif has changed
Binary file etc/mine/6_16_flat_sel.gif has changed
Binary file etc/mine/7_16_flat_sel.gif has changed
Binary file etc/mine/8_16_flat_sel.gif has changed
Binary file etc/mine/empty_16_flat_sel.gif has changed
Binary file etc/mine/empty_16_up.gif has changed
Binary file etc/mine/empty_16_up_sel.gif has changed
Binary file etc/mine/flagged_16_up.gif has changed
Binary file etc/mine/flagged_16_up_sel.gif has changed
Binary file etc/mine/new_down.gif has changed
Binary file etc/mine/new_up.gif has changed
Binary file etc/mine/quit_down.gif has changed
Binary file etc/mine/quit_up.gif has changed
Binary file etc/spook.lines has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/vm/document-colorful.xpm	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,69 @@
+/* XPM */
+static char *document2[] = {
+/* width height num_colors chars_per_pixel */
+"    24    30       32            1",
+/* colors */
+". c #000000",
+"# c #a4a5a4",
+"a c #9f9f9f",
+"b c #999999",
+"c c #919191",
+"d c #818181",
+"e c #6d6d6d",
+"f c #5d5d5d",
+"g c #494949",
+"h c #eaeaea",
+"i c #373737",
+"j c #e3e4e3",
+"k c #d4d4d4",
+"l c #c8c8c8",
+"m c #0d0d0d",
+"n c #b4b4b4",
+"o c #b0aeb0",
+"p c #aeaeae",
+"q c #aaaaaa s background",
+"r c #888888",
+"s c #767676",
+"t c #646464",
+"u c #545454",
+"v c #ffffff",
+"w c #f6f7f6",
+"x c #efefef",
+"y c #dfdfdf",
+"z c #dad9da",
+"A c #242424",
+"B c #cfcfcf",
+"C c #bfbfbf",
+"D c #b9b9b9",
+/* pixels */
+"qqqqqaetr#qqqqqqqqqqqqqq",
+"qqqq#errefd#qqqqqqqqqqqq",
+"qqq#rzklCqcdsdra#qqqqqqq",
+"qqqrkvvxzkkln#rtfdaqqqqq",
+"qq#dvvvvvvxxzklCqcrdsr#q",
+"qq#rresr#lxvvvvxhzl#tisq",
+"qqqqqdsefgieCxvvvvxiAiiq",
+"qqqqqrCttffuuuernkagtiiq",
+"qqqq#nxvxxcsuetsuigrsitq",
+"qqqqczhzxhzzlC#seffscifq",
+"qqqqrvlyxxzlCCzxxkCaCmrq",
+"qqqq#vvlzqhzvvvklalvciaq",
+"qqqckhlkzzhlCCkhhxvvguqq",
+"qqqrvvxvklalxxxlq#xvmd#q",
+"qqqcvxklkvxvxllkhxvlArqq",
+"qq#Cvvvvvvvvvvvvhxvtgqqq",
+"qqrxxvvvvvvvvvvvvvvAeqqq",
+"qqrvkzhzhxxvvvvvvvkmrqqq",
+"qqqlhvvlCrnkhvvvvvci#qqq",
+"qckxxxhxxkzzllllvvguqqqq",
+"qrvklklxxxhlnlzxvhmrqqqq",
+"qahzvvhCcCnxvxlhvqicqqqq",
+"clxkkqlzhkkklCzvvfg#qqqq",
+"txvvvvxlrzlzvvkvvAeqqqqq",
+"dtalvvvvvvxknzhvlArqqqqq",
+"rgimmgdqhvvvvvvvei#qqqqq",
+"qq#rtiA..i#xvvvvitqqqqqq",
+"qqqqqarsgimmis#Cmrqqqqqq",
+"qqqqqqqqq#ceiA..icqqqqqq",
+"qqqqqqqqqqqq#rdfeqqqqqqq"
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/vm/document-simple.xpm	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,45 @@
+/* XPM */
+static char *noname[] = {
+/* width height ncolors chars_per_pixel */
+"24 30 8 1",
+/* colors */
+"` c #000000",
+"a c #818181",
+"b c #EAEAEA",
+"c c #D4D4D4",
+"d c #AAAAAA s background",
+"e c #545454",
+"f c #FFFFFF",
+"g c #242424",
+/* pixels */
+"ddddddaeaddddddddddddddd",
+"dddddaaaaeaddddddddddddd",
+"ddddacccddaaaaaddddddddd",
+"dddacffbccccddaeeadddddd",
+"dddaffffffbbcccddaaaaadd",
+"dddaaaaadcbffffbbccdegad",
+"dddddaaaeegadbffffbggggd",
+"dddddadeeeeeeeaadcdeeggd",
+"ddddddbfbbaaeaeaegeaaged",
+"ddddacbcbbcccddaaeeaaged",
+"ddddafccbbccddcbbcddd`ad",
+"dddddffccdbcfffccdcfagdd",
+"dddacbccccbcddcbbbffeedd",
+"dddaffbfccdcbbbcddbf`add",
+"dddafbcccfbfbcccbbfcgadd",
+"ddddffffffffffffbbfeeddd",
+"ddabbffffffffffffffgaddd",
+"ddafccbcbbbfffffffc`addd",
+"dddcbffcdadcbfffffagdddd",
+"dacbbbbbbcccccccffeedddd",
+"dafccccbbbbcdccbfb`adddd",
+"ddbcffbdaddbfbcbfdgadddd",
+"acbccdccbccccdcffeeddddd",
+"ebffffbcacccffcffgaddddd",
+"aedcffffffbcdcbfcgaddddd",
+"aeg``eadbfffffffagdddddd",
+"dddaegg``gdbffffgedddddd",
+"ddddddaaeg``gadd`adddddd",
+"ddddddddddaagg``gadddddd",
+"dddddddddddddaaeaddddddd"
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/vm/film-colorful.xpm	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,69 @@
+/* XPM */
+static char *film[] = {
+/* width height num_colors chars_per_pixel */
+"    24    30       32            1",
+/* colors */
+". c #000000",
+"# c #799fa1",
+"a c #060919",
+"b c #411707",
+"c c #8fc7ff",
+"d c #3f4040",
+"e c #873d06",
+"f c #62b1e6",
+"g c #392e26",
+"h c #292a2a",
+"i c #9a9e9f",
+"j c #284367",
+"k c #646666",
+"l c #aacae6",
+"m c #238fc1",
+"n c #182a50",
+"o c #93673e",
+"p c #7f7f80",
+"q c #131516",
+"r c #aaaaaa s background",
+"s c #ddf2fd",
+"t c #6991ac",
+"u c #1c0804",
+"v c #494b4a",
+"w c #948b79",
+"x c #733006",
+"y c #151c34",
+"z c #592009",
+"A c #9f4c05",
+"B c #54585d",
+"C c #376389",
+"D c #231305",
+/* pixels */
+"rrrrrrrrwirrrrrrrrrrrrrr",
+"rrrrpddv..prrrrrrrrrrrrr",
+"rrrpjdkyajjprriiiwiiwirr",
+"rrrnf.pfu.tgri.q....agir",
+"rrktC.dlC.hCpiivqCCjjhBr",
+"rrdcv..lca.tjrrddoBoogdr",
+"rptcj.ulcj.djrrvdAAAAzBr",
+"rBtcj..lcCuapprvgxxxxbdr",
+"rvcfB.alkr..#BrBdDDDDuBr",
+"rdjkt.kB.#..#vrBgnnnhadr",
+"rjq.lCla.kq.BvrBgttmtjhr",
+"rn..llc..Bh.BvrkvAAAAbBr",
+"rh..rjl..Bh.kvrkgAAAAzdr",
+"rn..#tla.pa.pdrBgxxxxbdr",
+"rv..rccq.py.pBrvgzbzbqkr",
+"rjhhlniC.ra.rdrvha.auhBr",
+"rv#lt.Bctc..fBrdgCmCChkr",
+"rvcct.qlc#.utkrhztCtpnBr",
+"rBflC..lcC.nCiidxAAAxdkr",
+"rptcB..lcj.Cvrphbeeezhpr",
+"rrdcC.qlfuutkrkhDbzbqhrr",
+"rrktt.Bcv.Cnrrkq....ddrr",
+"rrihtnrtaaBkrrhnCCCnhBrr",
+"rrrdq#t..avrrpBepppDqwrr",
+"rrrp..BipwrrrvDeeexqdrrr",
+"rrrrh.krrrrrkqDbDbDhkrrr",
+"rrrrp.qrrrrphynnyaudrrrr",
+"rrrrrd.hkpBqhoBkjqdprrrr",
+"rrrrrrv......u.qhhprrrrr",
+"rrrrrrrpvqu..uadpirrrrrr"
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/vm/film-simple.xpm	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,45 @@
+/* XPM */
+static char *noname[] = {
+/* width height ncolors chars_per_pixel */
+"24 30 8 1",
+/* colors */
+"` c #000000",
+"a c #8FC7FF",
+"b c #284367",
+"c c #238FC1",
+"d c #7F7F80",
+"e c #AAAAAA s background",
+"f c #592009",
+"g c #9F4C05",
+/* pixels */
+"eeeeeeeedeeeeeeeeeeeeeee",
+"eeeedbbb``deeeeeeeeeeeee",
+"eeedbbd``bbdeeeeedeedeee",
+"eeeba`da``dfee```````fee",
+"eeddb`bab`fbdeeb`bbbbfbe",
+"eebab``aa``dbeebbgbggfbe",
+"eddab``aab`bbeebbggggfbe",
+"ebdab``aab``ddebffffffbe",
+"ebaab``ade``dbebb`````be",
+"ebbdd`db`d``dbebfbbbf`be",
+"eb``aba``d``bbebfddcdbfe",
+"eb``aaa``bf`bbedbggggfbe",
+"ef``eba``bf`dbedfggggfbe",
+"eb``dda``d``dbebffffffbe",
+"eb``eaa``d``dbebfffff`de",
+"ebffabeb`e``ebebf````fbe",
+"ebdad`bada``abebfbcbbfde",
+"ebaad``aad``ddeffdbddbbe",
+"ebaab``aab`bbeebfgggfbde",
+"eddab``aab`bbedffgggffde",
+"eebab``aa``ddedf`fff`fee",
+"eeddd`bab`bbeed`````bbee",
+"eeefdbed``bdeefbbbbbfbee",
+"eeeb`dd```beedbgddd``dee",
+"eeed``beddeeeb`gggf`beee",
+"eeeef`deeeeed``f`f`fdeee",
+"eeeed``eeeedf`bb```beeee",
+"eeeeeb`fddb`fgbdb`bdeeee",
+"eeeeeeb`````````ffdeeeee",
+"eeeeeeedb``````bdeeeeeee"
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/vm/gear-colorful.xpm	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,279 @@
+/* XPM */
+static char *gear[] = {
+/* width height num_colors chars_per_pixel */
+"    24    30      242            2",
+/* colors */
+".. c #aaaaaa s background",
+"zz c #aaaaaa",
+".# c #8e8e8e",
+".a c #4d4d4d",
+".b c #9f9f9f",
+".c c #888888",
+".d c #848484",
+".e c #838383",
+".f c #828282",
+".g c #484848",
+".h c #303030",
+".i c #131313",
+".j c #141414",
+".k c #707070",
+".l c #777777",
+".m c #2b2b2b",
+".n c #1d1d1d",
+".o c #121212",
+".p c #393939",
+".q c #727272",
+".r c #a0a0a0",
+".s c #8b8b8b",
+".t c #3e3e3e",
+".u c #878787",
+".v c #151515",
+".w c #2d2d2d",
+".x c #8a8a8a",
+".y c #171717",
+".z c #202020",
+".A c #0c0c0c",
+".B c #191919",
+".C c #222222",
+".D c #333333",
+".E c #2f2f2f",
+".F c #353535",
+".G c #cacaca",
+".H c #e9e9e9",
+".I c #5c5c5c",
+".J c #c5c5c5",
+".K c #323232",
+".L c #d9d9d9",
+".M c #f9f9f9",
+".N c #ffffff",
+".O c #fbfbfb",
+".P c #c7c7c7",
+".Q c #1e1e1e",
+".R c #6c6c6c",
+".S c #a7a7a7",
+".T c #242424",
+".U c #1a1a1a",
+".V c #6e6e6e",
+".W c #bababa",
+".X c #efefef",
+".Y c #fefefe",
+".Z c #f6f6f6",
+".0 c #eaeaea",
+".1 c #e8e8e8",
+".2 c #454545",
+".3 c #d3d3d3",
+".4 c #e0e0e0",
+".5 c #f7f7f7",
+".6 c #4f4f4f",
+".7 c #232323",
+".8 c #e4e4e4",
+".9 c #f0f0f0",
+"#. c #e7e7e7",
+"## c #e5e5e5",
+"#a c #bfbfbf",
+"#b c #fcfcfc",
+"#c c #d1d1d1",
+"#d c #d2d2d2",
+"#e c #ececec",
+"#f c #f5f5f5",
+"#g c #111111",
+"#h c #363636",
+"#i c #7f7f7f",
+"#j c #e6e6e6",
+"#k c #e2e2e2",
+"#l c #e1e1e1",
+"#m c #f4f4f4",
+"#n c #cfcfcf",
+"#o c #cdcdcd",
+"#p c #d5d5d5",
+"#q c #1c1c1c",
+"#r c #101010",
+"#s c #919191",
+"#t c #666666",
+"#u c #dfdfdf",
+"#v c #dddddd",
+"#w c #2e2e2e",
+"#x c #dbdbdb",
+"#y c #cecece",
+"#z c #cccccc",
+"#A c #c8c8c8",
+"#B c #c6c6c6",
+"#C c #c3c3c3",
+"#D c #a3a3a3",
+"#E c #1f1f1f",
+"#F c #212121",
+"#G c #a1a1a1",
+"#H c #272727",
+"#I c #565656",
+"#J c #4e4e4e",
+"#K c #b2b2b2",
+"#L c #dedede",
+"#M c #5d5d5d",
+"#N c #6a6a6a",
+"#O c #dadada",
+"#P c #d0d0d0",
+"#Q c #cbcbcb",
+"#R c #c9c9c9",
+"#S c #c4c4c4",
+"#T c #c2c2c2",
+"#U c #c1c1c1",
+"#V c #373737",
+"#W c #0f0f0f",
+"#X c #969696",
+"#Y c #d7d7d7",
+"#Z c #d8d8d8",
+"#0 c #d6d6d6",
+"#1 c #d4d4d4",
+"#2 c #bdbdbd",
+"#3 c #494949",
+"#4 c #181818",
+"#5 c #343434",
+"#6 c #dcdcdc",
+"#7 c #bebebe",
+"#8 c #bcbcbc",
+"#9 c #0e0e0e",
+"a. c #c0c0c0",
+"a# c #bbbbbb",
+"aa c #b8b8b8",
+"ab c #414141",
+"ac c #b6b6b6",
+"ad c #f8f8f8",
+"ae c #b9b9b9",
+"af c #b7b7b7",
+"ag c #b5b5b5",
+"ah c #3d3d3d",
+"ai c #404040",
+"aj c #7b7b7b",
+"ak c #b4b4b4",
+"al c #afafaf",
+"am c #444444",
+"an c #161616",
+"ao c #4b4b4b",
+"ap c #b3b3b3",
+"aq c #b1b1b1",
+"ar c #adadad",
+"as c #ababab",
+"at c #8f8f8f",
+"au c #b0b0b0",
+"av c #aeaeae",
+"aw c #acacac",
+"ax c #a9a9a9",
+"ay c #a6a6a6",
+"az c #a4a4a4",
+"aA c #9d9d9d",
+"aB c #9b9b9b",
+"aC c #a8a8a8",
+"aD c #a5a5a5",
+"aE c #9e9e9e",
+"aF c #9c9c9c",
+"aG c #9a9a9a",
+"aH c #989898",
+"aI c #383838",
+"aJ c #8c8c8c",
+"aK c #959595",
+"aL c #939393",
+"aM c #6d6d6d",
+"aN c #a2a2a2",
+"aO c #999999",
+"aP c #979797",
+"aQ c #949494",
+"aR c #929292",
+"aS c #909090",
+"aT c #8d8d8d",
+"aU c #292929",
+"aV c #858585",
+"aW c #3f3f3f",
+"aX c #474747",
+"aY c #868686",
+"aZ c #525252",
+"a0 c #2c2c2c",
+"a1 c #7a7a7a",
+"a2 c #4c4c4c",
+"a3 c #585858",
+"a4 c #686868",
+"a5 c #7e7e7e",
+"a6 c #898989",
+"a7 c #717171",
+"a8 c #3a3a3a",
+"a9 c #515151",
+"b. c #5a5a5a",
+"b# c #424242",
+"ba c #818181",
+"bb c #050505",
+"bc c #797979",
+"bd c #505050",
+"be c #747474",
+"bf c #808080",
+"bg c #7c7c7c",
+"bh c #2a2a2a",
+"bi c #4a4a4a",
+"bj c #fafafa",
+"bk c #1b1b1b",
+"bl c #767676",
+"bm c #737373",
+"bn c #262626",
+"bo c #f1f1f1",
+"bp c #0d0d0d",
+"bq c #0b0b0b",
+"br c #787878",
+"bs c #757575",
+"bt c #6f6f6f",
+"bu c #434343",
+"bv c #3b3b3b",
+"bw c #5e5e5e",
+"bx c #696969",
+"by c #252525",
+"bz c #5f5f5f",
+"bA c #575757",
+"bB c #282828",
+"bC c #010101",
+"bD c #6b6b6b",
+"bE c #676767",
+"bF c #646464",
+"bG c #636363",
+"bH c #616161",
+"bI c #000000",
+"bJ c #5b5b5b",
+"bK c #464646",
+"bL c #656565",
+"bM c #595959",
+"bN c #3c3c3c",
+"bO c #606060",
+"bP c #555555",
+"bQ c #545454",
+"bR c #626262",
+"bS c #535353",
+"bT c #7d7d7d",
+"bU c #313131",
+/* pixels */
+"................................................",
+"..................aB.I.l.#.a.a.IaB..............",
+".................l.n.i.m.n.i.i.i.i#t............",
+"...............p.i.i#N.i.i.i.i.n.n.a............",
+"...........H.0.z.iab.M.Gab.i.n.i.i#t............",
+".......W.M.0.H.l.i#N.H.3.0#N.i.i.i.m.r...r......",
+"......#K#X.H.4...p...3.G.J.I.i.i.i.i.6ab.z.r....",
+"......#N.m.4.3.3.G.G.J.J.W.z.i.i.i.n.i.i.i.I....",
+".....J.6.r.4.3.G.G.J.W.W#K#X.n.6#t.i.i.i.i.n.#..",
+"..#K.0.0.0.3.G.J.J.W.W#Kzzzz.#.H.#.n.i.i.i.i#t..",
+"...G.H.3.3.G.J.J.W.W#Kzzzz.r.raB#X.6.i.i.i.aaB..",
+"...4.3.G.G.J.J.W#K#Kzzzz.r.raB#X#X#i.n.i.n#i....",
+"..#X.r.G.J.J#K.W#K.raB.r.raB#X.#.#.c.a.n.i.6....",
+"..aB.p.r.J.W#K#KaB.p.m#NaB#X.#.#.c.l.z.i.i.m....",
+"....aBaB.W#K#Kzz#t.n.i.h.#.#.#.c#iab.i.i.i.i#g.I",
+"....#K#K#Kzzzz.r.a.z.a.i#X.c.c#i.l.a.i.i.i.i.i.6",
+"...W.Hzzzz.r.raB.a.I.m.i.l.##i.l.l.I.i.i.i.n.h#t",
+"...J.Gzz.r.raB#X#tab#t.i.Izz.l#N#N#N.a.p.n.h.6#t",
+".....3.r.raB#X#X#N.p.p#g.m#K.l#N#N#t.I.I.h.6ab.l",
+".....3aBaB#X#X.#.c.c.i.i#t.r#N#t#t.I.6.6ababab..",
+".....3.#.c.#.c.c.czz.l.p.J.l#t.I.I.I.6.6.pab....",
+"....#X.a.p#N.c#i#i#i#K.G.c#t.I.I.6.6abab.n.p....",
+"..........#t#i#i.l#N#N#t.I.I.I.6.6ab.m.z.i.naB..",
+"...........J.l#N#N#N#t.I.I.6.6.a.a.h.i.i.i#i....",
+"........#K.r.l#N#N#t.I.I.6.6.aabab.h.i.i.a......",
+"..........#N#t#t#t.I.I.6.6.aabab.p.p.z.p.r......",
+"...........rab.6.m.p.6.6.aab.p.p.h.h.p.r........",
+".............r.I.c.c.p.aab.h.n.n.h.h#X..........",
+"..................aB.mab.p.p.i.i.z.#............",
+"...................r.z.m.m.mab#N................"
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/vm/gear-simple.xpm	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,46 @@
+/* XPM */
+static char *noname[] = {
+/* width height ncolors chars_per_pixel */
+"24 30 9 1",
+/* colors */
+"` c #7F7F7F",
+"a c #393939",
+"b c #111111",
+"c c #AAAAAA s background",
+"C c #AAAAAA",
+"d c #969696",
+"e c #5C5C5C",
+"f c #F9F9F9",
+"g c #D3D3D3",
+/* pixels */
+"cccccccccccccccccccccccc",
+"cccccccccde`deeedccccccc",
+"cccccccc`bbabbbbbecccccc",
+"cccccccabbebbbbbbecccccc",
+"cccccffbbafgabbbbecccccc",
+"ccccfff`befgfebbbacccccc",
+"ccccdfgCaCgggebbbbeabccc",
+"ccceagggggggCbbbbbbbbecc",
+"ccgeCgggggCCCdbeebbbbbdc",
+"ccfffggggCCCCCdfdbbbbbec",
+"cgfgggggCCCCCCCddebbbedc",
+"cggggggCCCCCCCddd`bbb`cc",
+"cdCgggCCCCdCCdddd`ebbecc",
+"cdaCgCCCdaaedddd``bbbacc",
+"ccddCCCCebbaddd``abbbbbe",
+"ccCCCCCCebebd````ebbbbbe",
+"ccfCCCCdeeab`d```ebbbbae",
+"cggCCCddeaebec`eeeeabaee",
+"ccgCCdddeaabac`eeeeeaea`",
+"ccgddddd``bbeCeeeeeeaaac",
+"ccgd`d```C`ag`eeeeeeaacc",
+"ccdeae````Cg`eeeeeaabacc",
+"ccccce```eeeeeeeeaabbbdc",
+"cccccg`eeeeeeeeeeabbb`cc",
+"cccccc`eeeeeeeeaaabbeccc",
+"ccccceeeeeeeeeaaaabacccc",
+"ccccccaeaaeeeaaaaaaccccc",
+"ccccccce``aeaabbaadccccc",
+"cccccccccdaaaabbbdcccccc",
+"ccccccccccbaaaaecccccccc"
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/vm/message-colorful.xpm	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,62 @@
+/* XPM */
+static char *message[] = {
+/* width height num_colors chars_per_pixel */
+"    24    30       25            1",
+/* colors */
+". c #000000",
+"# c #a4a579",
+"a c #9f9c66",
+"b c #918e5d",
+"c c #817f53",
+"d c #6d6b46",
+"e c #5d5b3c",
+"f c #49482f",
+"g c #eae696",
+"h c #373623",
+"i c #d4d088",
+"j c #c8c480",
+"k c #0d0d08",
+"l c #b4b173",
+"m c #aaa76d s background",
+"n c #888657",
+"o c #76744c",
+"p c #646240",
+"q c #545236",
+"r c #fffaa3",
+"s c #efeb99",
+"t c #dfdb8f",
+"u c #bac384",
+"v c #242317",
+"w c #bfbc7a",
+/* pixels */
+"mmmmmadpn#mmmmmmmmmmmmmm",
+"mmmm#dnndec#mmmmmmmmmmmm",
+"mmm#nuijwmbcocna#mmmmmmm",
+"mmmnirrsuiijl#npecammmmm",
+"mm#crrrrrrssuijwmbncon#m",
+"mm#nndon#jsrrrrsguj#phom",
+"mmmmmcodefhdwsrrrrshvhhm",
+"mmmmmnwppeeqqqdnliafphhm",
+"mmmm#lsrssboqdpoqhfnohpm",
+"mmmmbugusguujw#odeeobhem",
+"mmmmnrjtssujwwussiwawknm",
+"mmmm#rrjumgurrrijajrbham",
+"mmmbigjiuugjwwiggsrrfqmm",
+"mmmnrrsrijajsssjm#srkc#m",
+"mmmbrsijirsrsjjigsrjvnmm",
+"mm#wrrrrrrrrrrrrgsrpfmmm",
+"mmnssrrrrrrrrrrrrrrvdmmm",
+"mmnriugugssrrrrrrriknmmm",
+"mmmjgrrjwnligrrrrrbh#mmm",
+"mbisssgssiuujjjjrrfqmmmm",
+"mnrijijsssgjljusrgknmmmm",
+"magurrgwbwlsrsjgrmhbmmmm",
+"bjsiimjugiiijwurref#mmmm",
+"psrrrrsjnujurrirrvdmmmmm",
+"cpajrrrrrrsilugrjvnmmmmm",
+"nfhkkfcmgrrrrrrrdh#mmmmm",
+"mm#nphv..h#srrrrhpmmmmmm",
+"mmmmmanofhkkho#wknmmmmmm",
+"mmmmmmmmm#bdhv..hbmmmmmm",
+"mmmmmmmmmmmm#ncedmmmmmmm"
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/vm/message-simple.xpm	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,45 @@
+/* XPM */
+static char *noname[] = {
+/* width height ncolors chars_per_pixel */
+"24 30 8 1",
+/* colors */
+"` c #000000",
+"a c #817F53",
+"b c #FFFAA3",
+"c c #545236",
+"d c #BFBC7A",
+"e c #AAA76D s background",
+"f c #242317",
+"g c #D4D088",
+/* pixels */
+"eeeeeeacaeeeeeeeeeeeeeee",
+"eeeeeaaaacaeeeeeeeeeeeee",
+"eeeeadgddeaaaaaeeeeeeeee",
+"eeeagbbbdggdeeaccaeeeeee",
+"eeeabbbbbbbbdgddeaaaaaee",
+"eeeaaaaaedbbbbbbbddecfae",
+"eeeeeaaaccfadbbbbbbffffe",
+"eeeeeadcccccccaaegeccffe",
+"eeeeeebbbbaacacacfcaafce",
+"eeeeadbdbbddddeaaccaafce",
+"eeeeabdgbbdddddbbgded`ae",
+"eeeeebbddebdbbbgdedbafee",
+"eeeagbdgddbdddgbbbbbccee",
+"eeeabbbbgdedbbbdeebb`aee",
+"eeeabbgdgbbbbddgbbbdfaee",
+"eeedbbbbbbbbbbbbbbbcceee",
+"eeabbbbbbbbbbbbbbbbfaeee",
+"eeabgdbdbbbbbbbbbbg`aeee",
+"eeedbbbddaegbbbbbbafeeee",
+"eagbbbbbbgddddddbbcceeee",
+"eabgdgdbbbbdeddbbb`aeeee",
+"eebdbbbdadebbbdbbefaeeee",
+"adbggeddbgggdddbbcceeeee",
+"cbbbbbbdadddbbgbbfaeeeee",
+"acedbbbbbbbgedbbdfaeeeee",
+"acf``caebbbbbbbbafeeeeee",
+"eeeacff``febbbbbfceeeeee",
+"eeeeeeaacf``faed`aeeeeee",
+"eeeeeeeeeeaaff``faeeeeee",
+"eeeeeeeeeeeeeaacaeeeeeee"
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/vm/stuffed_box-colorful.xpm	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,291 @@
+/* XPM */
+static char *stuffed_box[] = {
+/* width height num_colors chars_per_pixel */
+"    24    30      254            2",
+/* colors */
+".. c #000000",
+".# c #b1b1b1",
+".a c #242120",
+".b c #505955",
+".c c #491909",
+".d c #3e1608",
+".e c #a9a9a9 s background",
+".f c #eeeef0",
+".g c #a7a7a7",
+".h c #a3411c",
+".i c #663622",
+".j c #5c210b",
+".k c #a83e17",
+".l c #2f2824",
+".m c #9f7b71",
+".n c #d38141",
+".o c #a3a3a3",
+".p c #d27f40",
+".q c #a1a1a1",
+".r c #511c0a",
+".s c #ccc1be",
+".t c #9d9d9d",
+".u c #cd773b",
+".v c #903a13",
+".w c #592a15",
+".x c #1e1d1d",
+".y c #cdcccc",
+".z c #959595",
+".A c #939393",
+".B c #e8ac69",
+".C c #919191",
+".D c #8f8f8f",
+".E c #8d8d8d",
+".F c #240e05",
+".G c #652810",
+".H c #a55f3b",
+".I c #878787",
+".J c #f2f1f0",
+".K c #a0491f",
+".L c #8a4a27",
+".M c #0c0401",
+".N c #efbf80",
+".O c #7d7d7d",
+".P c #3d3531",
+".Q c #2a0b04",
+".R c #7b7b7b",
+".S c #81401e",
+".T c #797979",
+".U c #adacac",
+".V c #904d26",
+".W c #eab071",
+".X c #11132a",
+".Y c #737373",
+".Z c #999695",
+".0 c #ab4119",
+".1 c #d16d31",
+".2 c #b3b8b5",
+".3 c #030305",
+".4 c #212129",
+".5 c #b74c1e",
+".6 c #ca7b41",
+".7 c #696969",
+".8 c #404644",
+".9 c #2d1e17",
+"#. c #656565",
+"## c #8b3417",
+"#a c #dfae7d",
+"#b c #f5eeef",
+"#c c #5e260f",
+"#d c #d58445",
+"#e c #5f5f5f",
+"#f c #763416",
+"#g c #5a200b",
+"#h c #301006",
+"#i c #7a2f10",
+"#j c #edb87a",
+"#k c #4e1b09",
+"#l c #da8e4d",
+"#m c #8b8a8a",
+"#n c #d97435",
+"#o c #d58648",
+"#p c #32160b",
+"#q c #fefefe",
+"#r c #e8ad6b",
+"#s c #020000",
+"#t c #474747",
+"#u c #bfbfc0",
+"#v c #4f505c",
+"#w c #6b280e",
+"#x c #fcdf9c",
+"#y c #e39e5c",
+"#z c #160803",
+"#A c #3f3f3f",
+"#B c #61230e",
+"#C c #140601",
+"#D c #3c0e04",
+"#E c #7e3010",
+"#F c #eaeaea",
+"#G c #a4a3a2",
+"#H c #bb5121",
+"#I c #cd642c",
+"#J c #b94f1f",
+"#K c #cb622a",
+"#L c #333333",
+"#M c #d88747",
+"#N c #110601",
+"#O c #d58344",
+"#P c #070301",
+"#Q c #511e0b",
+"#R c #bf9f84",
+"#S c #d2d2d2",
+"#T c #6f290e",
+"#U c #eed6b2",
+"#V c #c55c27",
+"#W c #441708",
+"#X c #bab8b7",
+"#Y c #e9ae6b",
+"#Z c #823110",
+"#0 c #171717",
+"#1 c #eccba6",
+"#2 c #51200e",
+"#3 c #a33c16",
+"#4 c #983915",
+"#5 c #7f6352",
+"#6 c #eab26f",
+"#7 c #361207",
+"#8 c #bd5222",
+"#9 c #d0672e",
+"a. c #a35326",
+"a# c #da8f52",
+"aa c #aaaaaa",
+"ab c #a8a8a8",
+"ac c #a6a6a6",
+"ad c #a4a4a4",
+"ae c #d38041",
+"af c #303246",
+"ag c #a2a2a2",
+"ah c #b85020",
+"ai c #d17e3f",
+"aj c #521d0b",
+"ak c #a0a0a0",
+"al c #e6a764",
+"am c #d07c3e",
+"an c #cf7a3d",
+"ao c #9e9e9e",
+"ap c #9c9c9c",
+"aq c #c75d28",
+"ar c #1b0a03",
+"as c #d88a49",
+"at c #433f3e",
+"au c #989898",
+"av c #65250d",
+"aw c #969696",
+"ax c #0a0806",
+"ay c #949494",
+"az c #581e0a",
+"aA c #c6c5c5",
+"aB c #909090",
+"aC c #d67d3d",
+"aD c #9ea0a1",
+"aE c #121211",
+"aF c #db7838",
+"aG c #414249",
+"aH c #8a8a8a",
+"aI c #d88c4c",
+"aJ c #b0461b",
+"aK c #28322d",
+"aL c #4f5150",
+"aM c #833613",
+"aN c #848484",
+"aO c #361306",
+"aP c #808080",
+"aQ c #551e0a",
+"aR c #762d10",
+"aS c #837b79",
+"aT c #17110f",
+"aU c #cfcfd4",
+"aV c #943413",
+"aW c #767676",
+"aX c #98534f",
+"aY c #ad461b",
+"aZ c #727272",
+"a0 c #1c1917",
+"a1 c #c06a34",
+"a2 c #6c6c6c",
+"a3 c #722b0f",
+"a4 c #c96029",
+"a5 c #9a9999",
+"a6 c #60616a",
+"a7 c #67240e",
+"a8 c #764a37",
+"a9 c #3b1407",
+"b. c #504e4d",
+"b# c #100601",
+"ba c #e7aa67",
+"bb c #f4e0b9",
+"bc c #d4d6d5",
+"bd c #423028",
+"be c #545454",
+"bf c #d66f32",
+"bg c #c05623",
+"bh c #d36b2f",
+"bi c #d2692e",
+"bj c #4a4a4a",
+"bk c #762e0f",
+"bl c #461d0e",
+"bm c #56150a",
+"bn c #6c290f",
+"bo c #ecb472",
+"bp c #c58859",
+"bq c #404040",
+"br c #5f220c",
+"bs c #3a3a3a",
+"bt c #cd652c",
+"bu c #363636",
+"bv c #e7e7e7",
+"bw c #732c0f",
+"bx c #fee4a1",
+"by c #68270e",
+"bz c #dfdfdf",
+"bA c #7a3819",
+"bB c #2c2c2c",
+"bC c #dbdbdb",
+"bD c #f0ece9",
+"bE c #d48243",
+"bF c #282828",
+"bG c #4e4b4a",
+"bH c #5c5b5b",
+"bI c #988f8c",
+"bJ c #de7c39",
+"bK c #b54c1e",
+"bL c #b44a1d",
+"bM c #b3481c",
+"bN c #342f2d",
+"bO c #220701",
+"bP c #c45b26",
+"bQ c #190802",
+"bR c #c35925",
+"bS c #d56c30",
+"bT c #3f3d3b",
+"bU c #e0803e",
+"bV c #fbfafa",
+"bW c #dd9252",
+"bX c #afb0b6",
+"bY c #772b0f",
+"bZ c #f7f6f6",
+"b0 c #220b04",
+"b1 c #0e0e0e",
+"b2 c #cb763d",
+"b3 c #dd9b5f",
+"b4 c #ad4219",
+"b5 c #fadb99",
+"b6 c #67756f",
+"b7 c #e9e8e8",
+/* pixels */
+".e.e.e.e.e.e.e.e.e.e.e.e.o.e.e.e.e.e.e.e.e.e.e.e",
+".e.e.e.e.e.e.e.e.e.e.e.o.2.Z.m.o.e.e.e.e.o.o.e.e",
+".e.e.e.e.e.e.e.e.e.e.obcbZ.6bp.H.m.o.e.e.e.s.o.o",
+".e.e.e.e.e.e.e.e.e.e.fbZbZbbbc.Nbp.H.map.2.mbZbz",
+".e.e.e.e.e.e.e.e.e.e#RbIbc#b.qbp.W.Bbpa.a8.YaA.7",
+".e.e.e.e.e.e.e.ebIa8.y.sbD#S.Ibe.L.B#rbob3.Lbl.o",
+".e.e.e.e.e.e.o#5a1#abe.y.o.qb.#e.q#U.Nbobob5.w.e",
+".e.e.e.e.ebI.H.n#RbI.q#eaPbdb..o.I#X.N.W.N#lbl.e",
+".e.e.e.oaXa1.nai.Vblb.#..9.x.Rbc#S.i#a.N#daF.d.e",
+".e.e.e.ia1bU.uai.n.6bdbs.3#z.dbI#jal.N#n#n.SaLaA",
+".e.e.e#W#c.Hai.u.6a#.m.3a8aI.H.Hal.N#n.1.Sat#XbI",
+".e.e.e#W.v.j.V.uai.n#l.6bpas#lal#1#n#I.S.vbnaTaN",
+".e.e.e.Q.v.v#w.Ga1.u#d#das#lbW.N#I#I.S#Z.1#Ibl.e",
+".e.e.e.9bO#T.v#Z.j.H.u.n.na#.N.u#V.v.F#Ra#.1.9.U",
+".e.e.e.P#haE.G.v.v.jbA.ua#.N.ubg.haTb.#b#obfbl.e",
+".e.e.A.o#SbHbF#p#T.v#E.Gbpa4#HbnaTaLbIbp#Va.bT.U",
+".e.e.e.IbcaubH#7#7.j.v#i.v.5#E##bY.v.h#V#Hbdak.e",
+".e.e.eb.a8#S.9.G#ibl.d#T##.vaY#H.5.5bgbgblaN.q.e",
+".e.e.eb..Ga8.i#ZbYbY.j.Q.jaY.5.5#H#H.m.w.7.o.e.e",
+".e.e.ebGbYbn#w#i#T#T#T.j#ZaJ.5.5.5.S.y#u.A.o.e.e",
+".e.e.oaL.d#Tbn#T#T#T#w.G#ZaY.5.h.i.Dbz.fbV.y#u.o",
+".e.eapbHaxbObTa2#T#w.G.j#iaYaYb..2aua6.Obzbz#q.2",
+".e.e.o.RaL.a.q.Ube#w.j.jaR.k#4#h#A.o.Dbzau#qbcap",
+".e.eapaN#Aa2.ybv#Xa8#g#g#T.k#Z.PbG#L.o.2.2bZ.A.o",
+".o.I.Aak.fbZbXaZbz#.#gbl#T##bd.IaNbH#L.Obz.2.z.e",
+".Aa2.Rbz.eaAaDaNaU.lax.d.j.9aP.q.e.AbHbsa2aN.o.e",
+"ap.Y#AaA#S.o.DbZ.obebBb1aTaS.o.e.e.o.Ia2.Yap.e.e",
+".o.AbHbeaAaU.faA.I.I.7be.Rak.e.e.e.e.eap.o.e.e.e",
+".e.o.Ibe#A#u.e.R.o.oap.A.o.e.e.e.e.e.e.e.e.e.e.e",
+".e.e.oaNbHbe.R.o.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e"
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/vm/stuffed_box-simple.xpm	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,46 @@
+/* XPM */
+static char *noname[] = {
+/* width height ncolors chars_per_pixel */
+"24 30 9 1",
+/* colors */
+"` c #A9A9A9 s background",
+"- c #A9A9A9",
+"a c #A83E17",
+"b c #030305",
+"c c #DA8E4D",
+"d c #FEFEFE",
+"e c #60616A",
+"f c #423028",
+"g c #FADB99",
+/* pixels */
+"````````````````````````",
+"``````````````e`````````",
+"```````````ddccae```````",
+"``````````dddgdgcae``edd",
+"`````````---dd-ccccafe`e",
+"`````````f--dg-eaccccaf`",
+"```````ecce---ee-ggccgf`",
+"``````ac---eefe---gcgcf`",
+"````acccafeeffedgfcgccf`",
+"```fccccccffbbf-gcgccae`",
+"```ffaccccebfcaacgccaf-`",
+"```fafacccccccccgccaafbe",
+"```baaffcccccccgccaaccf`",
+"```fbfaafaccccgcaab-ccf`",
+"```fbbfaafaccgcaabedccf`",
+"```-gefffaafcaafbe-caaf`",
+"```-d-efffaaaaaaaaaaaf``",
+"```efgffafffaaaaaaaafe``",
+"```efffaaafbfaaaaaefe```",
+"```eaffaffffaaaaaa--````",
+"```effffffffaaaaf-ddd```",
+"```ebbfeffffaaae--eeddd`",
+"```eef--efffaaabf--d-dd`",
+"```efe-d-ffffaafef---d``",
+"```-dd-edefffaf`eefed```",
+"`eed---e-fbfffe```efee``",
+"`ef-g--d-efbbe`````ee```",
+"``ee--d---eee```````````",
+"```ef--e````````````````",
+"```eeee`````````````````"
+};
--- a/etc/w3/stylesheet	Mon Aug 13 09:23:08 2007 +0200
+++ b/etc/w3/stylesheet	Mon Aug 13 09:24:17 2007 +0200
@@ -30,6 +30,8 @@
 **
 **  emacs - only include this chunk if you are using Emacs 19
 ** xemacs - only include this chunk if you are using XEmacs
+**  light - only include this chunk if you are using a light background
+**   dark - only include this chunk if you are using a dark background
 ******************************************************************************/
 
 /*
@@ -70,10 +72,13 @@
 
 @media emacs {
 h1,h2,h3,
-h4,h5,h6  { 
-            text-decoration: underline;
-	    color: blue;
-          }
+h4,h5,h6  { text-decoration: underline; }
+       h1 { color: rgb(0,255,255); }   // cyan
+       h2 { color: rgb(70,130,180); }  // steelblue
+       h3 { color: rgb(106,90,205); }  // slateblue
+       h4 { color: rgb(135,206,235); } // skyblue
+       h5 { color: rgb(0,0,128); }     // navy
+       h6 { color: rgb(173,216,230); } // lightblue
 
 strong,em { color: red         }
       dfn { font-style: italic }
--- a/lib-src/ChangeLog	Mon Aug 13 09:23:08 2007 +0200
+++ b/lib-src/ChangeLog	Mon Aug 13 09:24:17 2007 +0200
@@ -1,3 +1,13 @@
+Tue Apr  1 12:26:53 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+	* Makefile.in.in: Added stuff for updated movemail.c.
+
+Sat Mar 29 16:57:01 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+	* send-pr (GNATS_ADDR): Use xemacs.org as submission address.
+	(DATADIR): Allow for DATADIR to be passed in as an environment
+	variable.
+
 Sun Mar 23 15:57:19 1997  Steven L Baur  <steve@altair.xemacs.org>
 
 	* update-elc.sh (make_special_commands): Use target of x20 for efs.
--- a/lib-src/Makefile.in.in	Mon Aug 13 09:23:08 2007 +0200
+++ b/lib-src/Makefile.in.in	Mon Aug 13 09:24:17 2007 +0200
@@ -122,6 +122,30 @@
 SOURCES = COPYING ChangeLog Makefile.in.in README aixcc.lex emacs.csh \
 	makedoc.com *.[chy] $(SCRIPTS)
 
+# Additional -D flags for movemail (add to MOVE_FLAGS if desired):
+# MAIL_USE_POP		Support mail retrieval from a POP mailbox.
+# MAIL_USE_MMDF		Support MMDF mailboxes.
+# MAIL_USE_FLOCK	Use flock for file locking (see the comments
+#			about locking in movemail.c)
+# MAIL_UNLINK_SPOOL	Unlink the user spool mailbox after reading
+#			it (instead of just emptying it).
+# KERBEROS		Support Kerberized POP.
+# KRB5			Support Kerberos Version 5 pop instead of
+#			Version 4 (define this in addition to
+#			KERBEROS).
+# HESIOD		Support Hesiod lookups of user mailboxes.
+# MAILHOST		A string, the host name of the default POP
+#			mail host for the site.
+MOVE_FLAGS=
+
+# Additional libraries for movemail:
+# For KERBEROS
+# MOVE_LIBS= -lkrb -ldes -lcom_err
+# For KERBEROS + KRB5
+# MOVE_LIBS= -lkrb5 -lcrypto -lisode -lcom_err
+# Add "-lhesiod" if HESIOD is defined.
+MOVE_LIBS=
+
 /* ========================== start of cpp stuff ======================= */
 
 /* From here on, comments must be done in C syntax. (see comment above
@@ -411,8 +435,8 @@
 b2m: ${srcdir}/b2m.c ../src/config.h
 	$(CC) ${ALL_CFLAGS} ${srcdir}/b2m.c $(LOADLIBES) -o b2m 
 
-movemail: ${srcdir}/movemail.c ../src/config.h
-	$(CC) ${ALL_CFLAGS} ${srcdir}/movemail.c $(LOADLIBES) -o movemail
+movemail: ${srcdir}/movemail.c ${srcdir}/pop.c ${srcdir}/pop.h ../src/config.h
+	$(CC) ${ALL_CFLAGS} ${MOVE_FLAGS} ${srcdir}/movemail.c ${srcdir}/pop.c $(LOADLIBES) ${MOVE_LIBS} -o movemail
 
 cvtmail: ${srcdir}/cvtmail.c
 	$(CC) ${ALL_CFLAGS} ${srcdir}/cvtmail.c $(LOADLIBES) -o cvtmail
--- a/lib-src/movemail.c	Mon Aug 13 09:23:08 2007 +0200
+++ b/lib-src/movemail.c	Mon Aug 13 09:24:17 2007 +0200
@@ -1,6 +1,6 @@
 /* movemail foo bar -- move file foo to file bar,
    locking file foo the way /bin/mail respects.
-   Copyright (C) 1986, 1992, 1993, 1994 Free Software Foundation, Inc.
+   Copyright (C) 1986, 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -16,11 +16,9 @@
 
 You should have received a copy of the GNU General Public License
 along with GNU Emacs; see the file COPYING.  If not, write to
-the Free the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.  */
 
-/* Synched up with: FSF 19.28. */
-
 /* Important notice: defining MAIL_USE_FLOCK or MAIL_USE_LOCKF *will
    cause loss of mail* if you do it on a system that does not normally
    use flock as its way of interlocking access to inbox files.  The
@@ -36,7 +34,7 @@
 /*
  * Modified January, 1986 by Michael R. Gretzinger (Project Athena)
  *
- * Added POP (Post Office Protocol) service.  When compiled -DPOP
+ * Added POP (Post Office Protocol) service.  When compiled -DMAIL_USE_POP
  * movemail will accept input filename arguments of the form
  * "po:username".  This will cause movemail to open a connection to
  * a pop server running on $MAILHOST (environment variable).  Movemail
@@ -49,32 +47,52 @@
  * New routines in movemail.c:
  *	get_errmsg - return pointer to system error message
  *
+ * Modified August, 1993 by Jonathan Kamens (OpenVision Technologies)
+ *
+ * Move all of the POP code into a separate file, "pop.c".
+ * Use strerror instead of get_errmsg.
+ *
  */
 
 #define NO_SHORTNAMES   /* Tell config not to load remap.h */
 #include <../src/config.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <time.h> /* for time() */
-#include <stdio.h> /* for printf() */
-#include <string.h> /* strcpy() */
-
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/file.h>
+#include <stdio.h>
 #include <errno.h>
 #include <../src/syswait.h>
+#ifdef MAIL_USE_POP
+#include "pop.h"
+#endif
 
 #ifdef MSDOS
 #undef access
 #endif /* MSDOS */
 
+#ifndef DIRECTORY_SEP
+#define DIRECTORY_SEP '/'
+#endif
+#ifndef IS_DIRECTORY_SEP
+#define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP)
+#endif
+
+#ifdef WINDOWSNT
+#undef access
+#undef unlink
+#define fork() 0
+#define sys_wait(var) (*(var) = 0)
+/* Unfortunately, Samba doesn't seem to properly lock Unix files even
+   though the locking call succeeds (and indeed blocks local access from
+   other NT programs).  If you have direct file access using an NFS
+   client or something other than Samba, the locking call might work
+   properly - make sure it does before you enable this! */
+#define DISABLE_DIRECT_ACCESS
+#endif /* WINDOWSNT */
+
 #ifdef USG
 #include <fcntl.h>
 #include <unistd.h>
-#if defined (sun)
-#include <stdlib.h>
-#endif /* sun */
 #ifndef F_OK
 #define F_OK 0
 #define X_OK 1
@@ -87,7 +105,7 @@
 #include <unistd.h>
 #endif
 
-#ifdef XENIX
+#if defined (XENIX) || defined (WINDOWSNT)
 #include <sys/locking.h>
 #endif
 
@@ -109,25 +127,27 @@
 #undef write
 #undef close
 
-static char *concat (CONST char *s1, CONST char *s2, CONST char *s3);
-static void *xmalloc (unsigned int size);
 #ifndef errno
 extern int errno;
 #endif
+char *strerror ();
 
-static void error (CONST char *s1, CONST char *s2, CONST char *s3);
-static void fatal (CONST char *s1, CONST char *s2);
-static void pfatal_with_name (CONST char *name);
-static void pfatal_and_delete (CONST char *name);
-
-#ifndef HAVE_STRERROR
-char *strerror (int);
-#endif
+void fatal ();
+void error ();
+void pfatal_with_name ();
+void pfatal_and_delete ();
+char *concat ();
+long *xmalloc ();
+int popmail ();
+int pop_retr ();
+int mbx_write ();
+int mbx_delimit_begin ();
+int mbx_delimit_end ();
 
 /* Nonzero means this is name of a lock file to delete on fatal error.  */
 char *delete_lockname;
 
-void
+int
 main (argc, argv)
      int argc;
      char **argv;
@@ -149,7 +169,10 @@
   delete_lockname = 0;
 
   if (argc < 3)
-    fatal ("two arguments required", "");
+    {
+      fprintf (stderr, "Usage: movemail inbox destfile [POP-password]\n");
+      exit(1);
+    }
 
   inname = argv[1];
   outname = argv[2];
@@ -158,17 +181,20 @@
   mmdf_init (argv[0]);
 #endif
 
+  if (*outname == 0)
+    fatal ("Destination file name is empty", 0);
+
   /* Check access to output file.  */
   if (access (outname, F_OK) == 0 && access (outname, W_OK) != 0)
     pfatal_with_name (outname);
 
-  /* Also check that outname's directory is writeable to the real uid.  */
+  /* Also check that outname's directory is writable to the real uid.  */
   {
     char *buf = (char *) xmalloc (strlen (outname) + 1);
     char *p;
     strcpy (buf, outname);
     p = buf + strlen (buf);
-    while (p > buf && p[-1] != '/')
+    while (p > buf && !IS_DIRECTORY_SEP (p[-1]))
       *--p = 0;
     if (p == buf)
       *p++ = '.';
@@ -178,28 +204,26 @@
   }
 
 #ifdef MAIL_USE_POP
-  if (!memcmp (inname, "po:", 3))
+  if (!strncmp (inname, "po:", 3))
     {
-      int status; char *user;
+      int status;
 
-      for (user = &inname[strlen (inname) - 1]; user >= inname; user--)
-	if (*user == ':')
-	  break;
-
-      status = popmail (user, outname);
+      status = popmail (inname + 3, outname, argc > 3 ? argv[3] : NULL);
       exit (status);
     }
 
   setuid (getuid ());
 #endif /* MAIL_USE_POP */
 
+#ifndef DISABLE_DIRECT_ACCESS
+
   /* Check access to input file.  */
   if (access (inname, R_OK | W_OK) != 0)
     pfatal_with_name (inname);
 
 #ifndef MAIL_USE_MMDF
 #ifndef MAIL_USE_SYSTEM_LOCK
-  /* Use a lock file named /usr/spool/mail/$USER.lock:
+  /* Use a lock file named after our first argument with .lock appended:
      If it exists, the mail file is locked.  */
   /* Note: this locking mechanism is *required* by the mailer
      (on systems which use it) to prevent loss of mail.
@@ -208,7 +232,7 @@
      WILL occasionally cause loss of mail due to timing errors!
 
      So, if creation of the lock file fails
-     due to access permission on /usr/spool/mail,
+     due to access permission on the mail spool directory,
      you simply MUST change the permission
      and/or make movemail a setgid program
      so it can create lock files properly.
@@ -226,7 +250,7 @@
   tempname = (char *) xmalloc (strlen (inname) + strlen ("EXXXXXX") + 1);
   strcpy (tempname, inname);
   p = tempname + strlen (tempname);
-  while (p != tempname && p[-1] != '/')
+  while (p != tempname && !IS_DIRECTORY_SEP (p[-1]))
     p--;
   *p = 0;
   strcpy (p, "EXXXXXX");
@@ -239,7 +263,12 @@
       /* Give up if cannot do that.  */
       desc = open (tempname, O_WRONLY | O_CREAT | O_EXCL, 0666);
       if (desc < 0)
-        pfatal_with_name ("lock file--see source file lib-src/movemail.c");
+	{
+	  char *message = (char *) xmalloc (strlen (tempname) + 50);
+	  sprintf (message, "%s--see source file lib-src/movemail.c",
+		   tempname);
+	  pfatal_with_name (message);
+	}
       close (desc);
 
       tem = link (tempname, lockname);
@@ -248,12 +277,15 @@
 	break;
       sleep (1);
 
-      /* If lock file is a minute old, unlock it.  */
+      /* If lock file is five minutes old, unlock it.
+	 Five minutes should be good enough to cope with crashes
+	 and wedgitude, and long enough to avoid being fooled
+	 by time differences between machines.  */
       if (stat (lockname, &st) >= 0)
 	{
 	  now = time (0);
-	  if (st.st_ctime < now - 60)
-            unlink (lockname);
+	  if (st.st_ctime < now - 300)
+	    unlink (lockname);
 	}
     }
 
@@ -295,8 +327,12 @@
 #ifdef XENIX
       if (locking (indesc, LK_RLCK, 0L) < 0) pfatal_with_name (inname);
 #else
+#ifdef WINDOWSNT
+      if (locking (indesc, LK_RLCK, -1L) < 0) pfatal_with_name (inname);
+#else
       if (flock (indesc, LOCK_EX) < 0) pfatal_with_name (inname);
 #endif
+#endif
 #endif /* not MAIL_USE_LOCKF */
 #endif /* MAIL_USE_SYSTEM_LOCK */
 
@@ -328,7 +364,7 @@
 	pfatal_and_delete (outname);
 
 #ifdef MAIL_USE_SYSTEM_LOCK
-#if defined (STRIDE) || defined (XENIX)
+#if defined (STRIDE) || defined (XENIX) || defined (WINDOWSNT)
       /* Stride, xenix have file locking, but no ftruncate.  This mess will do. */
       close (open (inname, O_CREAT | O_TRUNC | O_RDWR, 0666));
 #else
@@ -365,58 +401,57 @@
 #if !defined (MAIL_USE_MMDF) && !defined (MAIL_USE_SYSTEM_LOCK)
   unlink (lockname);
 #endif /* not MAIL_USE_MMDF and not MAIL_USE_SYSTEM_LOCK */
-  exit (0);
+
+#endif /* ! DISABLE_DIRECT_ACCESS */
+
+  return 0;
 }
 
 /* Print error message and exit.  */
 
-static void
+void
 fatal (s1, s2)
-     CONST char *s1, *s2;
+     char *s1, *s2;
 {
   if (delete_lockname)
-  error (s1, s2, "");
     unlink (delete_lockname);
+  error (s1, s2);
   exit (1);
 }
 
 /* Print error message.  `s1' is printf control string, `s2' is arg for it. */
 
-static void
+void
 error (s1, s2, s3)
-     CONST char *s1, *s2, *s3;
+     char *s1, *s2, *s3;
 {
-  printf ("movemail: ");
-  printf (s1, s2, s3);
-  printf ("\n");
+  fprintf (stderr, "movemail: ");
+  fprintf (stderr, s1, s2, s3);
+  fprintf (stderr, "\n");
 }
 
-static void
+void
 pfatal_with_name (name)
-     CONST char *name;
+     char *name;
 {
-  char *s;
-
-  s = concat ("", strerror (errno), " for %s");
+  char *s = concat ("", strerror (errno), " for %s");
   fatal (s, name);
 }
 
-static void
+void
 pfatal_and_delete (name)
-     CONST char *name;
+     char *name;
 {
-  char *s;
-
-  s = concat ("", strerror (errno), " for %s");
+  char *s = concat ("", strerror (errno), " for %s");
   unlink (name);
   fatal (s, name);
 }
 
 /* Return a newly-allocated string whose contents concatenate those of s1, s2, s3.  */
 
-static char *
+char *
 concat (s1, s2, s3)
-     CONST char *s1, *s2, *s3;
+     char *s1, *s2, *s3;
 {
   int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3);
   char *result = (char *) xmalloc (len1 + len2 + len3 + 1);
@@ -431,13 +466,13 @@
 
 /* Like malloc but get fatal error if memory is exhausted.  */
 
-static void *
+long *
 xmalloc (size)
-     unsigned int size;
+     unsigned size;
 {
-  void *result = (void *) malloc (size);
+  long *result = (long *) malloc (size);
   if (!result)
-    fatal ("virtual memory exhausted", (char *) 0);
+    fatal ("virtual memory exhausted", 0);
   return result;
 }
 
@@ -445,9 +480,14 @@
 
 #ifdef MAIL_USE_POP
 
+#ifndef WINDOWSNT
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <netdb.h>
+#else
+#undef _WINSOCKAPI_
+#include <winsock.h>
+#endif
 #include <stdio.h>
 #include <pwd.h>
 
@@ -467,344 +507,197 @@
 char *progname;
 FILE *sfi;
 FILE *sfo;
+char ibuffer[BUFSIZ];
+char obuffer[BUFSIZ];
 char Errmsg[80];
 
-static int debug = 0;
-
-char *get_errmsg ();
-char *getenv ();
-int mbx_write ();
-
-int
-popmail (user, outfile)
+popmail (user, outfile, password)
      char *user;
      char *outfile;
+     char *password;
 {
-  char *host;
   int nmsgs, nbytes;
-  char response[128];
   register int i;
   int mbfi;
   FILE *mbf;
-  struct passwd *pw = (struct passwd *) getpwuid (getuid ());
-  if (pw == NULL)
-    fatal ("cannot determine user name");
+  char *getenv ();
+  int mbx_write ();
+  popserver server;
+  extern char *strerror ();
 
-  host = getenv ("MAILHOST");
-  if (host == NULL) 
+  server = pop_open (0, user, password, POP_NO_GETPASS);
+  if (! server)
     {
-      fatal ("no MAILHOST defined");
-    }
-
-  if (pop_init (host) == NOTOK) 
-    {
-      fatal (Errmsg);
+      error (pop_error);
+      return (1);
     }
 
-  if (getline (response, sizeof response, sfi) != OK) 
-    {
-      fatal (response);
-    }
-
-  if (pop_command ("USER %s", user) == NOTOK 
-      || pop_command ("RPOP %s", pw->pw_name) == NOTOK) 
+  if (pop_stat (server, &nmsgs, &nbytes))
     {
-      pop_command ("QUIT");
-      fatal (Errmsg);
-    }
-
-  if (pop_stat (&nmsgs, &nbytes) == NOTOK) 
-    {
-      pop_command ("QUIT");
-      fatal (Errmsg);
+      error (pop_error);
+      return (1);
     }
 
   if (!nmsgs)
-  {
-    pop_command ("QUIT");
-    return 0;
-  }
+    {
+      pop_close (server);
+      return (0);
+    }
 
   mbfi = open (outfile, O_WRONLY | O_CREAT | O_EXCL, 0666);
   if (mbfi < 0)
-  {
-    pop_command ("QUIT");
-    pfatal_and_delete (outfile);
-  }
+    {
+      pop_close (server);
+      error ("Error in open: %s, %s", strerror (errno), outfile);
+      return (1);
+    }
   fchown (mbfi, getuid (), -1);
 
-  if ((mbf = fdopen (mbfi, "w")) == NULL)
+  if ((mbf = fdopen (mbfi, "wb")) == NULL)
     {
-      pop_command ("QUIT");
-      pfatal_and_delete (outfile);
+      pop_close (server);
+      error ("Error in fdopen: %s", strerror (errno));
+      close (mbfi);
+      unlink (outfile);
+      return (1);
     }
 
-  for (i = 1; i <= nmsgs; i++) 
+  for (i = 1; i <= nmsgs; i++)
     {
       mbx_delimit_begin (mbf);
-      if (pop_retr (i, mbx_write, mbf) != OK) 
-        {
-          pop_command ("QUIT");
-          close (mbfi);
-	  unlink (outfile);
-	  fatal (Errmsg);
-        }
+      if (pop_retr (server, i, mbx_write, mbf) != OK)
+	{
+	  error (Errmsg);
+	  close (mbfi);
+	  return (1);
+	}
       mbx_delimit_end (mbf);
       fflush (mbf);
+      if (ferror (mbf))
+	{
+	  error ("Error in fflush: %s", strerror (errno));
+	  pop_close (server);
+	  close (mbfi);
+	  return (1);
+	}
     }
 
+  /* On AFS, a call to write only modifies the file in the local
+   *     workstation's AFS cache.  The changes are not written to the server
+   *      until a call to fsync or close is made.  Users with AFS home
+   *      directories have lost mail when over quota because these checks were
+   *      not made in previous versions of movemail. */
+
+#ifdef BSD
   if (fsync (mbfi) < 0)
     {
-      pop_command ("QUIT");
-      pfatal_and_delete (outfile);
+      error ("Error in fsync: %s", strerror (errno));
+      return (1);
     }
+#endif
 
   if (close (mbfi) == -1)
     {
-      pop_command ("QUIT");
-      pfatal_and_delete (outfile);
+      error ("Error in close: %s", strerror (errno));
+      return (1);
     }
 
-  for (i = 1; i <= nmsgs; i++) 
+  for (i = 1; i <= nmsgs; i++)
     {
-      if (pop_command ("DELE %d", i) == NOTOK) 
-        {
-	  /* Better to ignore this failure.  */
-        }
+      if (pop_delete (server, i))
+	{
+	  error (pop_error);
+	  pop_close (server);
+	  return (1);
+	}
     }
 
-  pop_command ("QUIT");
+  if (pop_quit (server))
+    {
+      error (pop_error);
+      return (1);
+    }
+    
   return (0);
 }
 
-int
-pop_init (host)
-     char *host;
+pop_retr (server, msgno, action, arg)
+     popserver server;
+     int (*action)();
 {
-  register struct hostent *hp;
-  register struct servent *sp;
-  int lport = IPPORT_RESERVED - 1;
-  struct sockaddr_in sin;
-  register int s;
-
-  hp = gethostbyname (host);
-  if (hp == NULL) 
-    {
-      sprintf (Errmsg, "MAILHOST unknown: %s", host);
-      return NOTOK;
-    }
+  extern char *strerror ();
+  char *line;
+  int ret;
 
-  sp = getservbyname ("pop", "tcp");
-  if (sp == 0) 
-    {
-      strcpy (Errmsg, "tcp/pop: unknown service");
-      return NOTOK;
-    }
-
-  sin.sin_family = hp->h_addrtype;
-  memcpy ((char *)&sin.sin_addr, hp->h_addr, hp->h_length);
-  sin.sin_port = sp->s_port;
-  s = rresvport (&lport);
-  if (s < 0) 
-    {
-      sprintf (Errmsg, "error creating socket: %s", get_errmsg ());
-      return NOTOK;
-    }
-
-  if (connect (s, (char *)&sin, sizeof sin) < 0) 
-    {
-      sprintf (Errmsg, "error during connect: %s", get_errmsg ());
-      close (s);
-      return NOTOK;
-    }
-
-  sfi = fdopen (s, "r");
-  sfo = fdopen (s, "w");
-  if (sfi == NULL || sfo == NULL) 
+  if (pop_retrieve_first (server, msgno, &line))
     {
-      sprintf (Errmsg, "error in fdopen: %s", get_errmsg ());
-      close (s);
-      return NOTOK;
-    }
-
-  return OK;
-}
-
-int
-pop_command (fmt, a, b, c, d)
-     char *fmt;
-{
-  char buf[128];
-  char errmsg[64];
-
-  sprintf (buf, fmt, a, b, c, d);
-
-  if (debug) fprintf (stderr, "---> %s\n", buf);
-  if (putline (buf, Errmsg, sfo) == NOTOK) return NOTOK;
-
-  if (getline (buf, sizeof buf, sfi) != OK) 
-    {
-      strcpy (Errmsg, buf);
-      return NOTOK;
-    }
-
-  if (debug) fprintf (stderr, "<--- %s\n", buf);
-  if (*buf != '+') 
-    {
-      strcpy (Errmsg, buf);
-      return NOTOK;
-    } 
-  else 
-    {
-      return OK;
-    }
-}
-
-    
-pop_stat (nmsgs, nbytes)
-     int *nmsgs, *nbytes;
-{
-  char buf[128];
-
-  if (debug) fprintf (stderr, "---> STAT\n");
-  if (putline ("STAT", Errmsg, sfo) == NOTOK)
-    return NOTOK;
-
-  if (getline (buf, sizeof buf, sfi) != OK) 
-    {
-      strcpy (Errmsg, buf);
-      return NOTOK;
+      strncpy (Errmsg, pop_error, sizeof (Errmsg));
+      Errmsg[sizeof (Errmsg)-1] = '\0';
+      return (NOTOK);
     }
 
-  if (debug) fprintf (stderr, "<--- %s\n", buf);
-  if (*buf != '+') 
+  while (! (ret = pop_retrieve_next (server, &line)))
     {
-      strcpy (Errmsg, buf);
-      return NOTOK;
-    } 
-  else 
-    {
-      sscanf (buf, "+OK %d %d", nmsgs, nbytes);
-      return OK;
-    }
-}
+      if (! line)
+	break;
 
-pop_retr (msgno, action, arg)
-     int (*action)();
-{
-  char buf[128];
-
-  sprintf (buf, "RETR %d", msgno);
-  if (debug) fprintf (stderr, "%s\n", buf);
-  if (putline (buf, Errmsg, sfo) == NOTOK) return NOTOK;
-
-  if (getline (buf, sizeof buf, sfi) != OK) 
-    {
-      strcpy (Errmsg, buf);
-      return NOTOK;
+      if ((*action)(line, arg) != OK)
+	{
+	  strcpy (Errmsg, strerror (errno));
+	  pop_close (server);
+	  return (NOTOK);
+	}
     }
 
-  while (1) 
+  if (ret)
     {
-      switch (multiline (buf, sizeof buf, sfi)) 
-        {
-        case OK:
-          (*action)(buf, arg);
-          break;
-        case DONE:
-          return OK;
-        case NOTOK:
-          strcpy (Errmsg, buf);
-          return NOTOK;
-        }
+      strncpy (Errmsg, pop_error, sizeof (Errmsg));
+      Errmsg[sizeof (Errmsg)-1] = '\0';
+      return (NOTOK);
     }
+
+  return (OK);
 }
 
-getline (buf, n, f)
-     char *buf;
-     register int n;
-     FILE *f;
-{
-  register char *p;
-  int c;
-
-  p = buf;
-  while (--n > 0 && (c = fgetc (f)) != EOF)
-    if ((*p++ = c) == '\n') break;
-
-  if (ferror (f)) 
-  {
-    strcpy (buf, "error on connection");
-    return NOTOK;
-  }
-
-  if (c == EOF && p == buf) 
-  {
-    strcpy (buf, "connection closed by foreign host");
-    return DONE;
-  }
-
-  *p = NULL;
-  if (*--p == '\n') *p = NULL;
-  if (*--p == '\r') *p = NULL;
-  return OK;
-}
+/* Do this as a macro instead of using strcmp to save on execution time. */
+#define IS_FROM_LINE(a) ((a[0] == 'F') \
+			 && (a[1] == 'r') \
+			 && (a[2] == 'o') \
+			 && (a[3] == 'm') \
+			 && (a[4] == ' '))
 
-multiline (buf, n, f)
-     char *buf;
-     register int n;
-     FILE *f;
-{
-  if (getline (buf, n, f) != OK) return NOTOK;
-  if (*buf == '.') 
-    {
-      if (*(buf+1) == NULL) 
-	return DONE;
-      else 
-        strcpy (buf, buf+1);
-    }
-  return OK;
-}
-
-char *
-get_errmsg ()
-{
-  return strerror (errno);
-}
-
-putline (buf, err, f)
-     char *buf;
-     char *err;
-     FILE *f;
-{
-  fprintf (f, "%s\r\n", buf);
-  fflush (f);
-  if (ferror (f)) 
-    {
-      strcpy (err, "lost connection");
-      return NOTOK;
-    }
-  return OK;
-}
-
+int
 mbx_write (line, mbf)
      char *line;
      FILE *mbf;
 {
-  fputs (line, mbf);
-  fputc (0x0a, mbf);
+  if (IS_FROM_LINE (line))
+    {
+      if (fputc ('>', mbf) == EOF)
+	return (NOTOK);
+    }
+  if (fputs (line, mbf) == EOF) 
+    return (NOTOK);
+  if (fputc (0x0a, mbf) == EOF)
+    return (NOTOK);
+  return (OK);
 }
 
+int
 mbx_delimit_begin (mbf)
      FILE *mbf;
 {
-  fputs ("\f\n0, unseen,,\n", mbf);
+  if (fputs ("\f\n0, unseen,,\n", mbf) == EOF)
+    return (NOTOK);
+  return (OK);
 }
 
 mbx_delimit_end (mbf)
      FILE *mbf;
 {
-  putc ('\037', mbf);
+  if (putc ('\037', mbf) == EOF)
+    return (NOTOK);
+  return (OK);
 }
 
 #endif /* MAIL_USE_POP */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib-src/pop.c	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,1547 @@
+/* pop.c: client routines for talking to a POP3-protocol post-office server
+   Copyright (c) 1991, 1993, 1996 Free Software Foundation, Inc.
+   Written by Jonathan Kamens, jik@security.ov.com.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#ifdef HAVE_CONFIG_H
+#define NO_SHORTNAMES	/* Tell config not to load remap.h */
+#include <../src/config.h>
+#else
+#define MAIL_USE_POP
+#endif
+
+#ifdef MAIL_USE_POP
+
+#ifdef HAVE_CONFIG_H
+/* Cancel these substitutions made in config.h */
+#undef open
+#undef read
+#undef write
+#undef close
+#endif
+
+#include <sys/types.h>
+#ifdef WINDOWSNT
+#include "ntlib.h"
+#include <winsock.h>
+#undef SOCKET_ERROR
+#define RECV(s,buf,len,flags) recv(s,buf,len,flags)
+#define SEND(s,buf,len,flags) send(s,buf,len,flags)
+#define CLOSESOCKET(s) closesocket(s)
+#else
+#include <netinet/in.h>
+#include <sys/socket.h>
+#define RECV(s,buf,len,flags) read(s,buf,len)
+#define SEND(s,buf,len,flags) write(s,buf,len)
+#define CLOSESOCKET(s) close(s)
+#endif
+#include <pop.h>
+
+#ifdef sun
+#include <malloc.h>
+#endif /* sun */
+
+#ifdef HESIOD
+#include <hesiod.h>
+/*
+ * It really shouldn't be necessary to put this declaration here, but
+ * the version of hesiod.h that Athena has installed in release 7.2
+ * doesn't declare this function; I don't know if the 7.3 version of
+ * hesiod.h does.
+ */
+extern struct servent *hes_getservbyname (/* char *, char * */);
+#endif
+
+#include <pwd.h>
+#include <netdb.h>
+#include <errno.h>
+#include <stdio.h>
+
+#ifdef KERBEROS
+#ifndef KRB5
+#include <des.h>
+#include <krb.h>
+#else /* KRB5 */
+#include <krb5/krb5.h>
+#include <krb5/ext-proto.h>
+#include <ctype.h>
+#endif /* KRB5 */
+#endif /* KERBEROS */
+
+extern char *getenv (/* char * */);
+extern char *getlogin (/* void */);
+extern char *getpass (/* char * */);
+extern char *strerror (/* int */);
+extern char *index ();
+
+#ifdef KERBEROS
+#ifndef KRB5
+extern int krb_sendauth (/* long, int, KTEXT, char *, char *, char *,
+			    u_long, MSG_DAT *, CREDENTIALS *, Key_schedule,
+			    struct sockaddr_in *, struct sockaddr_in *,
+			    char * */);
+extern char *krb_realmofhost (/* char * */);
+#endif /* ! KRB5 */
+#endif /* KERBEROS */
+
+#ifndef WINDOWSNT
+#if !defined(HAVE_H_ERRNO) || !defined(HAVE_CONFIG_H)
+extern int h_errno;
+#endif
+#endif
+
+static int socket_connection (/* char *, int */);
+static char *getline (/* popserver */);
+static int sendline (/* popserver, char * */);
+static int fullwrite (/* int, char *, int */);
+static int getok (/* popserver */);
+#if 0
+static int gettermination (/* popserver */);
+#endif
+static void pop_trash (/* popserver */);
+static char *find_crlf (/* char * */);
+
+#define ERROR_MAX 80		/* a pretty arbitrary size */
+#define POP_PORT 110
+#define KPOP_PORT 1109
+#ifdef WINDOWSNT
+#define POP_SERVICE "pop3"	/* we don't want the POP2 port! */
+#else
+#define POP_SERVICE "pop"
+#endif
+#ifdef KERBEROS
+#ifdef KRB5
+#define KPOP_SERVICE "k5pop";
+#else
+#define KPOP_SERVICE "kpop"
+#endif
+#endif
+
+char pop_error[ERROR_MAX];
+int pop_debug = 0;
+
+#ifndef min
+#define min(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+/*
+ * Function: pop_open (char *host, char *username, char *password,
+ * 		       int flags)
+ *
+ * Purpose: Establishes a connection with a post-office server, and
+ * 	completes the authorization portion of the session.
+ *
+ * Arguments:
+ * 	host	The server host with which the connection should be
+ * 		established.  Optional.  If omitted, internal
+ * 		heuristics will be used to determine the server host,
+ * 		if possible.
+ * 	username
+ * 		The username of the mail-drop to access.  Optional.
+ * 		If omitted, internal heuristics will be used to
+ * 		determine the username, if possible.
+ * 	password
+ * 		The password to use for authorization.  If omitted,
+ * 		internal heuristics will be used to determine the
+ * 		password, if possible.
+ * 	flags	A bit mask containing flags controlling certain
+ * 		functions of the routine.  Valid flags are defined in
+ * 		the file pop.h
+ *
+ * Return value: Upon successful establishment of a connection, a
+ * 	non-null popserver will be returned.  Otherwise, null will be
+ * 	returned, and the string variable pop_error will contain an
+ * 	explanation of the error.
+ */
+popserver
+pop_open (host, username, password, flags)
+     char *host;
+     char *username;
+     char *password;
+     int flags;
+{
+  int sock;
+  popserver server;
+
+  /* Determine the user name */
+  if (! username)
+    {
+      username = getenv ("USER");
+      if (! (username && *username))
+	{
+	  username = getlogin ();
+	  if (! (username && *username))
+	    {
+	      struct passwd *passwd;
+	      passwd = getpwuid (getuid ());
+	      if (passwd && passwd->pw_name && *passwd->pw_name)
+		{
+		  username = passwd->pw_name;
+		}
+	      else
+		{
+		  strcpy (pop_error, "Could not determine username");
+		  return (0);
+		}
+	    }
+	}
+    }
+
+  /*
+   *  Determine the mail host.
+   */
+
+  if (! host)
+    {
+      host = getenv ("MAILHOST");
+    }
+
+#ifdef HESIOD
+  if ((! host) && (! (flags & POP_NO_HESIOD)))
+    {
+      struct hes_postoffice *office;
+      office = hes_getmailhost (username);
+      if (office && office->po_type && (! strcmp (office->po_type, "POP"))
+	  && office->po_name && *office->po_name && office->po_host
+	  && *office->po_host)
+	{
+	  host = office->po_host;
+	  username = office->po_name;
+	}
+    }
+#endif
+
+#ifdef MAILHOST
+  if (! host)
+    {
+      host = MAILHOST;
+    }
+#endif
+
+  if (! host)
+    {
+      strcpy (pop_error, "Could not determine POP server");
+      return (0);
+    }
+
+  /* Determine the password */
+#ifdef KERBEROS
+#define DONT_NEED_PASSWORD (! (flags & POP_NO_KERBEROS))
+#else
+#define DONT_NEED_PASSWORD 0
+#endif
+ 
+  if ((! password) && (! DONT_NEED_PASSWORD))
+    {
+      if (! (flags & POP_NO_GETPASS))
+	{
+	  password = getpass ("Enter POP password:");
+	}
+      if (! password)
+	{
+	  strcpy (pop_error, "Could not determine POP password");
+	  return (0);
+	}
+    }
+  if (password)
+    flags |= POP_NO_KERBEROS;
+  else
+    password = username;
+
+  sock = socket_connection (host, flags);
+  if (sock == -1)
+    return (0);
+
+  server = (popserver) malloc (sizeof (struct _popserver));
+  if (! server)
+    {
+      strcpy (pop_error, "Out of memory in pop_open");
+      return (0);
+    }
+  server->buffer = (char *) malloc (GETLINE_MIN);
+  if (! server->buffer)
+    {
+      strcpy (pop_error, "Out of memory in pop_open");
+      free ((char *) server);
+      return (0);
+    }
+	  
+  server->file = sock;
+  server->data = 0;
+  server->buffer_index = 0;
+  server->buffer_size = GETLINE_MIN;
+  server->in_multi = 0;
+  server->trash_started = 0;
+
+  if (getok (server))
+    return (0);
+
+  /*
+   * I really shouldn't use the pop_error variable like this, but....
+   */
+  if (strlen (username) > ERROR_MAX - 6)
+    {
+      pop_close (server);
+      strcpy (pop_error,
+	      "Username too long; recompile pop.c with larger ERROR_MAX");
+      return (0);
+    }
+  sprintf (pop_error, "USER %s", username);
+
+  if (sendline (server, pop_error) || getok (server))
+    {
+      return (0);
+    }
+
+  if (strlen (password) > ERROR_MAX - 6)
+    {
+      pop_close (server);
+      strcpy (pop_error,
+	      "Password too long; recompile pop.c with larger ERROR_MAX");
+      return (0);
+    }
+  sprintf (pop_error, "PASS %s", password);
+
+  if (sendline (server, pop_error) || getok (server))
+    {
+      return (0);
+    }
+
+  return (server);
+}
+
+/*
+ * Function: pop_stat
+ *
+ * Purpose: Issue the STAT command to the server and return (in the
+ * 	value parameters) the number of messages in the maildrop and
+ * 	the total size of the maildrop.
+ *
+ * Return value: 0 on success, or non-zero with an error in pop_error
+ * 	in failure.
+ *
+ * Side effects: On failure, may make further operations on the
+ * 	connection impossible.
+ */
+int
+pop_stat (server, count, size)
+     popserver server;
+     int *count;
+     int *size;
+{
+  char *fromserver;
+
+  if (server->in_multi)
+    {
+      strcpy (pop_error, "In multi-line query in pop_stat");
+      return (-1);
+    }
+     
+  if (sendline (server, "STAT") || (! (fromserver = getline (server))))
+    return (-1);
+
+  if (strncmp (fromserver, "+OK ", 4))
+    {
+      if (0 == strncmp (fromserver, "-ERR", 4))
+	{
+	  strncpy (pop_error, fromserver, ERROR_MAX);
+	}
+      else
+	{
+	  strcpy (pop_error,
+		  "Unexpected response from POP server in pop_stat");
+	  pop_trash (server);
+	}
+      return (-1);
+    }
+
+  *count = atoi (&fromserver[4]);
+     
+  fromserver = index (&fromserver[4], ' ');
+  if (! fromserver)
+    {
+      strcpy (pop_error,
+	      "Badly formatted response from server in pop_stat");
+      pop_trash (server);
+      return (-1);
+    }
+
+  *size = atoi (fromserver + 1);
+
+  return (0);
+}
+
+/*
+ * Function: pop_list
+ *
+ * Purpose: Performs the POP "list" command and returns (in value
+ * 	parameters) two malloc'd zero-terminated arrays -- one of
+ * 	message IDs, and a parallel one of sizes.
+ *
+ * Arguments:
+ * 	server	The pop connection to talk to.
+ * 	message	The number of the one message about which to get
+ * 		information, or 0 to get information about all
+ * 		messages.
+ *
+ * Return value: 0 on success, non-zero with error in pop_error on
+ * 	failure.
+ *
+ * Side effects: On failure, may make further operations on the
+ * 	connection impossible.
+ */
+int
+pop_list (server, message, IDs, sizes)
+     popserver server;
+     int message;
+     int **IDs;
+     int **sizes;
+{
+  int how_many, i;
+  char *fromserver;
+
+  if (server->in_multi)
+    {
+      strcpy (pop_error, "In multi-line query in pop_list");
+      return (-1);
+    }
+
+  if (message)
+    how_many = 1;
+  else
+    {
+      int count, size;
+      if (pop_stat (server, &count, &size))
+	return (-1);
+      how_many = count;
+    }
+
+  *IDs = (int *) malloc ((how_many + 1) * sizeof (int));
+  *sizes = (int *) malloc ((how_many + 1) * sizeof (int));
+  if (! (*IDs && *sizes))
+    {
+      strcpy (pop_error, "Out of memory in pop_list");
+      return (-1);
+    }
+
+  if (message)
+    {
+      sprintf (pop_error, "LIST %d", message);
+      if (sendline (server, pop_error))
+	{
+	  free ((char *) *IDs);
+	  free ((char *) *sizes);
+	  return (-1);
+	}
+      if (! (fromserver = getline (server)))
+	{
+	  free ((char *) *IDs);
+	  free ((char *) *sizes);
+	  return (-1);
+	}
+      if (strncmp (fromserver, "+OK ", 4))
+	{
+	  if (! strncmp (fromserver, "-ERR", 4))
+	    strncpy (pop_error, fromserver, ERROR_MAX);
+	  else
+	    {
+	      strcpy (pop_error,
+		      "Unexpected response from server in pop_list");
+	      pop_trash (server);
+	    }
+	  free ((char *) *IDs);
+	  free ((char *) *sizes);
+	  return (-1);
+	}
+      (*IDs)[0] = atoi (&fromserver[4]);
+      fromserver = index (&fromserver[4], ' ');
+      if (! fromserver)
+	{
+	  strcpy (pop_error,
+		  "Badly formatted response from server in pop_list");
+	  pop_trash (server);
+	  free ((char *) *IDs);
+	  free ((char *) *sizes);
+	  return (-1);
+	}
+      (*sizes)[0] = atoi (fromserver);
+      (*IDs)[1] = (*sizes)[1] = 0;
+      return (0);
+    }
+  else
+    {
+      if (pop_multi_first (server, "LIST", &fromserver))
+	{
+	  free ((char *) *IDs);
+	  free ((char *) *sizes);
+	  return (-1);
+	}
+      for (i = 0; i < how_many; i++)
+	{
+	  if (pop_multi_next (server, &fromserver))
+	    {
+	      free ((char *) *IDs);
+	      free ((char *) *sizes);
+	      return (-1);
+	    }
+	  (*IDs)[i] = atoi (fromserver);
+	  fromserver = index (fromserver, ' ');
+	  if (! fromserver)
+	    {
+	      strcpy (pop_error,
+		      "Badly formatted response from server in pop_list");
+	      free ((char *) *IDs);
+	      free ((char *) *sizes);
+	      pop_trash (server);
+	      return (-1);
+	    }
+	  (*sizes)[i] = atoi (fromserver);
+	}
+      if (pop_multi_next (server, &fromserver))
+	{
+	  free ((char *) *IDs);
+	  free ((char *) *sizes);
+	  return (-1);
+	}
+      else if (fromserver)
+	{
+	  strcpy (pop_error,
+		  "Too many response lines from server in pop_list");
+	  free ((char *) *IDs);
+	  free ((char *) *sizes);
+	  return (-1);
+	}
+      (*IDs)[i] = (*sizes)[i] = 0;
+      return (0);
+    }
+}
+
+/*
+ * Function: pop_retrieve
+ *
+ * Purpose: Retrieve a specified message from the maildrop.
+ *
+ * Arguments:
+ * 	server	The server to retrieve from.
+ * 	message	The message number to retrieve.
+ *	markfrom
+ * 		If true, then mark the string "From " at the beginning
+ * 		of lines with '>'.
+ * 
+ * Return value: A string pointing to the message, if successful, or
+ * 	null with pop_error set if not.
+ *
+ * Side effects: May kill connection on error.
+ */
+char *
+pop_retrieve (server, message, markfrom)
+     popserver server;
+     int message;
+     int markfrom;
+{
+  int *IDs, *sizes, bufsize, fromcount = 0, cp = 0;
+  char *ptr, *fromserver;
+  int ret;
+
+  if (server->in_multi)
+    {
+      strcpy (pop_error, "In multi-line query in pop_retrieve");
+      return (0);
+    }
+
+  if (pop_list (server, message, &IDs, &sizes))
+    return (0);
+
+  if (pop_retrieve_first (server, message, &fromserver))
+    {
+      return (0);
+    }
+
+  /*
+   * The "5" below is an arbitrary constant -- I assume that if
+   * there are "From" lines in the text to be marked, there
+   * probably won't be more than 5 of them.  If there are, I
+   * allocate more space for them below.
+   */
+  bufsize = sizes[0] + (markfrom ? 5 : 0);
+  ptr = (char *)malloc (bufsize);
+  free ((char *) IDs);
+  free ((char *) sizes);
+
+  if (! ptr)
+    {
+      strcpy (pop_error, "Out of memory in pop_retrieve");
+      pop_retrieve_flush (server);
+      return (0);
+    }
+
+  while (! (ret = pop_retrieve_next (server, &fromserver)))
+    {
+      int linesize;
+
+      if (! fromserver)
+	{
+	  ptr[cp] = '\0';
+	  return (ptr);
+	}
+      if (markfrom && fromserver[0] == 'F' && fromserver[1] == 'r' &&
+	  fromserver[2] == 'o' && fromserver[3] == 'm' &&
+	  fromserver[4] == ' ')
+	{
+	  if (++fromcount == 5)
+	    {
+	      bufsize += 5;
+	      ptr = (char *)realloc (ptr, bufsize);
+	      if (! ptr)
+		{
+		  strcpy (pop_error, "Out of memory in pop_retrieve");
+		  pop_retrieve_flush (server);
+		  return (0);
+		}
+	      fromcount = 0;
+	    }
+	  ptr[cp++] = '>';
+	}
+      linesize = strlen (fromserver);
+      bcopy (fromserver, &ptr[cp], linesize);
+      cp += linesize;
+      ptr[cp++] = '\n';
+    }
+
+  if (ret)
+    {
+      free (ptr);
+      return (0);
+    }
+}     
+
+int
+pop_retrieve_first (server, message, response)
+     popserver server;
+     int message;
+     char **response;
+{
+  sprintf (pop_error, "RETR %d", message);
+  return (pop_multi_first (server, pop_error, response));
+}
+
+int
+pop_retrieve_next (server, line)
+     popserver server;
+     char **line;
+{
+  return (pop_multi_next (server, line));
+}
+
+int
+pop_retrieve_flush (server)
+     popserver server;
+{
+  return (pop_multi_flush (server));
+}
+
+int
+pop_top_first (server, message, lines, response)
+     popserver server;
+     int message, lines;
+     char **response;
+{
+  sprintf (pop_error, "TOP %d %d", message, lines);
+  return (pop_multi_first (server, pop_error, response));
+}
+
+int
+pop_top_next (server, line)
+     popserver server;
+     char **line;
+{
+  return (pop_multi_next (server, line));
+}
+
+int
+pop_top_flush (server)
+     popserver server;
+{
+  return (pop_multi_flush (server));
+}
+
+int
+pop_multi_first (server, command, response)
+     popserver server;
+     char *command;
+     char **response;
+{
+  if (server->in_multi)
+    {
+      strcpy (pop_error,
+	      "Already in multi-line query in pop_multi_first");
+      return (-1);
+    }
+
+  if (sendline (server, command) || (! (*response = getline (server))))
+    {
+      return (-1);
+    }
+
+  if (0 == strncmp (*response, "-ERR", 4))
+    {
+      strncpy (pop_error, *response, ERROR_MAX);
+      return (-1);
+    }
+  else if (0 == strncmp (*response, "+OK", 3))
+    {
+      for (*response += 3; **response == ' '; (*response)++) /* empty */;
+      server->in_multi = 1;
+      return (0);
+    }
+  else
+    {
+      strcpy (pop_error,
+	      "Unexpected response from server in pop_multi_first");
+      return (-1);
+    }
+}
+
+int
+pop_multi_next (server, line)
+     popserver server;
+     char **line;
+{
+  char *fromserver;
+
+  if (! server->in_multi)
+    {
+      strcpy (pop_error, "Not in multi-line query in pop_multi_next");
+      return (-1);
+    }
+
+  fromserver = getline (server);
+  if (! fromserver)
+    {
+      return (-1);
+    }
+
+  if (fromserver[0] == '.')
+    {
+      if (! fromserver[1])
+	{
+	  *line = 0;
+	  server->in_multi = 0;
+	  return (0);
+	}
+      else
+	{
+	  *line = fromserver + 1;
+	  return (0);
+	}
+    }
+  else
+    {
+      *line = fromserver;
+      return (0);
+    }
+}
+
+int
+pop_multi_flush (server)
+     popserver server;
+{
+  char *line;
+
+  if (! server->in_multi)
+    {
+      return (0);
+    }
+
+  while (! pop_multi_next (server, &line))
+    {
+      if (! line)
+	{
+	  return (0);
+	}
+    }
+
+  return (-1);
+}
+
+/* Function: pop_delete
+ *
+ * Purpose: Delete a specified message.
+ *
+ * Arguments:
+ * 	server	Server from which to delete the message.
+ * 	message	Message to delete.
+ *
+ * Return value: 0 on success, non-zero with error in pop_error
+ * 	otherwise.
+ */
+int
+pop_delete (server, message)
+     popserver server;
+     int message;
+{
+  if (server->in_multi)
+    {
+      strcpy (pop_error, "In multi-line query in pop_delete");
+      return (-1);
+    }
+
+  sprintf (pop_error, "DELE %d", message);
+
+  if (sendline (server, pop_error) || getok (server))
+    return (-1);
+
+  return (0);
+}
+
+/*
+ * Function: pop_noop
+ *
+ * Purpose: Send a noop command to the server.
+ *
+ * Argument:
+ * 	server	The server to send to.
+ *
+ * Return value: 0 on success, non-zero with error in pop_error
+ * 	otherwise.
+ *
+ * Side effects: Closes connection on error.
+ */
+int
+pop_noop (server)
+     popserver server;
+{
+  if (server->in_multi)
+    {
+      strcpy (pop_error, "In multi-line query in pop_noop");
+      return (-1);
+    }
+
+  if (sendline (server, "NOOP") || getok (server))
+    return (-1);
+
+  return (0);
+}
+
+/*
+ * Function: pop_last
+ *
+ * Purpose: Find out the highest seen message from the server.
+ *
+ * Arguments:
+ * 	server	The server.
+ *
+ * Return value: If successful, the highest seen message, which is
+ * 	greater than or equal to 0.  Otherwise, a negative number with
+ * 	the error explained in pop_error.
+ *
+ * Side effects: Closes the connection on error.
+ */
+int
+pop_last (server)
+     popserver server;
+{
+  char *fromserver;
+     
+  if (server->in_multi)
+    {
+      strcpy (pop_error, "In multi-line query in pop_last");
+      return (-1);
+    }
+
+  if (sendline (server, "LAST"))
+    return (-1);
+
+  if (! (fromserver = getline (server)))
+    return (-1);
+
+  if (! strncmp (fromserver, "-ERR", 4))
+    {
+      strncpy (pop_error, fromserver, ERROR_MAX);
+      return (-1);
+    }
+  else if (strncmp (fromserver, "+OK ", 4))
+    {
+      strcpy (pop_error, "Unexpected response from server in pop_last");
+      pop_trash (server);
+      return (-1);
+    }
+  else
+    {
+      return (atoi (&fromserver[4]));
+    }
+}
+
+/*
+ * Function: pop_reset
+ *
+ * Purpose: Reset the server to its initial connect state
+ *
+ * Arguments:
+ * 	server	The server.
+ *
+ * Return value: 0 for success, non-0 with error in pop_error
+ * 	otherwise.
+ *
+ * Side effects: Closes the connection on error.
+ */
+int
+pop_reset (server)
+     popserver server;
+{
+  if (pop_retrieve_flush (server))
+    {
+      return (-1);
+    }
+
+  if (sendline (server, "RSET") || getok (server))
+    return (-1);
+
+  return (0);
+}
+
+/*
+ * Function: pop_quit
+ *
+ * Purpose: Quit the connection to the server,
+ *
+ * Arguments:
+ * 	server	The server to quit.
+ *
+ * Return value: 0 for success, non-zero otherwise with error in
+ * 	pop_error.
+ *
+ * Side Effects: The popserver passed in is unusable after this
+ * 	function is called, even if an error occurs.
+ */
+int
+pop_quit (server)
+     popserver server;
+{
+  int ret = 0;
+
+  if (server->file >= 0)
+    {
+      if (pop_retrieve_flush (server))
+	{
+	  ret = -1;
+	}
+
+      if (sendline (server, "QUIT") || getok (server))
+	{
+	  ret = -1;
+	}
+
+      close (server->file);
+    }
+
+  if (server->buffer)
+    free (server->buffer);
+  free ((char *) server);
+
+  return (ret);
+}
+
+#ifdef WINDOWSNT
+static int have_winsock = 0;
+#endif
+
+/*
+ * Function: socket_connection
+ *
+ * Purpose: Opens the network connection with the mail host, without
+ * 	doing any sort of I/O with it or anything.
+ *
+ * Arguments:
+ * 	host	The host to which to connect.
+ *	flags	Option flags.
+ * 	
+ * Return value: A file descriptor indicating the connection, or -1
+ * 	indicating failure, in which case an error has been copied
+ * 	into pop_error.
+ */
+static int
+socket_connection (host, flags)
+     char *host;
+     int flags;
+{
+  struct hostent *hostent;
+  struct servent *servent;
+  struct sockaddr_in addr;
+  char found_port = 0;
+  char *service;
+  int sock;
+#ifdef KERBEROS
+#ifdef KRB5
+  krb5_error_code rem;
+  krb5_ccache ccdef;
+  krb5_principal client, server;
+  krb5_error *err_ret;
+  register char *cp;
+#else
+  KTEXT ticket;
+  MSG_DAT msg_data;
+  CREDENTIALS cred;
+  Key_schedule schedule;
+  int rem;
+#endif /* KRB5 */
+#endif /* KERBEROS */
+
+  int try_count = 0;
+
+#ifdef WINDOWSNT
+  {
+    WSADATA winsockData;
+    if (WSAStartup (0x101, &winsockData) == 0)
+      have_winsock = 1;
+  }
+#endif
+
+  do
+    {
+      hostent = gethostbyname (host);
+      try_count++;
+      if ((! hostent) && ((h_errno != TRY_AGAIN) || (try_count == 5)))
+	{
+	  strcpy (pop_error, "Could not determine POP server's address");
+	  return (-1);
+	}
+    } while (! hostent);
+
+  bzero ((char *) &addr, sizeof (addr));
+  addr.sin_family = AF_INET;
+
+#ifdef KERBEROS
+  service = (flags & POP_NO_KERBEROS) ? POP_SERVICE : KPOP_SERVICE;
+#else
+  service = POP_SERVICE;
+#endif
+
+#ifdef HESIOD
+  if (! (flags & POP_NO_HESIOD))
+    {
+      servent = hes_getservbyname (service, "tcp");
+      if (servent)
+	{
+	  addr.sin_port = servent->s_port;
+	  found_port = 1;
+	}
+    }
+#endif
+  if (! found_port)
+    {
+      servent = getservbyname (service, "tcp");
+      if (servent)
+	{
+	  addr.sin_port = servent->s_port;
+	}
+      else
+	{
+#ifdef KERBEROS
+	  addr.sin_port = htons ((flags & POP_NO_KERBEROS) ?
+				POP_PORT : KPOP_PORT);
+#else
+	  addr.sin_port = htons (POP_PORT);
+#endif
+	}
+    }
+
+#define SOCKET_ERROR "Could not create socket for POP connection: "
+
+  sock = socket (PF_INET, SOCK_STREAM, 0);
+  if (sock < 0)
+    {
+      strcpy (pop_error, SOCKET_ERROR);
+      strncat (pop_error, strerror (errno),
+	       ERROR_MAX - sizeof (SOCKET_ERROR));
+      return (-1);
+	  
+    }
+
+  while (*hostent->h_addr_list)
+    {
+      bcopy (*hostent->h_addr_list, (char *) &addr.sin_addr,
+	     hostent->h_length);
+      if (! connect (sock, (struct sockaddr *) &addr, sizeof (addr)))
+	break;
+      hostent->h_addr_list++;
+    }
+
+#define CONNECT_ERROR "Could not connect to POP server: "
+     
+  if (! *hostent->h_addr_list)
+    {
+      CLOSESOCKET (sock);
+      strcpy (pop_error, CONNECT_ERROR);
+      strncat (pop_error, strerror (errno),
+	       ERROR_MAX - sizeof (CONNECT_ERROR));
+      return (-1);
+	  
+    }
+
+#ifdef KERBEROS
+#define KRB_ERROR "Kerberos error connecting to POP server: "
+  if (! (flags & POP_NO_KERBEROS))
+    {
+#ifdef KRB5
+      krb5_init_ets ();
+
+      if (rem = krb5_cc_default (&ccdef))
+	{
+	krb5error:
+	  strcpy (pop_error, KRB_ERROR);
+	  strncat (pop_error, error_message (rem),
+		   ERROR_MAX - sizeof(KRB_ERROR));
+	  CLOSESOCKET (sock);
+	  return (-1);
+	}
+
+      if (rem = krb5_cc_get_principal (ccdef, &client))
+	{
+	  goto krb5error;
+	}
+
+      for (cp = hostent->h_name; *cp; cp++)
+	{
+	  if (isupper (*cp))
+	    {
+	      *cp = tolower (*cp);
+	    }
+	}
+
+      if (rem = krb5_sname_to_principal (hostent->h_name, POP_SERVICE,
+					 FALSE, &server))
+	{
+	  goto krb5error;
+	}
+
+      rem = krb5_sendauth ((krb5_pointer) &sock, "KPOPV1.0", client, server,
+			  AP_OPTS_MUTUAL_REQUIRED,
+			  0,	/* no checksum */
+			  0,	/* no creds, use ccache instead */
+			  ccdef,
+			  0,	/* don't need seq # */
+			  0,	/* don't need subsession key */
+			  &err_ret,
+			  0);	/* don't need reply */
+      krb5_free_principal (server);
+      if (rem)
+	{
+	  if (err_ret && err_ret->text.length)
+	    {
+	      strcpy (pop_error, KRB_ERROR);
+	      strncat (pop_error, error_message (rem),
+		       ERROR_MAX - sizeof (KRB_ERROR));
+	      strncat (pop_error, " [server says '",
+		       ERROR_MAX - strlen (pop_error) - 1);
+	      strncat (pop_error, err_ret->text.data,
+		       min (ERROR_MAX - strlen (pop_error) - 1,
+			    err_ret->text.length));
+	      strncat (pop_error, "']",
+		       ERROR_MAX - strlen (pop_error) - 1);
+	    }
+	  else
+	    {
+	      strcpy (pop_error, KRB_ERROR);
+	      strncat (pop_error, error_message (rem),
+		       ERROR_MAX - sizeof (KRB_ERROR));
+	    }
+	  if (err_ret)
+	    krb5_free_error (err_ret);
+
+	  CLOSESOCKET (sock);
+	  return (-1);
+	}
+#else  /* ! KRB5 */	  
+      ticket = (KTEXT) malloc (sizeof (KTEXT_ST));
+      rem = krb_sendauth (0L, sock, ticket, "pop", hostent->h_name,
+			  (char *) krb_realmofhost (hostent->h_name),
+			  (unsigned long) 0, &msg_data, &cred, schedule,
+			  (struct sockaddr_in *) 0,
+			  (struct sockaddr_in *) 0,
+			  "KPOPV0.1");
+      free ((char *) ticket);
+      if (rem != KSUCCESS)
+	{
+	  strcpy (pop_error, KRB_ERROR);
+	  strncat (pop_error, krb_err_txt[rem],
+		   ERROR_MAX - sizeof (KRB_ERROR));
+	  CLOSESOCKET (sock);
+	  return (-1);
+	}
+#endif /* KRB5 */
+    }
+#endif /* KERBEROS */
+
+  return (sock);
+} /* socket_connection */
+
+/*
+ * Function: getline
+ *
+ * Purpose: Get a line of text from the connection and return a
+ * 	pointer to it.  The carriage return and linefeed at the end of
+ * 	the line are stripped, but periods at the beginnings of lines
+ * 	are NOT dealt with in any special way.
+ *
+ * Arguments:
+ * 	server	The server from which to get the line of text.
+ *
+ * Returns: A non-null pointer if successful, or a null pointer on any
+ * 	error, with an error message copied into pop_error.
+ *
+ * Notes: The line returned is overwritten with each call to getline.
+ *
+ * Side effects: Closes the connection on error.
+ */
+static char *
+getline (server)
+     popserver server;
+{
+#define GETLINE_ERROR "Error reading from server: "
+
+  int ret;
+  int search_offset = 0;
+
+  if (server->data)
+    {
+      char *cp = find_crlf (server->buffer + server->buffer_index);
+      if (cp)
+	{
+	  int found;
+	  int data_used;
+
+	  found = server->buffer_index;
+	  data_used = (cp + 2) - server->buffer - found;
+	       
+	  *cp = '\0';		/* terminate the string to be returned */
+	  server->data -= data_used;
+	  server->buffer_index += data_used;
+
+	  if (pop_debug)
+	    fprintf (stderr, "<<< %s\n", server->buffer + found);
+	  return (server->buffer + found);
+	}
+      else
+	{
+	  bcopy (server->buffer + server->buffer_index,
+		 server->buffer, server->data);
+	  /* Record the fact that we've searched the data already in
+             the buffer for a CRLF, so that when we search below, we
+             don't have to search the same data twice.  There's a "-
+             1" here to account for the fact that the last character
+             of the data we have may be the CR of a CRLF pair, of
+             which we haven't read the second half yet, so we may have
+             to search it again when we read more data. */
+	  search_offset = server->data - 1;
+	  server->buffer_index = 0;
+	}
+    }
+  else
+    {
+      server->buffer_index = 0;
+    }
+
+  while (1)
+    {
+      /* There's a "- 1" here to leave room for the null that we put
+         at the end of the read data below.  We put the null there so
+         that find_crlf knows where to stop when we call it. */
+      if (server->data == server->buffer_size - 1)
+	{
+	  server->buffer_size += GETLINE_INCR;
+	  server->buffer = (char *)realloc (server->buffer, server->buffer_size);
+	  if (! server->buffer)
+	    {
+	      strcpy (pop_error, "Out of memory in getline");
+	      pop_trash (server);
+	      return (0);
+	    }
+	}
+      ret = RECV (server->file, server->buffer + server->data,
+		  server->buffer_size - server->data - 1, 0);
+      if (ret < 0)
+	{
+	  strcpy (pop_error, GETLINE_ERROR);
+	  strncat (pop_error, strerror (errno),
+		   ERROR_MAX - sizeof (GETLINE_ERROR));
+	  pop_trash (server);
+	  return (0);
+	}
+      else if (ret == 0)
+	{
+	  strcpy (pop_error, "Unexpected EOF from server in getline");
+	  pop_trash (server);
+	  return (0);
+	}
+      else
+	{
+	  char *cp;
+	  server->data += ret;
+	  server->buffer[server->data] = '\0';
+	       
+	  cp = find_crlf (server->buffer + search_offset);
+	  if (cp)
+	    {
+	      int data_used = (cp + 2) - server->buffer;
+	      *cp = '\0';
+	      server->data -= data_used;
+	      server->buffer_index = data_used;
+
+	      if (pop_debug)
+		fprintf (stderr, "<<< %s\n", server->buffer);
+	      return (server->buffer);
+	    }
+	  search_offset += ret;
+	}
+    }
+
+  /* NOTREACHED */
+}
+
+/*
+ * Function: sendline
+ *
+ * Purpose: Sends a line of text to the POP server.  The line of text
+ * 	passed into this function should NOT have the carriage return
+ * 	and linefeed on the end of it.  Periods at beginnings of lines
+ * 	will NOT be treated specially by this function.
+ *
+ * Arguments:
+ * 	server	The server to which to send the text.
+ * 	line	The line of text to send.
+ *
+ * Return value: Upon successful completion, a value of 0 will be
+ * 	returned.  Otherwise, a non-zero value will be returned, and
+ * 	an error will be copied into pop_error.
+ *
+ * Side effects: Closes the connection on error.
+ */
+static int
+sendline (server, line)
+     popserver server;
+     char *line;
+{
+#define SENDLINE_ERROR "Error writing to POP server: "
+  int ret;
+
+  ret = fullwrite (server->file, line, strlen (line));
+  if (ret >= 0)
+    {				/* 0 indicates that a blank line was written */
+      ret = fullwrite (server->file, "\r\n", 2);
+    }
+
+  if (ret < 0)
+    {
+      pop_trash (server);
+      strcpy (pop_error, SENDLINE_ERROR);
+      strncat (pop_error, strerror (errno),
+	       ERROR_MAX - sizeof (SENDLINE_ERROR));
+      return (ret);
+    }
+
+  if (pop_debug)
+    fprintf (stderr, ">>> %s\n", line);
+
+  return (0);
+}
+
+/*
+ * Procedure: fullwrite
+ *
+ * Purpose: Just like write, but keeps trying until the entire string
+ * 	has been written.
+ *
+ * Return value: Same as write.  Pop_error is not set.
+ */
+static int
+fullwrite (fd, buf, nbytes)
+     int fd;
+     char *buf;
+     int nbytes;
+{
+  char *cp;
+  int ret;
+
+  cp = buf;
+  while ((ret = SEND (fd, cp, nbytes, 0)) > 0)
+    {
+      cp += ret;
+      nbytes -= ret;
+    }
+
+  return (ret);
+}
+
+/*
+ * Procedure getok
+ *
+ * Purpose: Reads a line from the server.  If the return indicator is
+ * 	positive, return with a zero exit status.  If not, return with
+ * 	a negative exit status.
+ *
+ * Arguments:
+ * 	server	The server to read from.
+ * 
+ * Returns: 0 for success, else for failure and puts error in pop_error.
+ *
+ * Side effects: On failure, may make the connection unusable.
+ */
+static int
+getok (server)
+     popserver server;
+{
+  char *fromline;
+
+  if (! (fromline = getline (server)))
+    {
+      return (-1);
+    }
+
+  if (! strncmp (fromline, "+OK", 3))
+    return (0);
+  else if (! strncmp (fromline, "-ERR", 4))
+    {
+      strncpy (pop_error, fromline, ERROR_MAX);
+      pop_error[ERROR_MAX-1] = '\0';
+      return (-1);
+    }
+  else
+    {
+      strcpy (pop_error,
+	      "Unexpected response from server; expecting +OK or -ERR");
+      pop_trash (server);
+      return (-1);
+    }
+}	  
+
+#if 0
+/*
+ * Function: gettermination
+ *
+ * Purpose: Gets the next line and verifies that it is a termination
+ * 	line (nothing but a dot).
+ *
+ * Return value: 0 on success, non-zero with pop_error set on error.
+ *
+ * Side effects: Closes the connection on error.
+ */
+static int
+gettermination (server)
+     popserver server;
+{
+  char *fromserver;
+
+  fromserver = getline (server);
+  if (! fromserver)
+    return (-1);
+
+  if (strcmp (fromserver, "."))
+    {
+      strcpy (pop_error,
+	      "Unexpected response from server in gettermination");
+      pop_trash (server);
+      return (-1);
+    }
+
+  return (0);
+}
+#endif
+
+/*
+ * Function pop_close
+ *
+ * Purpose: Close a pop connection, sending a "RSET" command to try to
+ * 	preserve any changes that were made and a "QUIT" command to
+ * 	try to get the server to quit, but ignoring any responses that
+ * 	are received.
+ *
+ * Side effects: The server is unusable after this function returns.
+ * 	Changes made to the maildrop since the session was started (or
+ * 	since the last pop_reset) may be lost.
+ */
+void 
+pop_close (server)
+     popserver server;
+{
+  pop_trash (server);
+  free ((char *) server);
+
+  return;
+}
+
+/*
+ * Function: pop_trash
+ *
+ * Purpose: Like pop_close or pop_quit, but doesn't deallocate the
+ * 	memory associated with the server.  It is legal to call
+ * 	pop_close or pop_quit after this function has been called.
+ */
+static void
+pop_trash (server)
+     popserver server;
+{
+  if (server->file >= 0)
+    {
+      /* avoid recursion; sendline can call pop_trash */
+      if (server->trash_started)
+	return;
+      server->trash_started = 1;
+
+      sendline (server, "RSET");
+      sendline (server, "QUIT");
+
+      CLOSESOCKET (server->file);
+      server->file = -1;
+      if (server->buffer)
+	{
+	  free (server->buffer);
+	  server->buffer = 0;
+	}
+    }
+
+#ifdef WINDOWSNT
+  if (have_winsock)
+    WSACleanup ();
+#endif
+}
+
+/* Return a pointer to the first CRLF in IN_STRING,
+   or 0 if it does not contain one.  */
+
+static char *
+find_crlf (in_string)
+     char *in_string;
+{
+  while (1)
+    {
+      if (! *in_string)
+	return (0);
+      else if (*in_string == '\r')
+	{
+	  if (*++in_string == '\n')
+	    return (in_string - 1);
+	}
+      else
+	in_string++;
+    }
+  /* NOTREACHED */
+}
+
+#endif /* MAIL_USE_POP */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib-src/pop.h	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,82 @@
+/* pop.h: Header file for the "pop.c" client POP3 protocol.
+   Copyright (c) 1991,1993 Free Software Foundation, Inc.
+   Written by Jonathan Kamens, jik@security.ov.com.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <stdio.h>
+
+#define GETLINE_MIN 1024	/* the getline buffer starts out this */
+				/* size */
+#define GETLINE_INCR 1024	/* the getline buffer is grown by this */
+				/* size when it needs to grow */
+
+extern char pop_error[];
+extern int pop_debug;
+
+struct _popserver
+{
+  int file, data;
+  char *buffer;
+  int buffer_size, buffer_index;
+  int in_multi;
+  int trash_started;
+};
+
+typedef struct _popserver *popserver;
+
+/*
+ * Valid flags for the pop_open function.
+ */
+
+#define POP_NO_KERBEROS	(1<<0)
+#define POP_NO_HESIOD	(1<<1)
+#define POP_NO_GETPASS 	(1<<2)
+
+#ifdef __STDC__
+#define _ARGS(a) a
+#else
+#define _ARGS(a) ()
+#endif
+
+extern popserver pop_open _ARGS((char *host, char *username, char *password,
+				 int flags));
+extern int pop_stat _ARGS((popserver server, int *count, int *size));
+extern int pop_list _ARGS((popserver server, int message, int **IDs,
+			   int **size));
+extern char *pop_retrieve _ARGS((popserver server, int message, int markfrom));
+extern int pop_retrieve_first _ARGS((popserver server, int message,
+				     char **response));
+extern int pop_retrieve_next _ARGS((popserver server, char **line));
+extern int pop_retrieve_flush _ARGS((popserver server));
+extern int pop_top_first _ARGS((popserver server, int message, int lines,
+				char **response));
+extern int pop_top_next _ARGS((popserver server, char **line));
+extern int pop_top_flush _ARGS((popserver server));
+extern int pop_multi_first _ARGS((popserver server, char *command,
+				  char **response));
+extern int pop_multi_next _ARGS((popserver server, char **line));
+extern int pop_multi_flush _ARGS((popserver server));
+extern int pop_delete _ARGS((popserver server, int message));
+extern int pop_noop _ARGS((popserver server));
+extern int pop_last _ARGS((popserver server));
+extern int pop_reset _ARGS((popserver server));
+extern int pop_quit _ARGS((popserver server));
+extern void pop_close _ARGS((popserver));
+
+#undef _ARGS
--- a/lib-src/send-pr	Mon Aug 13 09:23:08 2007 +0200
+++ b/lib-src/send-pr	Mon Aug 13 09:24:17 2007 +0200
@@ -24,16 +24,17 @@
 VERSION=3.101
 
 # The submitter-id for your site.
-SUBMITTER=unknown
+SUBMITTER=net
 
 # Where the GNATS directory lives, if at all.
 [ -z "$GNATS_ROOT" ] && 
 GNATS_ROOT=/usr/lib/gnats/gnats-db
 
 # The default mail address for PR submissions. 
-GNATS_ADDR=bugs@altair.xemacs.org
+GNATS_ADDR=bugs@xemacs.org
 
 # Where the gnats category tree lives.
+[ -z "$DATADIR" ] &&
 DATADIR=/usr/share
 
 # If we've been moved around, try using GCC_EXEC_PREFIX.
@@ -48,7 +49,7 @@
 DEFAULT_ORGANIZATION="XEmacs Users"
 
 # The default site to look for.
-GNATS_SITE=altair.xemacs.org
+GNATS_SITE=xemacs.org
 
 # Newer config information?
 [ -f ${GNATS_ROOT}/gnats-adm/config ] && . ${GNATS_ROOT}/gnats-adm/config
--- a/lisp/ChangeLog	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/ChangeLog	Mon Aug 13 09:24:17 2007 +0200
@@ -1,3 +1,38 @@
+Sat Apr  5 09:32:43 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+	* utils/finder-inf.el: Regenerated.
+
+	* utils/finder.el (finder-known-keywords): Add mule keyword.
+
+Tue Apr  1 14:08:04 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+	* prim/winnt.el: New file.  Derived from Emacs 19.34, adapted by
+	Marc Paquette.
+
+	* prim/faces.el (set-face-stipple): Allow usage of a pixmap
+	(suggested by Per Abrahamsen).
+
+	* mule/canna.el (running-xemacs): Move to the top.
+
+	* prim/cmdloop.el (y-or-n-p-minibuf): Add protection in case user
+	hits something that can't be bound to a key.
+
+Tue Apr  1 11:25:33 1997  Martin Buchholz  <mrb@Eng.Sun.COM>
+
+	* bytecomp/bytecomp.el (char-after): Correct coding of calling
+	sequence.
+
+Mon Mar 31 21:36:47 1997  Kyle Jones  <kyle_jones@wonderworks.com>
+
+	* prim/faces.el (set-face-stipple): New function.
+
+Sat Mar 29 14:52:02 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+	* gnats/send-pr.el (send-pr:submit-pr): Pass send-pr:datadir in
+	the environment to send-pr.
+	(send-pr::insert-template): Ditto.
+	(send-pr:default-site): Default submission address is at xemacs.org.
+
 Fri Jul 19 12:01:51 1996  Christoph Wedler  <wedler@fmi.uni-passau.de>
 
 	* packages/info.el (Info-elisp-ref): Look first in lispref, then
--- a/lisp/auctex/ChangeLog	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/auctex/ChangeLog	Mon Aug 13 09:24:17 2007 +0200
@@ -1,3 +1,9 @@
+Sat Apr  5 09:40:23 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+	* Makefile (STYLESRC): Move style/*.el files to etc/auctex/style.
+
+	* tex.el (TeX-lisp-directory): Restore previous setting.
+
 Tue Mar 04 11:29:23 1997  Per Abrahamsen  <abraham@dina.kvl.dk>
 
 	* Version 9.7l released.
--- a/lisp/auctex/Makefile	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/auctex/Makefile	Mon Aug 13 09:24:17 2007 +0200
@@ -72,22 +72,22 @@
 MINMAPSRC = auc-menu.el maniac.el outln-18.el all.el multi-prompt.el
 
 CONTRIB = bib-cite.el tex-jp.el font-latex.el
-CONTRIBELC = bib-cite.elc font-latex.elc
+CONTRIBELC = bib-cite.elc tex-jp.elc font-latex.elc
 
 AUCSRC = auc-old.el tex.el tex-buf.el latex.el tex-info.el multi-prompt.el
 AUCELC = auc-old.elc tex.elc tex-buf.elc latex.elc tex-info.elc \
 	multi-prompt.elc
 
 
-STYLESRC = style/slides.el    style/foils.el    style/amstex.el \
-	   style/article.el   style/book.el     style/letter.el \
-	   style/report.el    style/amsart.el   style/amsbook.el \
-	   style/epsf.el      style/psfig.el    style/latexinfo.el \
-	   style/dutch.el     style/german.el   style/dk.el \
-	   style/j-article.el style/j-book.el   style/j-report.el \
-	   style/jarticle.el  style/jbook.el    style/jreport.el \
-	   style/dinbrief.el  style/virtex.el   style/plfonts.el \
-	   style/plhb.el      style/harvard.el	style/swedish.el
+STYLESRC = ../../etc/auctex/style/slides.el    ../../etc/auctex/style/foils.el    ../../etc/auctex/style/amstex.el \
+	   ../../etc/auctex/style/article.el   ../../etc/auctex/style/book.el     ../../etc/auctex/style/letter.el \
+	   ../../etc/auctex/style/report.el    ../../etc/auctex/style/amsart.el   ../../etc/auctex/style/amsbook.el \
+	   ../../etc/auctex/style/epsf.el      ../../etc/auctex/style/psfig.el    ../../etc/auctex/style/latexinfo.el \
+	   ../../etc/auctex/style/dutch.el     ../../etc/auctex/style/german.el   ../../etc/auctex/style/dk.el \
+	   ../../etc/auctex/style/j-article.el ../../etc/auctex/style/j-book.el   ../../etc/auctex/style/j-report.el \
+	   ../../etc/auctex/style/jarticle.el  ../../etc/auctex/style/jbook.el    ../../etc/auctex/style/jreport.el \
+	   ../../etc/auctex/style/dinbrief.el  ../../etc/auctex/style/virtex.el   ../../etc/auctex/style/plfonts.el \
+	   ../../etc/auctex/style/plhb.el      ../../etc/auctex/style/harvard.el	../../etc/auctex/style/swedish.el
 
 DOCFILES = doc/Makefile doc/auc-tex.texi doc/intro.texi doc/install.texi \
 	doc/changes.texi doc/tex-ref.tex doc/math-ref.tex doc/history.texi
@@ -100,7 +100,7 @@
 lisp:
 	$(ELC) $(AUCSRC) $(STYLESRC) $(CONTRIB)
 
-some:	$(AUCELC) $(STYLESRC:.el=.elc)
+some:	$(AUCELC) $(CONTRIBELC) $(STYLESRC:.el=.elc)
 
 install:	install-lisp
 
--- a/lisp/auctex/style/amsart.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-;;; amsart.el --- AMS article style hook.
-
-;;; Code:
-
-(TeX-add-style-hook "amsart"
- (function
-  (lambda ()
-    (TeX-run-style-hooks "amstex"))))
-
-;;; amsart.el ends here.
--- a/lisp/auctex/style/amsbook.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-;;; amsbook.el --- AMS book style hook.
-
-;;; Code:
-
-(TeX-add-style-hook "amsbook"
- (function
-  (lambda ()
-    (TeX-run-style-hooks "amstex"))))
-
-;;; amsbook.el ends here.
--- a/lisp/auctex/style/amstex.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-;;; amstex.el --- AMS LaTeX support.
-
-;;; Code:
-
-(TeX-add-style-hook "amstex"
- (function
-  (lambda ()
-    (TeX-add-symbols
-     '("eqref" TeX-arg-label)))))
-
-;;; amstex.el ends here.
--- a/lisp/auctex/style/article.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-;;; article.el - Special code for article style.
-
-;; $Id: article.el,v 1.1 1997/02/20 02:15:41 steve Exp $
-
-;;; Code:
-
-(TeX-add-style-hook "article"
- (function (lambda ()
-  (setq LaTeX-largest-level (LaTeX-section-level "section")))))
-
-;;; article.el ends here
--- a/lisp/auctex/style/book.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-;;; book.el - Special code for book style.
-
-;; $Id: book.el,v 1.1 1997/02/20 02:15:41 steve Exp $
-
-;;; Code:
-
-(TeX-add-style-hook "book"
- (function (lambda () 
-  (setq LaTeX-largest-level (LaTeX-section-level "chapter")))))
-
-;;; book.el ends here
--- a/lisp/auctex/style/dinbrief.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +0,0 @@
-;;; dinbrief.el - Special code for LaTeX-Style dinbrief.
-
-;; Contributed by Werner Fink <tex@itap.physik.uni-stuttgart.de>
-;; Please direct comments to him.
-
-;;; Commentary:
-
-;; LaTeX-Style: dinbrief.sty
-;;      Server: rusinfo.rus.uni-stuttgart.de
-;;   Directory: /pub/soft/tex/macros/latex/contrib/letters
-
-;;; Code:
-
-(TeX-add-style-hook "dinbrief"
- (function
-  (lambda ()
-    (LaTeX-add-environments
-     '("letter" LaTeX-recipient-hook))
-    (TeX-add-symbols
-     '("Absender" "Absender: ")
-     '("Postvermerk" "Postvermerk: ")
-     '("Datum" "Datum: ")
-     '("Betreff" "Betreff: ")
-     '("Behandlungsvermerk" "Behandlungsvermerk: ")
-     '("Verteiler" "Verteiler: ")
-     "makelabel" "Retourlabel"
-     '("Anlagen" "Anlagen: ")
-     '("Fenster" "Fenster \(ja/nein\): ")
-     '("Retouradresse" "Retouradresse: ")
-     '("signature" "Unterschrift: ")
-     '("opening" "Anrede: ")
-     '("closing" "Schlu\"s: ")))))
-
-(defun LaTeX-recipient-hook (environment)
-  "Insert ENVIRONMENT and prompt for recipient and address."
-  (let ((sender (read-input "Absender: " (user-full-name)))
-	(recipient (read-input "Empf\"anger: "))
-	(address (read-input "Anschrift: "))
-	(postvermerk (read-input "Postvermerk: "))
-	(date (read-input "Datum: " (LaTeX-today)))
-	(betreff (read-input "Betreff: "))
-	(vermerk (read-input "Behandlungsvermerk: "))
-	(verteil (read-input "Verteiler: "))
-	(anlage (read-input "Anlagen: "))
-	(opening (read-input "Anrede: "))
-	(closing (read-input "Schlu\"s: "))
-	(fenster (read-input "Fenster \(ja/nein\): "))
-	(signature (read-input "Unterschrift: "))
-	)
-
-    (if (not (zerop (length sender)))
-	(progn
-	  (insert TeX-esc "Absender" TeX-grop sender TeX-grcl)
-	  (newline-and-indent)))
-    (if (not (zerop (length postvermerk)))
-	(progn
-	  (insert TeX-esc "Postvermerk" TeX-grop postvermerk TeX-grcl)
-	  (newline-and-indent)))
-    (if (not (zerop (length betreff)))
-	(progn
-	  (insert TeX-esc "Betreff" TeX-grop betreff TeX-grcl)
-	  (newline-and-indent)))
-    (if (not (zerop (length vermerk)))
-	(progn
-	  (insert TeX-esc "Behandlungsvermerk" TeX-grop vermerk TeX-grcl)
-	  (newline-and-indent)))
-    (if (not (zerop (length verteil)))
-	(progn
-	  (insert TeX-esc "Verteiler" TeX-grop verteil TeX-grcl)
-	  (newline-and-indent)))
-    (if (not (zerop (length anlage)))
-	(progn
-	  (insert TeX-esc "Anlagen" TeX-grop anlage TeX-grcl)
-	  (newline-and-indent)))
-    (if (string= fenster "ja")
-	(progn
-	  (insert TeX-esc "Fenster")
-	  (let ((retouradr (read-input "Retouradresse: " (user-full-name))))
-	    (newline-and-indent)
-	  (if (not (zerop (length retouradr)))
-	      (progn
-		(insert TeX-esc "Retouradresse" TeX-grop retouradr TeX-grcl)
-		(newline-and-indent))))))
-    (if (not (zerop (length signature)))
-	(progn
-	  (insert TeX-esc "signature" TeX-grop signature TeX-grcl)
-	  (newline-and-indent)))
-    (if (not (zerop (length date)))
-	(progn
-	  (insert TeX-esc "Datum" TeX-grop date TeX-grcl)
-	  (newline-and-indent)))
-    (newline-and-indent)
-
-    (let ((indentation (current-column)))
-      (LaTeX-insert-environment
-       environment
-       (concat TeX-grop recipient
-	       (if (not (zerop (length address)))
-		   (concat
-		    (if (not (zerop (length recipient)))
-			(concat " " TeX-esc TeX-esc " "))
-		    address))
-	       TeX-grcl))
-      (save-excursion			; Fix indentation of address
-	(if (search-backward TeX-grcl nil 'move)
-	    (let ((addr-end (point-marker)))
-	      (if (search-backward TeX-grop nil 'move)
-		  (let ((addr-column (current-column)))
-		    (while (search-forward
-			    (concat TeX-esc TeX-esc)
-			    (marker-position addr-end) 'move)
-		      (progn
-			(newline)
-			(indent-to addr-column))))))))
-      (insert "\n")
-      (indent-to indentation))
-    (insert TeX-esc "opening"
-	    TeX-grop
-	    (if (zerop (length opening))
-		(concat TeX-esc " ")
-	      opening)
-	    TeX-grcl "\n")
-
-    (indent-relative-maybe)
-    (save-excursion
-      (insert "\n" TeX-esc "closing"
-	      TeX-grop
-	      (if (zerop (length closing))
-		  (concat TeX-esc " ")
-		closing)
-	      TeX-grcl "\n")
-      (indent-relative-maybe))))
-
-(defun LaTeX-today nil
-  "Return a string representing todays date according to flavor."
-  (interactive)
-   (let ((ctime-string (current-time-string))
-	(month-alist '(("Jan" . "Januar")
-		       ("Feb" . "Februar")
-		       ("Mar" . "M\\\"arz")
-		       ("Apr" . "April")
-		       ("May" . "Mai")
-		       ("Jun" . "Juni")
-		       ("Jul" . "Juli")
-		       ("Aug" . "August")
-		       ("Sep" . "September")
-		       ("Oct" . "Oktober")
-		       ("Nov" . "November")
-		       ("Dec" . "Dezember"))))
-    (string-match
-     "^\\S-+\\s-+\\(\\S-+\\)\\s-+\\(\\S-+\\)\\s-+\\S-+\\s-+\\(\\S-+\\)"
-     ctime-string)
-    (let ((year (substring ctime-string (match-beginning 3) (match-end 3)))
-	  (month (substring ctime-string (match-beginning 1) (match-end 1)))
-	  (day (substring ctime-string (match-beginning 2) (match-end 2))))
-      (if (assoc month month-alist)
-	  (progn
-	    (setq month (cdr (assoc month month-alist)))
-	    (if (> 2 (length day))
-		(setq day (concat "0" day)))))
-      (format "Stuttgart, den %s. %s %s" day month year))))
-
-;;; dinbrief.el ends here
--- a/lisp/auctex/style/dk.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-;;; dk.el - Setup AUC TeX for editing Danish text.
-
-;; $Id: dk.el,v 1.1 1997/02/20 02:15:42 steve Exp $
-
-;;; Code:
-
-(TeX-add-style-hook "dk"
- (function (lambda ()
-   (run-hooks 'TeX-language-dk-hook))))
-
-;;; dk.el ends here
--- a/lisp/auctex/style/dutch.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-;;; dutch.el - Setup AUC TeX for editing Dutch text.
-
-;; $Id: dutch.el,v 1.1 1997/02/20 02:15:42 steve Exp $
-
-;;; Code:
-
-(TeX-add-style-hook "dutch"
- (function (lambda ()
-   (run-hooks 'TeX-language-nl-hook))))
-
-;;; dutch.el ends here
--- a/lisp/auctex/style/epsf.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-;;; epsf.el - Support for the epsf style option.
-
-;; Contributed by Marc Gemis <makke@wins.uia.ac.be>
-
-;;; Code: 
-
-(TeX-add-style-hook "epsf"
- (function
-  (lambda ()
-    (TeX-add-symbols
-     '("epsfsize" TeX-arg-epsfsize)
-     '("epsffile" TeX-arg-file)
-     '("epsfbox" TeX-arg-file)
-     "epsflly" "epsfury" "testit" "epsfgetlitbb"
-     "epsfnormal" "epsfgetbb" "other" "epsfsetgraph"
-     "PsFragSpecialArgs" "epsfaux" "testit" "epsfgrab"
-     "epsfllx" "epsflly" "epsfury" "epsfverbosetrue"
-     )
-    (LaTeX-add-environments
-     '("epsffig" LaTeX-env-epsffigure)
-     )
-
-    )))
-
-
-(defun LaTeX-env-epsffigure (environment)
-  "Create a `figure'-environment with \\label and \\caption and \\epsfbox
-commands. Eventually a `psfrags'-environment is inserted round the \\epsfbox."
-
-  (let ((float (read-input "Float to: " LaTeX-float))
-	(caption (read-input "Caption: "))
-	(label (read-input "Label: " LaTeX-figure-label))
-        ; gf: ask if there is an psfrag environment needed
-	(psfrag (y-or-n-p "PS fragments: "))
-	(psfile (read-file-name "EPS-file: " "" "" nil))
-	)
-
-    (setq LaTeX-float (if (zerop (length float))
-			  LaTeX-float
-			float))
-
-    (LaTeX-insert-environment "figure"
-			      (concat LaTeX-optop LaTeX-float LaTeX-optcl))
-    (LaTeX-insert-environment "center")
-    (if psfrag
-	(progn
-	  (LaTeX-insert-environment "psfrags")
-	  (newline-and-indent)
-	  ))
-    (if (or (zerop (length label))
-	    (and (string= "figure" environment)
-		 (equal LaTeX-figure-label label))
-	    )
-	()
-      (newline-and-indent)
-      (insert TeX-esc "label" TeX-grop label TeX-grcl)
-      (end-of-line 0)
-      (LaTeX-indent-line))
-
-
-    (newline-and-indent)
-    (insert TeX-esc "leavevmode")
-    (newline-and-indent)
-    (insert TeX-esc "epsfbox" TeX-grop psfile TeX-grcl)
-    (if (zerop (length caption))
-	()
-      (newline-and-indent)
-      (insert TeX-esc "caption" TeX-grop caption TeX-grcl))
-    (newline)
-    (forward-line 4)
-    (newline)
-
-))
-
-(defun TeX-arg-epsfsize (optional &optional prompt definition)
-  "Create a line that print epsf figures at a certain percentage"
-  (interactive)
-  (let ((scale (read-input "Scale (%): "))
-	)
-    (setq scalestr (if (zerop (length scale))
-		       "75"
-		     (format "%s" scale)
-		     ))
-    (save-excursion
-      ; append #1#{scale#1}
-      (insert "#1#2" TeX-grop "0." scale "#1" TeX-grcl)
-      ; insert \def before \epsfsize
-      (beginning-of-line 1)
-      (newline)
-      (insert TeX-esc "def")
-      (forward-line -1)
-      (insert "% From now on print figures at " scale "% of original size")
-      )
-    (end-of-line)))
-
-;;; epsf.el ends here
--- a/lisp/auctex/style/foils.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-;;; foils.el - Special code for FoilTeX.
-
-;; $Id: foils.el,v 1.1 1997/02/20 02:15:42 steve Exp $
-
-;;; Code:
-
-(require 'latex)
-
-(TeX-add-style-hook "foils"
- (function
-  (lambda ()
-    (add-hook 'LaTeX-document-style-hook 'LaTeX-style-foils)
-    (setq LaTeX-default-style "foils")
-    (setq LaTeX-default-options '("landscape"))
-    (TeX-add-symbols
-     '("foilhead" [ "Rubric-body separation" ] "Foil rubric")))))
-
-(defun LaTeX-style-foils nil
-  "Prompt for and insert foiltex options."
-  (require 'timezone)
-  (let* ((date (timezone-parse-date (current-time-string)))
-	 (year   (string-to-int (aref date 0)))
-	 (month  (string-to-int (aref date 1)))
-	 (day    (string-to-int (aref date 2)))
-	 (title (read-input "Title: ")))
-    (save-excursion
-      (goto-char (point-max))
-      (re-search-backward ".begin.document.")
-      (insert TeX-esc "title"
-	      TeX-grop title TeX-grcl "\n")
-      (insert TeX-esc "author"
-	      TeX-grop (user-full-name) TeX-grcl "\n")
-      (insert TeX-esc "date" TeX-grop
-	      (format "%d-%02d-%02d" year month day)
-	      TeX-grcl "\n")
-      (insert "" TeX-esc "\nMyLogo" TeX-grop TeX-grcl "\n")
-      (insert "%" TeX-esc "Restriction" TeX-grop TeX-grcl "\n")
-      (insert "%" TeX-esc "rightfooter" TeX-grop TeX-grcl "\n")
-      (insert "%" TeX-esc "leftheader" TeX-grop TeX-grcl "\n")
-      (insert "%" TeX-esc "rightheader" TeX-grop TeX-grcl "\n\n")
-      (re-search-forward ".begin.document.")
-      (end-of-line)
-      (newline-and-indent)
-      (insert "" TeX-esc "maketitle\n\n"))
-    (forward-line -1)))
-
-;;; foils.el ends here
--- a/lisp/auctex/style/german.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-;;; german.el - Setup AUC TeX for editing German text.
-
-;; $Id: german.el,v 1.1 1997/02/20 02:15:42 steve Exp $
-
-;;; Commentary:
-;;
-;; `german.sty' use `"' to give next character an umlaut.
-
-;;; Code:
-
-(defvar LaTeX-german-mode-syntax-table
-  (copy-syntax-table LaTeX-mode-syntax-table)
-  "Syntax table used in LaTeX mode when using `german.sty'.")
-
-(modify-syntax-entry ?\"  "w"  LaTeX-german-mode-syntax-table)
-
-(TeX-add-style-hook "german"
- (function (lambda ()
-   (set-syntax-table LaTeX-german-mode-syntax-table)
-   (make-local-variable 'TeX-open-quote)
-   (make-local-variable 'TeX-close-quote)
-   (make-local-variable 'TeX-quote-after-quote)
-   (setq TeX-quote-after-quote t)
-   (setq TeX-open-quote "\"`")
-   (setq TeX-close-quote "\"'")
-   (run-hooks 'TeX-language-de-hook))))
-
-;;; german.el ends here
--- a/lisp/auctex/style/harvard.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-;; harvard.el --- Support for Harvard Citation style package for AUC-TeX
-
-;; Copyright (C) 1994 Berwin Turlach <berwin@core.ucl.ac.be>
-
-;; Version: $Id: harvard.el,v 1.1 1997/02/20 02:15:42 steve Exp $
-
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 1, or (at your option)
-;; any later version.
-;;
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with this program; if not, write to the Free Software
-;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-;;; Commentary:
-
-;; Harvard citation style is from Peter Williams available on the CTAN
-;; servers
-
-;;; Code:
-
-(require 'latex)
-
-(TeX-add-style-hook "harvard"
- (function
-  (lambda ()
-
-    (LaTeX-add-environments
-     '("thebibliography" LaTeX-env-harvardbib ignore))
-
-    (TeX-add-symbols
-     "harvardand"
-     '("citeasnoun"
-       (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil)
-       TeX-arg-cite)
-     '("possessivecite"
-       (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil)
-       TeX-arg-cite)
-     '("citeaffixed"
-       (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil)
-       TeX-arg-cite "Affix")
-     '("citeyear"
-       (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil)
-       TeX-arg-cite)
-     '("citename"
-       (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil)
-       TeX-arg-cite)
-     '("citationstyle"
-       (TeX-arg-eval completing-read "Citation style: " '(("agsm") ("dcu"))))
-     '("citationmode"
-       (TeX-arg-eval completing-read "Citation mode: "
-                     '(("full") ("abbr") ("default"))))
-     '("harvardparenthesis"
-       (TeX-arg-eval completing-read "Harvardparenthesis: "
-                     '(("round") ("curly") ("angle") ("square"))))
-     '("bibliographystyle"
-       (TeX-arg-eval
-	completing-read "Bibliography style: "
-        '(("agsm") ("dcu") ("jmr") ("jphysicsB") ("kluwer") ("nederlands")))
-       ignore)
-     '("harvarditem" [ "Short citation" ]
-       "Complete citation" "Year" TeX-arg-define-cite))
-
-    (setq TeX-complete-list
-	  (append '(("\\\\citeasnoun{\\([^{}\n\m\\%]*\\)"
-		     1 LaTeX-bibitem-list "}")
-		    ("\\\\citeyear{\\([^{}\n\m\\%]*\\)"
-		     1 LaTeX-bibitem-list "}")
-		    ("\\\\citename{\\([^{}\n\m\\%]*\\)"
-		     1 LaTeX-bibitem-list "}"))
-		  TeX-complete-list))
-
-    (setq LaTeX-item-list
-	  (cons '("thebibliography" . LaTeX-item-harvardbib)
-		LaTeX-item-list)))))
-
-(defun LaTeX-env-harvardbib (environment &optional ignore)
-  "Insert ENVIRONMENT with label for harvarditem."
-  (LaTeX-insert-environment environment
-			    (concat TeX-grop "xx" TeX-grcl))
-  (end-of-line 0)
-  (delete-char 1)
-  (delete-horizontal-space)
-  (LaTeX-insert-item))
-
-;; Analog to LaTeX-item-bib from latex.el
-(defun LaTeX-item-harvardbib ()
-  "Insert a new harvarditem."
-  (TeX-insert-macro "harvarditem"))
-
-;; harvard.el ends here
--- a/lisp/auctex/style/j-article.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-;;; j-article.el - Special code for j-article style.
-
-;; $Id: j-article.el,v 1.1 1997/02/20 02:15:42 steve Exp $
-
-;;; Code:
-
-(TeX-add-style-hook "j-article"
- (function (lambda ()
-  (setq LaTeX-largest-level (LaTeX-section-level "section")))))
-
-;;; j-article.el ends here
--- a/lisp/auctex/style/j-book.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-;;; j-book.el - Special code for j-book style.
-
-;; $Id: j-book.el,v 1.1 1997/02/20 02:15:42 steve Exp $
-
-;;; Code:
-
-(TeX-add-style-hook "j-book"
- (function (lambda () (setq LaTeX-largest-level
-			    (LaTeX-section-level "chapter")))))
-
-;;; j-book.el ends here
--- a/lisp/auctex/style/j-report.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-;;; j-report.el - Special code for j-report style.
-
-;; $Id: j-report.el,v 1.1 1997/02/20 02:15:42 steve Exp $
-
-;;; Code:
-
-(TeX-add-style-hook "j-report"
- (function (lambda () (setq LaTeX-largest-level
-			    (LaTeX-section-level "chapter")))))
-
-;;; j-report.el ends here
--- a/lisp/auctex/style/jarticle.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-;;; jarticle.el - Special code for jarticle style.
-
-;; $Id: jarticle.el,v 1.1 1997/02/20 02:15:43 steve Exp $
-
-;;; Code:
-
-(TeX-add-style-hook "jarticle"
- (function (lambda () (setq LaTeX-largest-level 2))))
-
-;;; jarticle.el ends here
--- a/lisp/auctex/style/jbook.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-;;; jbook.el - Special code for jbook style.
-
-;; $Id: jbook.el,v 1.1 1997/02/20 02:15:43 steve Exp $
-
-;;; Code:
-
-(TeX-add-style-hook "jbook"
- (function (lambda () (setq LaTeX-largest-level
-			    (LaTeX-section-level "chapter")))))
-
-;;; jbook.el ends here
--- a/lisp/auctex/style/jreport.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-;;; jreport.el - Special code for jreport style.
-
-;; $Id: jreport.el,v 1.1 1997/02/20 02:15:43 steve Exp $
-
-;;; Code:
-
-(TeX-add-style-hook "jreport"
- (function (lambda () (setq LaTeX-largest-level
-			    (LaTeX-section-level "chapter")))))
-
-
-;;; jreport.el ends here
--- a/lisp/auctex/style/latexinfo.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,183 +0,0 @@
-;;; latexinfo.el - Support for LaTeXinfo files.
-
-;; Copyright (C) 1993 Marc Gemis <makke@wins.uia.ac.be>
-
-;; Author: Marc Gemis <makke@wins.uia.ac.be>
-;; Version: $Id: latexinfo.el,v 1.1 1997/02/20 02:15:43 steve Exp $
-
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
-;; 
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;; 
-;; You should have received a copy of the GNU General Public License
-;; along with this program; if not, write to the Free Software
-;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-;;; Code:
-
-(require 'latex)
-
-;;; LaTeXinfo mode
-
-(defvar TeX-latexinfo-node-regexp
-  '("\\\\node[ \t]+\\([^,\n\r%]+\\)" 1 TeX-auto-label)
-  "Matches LaTeXinfo \\node commands, only current node will be found.
-We ignore next, previous and up fields.")
-
-(defvar LaTeXinfo-mode nil
-  "Non-nil means LaTeXinfo minor mode is active.")
-  (make-variable-buffer-local 'LaTeXinfo-mode)
-
-(defvar LaTeXinfo-mode-map nil
-  "Keymap containing LaTeXinfo commands.")
-
-(if LaTeXinfo-mode-map
-    ()
-  (setq LaTeXinfo-mode-map (make-sparse-keymap))
-  (define-key LaTeXinfo-mode-map "\C-c\C-u\C-b" 'latexinfo-format-buffer)
-  (define-key LaTeXinfo-mode-map "\C-c\C-u\C-r" 'latexinfo-format-region)
-  (define-key LaTeXinfo-mode-map "\C-c\C-u\C-s" 'latexinfo-show-structure)
-  (define-key LaTeXinfo-mode-map "\C-c\C-ud" 'makke:latexinfo-delete-structure)
-  (define-key LaTeXinfo-mode-map "\C-c\C-ug" 'latexinfo-goto-node)
-  (define-key LaTeXinfo-mode-map "\C-c\C-ui" 'makke:latexinfo-structure))
-
-(or (assq 'LaTeXinfo-mode minor-mode-map-alist)
-    (setq minor-mode-map-alist
-	  (cons (cons 'LaTeXinfo-mode LaTeXinfo-mode-map)
-		minor-mode-map-alist)))
-
-(defun TeX-arg-latexinfo-index (optional &optional prompt)
-  "Prompt for a LaTeXinfo index type with completion."
-  (TeX-argument-insert
-   (completing-read (TeX-argument-prompt optional prompt "Index")
-		    '(("cp") ("vr") ("fn") ("tp") ("pg") ("ky"))
-		    nil t)
-   optional))
-
-(defun LaTeX-item-latexinfo-menu ()
-  "Insert a new menu item"
-  (insert "* ::")
-  (backward-char 2))
-
-(defun latexinfo-goto-node () ; temporarily here, later in latexinfo-upd.el ??
-  "Place pointer on the node given by the user, read node with completion
-This fails when the user types in the label of something else"
-  (interactive)
-  (let ((node-name (completing-read "Goto Node: " (LaTeX-label-list))))
-    (goto-char (point-min))
-    (if (re-search-forward
-	 (concat
-	  TeX-esc "node[ \\t]+" node-name ","
-	  "\\|"
-	  TeX-esc "label{" LaTeX-section-label node-name
-	  "\\|"
-	  TeX-esc "label{" node-name
-	  )
-	 (point-max) t)
-	(beginning-of-line 1)
-    (error "No such node"))))
-
-;;; Hook
-
-(TeX-add-style-hook "latexinfo"
- (function
-  (lambda ()
-    (require 'latexinfo)
-    (require 'latexinfo-structure)
-
-    (require 'min-map)
-    (setq LaTeXinfo-mode t)
-    
-    (TeX-auto-add-regexp TeX-latexinfo-node-regexp)
-
-    (TeX-add-symbols
-     '("node"
-       (TeX-arg-literal " ")
-       (TeX-arg-free TeX-arg-define-label "Node name")
-       (TeX-arg-literal ", ")
-       (TeX-arg-free TeX-arg-label "Next node")
-       (TeX-arg-literal ", ")
-       (TeX-arg-free TeX-arg-label "Previous node")
-       (TeX-arg-literal ", ")
-       (TeX-arg-free TeX-arg-label "Up node"))
-     '("setfilename" TeX-arg-file)
-
-     '("var" t)
-     '("dfn" t)
-     '("emph" t)
-     '("kbd" t)
-     '("code" t)
-     '("samp" t)
-     '("key" t)
-     '("ctrl" t)
-     '("file" t)
-
-     '("comment"
-       (TeX-arg-literal " ")
-       (TeX-arg-free "Comment"))
-     '("c"
-       (TeX-arg-literal " ")
-       (TeX-arg-free "Comment"))
-
-     '("cindex" t)
-     '("cpsubindex" 2)
-     '("cpindexbold" t)
-
-     '("newindex" TeX-arg-latexinfo-index)
-
-     '("br" nil)
-     '("w" "Text")
-     '("dots" nil)
-     '("refill" nil)
-     '("bullet" nil)
-     '("copyright" nil)
-     '("sp" nil)
-
-     '("xref" TeX-arg-label)
-     '("pxref" TeX-arg-label)
-     '("inforef"
-       (TeX-arg-literal "{")
-       (TeX-arg-free "Name of node")
-       (TeX-arg-literal ", ")
-       (TeX-arg-free "Name for note")
-       (TeX-arg-literal ", ")
-       (TeX-arg-free TeX-arg-file "Info file")
-       (TeX-arg-literal "}")))
-
-    (LaTeX-add-environments "menu" "tex" "ignore" "ifinfo" "iftex"
-			    "example" "same" "display" "format")
-
-    ; Menu's have a special kind of items
-    (make-local-variable 'LaTeX-item-list)
-    (setq LaTeX-item-list (cons '("menu" . LaTeX-item-latexinfo-menu)
-				LaTeX-item-list))
-
-    (make-local-variable 'TeX-font-list)
-    (setq TeX-font-list
-	  (list (list ?\C-b (concat TeX-esc "b{") "}")
-		(list ?\C-c (concat TeX-esc "sc{") "}")
-		(list ?\C-e (concat TeX-esc "emph{") "}")
-		(list ?\C-i (concat TeX-esc "i{") "}")
-		(list ?\C-r (concat TeX-esc "r{") "}")
-		(list ?\C-s (concat TeX-esc "samp{") "}")
-		(list ?\C-t (concat TeX-esc "t{") "}")
-		(list ?s    (concat TeX-esc "strong{") "}")
-		(list ?\C-f (concat TeX-esc "file{") "}")
-		(list ?\C-d (concat TeX-esc "dfn{") "}")
-		(list ?\C-v (concat TeX-esc "var{") "}")
-		(list ?k    (concat TeX-esc "key{") "}")
-		(list ?\C-k (concat TeX-esc "kbd{") "}")
-		(list ?c    (concat TeX-esc "code{") "}")
-		(list ?C    (concat TeX-esc "cite{") "}")))
-
-    ;; need the following stuff to let xref and pxref work
-    (make-local-variable 'LaTeX-section-label)
-    (setq LaTeX-section-label ""))))
-
-;;; latexinfo.el ends here
--- a/lisp/auctex/style/letter.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-;;; letter.el - Special code for letter style.
-
-;; $Id: letter.el,v 1.1 1997/02/20 02:15:43 steve Exp $
-
-;;; Code:
-
-;; You may want to define this in tex-site.el to contain your
-;; organizations address.  
-(defvar LaTeX-letter-sender-address ""
-  "Initial value when prompting for a sender address in the letter style.")
-
-(TeX-add-style-hook "letter"
- (function
-  (lambda ()
-    (LaTeX-add-environments
-     '("letter" LaTeX-env-recipient))
-    (TeX-add-symbols
-     '("name" "Sender: ") 
-     '("address" "Sender address: ")
-     '("signature" "Signature: ")
-     '("opening" "Opening: ")
-     '("closing" "Closing: ")))))
-
-(defun LaTeX-env-recipient (environment)
-  "Insert ENVIRONMENT and prompt for recipient and address."
-  (let ((sender (read-input "Sender: " (user-full-name)))
-	(sender-address (read-input "Sender address: "
-				    LaTeX-letter-sender-address))
-	(recipient (read-input "Recipient: "))
-	(address (read-input "Recipient address: "))
-	(signature (read-input "Signature: "))
-	(opening (read-input "Opening: "))
-	(closing (read-input "Closing: "))
-	(date (read-input "Date: " (LaTeX-today))))
-
-    (insert TeX-esc "name" TeX-grop sender TeX-grcl)
-    (newline-and-indent)
-    (if (not (zerop (length sender-address)))
-	(progn
-	  (setq LaTeX-letter-sender-address sender-address)
-	  (insert TeX-esc "address" TeX-grop sender-address TeX-grcl)
-	  (newline-and-indent)))
-    (if (not (zerop (length signature)))
-	(progn
-	  (insert TeX-esc "signature" TeX-grop signature TeX-grcl)
-	  (newline-and-indent)))
-    (if (not (zerop (length date)))
-	(progn
-	  (insert TeX-esc "def" TeX-esc "today" TeX-grop date TeX-grcl)
-	  (newline-and-indent)))
-    (newline-and-indent)
-
-    (let ((indentation (current-column)))
-      (LaTeX-insert-environment
-       environment
-       (concat TeX-grop recipient
-	       (if (not (zerop (length address)))
-		   (concat
-		    (if (not (zerop (length recipient)))
-			(concat " " TeX-esc TeX-esc " "))
-		    address))
-	       TeX-grcl))
-      (save-excursion			; Fix indentation of address
-	(if (search-backward TeX-grcl nil 'move)
-	    (let ((addr-end (point-marker)))
-	      (if (search-backward TeX-grop nil 'move)
-		  (let ((addr-column (current-column)))
-		    (while (search-forward
-			    (concat TeX-esc TeX-esc)
-			    (marker-position addr-end) 'move)
-		      (progn
-			(newline)
-			(indent-to addr-column))))))))
-      (insert "\n")
-      (indent-to indentation))
-    (insert TeX-esc "opening"
-	    TeX-grop
-	    (if (zerop (length opening))
-		(concat TeX-esc " ")
-	      opening)
-	    TeX-grcl "\n")
-
-    (indent-relative-maybe)
-    (save-excursion
-      (insert "\n" TeX-esc "closing"
-	      TeX-grop
-	      (if (zerop (length closing))
-		  (concat TeX-esc " ")
-		closing)
-	      TeX-grcl "\n")
-      (indent-relative-maybe))))
-
-(defun LaTeX-today nil
-  "Return a string representing todays date according to flavor."
-  (interactive)
-  (let ((ctime-string (current-time-string))
-	(month-alist '(("Jan". "01")
-		       ("Feb" . "02")
-		       ("Mar" . "03")
-		       ("Apr" . "04")
-		       ("May" . "05")
-		       ("Jun" . "06")
-		       ("Jul" . "07")
-		       ("Aug" . "08")
-		       ("Sep" . "09")
-		       ("Oct" . "10")
-		       ("Nov" . "11")
-		       ("Dec" . "12"))))
-    (string-match
-     "^\\S-+\\s-+\\(\\S-+\\)\\s-+\\(\\S-+\\)\\s-+\\S-+\\s-+\\(\\S-+\\)"
-     ctime-string)
-    (let ((year (substring ctime-string (match-beginning 3) (match-end 3)))
-	  (month (substring ctime-string (match-beginning 1) (match-end 1)))
-	  (day (substring ctime-string (match-beginning 2) (match-end 2))))
-      (if (assoc month month-alist)
-	  (progn
-	    (setq month (cdr (assoc month month-alist)))
-	    (if (> 2 (length day))
-		(setq day (concat "0" day)))))
-      (format "%s-%s-%s" year month day))))
-
-;;; letter.el ends here
--- a/lisp/auctex/style/plfonts.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-;;; plfonts.el - Setup AUC TeX for editing Polish text with plfonts.sty
-
-;; $Id: plfonts.el,v 1.1 1997/02/20 02:15:43 steve Exp $
-
-;;; Commentary:
-;;
-;; `plfonts.sty' use `"' to make next character Polish.
-;; `plfonts.sty' <C> L. Holenderski, IIUW, lhol@mimuw.edu.pl
-
-;;; Code:
-
-(defvar LaTeX-plfonts-mode-syntax-table
-  (copy-syntax-table LaTeX-mode-syntax-table)
-  "Syntax table used in LaTeX mode when using `plfonts.sty'.")
-
-(modify-syntax-entry ?\"  "w"  LaTeX-plfonts-mode-syntax-table)
-
-(TeX-add-style-hook "plfonts"
- (function (lambda ()
-   (set-syntax-table LaTeX-plfonts-mode-syntax-table)
-   (make-local-variable 'TeX-open-quote)
-   (make-local-variable 'TeX-close-quote)
-   (make-local-variable 'TeX-quote-after-quote)
-   (make-local-variable 'TeX-command-default)
-   (setq TeX-open-quote "\"<")
-   (setq TeX-close-quote "\">")
-   (setq TeX-quote-after-quote t)
-   (setq TeX-command-default "plLaTeX")
-   (run-hooks 'TeX-language-pl-hook))))
-
-;;; plfonts.el ends here
--- a/lisp/auctex/style/plhb.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-;;; plhb.el - Setup AUC TeX for editing Polish text with plhb.sty
-
-;; $Id: plhb.el,v 1.1 1997/02/20 02:15:43 steve Exp $
-
-;;; Commentary:
-;;
-;; `plhb.sty' use `"' to make next character Polish.
-;; `plhb.sty' <C> J. S. Bie\'n, IIUW, jsbien@mimuw.edu.pl
-
-;;; Code:
-
-(defvar LaTeX-plhb-mode-syntax-table
-  (copy-syntax-table LaTeX-mode-syntax-table)
-  "Syntax table used in LaTeX mode when using `plhb.sty'.")
-
-(modify-syntax-entry ?\"  "w"  LaTeX-plhb-mode-syntax-table)
-
-(TeX-add-style-hook "plhb"
- (function (lambda ()
-   (set-syntax-table LaTeX-plhb-mode-syntax-table)
-   (make-local-variable 'TeX-open-quote)
-   (make-local-variable 'TeX-close-quote)
-   (make-local-variable 'TeX-command-default)
-   (make-local-variable 'TeX-quote-after-quote)
-   (setq TeX-open-quote "\"<")
-   (setq TeX-close-quote "\">")
-   (setq TeX-quote-after-quote t)
-   (setq TeX-command-default "plLaTeX")
-   (run-hooks 'TeX-language-pl-hook))))
-
-;;; plhb.el ends here
--- a/lisp/auctex/style/psfig.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-;;; psfig.el - Support for the psfig style option.
-
-;; Contributed by Marc Gemis <makke@wins.uia.ac.be>
-;; Please direct comments to him.
-
-;;; Code:
-
-(TeX-add-style-hook "psfig"
- (function
-  (lambda ()
-	;; probable some of the following symbols may be removed
-    (TeX-add-symbols "protect" "figurepath"  "fbox"
-		     "other" "letter" "other" "then" "Sine" "Cosine"
-		     "psdraft" "psfull" "psscalefirst" "psrotatefirst"
-		     "psnodraftbox" "psdraftbox" "pssilent" "psnoisy"
-		     "minmaxtest"
-     '("psfig" TeX-arg-psfig)
-     '("psfigurepath" t)
-		     )
-    (LaTeX-add-environments
-     '("psfigure" LaTeX-env-psfigure)
-     )
-    )))
-
-(defun TeX-arg-psfig (optional)
-   "Ask for file, width and length. Insert psfig macro"
-   (let ((psfile (read-file-name "PS-file: " "" "" nil))
-	 (figwidth (read-input "Figure width: "))
-	 (figheight (read-input "Figure height: "))
-	 )
-
-     (insert TeX-grop "figure=" psfile)
-     (if (not (zerop (length figwidth)))
-	 (insert ",width=" figwidth))
-     (if (not (zerop (length figheight)))
-	 (insert ",height=" figheight))
-     (insert TeX-grcl)
-     )
-   )
-
-
-(defun LaTeX-env-psfigure (environment)
-  "Create  with \\label and \\caption and \\psfig commands."
-  (let ((float (read-input "Float to: " LaTeX-float))
-	(caption (read-input "Caption: "))
-	(label (read-input "Label: " LaTeX-figure-label))
-        ; gf: ask if this should be centered
-	(psfile (read-file-name "PS-file: " "" "" nil))
-	(figwidth (read-input "Figure width: "))
-	(figheight (read-input "Figure height: "))
-	)
-
-    (setq LaTeX-float (if (zerop (length float))
-			  LaTeX-float
-			float))
-
-    (LaTeX-insert-environment "figure"
-			      (concat LaTeX-optop LaTeX-float LaTeX-optcl))
-
-    (insert TeX-esc "centerline" TeX-grop TeX-esc "psfig" TeX-grop
-	    "figure=" psfile)
-    (if (not (zerop (length figwidth)))
-	(insert ",width=" figwidth))
-    (if (not (zerop (length figheight)))
-	(insert ",height=" figheight))
-    (insert TeX-grcl TeX-grcl)
-    (if (zerop (length caption))
-	()
-      (newline-and-indent)
-      (insert TeX-esc "caption" TeX-grop caption TeX-grcl))
-    (if (or (zerop (length label))
-	    (equal LaTeX-figure-label label))
-	()
-      (newline-and-indent)
-      (insert TeX-esc "label" TeX-grop label TeX-grcl))
-
-    (forward-line 2)))
-
-;;; psfig.el ends here
--- a/lisp/auctex/style/report.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-;;; report.el - Special code for report style.
-
-;; $Id: report.el,v 1.1 1997/02/20 02:15:43 steve Exp $
-
-;;; Code:
-
-(TeX-add-style-hook "report"
- (function (lambda () 
-  (setq LaTeX-largest-level (LaTeX-section-level "chapter")))))
-
-;;; report.el ends here
--- a/lisp/auctex/style/slides.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-;;; slides.el - Special code for slitex.
-;;
-;; $Id: slides.el,v 1.1 1997/02/20 02:15:43 steve Exp $
-
-(require 'latex)
-
-;;; Code:
-
-(TeX-add-style-hook "slides"
- (function
-  (lambda ()
-    (setq LaTeX-default-style "slides")
-    (add-hook 'LaTeX-document-style-hook 'LaTeX-style-slides)
-    (LaTeX-add-environments '("slide" LaTeX-env-slide)
-			    '("overlay" LaTeX-env-slide))
-    (TeX-run-style-hooks "SLITEX"))))
-
-(defvar LaTeX-slide-color "" 
-  "*Default slide color.")
-
- (make-variable-buffer-local 'LaTeX-slide-color)
-
-(defun LaTeX-style-slides ()
-  "Prompt for and insert SliTeX options."
-  (let ((slide-file (read-input "Slide file: "))
-	(slide-colors (read-input "Slide colors (comma separetade list): "
-				  "black")))
-    (save-excursion
-      (goto-char (point-min))		; insert before \end{document}
-      (if (re-search-forward ".end.document." (point-max) t)
-	  (beginning-of-line 1))
-      (open-line 2)
-      (indent-relative-maybe)
-      (if (equal slide-colors "black")
-	  (insert TeX-esc "blackandwhite"
-		  TeX-grop slide-file TeX-grcl)
-	(progn
-	  (insert TeX-esc "colors"
-		  TeX-grop slide-colors TeX-grcl)
-	  (newline-and-indent)
-	  (insert TeX-esc "colorslides"
-		  TeX-grop slide-file TeX-grcl))))))
-
-(defun LaTeX-env-slide (environment)
-  "Insert ENVIRONMENT and prompt for slide colors."
-  (setq LaTeX-slide-color
-	(read-input "Slide colors: " LaTeX-slide-color))
-  (LaTeX-insert-environment environment
-			    (concat TeX-grop LaTeX-slide-color TeX-grcl)))
-
-
-;;; slides.el ends here
--- a/lisp/auctex/style/swedish.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-;;; swedish.el - Setup AUC TeX for editing Swedish text.
-
-;; $Id: swedish.el,v 1.1 1997/02/20 02:15:44 steve Exp $
-
-;;; Commentary:
-;;
-;; Apparently the Swedes use ''this style'' quotations.
-
-(TeX-add-style-hook "swedish"
- (function (lambda ()
-   (make-local-variable 'TeX-open-quote)
-   (setq TeX-open-quote "''")
-   (run-hooks 'TeX-language-sv-hook))))
--- a/lisp/auctex/style/virtex.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-;;; virtex.el - Common code for all TeX formats.
-
-;; $Id: virtex.el,v 1.1 1997/02/20 02:15:44 steve Exp $
-
-;;; Code:
-
-(TeX-add-style-hook "virtex"
- (function
-  (lambda ()
-    (TeX-add-symbols "/" "above" "abovedisplayshortskip"
-		     "abovedisplayskip" "abovewithdelims" "accent"
-		     "adjdemerits" "advance" "afterassignment"
-		     "aftergroup" "atop" "atopwithdelims" "badness"
-		     "baselineskip" "batchmode" "begingroup"
-		     "belowdisplayshortskip" "belowdisplayskip"
-		     "binoppenalty" "botmark" "box" "boxmaxdepth"
-		     "brokenpenalty" "catcode" "char" "chardef"
-		     "cleaders" "closein" "closeout" "clubpenalty"
-		     "copy" "count" "countdef" "cr" "crcr" "csname"
-		     "day" "deadcycles" "def" "defaulthyphenchar"
-		     "defaultskewchar" "delcode" "delimiter"
-		     "delimiterfactor" "delimitershortfall" "dimen"
-		     "dimendef" "discretionary" "displayindent"
-		     "displaylimits" "displaystyle"
-		     "displaywidowpenalty" "displaywidth" "divide"
-		     "doublehyphendemerits" "dp" "dump" "edef" "else"
-		     "emergencystretch" "end" "endcsname" "endgroup"
-		     "endinput" "endlinechar" "eqno" "errhelp"
-		     "errmessage" "errorcontextlines" "errorstopmode"
-		     "escapechar" "everycr" "everydisplay"
-		     "everyhbox" "everyjob" "everymath" "everypar"
-		     "everyvbox" "exhyphenpenalty" "expandafter"
-		     "fam" "fi" "finalhyphendemerits" "firstmark"
-		     "floatingpenalty" "font" "fontdimen" "fontname"
-		     "futurelet" "gdef" "global" "globaldefs"
-		     "halign" "hangafter" "hangindent" "hbadness"
-		     "hbox" "hfil" "hfill" "hfilneg" "hfuzz"
-		     "hoffset" "holdinginserts" "hrule" "hsize"
-		     "hskip" "hss" "ht" "hyphenpenation" "hyphenchar"
-		     "hyphenpenalty" "if" "ifcase" "ifcat" "ifdim"
-		     "ifeof" "iffalse" "ifhbox" "ifinner" "ifhmode"
-		     "ifmmode" "ifnum" "ifodd" "iftrue" "ifvbox"
-		     "ifvoid" "ifx" "ignorespaces" "immediate"
-		     "indent" "input" "inputlineno" "insert"
-		     "insertpenalties" "interlinepenalty" "jobname"
-		     "kern" "language" "lastbox" "lastkern"
-		     "lastpenalty" "lastskip" "lccode" "leaders"
-		     "left" "lefthyphenmin" "leftskip" "leqno" "let"
-		     "limits" "linepenalty" "lineskip"
-		     "lineskiplimit" "long" "looseness" "lower"
-		     "lowercase" "mag" "markaccent" "mathbin"
-		     "mathchar" "mathchardef" "mathchoise"
-		     "mathclose" "mathcode" "mathinner" "mathhop"
-		     "mathopen" "mathord" "mathpunct" "mathrel"
-		     "mathsurround" "maxdeadcycles" "maxdepth"
-		     "meaning" "medmuskip" "message" "mkern" "month"
-		     "moveleft" "moveright" "mskip" "multiply"
-		     "muskip" "muskipdef" "newlinechar" "noalign"
-		     "noboundary" "noexpand" "noindent" "nolimits"
-		     "nonscript" "nonstopmode" "nulldelimiterspace"
-		     "nullfont" "number" "omit" "openin" "openout"
-		     "or" "outer" "output" "outputpenalty"
-		     "overfullrule" "parfillskip" "parindent"
-		     "parskip" "pausing" "postdisplaypenalty"
-		     "predisplaypenalty" "predisplaysize"
-		     "pretolerance" "relpenalty" "rightskip"
-		     "scriptspace" "showboxbreadth" "showboxdepth"
-		     "smallskipamount" "spaceskip" "splitmaxdepth"
-		     "splittopskip" "tabskip" "thickmuskip"
-		     "thinmuskip" "time" "tolerance" "topskip"
-		     "tracingcommands" "tracinglostchars"
-		     "tracingmacros" "tracingonline" "tracingoutput"
-		     "tracingpages" "tracingparagraphs"
-		     "tracingrestores" "tracingstats" "uccode"
-		     "uchyph" "underline" "unhbox" "unhcopy" "unkern"
-		     "unpenalty" "unskip" "unvbox" "unvcopy"
-		     "uppercase" "vadjust" "valign" "vbadness" "vbox"
-		     "vcenter" "vfil" "vfill" "vfilneg" "vfuzz"
-		     "voffset" "vrule" "vsize" "vskip" "vss" "vtop"
-		     "wd" "widowpenalty" "write" "xdef" "xleaders"
-		     "xspaceskip" "year"))))
-
-;;; virtex.el ends here
--- a/lisp/auctex/tex.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/auctex/tex.el	Mon Aug 13 09:24:17 2007 +0200
@@ -33,7 +33,7 @@
 ;; file, but instead copy those definitions you need to change to
 ;; `tex-site.el'. 
 
-(defvar TeX-lisp-directory "auctex/"
+(defvar TeX-lisp-directory (concat data-directory "auctex/")
   "*The directory where the AUC TeX lisp files are located.")
 
 ;; Change this to point to the place where the TeX macros are stored
--- a/lisp/bytecomp/bytecomp.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/bytecomp/bytecomp.el	Mon Aug 13 09:24:17 2007 +0200
@@ -468,7 +468,7 @@
 (defvar byte-compile-maxdepth 0 "Maximum depth of execution stack.")
 
 
-;;; The byte codes; this information is duplicated in bytecomp.c
+;;; The byte codes; this information is duplicated in bytecode.c
 
 (defconst byte-code-vector nil
   "An array containing byte-code names indexed by byte-code values.")
@@ -2822,7 +2822,7 @@
 (byte-defop-compiler (1+ byte-add1)	1)
 (byte-defop-compiler (1- byte-sub1)	1)
 (byte-defop-compiler goto-char		1+1)
-(byte-defop-compiler char-after		1+1)
+(byte-defop-compiler char-after		0-1+1)
 (byte-defop-compiler set-buffer		1)
 ;;(byte-defop-compiler set-mark		1) ;; obsolete
 (byte-defop-compiler forward-word	1+1)
--- a/lisp/calendar/appt.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/calendar/appt.el	Mon Aug 13 09:24:17 2007 +0200
@@ -688,40 +688,41 @@
 
 ;;; Patching in to existing time code to install our hook.
 
-(defvar display-time-hook nil
-  "*List of functions to be called when the time is updated on the mode line.")
-
-(setq display-time-hook 'appt-check)
 
 (defvar display-time-hook-installed nil)
 
 (defun install-display-time-hook ()
- (if display-time-hook-installed         ;; only do this stuff once!
-    nil
-  (let ((old-fn (if (or (featurep 'reportmail)
-			;; old reportmail without a provide statement
-			(and (fboundp 'display-time-filter-18-55)
-			     (fboundp 'display-time-filter-18-57)))
-		    (if (and (featurep 'itimer)  ; XEmacs reportmail.el
-			     (fboundp 'display-time-timer-function))
-			'display-time-timer-function
-		      ;; older reportmail, or no timer.el.
-		      (if (string-match "18\\.5[0-5]" (emacs-version))
-			  'display-time-filter-18-55
-			'display-time-filter-18-57))
-		  ;; othewise, time.el
-		  (if (and (featurep 'itimer)
-			   (fboundp 'display-time-function)) ; XEmacs
-		      'display-time-function
-		    'display-time-filter))))
+ (unless display-time-hook-installed	; only do this stuff once!
+   (unless (boundp 'display-time-hook)	; Need to wrapper it.
+     (defvar display-time-hook nil
+       "*List of functions to be called when the time is updated on the mode line.")
+     (let ((old-fn (if (or (featurep 'reportmail)
+			   ;; old reportmail without a provide statement
+			   (and (fboundp 'display-time-filter-18-55)
+				(fboundp 'display-time-filter-18-57)))
+		       (if (and (featurep 'itimer)  ; XEmacs reportmail.el
+				(fboundp 'display-time-timer-function))
+			   'display-time-timer-function
+			 ;; older reportmail, or no timer.el.
+			 (if (string-match "18\\.5[0-5]" (emacs-version))
+			     'display-time-filter-18-55
+			   'display-time-filter-18-57))
+		     ;; othewise, time.el
+		     (if (and (featurep 'itimer)
+			      (fboundp 'display-time-function)) ; XEmacs
+			 'display-time-function
+		       'display-time-filter))))
     ;; we're about to redefine it...
-    (fset 'old-display-time-filter (symbol-function old-fn))
-    (fset old-fn
-	  (function (lambda (&rest args)  ;; ...here's the revised definition
-	    "Revised version of the original function: this version calls a hook."
-	    (apply 'old-display-time-filter args)
-	    (run-hooks 'display-time-hook)))))
-  (setq display-time-hook-installed t)
-  ))
+       (fset 'old-display-time-filter (symbol-function old-fn))
+       (fset old-fn
+	     '(lambda (&rest args)  ;; ...here's the revised definition
+		"Revised version of the original function: this version calls a hook."
+		(apply 'old-display-time-filter args)
+		(run-hooks 'display-time-hook)))))
+   (setq display-time-hook-installed t)
+   (if (fboundp 'add-hook)
+       (add-hook 'display-time-hook 'appt-check)
+     (setq display-time-hook (cons appt-check display-time-hook)))
+   ))
 
 (provide 'appt)
--- a/lisp/custom/ChangeLog	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/custom/ChangeLog	Mon Aug 13 09:24:17 2007 +0200
@@ -1,3 +1,34 @@
+Tue Apr 01 20:08:10 1997  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+	* Version 1.69 released.
+
+Tue Apr  1 17:29:16 1997  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+	* Makefile (TEXT): Added x-overlay.el for use with old XEmacsen.
+
+	* cus-face.el (custom-face-attributes): Add 4'th GET argument in
+ 	some attributes.
+	(custom-face-background): New function.
+	(custom-background-mode): Use it.
+	(custom-face-foreground): New function.
+	(custom-face-attributes-get): New function.
+	* cus-edit.el (custom-face-value-create): Use it.
+
+	* wid-edit.el (widget-apply): Added ;;;###autoload.
+	* widget.el (widget-apply): Added autoload.
+
+Sun Mar 30 11:41:50 1997  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+	* cus-face.el (set-face-stipple): Added for XEmacs.
+	Written by Kyle Jones.
+
+Fri Mar 28 12:17:02 1997  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+	* wid-edit.el (widget-glyph-insert): Doc fix.
+	* custom.el (defface): Ditto.
+	(custom-add-to-group): Ditto.
+	* cus-face.el (custom-initialize-frame): Ditto.
+
 Thu Mar 27 19:31:40 1997  Per Abrahamsen  <abraham@dina.kvl.dk>
 
 	* Version 1.68 released.
--- a/lisp/custom/cus-edit.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/custom/cus-edit.el	Mon Aug 13 09:24:17 2007 +0200
@@ -4,7 +4,7 @@
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Keywords: help, faces
-;; Version: 1.68
+;; Version: 1.69
 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/
 
 ;;; Commentary:
@@ -1348,7 +1348,10 @@
 		  widget 'editable-list
 		  :entry-format "%i %d %v"
 		  :value (or (get symbol 'saved-face)
-			     (get symbol 'factory-face))
+			     (get symbol 'factory-face)
+			     ;; Attempt to construct it.
+			     (list (list t (custom-face-attributes-get 
+					    symbol (selected-frame)))))
 		  :insert-button-args '(:help-echo "\
 Insert new display specification here.")
 		  :append-button-args '(:help-echo "\
@@ -1538,12 +1541,12 @@
   :group 'customize)
 
 (defface custom-group-tag-face-1 '((((class color)
-				   (background dark))
-				  (:foreground "pink" :underline t))
-				 (((class color)
-				   (background light))
-				  (:foreground "red" :underline t))
-				 (t (:underline t)))
+				     (background dark))
+				    (:foreground "pink" :underline t))
+				   (((class color)
+				     (background light))
+				    (:foreground "red" :underline t))
+				   (t (:underline t)))
   "Face used for group tags.")
 
 (defface custom-group-tag-face '((((class color)
--- a/lisp/custom/cus-face.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/custom/cus-face.el	Mon Aug 13 09:24:17 2007 +0200
@@ -4,7 +4,7 @@
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Keywords: help, faces
-;; Version: 1.68
+;; Version: 1.69
 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/
 
 ;;; Commentary:
@@ -19,6 +19,20 @@
 
 ;;; Compatibility.
 
+(if (string-match "XEmacs" emacs-version)
+    (defun custom-face-background (face &optional frame)
+      ;; Specifiers suck!
+      "Return the background color name of face FACE, or nil if unspecified."
+      (color-instance-name (specifier-instance (face-background face) frame)))
+  (defalias 'custom-face-background 'face-background))
+
+(if (string-match "XEmacs" emacs-version)
+    (defun custom-face-foreground (face &optional frame)
+      ;; Specifiers suck!
+      "Return the background color name of face FACE, or nil if unspecified."
+      (color-instance-name (specifier-instance (face-foreground face) frame)))
+  (defalias 'custom-face-foreground 'face-foreground))
+
 (eval-and-compile
   (unless (fboundp 'frame-property)
     ;; XEmacs function missing in Emacs 19.34.
@@ -37,7 +51,38 @@
     ;; XEmacs function missing in Emacs.
     (defun set-face-doc-string (face string)
       "Set the documentation string for FACE to STRING."
-      (put face 'face-doc-string string))))
+      (put face 'face-doc-string string)))
+
+  (when (and (not (fboundp 'set-face-stipple))
+	     (fboundp 'set-face-background-pixmap))
+    ;; Emacs function missing in XEmacs 19.15.
+    (defun set-face-stipple (face pixmap &optional frame)
+      ;; Written by Kyle Jones.
+      "Change the stipple pixmap of face FACE to PIXMAP.
+PIXMAP should be a string, the name of a file of pixmap data.
+The directories listed in the `x-bitmap-file-path' variable are searched.
+
+Alternatively, PIXMAP may be a list of the form (WIDTH HEIGHT DATA)
+where WIDTH and HEIGHT are the size in pixels,
+and DATA is a string, containing the raw bits of the bitmap.  
+
+If the optional FRAME argument is provided, change only
+in that frame; otherwise change each frame."
+      (while (not (find-face face))
+	(setq face (signal 'wrong-type-argument (list 'facep face))))
+      (while (cond ((stringp pixmap)
+		    (unless (file-readable-p pixmap)
+		      (setq pixmap (vector 'xbm ':file pixmap)))
+		    nil)
+		   ((and (consp pixmap) (= (length pixmap) 3))
+		    (setq pixmap (vector 'xbm ':data pixmap))
+		    nil)
+		   (t t))
+	(setq pixmap (signal 'wrong-type-argument
+			     (list 'stipple-pixmap-p pixmap))))
+      (while (and frame (not (framep frame)))
+	(setq frame (signal 'wrong-type-argument (list 'framep frame))))
+      (set-face-background-pixmap face pixmap frame))))
 
 (unless (fboundp 'x-color-values)
   ;; Emacs function missing in XEmacs 19.14.
@@ -162,9 +207,8 @@
 					   (or (frame-property
 						frame
 						'background-color)
-					       (color-instance-name
-						(specifier-instance
-						 (face-background 'default))))
+					       (custom-face-background
+						'default))
 					 (error nil)))
 			   (or (string-match "XEmacs" emacs-version)
 			       window-system)
@@ -240,15 +284,18 @@
     (:underline (toggle :format "Underline: %[%v%]\n"
 			:help-echo "\
 Control whether the text should be underlined.")
-		set-face-underline-p)
+		set-face-underline-p
+		face-underline-p)
     (:foreground (color :tag "Foreground"
 			:value "black"
 			:help-echo "Set foreground color.")
-		 set-face-foreground)
+		 set-face-foreground
+		 custom-face-foreground)
     (:background (color :tag "Background"
 			:value "white"
 			:help-echo "Set background color.")
-		 set-face-background)
+		 set-face-background
+		 custom-face-background)
     ;;    (:invert (const :format "Invert Face\n" 
     ;;		    :sibling-args (:help-echo "
     ;;Reverse the foreground and background color.
@@ -262,13 +309,16 @@
 	      set-face-stipple))
   "Alist of face attributes. 
 
-The elements are of the form (KEY TYPE SET) where KEY is a symbol
+The elements are of the form (KEY TYPE SET GET) where KEY is a symbol
 identifying the attribute, TYPE is a widget type for editing the
-attibute, SET is a function for setting the attribute value.
+attibute, SET is a function for setting the attribute value, and GET is a function for getiing the attribute value. 
 
 The SET function should take three arguments, the face to modify, the
 value of the attribute, and optionally the frame where the face should
-be changed.")
+be changed.
+
+The GET function should take two arguments, the face to examine, and
+optonally the frame where the face should be examined.")
 
 (defun custom-face-attributes-set (face frame &rest atts)
   "For FACE on FRAME set the attributes [KEYWORD VALUE]....
@@ -284,6 +334,24 @@
 	  (funcall fun face value frame)
 	(error nil)))))
 
+(defun custom-face-attributes-get (face frame)
+  "For FACE on FRAME get the attributes [KEYWORD VALUE]....
+Each keyword should be listed in `custom-face-attributes'.
+
+If FRAME is nil, use the default face."
+  (let ((atts custom-face-attributes)
+	att result get)
+    (while atts
+      (setq att (car atts)
+	    atts (cdr atts)
+	    get (nth 3 att))
+      (when get 
+	(let ((answer (funcall get face frame)))
+	  (unless (equal answer (funcall get 'default frame))
+	    (when (widget-apply (nth 1 att) :match answer)
+	      (setq result (cons (nth 0 att) (cons answer result))))))))
+    result))
+
 (defun custom-set-face-bold (face value &optional frame)
   "Set the bold property of FACE to VALUE."
   (if value
@@ -427,7 +495,7 @@
 
 (defun custom-initialize-frame (&optional frame)
   "Initialize local faces for FRAME if necessary.
-If FRAME is missing or nil, the first member (frame-list) is used."
+If FRAME is missing or nil, the first member of (frame-list) is used."
   (unless frame
     (setq frame (car (frame-list))))
   (unless (equal (custom-get-frame-properties) 
--- a/lisp/custom/custom.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/custom/custom.el	Mon Aug 13 09:24:17 2007 +0200
@@ -4,7 +4,7 @@
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Keywords: help, faces
-;; Version: 1.68
+;; Version: 1.69
 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/
 
 ;;; Commentary:
@@ -129,13 +129,13 @@
 
 The ATTS of the first entry in SPEC where the DISPLAY matches the
 frame should take effect in that frame.  DISPLAY can either be the
-symbol `t', which will match all frames, or an alist of the form
+symbol t, which will match all frames, or an alist of the form
 \((REQ ITEM...)...)
 
 For the DISPLAY to match a FRAME, the REQ property of the frame must
 match one of the ITEM.  The following REQ are defined:
 
-`type' (the value of (window-system))
+`type' (the value of `window-system')
   Should be one of `x' or `tty'.
 
 `class' (the frame's color support)
@@ -198,7 +198,7 @@
   `(custom-declare-group (quote ,symbol) ,members ,doc ,@args))
 
 (defun custom-add-to-group (group option widget)
-  "To existing GROUP add a new OPTION of type WIDGET,
+  "To existing GROUP add a new OPTION of type WIDGET.
 If there already is an entry for that option, overwrite it."
   (let* ((members (get group 'custom-group))
 	 (old (assq option members)))
--- a/lisp/custom/wid-browse.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/custom/wid-browse.el	Mon Aug 13 09:24:17 2007 +0200
@@ -4,7 +4,7 @@
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Keywords: extensions
-;; Version: 1.68
+;; Version: 1.69
 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/
 
 ;;; Commentary:
--- a/lisp/custom/wid-edit.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/custom/wid-edit.el	Mon Aug 13 09:24:17 2007 +0200
@@ -4,7 +4,7 @@
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Keywords: extensions
-;; Version: 1.68
+;; Version: 1.69
 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/
 
 ;;; Commentary:
@@ -25,7 +25,9 @@
   (autoload 'Info-goto-node "info")
 
   (when (string-match "XEmacs" emacs-version)
-    (require 'overlay))
+    (condition-case nil
+	(require 'overlay)
+      (error (load-library "x-overlay"))))
   
   (if (string-match "XEmacs" emacs-version)
       ;; XEmacs spell `intangible' as `atomic'.
@@ -453,6 +455,7 @@
 	 (widget-member (get (car widget) 'widget-type) property))
 	(t nil)))
 
+;;;###autoload
 (defun widget-apply (widget property &rest args)
   "Apply the value of WIDGET's PROPERTY to the widget itself.
 ARGS are passed as extra arguments to the function."
@@ -503,9 +506,10 @@
 IMAGE should either be a glyph, or a name sans extension of an xpm or
 xbm file located in `widget-glyph-directory'.
 
-WARNING: If you call this with a glyph, and you want theuser to be
+WARNING: If you call this with a glyph, and you want the user to be
 able to activate the glyph, make sure it is unique.  If you use the
-same glyph for multiple widgets, "
+same glyph for multiple widgets, activating any of the glyphs will
+cause the last created widget to be activated."
   (cond ((not (and (string-match "XEmacs" emacs-version)
 		   widget-glyph-enable
 		   (fboundp 'make-glyph)
--- a/lisp/custom/widget-example.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/custom/widget-example.el	Mon Aug 13 09:24:17 2007 +0200
@@ -4,7 +4,7 @@
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Keywords: help, extensions, faces, hypermedia
-;; Version: 1.68
+;; Version: 1.69
 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/
 
 (require 'widget)
--- a/lisp/custom/widget.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/custom/widget.el	Mon Aug 13 09:24:17 2007 +0200
@@ -4,7 +4,7 @@
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Keywords: help, extensions, faces, hypermedia
-;; Version: 1.68
+;; Version: 1.69
 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/
 
 ;;; Commentary:
@@ -46,6 +46,7 @@
 
 ;; These autoloads should be deleted when the file is added to Emacs.
 (unless (fboundp 'load-gc)
+  (autoload 'widget-apply "wid-edit")
   (autoload 'widget-create "wid-edit")
   (autoload 'widget-insert "wid-edit")
   (autoload 'widget-browse "wid-browse" nil t)
--- a/lisp/efs/Makefile	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/efs/Makefile	Mon Aug 13 09:24:17 2007 +0200
@@ -2,7 +2,7 @@
 #
 # File:         Makefile
 # Release:      $efs release: 1.15 $
-# Version:      $Revision: 1.5 $
+# Version:      $Revision: 1.6 $
 # RCS:
 # Description:  Makefile for byte-compiling efs and dired.
 # Author:       Andy Norman, HPLabs, Bristol, UK.
@@ -145,7 +145,7 @@
 
 .el.elc:
 	BDIR=$(BDIR) CWD=$(CWD) VMDIR=$(VMDIR) \
-  $(EMACS) -batch -l $(CWD)/fixup -f batch-byte-compile $(CWD)/$<
+  $(EMACS) -batch -no-site-file -l $(CWD)/fixup -f batch-byte-compile $(CWD)/$<
 
 .texi.info:
 	$(EMACS) -batch -f batch-texinfo-format $(CWD)/$<
--- a/lisp/efs/default-dir.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/efs/default-dir.el	Mon Aug 13 09:24:17 2007 +0200
@@ -340,22 +340,23 @@
 			'default-dir-view-file-other-frame)))
 
 
-(defun default-dir-shell-command (command &optional insert)
+(defun default-dir-shell-command (command &optional output-buffer)
   "Documented as original"
   (interactive
    (list
     (let ((prompt (format "Shell command in %s: " (default-directory))))
       (cond
-       ((memq  default-dir-emacs-variant '(fsf-19 xemacs))
-	(read-from-minibuffer prompt nil nil nil
-			      'shell-command-history))
+       ((eq default-dir-emacs-variant 'xemacs)
+	(read-shell-command "Shell command: "))
+       ((eq default-dir-emacs-variant 'fsf-19)
+	(read-from-minibuffer prompt nil nil nil 'shell-command-history))
        ((featurep 'gmhist)
 	(let ((minibuffer-history-symbol 'shell-command-history))
 	  (read-string prompt)))
        (t (read-string prompt))))
     current-prefix-arg))
   (let ((default-directory (expand-file-name (default-directory))))
-    (default-dir-real-shell-command command insert)))
+    (default-dir-real-shell-command command output-buffer)))
 
 (efs-overwrite-fn "default-dir" 'shell-command 'default-dir-shell-command)
 
--- a/lisp/efs/dired.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/efs/dired.el	Mon Aug 13 09:24:17 2007 +0200
@@ -377,6 +377,10 @@
   "*If non-nil dired will revert dired buffers for modified subdirectories.
 See also dired-no-confirm <V>.")
 
+;;;###autoload
+(defvar dired-refresh-automatically t
+  "*If non-nil, refresh dired buffers automatically after file operations.")
+
 ;;; File name regular expressions and extensions.
 
 (defvar dired-trivial-filenames "^\\.\\.?$\\|^#"
@@ -6188,11 +6192,12 @@
 
 (defun dired-check-file-name-handler-alist ()
   ;; Verify that dired is installed as the first item in the alist
-  (or (eq (cdr (car file-name-handler-alist)) 'dired-handler-fn)
-      (setq file-name-handler-alist
-	    (cons
-	     '("." . dired-handler-fn)
-	     (dired-remove-from-file-name-handler-alist)))))
+  (and dired-refresh-automatically
+       (or (eq (cdr (car file-name-handler-alist)) 'dired-handler-fn)
+	   (setq file-name-handler-alist
+		 (cons
+		  '("." . dired-handler-fn)
+		  (dired-remove-from-file-name-handler-alist))))))
 
 (defun dired-handler-fn (op &rest args)
   ;; Function to update dired buffers after I/O.
--- a/lisp/efs/efs-auto.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/efs/efs-auto.el	Mon Aug 13 09:24:17 2007 +0200
@@ -3,12 +3,11 @@
 ;;
 ;; File:         efs-auto.el
 ;; Release:      $efs release: 1.15 $
-;; Version:      #Revision: 1.7 $
+;; Version:      #Revision: 1.8 $
 ;; RCS:          
 ;; Description:  Simple way of autoloading efs
 ;; Author:       Andy Norman, Dawn
 ;; Created:      Thu Sep 24 09:50:08 1992
-;; Modified:     Sun Nov 27 11:45:28 1994 by sandy on gandalf
 ;; Language:     Emacs-Lisp
 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -37,7 +36,7 @@
 (defconst efs-auto-version
   (concat (substring "$efs release: 1.15 $" 14 -2)
 	  "/"
-	  (substring "#Revision: 1.7 $" 11 -2)))
+	  (substring "#Revision: 1.8 $" 11 -2)))
 
 ;;; Interactive functions that should be accessible from here.
 
@@ -47,5 +46,12 @@
  "For a given HOST and USER, set or change the associated PASSWORD." t)
 (autoload 'efs-nslookup-host "efs"
 	  "Attempt to resolve a hostname using nslookup if possible." t)
+(autoload 'efs-display-ftp-activity "efs"
+  "Displays the number of active background ftp sessions in the modeline.
+Uses the variable `efs-mode-line-format' to determine how this will be
+displayed." t)
+(autoload 'efs-ftp-path "efs-cu"
+  "Parse PATH according to efs-path-regexp.
+Returns a list (HOST USER PATH), or nil if PATH does not match the format.")
 
 ;;; end of efs-auto.el
--- a/lisp/efs/efs-dired.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/efs/efs-dired.el	Mon Aug 13 09:24:17 2007 +0200
@@ -3,14 +3,13 @@
 ;;
 ;; File:         efs-dired.el
 ;; Release:      $efs release: 1.15 $
-;; Version:      #Revision: 1.31 $
+;; Version:      #Revision: 1.32 $
 ;; RCS:          
 ;; Description:  Extends much of Dired to work under efs.
 ;; Authors:      Sebastian Kremer <sk@thp.uni-koeln.de>, 
 ;;               Andy Norman <ange@hplb.hpl.hp.com>,
 ;;               Sandy Rutherford <sandy@ibm550.sissa.it>
 ;; Created:      Throughout the ages.
-;; Modified:     Sun Nov 27 12:19:46 1994 by sandy on gandalf
 ;; Language:     Emacs-Lisp
 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -25,7 +24,7 @@
 (defconst efs-dired-version
   (concat (substring "$efs release: 1.15 $" 14 -2)
 	  "/"
-	  (substring "#Revision: 1.31 $" 11 -2)))
+	  (substring "#Revision: 1.32 $" 11 -2)))
 
 ;;;; ----------------------------------------------------------------
 ;;;; User Configuration Variables
@@ -37,18 +36,6 @@
 (defvar efs-dired-verify-anonymous-modtime nil
   "If non-nil, dired modtimes are checked for anonymous logins.")
 
-(defvar efs-remote-shell-file-name
-  (if (memq system-type '(hpux usg-unix-v)) ; hope that's right
-      "remsh"
-    "rsh")
-  "Remote shell used by efs.")
-
-(defvar efs-remote-shell-takes-user
-  (null (null (memq system-type '(aix-v3 hpux silicon-graphics-unix
-					 berkeley-unix))))
-  ;; Complete? Doubt it.
-  "Set to non-nil if your remote shell command takes \"-l USER\".")
-
 ;;; Internal Variables
 
 (make-variable-buffer-local 'dired-ls-F-marks-symlinks)
@@ -1530,14 +1517,17 @@
 				(efs-host-type host user) (nth 2 parsed)))
 			 (abbr (efs-relativize-filename file))
 			 (result (efs-send-cmd host user
-						    (list 'quote 'site 'chmod
-							  mode path)
-						    (format "doing chmod %s"
-							    abbr))))
-		    (efs-del-from-ls-cache file t)
+					       (list 'quote 'site 'chmod
+						     mode path)
+					       (format "doing chmod %s"
+						       abbr))))
+
 		    (if (car result)
-			(efs-error host user (format "chmod: %s: \"%s\"" file 
-						     (nth 1 result)))))
+			(efs-dired-shell-call-process
+ 			 (concat "chmod " mode " " (file-name-nondirectory file))
+ 			 (file-name-directory file)))
+
+		    (efs-del-from-ls-cache file t))
 		(error (setq bombed t)))))))
      (cdr args))
     (if bombed 1 0)))                      ; return code
--- a/lisp/efs/efs-dump.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/efs/efs-dump.el	Mon Aug 13 09:24:17 2007 +0200
@@ -19,11 +19,6 @@
 	  (substring "#Revision: 1.1 $" 11 -2)))
 
 ;;;###autoload
-(defvar allow-remote-paths t
-   "*Set this to nil if you don't want remote paths to access
-remote files.")
-
-;;;###autoload
 (or (assoc efs-path-root-regexp file-name-handler-alist)
     (setq file-name-handler-alist
 	  (cons
@@ -41,3 +36,5 @@
 		      inhibit-file-name-handlers)))
 	  (inhibit-file-name-operation operation))
       (apply operation args))))
+
+;;; end of efs-dump.el
--- a/lisp/efs/efs-fnh.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/efs/efs-fnh.el	Mon Aug 13 09:24:17 2007 +0200
@@ -22,6 +22,11 @@
 	  "/"
 	  (substring "#Revision: 1.3 $" 11 -2)))
 
+;;;###autoload
+(defvar allow-remote-paths t
+   "*Set this to nil if you don't want remote paths to access
+remote files.")
+
 ;;;; ----------------------------------------------------------------
 ;;;; Loading emacs version files
 ;;;; ----------------------------------------------------------------
--- a/lisp/efs/efs.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/efs/efs.el	Mon Aug 13 09:24:17 2007 +0200
@@ -6,7 +6,7 @@
 ;; Version:      #Revision: 1.56 $
 ;; RCS:          
 ;; Description:  Transparent FTP support for the original GNU Emacs
-;;               from FSF and Lucid Emacs
+;;               from FSF and XEmacs
 ;; Authors:      Andy Norman <ange@hplb.hpl.hp.com>,
 ;;               Sandy Rutherford <sandy@ibm550.sissa.it>
 ;; Created:      Thu Oct 12 14:00:05 1989 (as ange-ftp)
@@ -902,7 +902,7 @@
 ;;;    efs|Andy Norman and Sandy Rutherford
 ;;;    |ange@hplb.hpl.hp.com and sandy@ibm550.sissa.it
 ;;;    |transparent FTP Support for GNU Emacs
-;;;    |$Date: 1997/03/28 02:28:27 $|$efs release: 1.15 beta $|
+;;;    |$Date: 1997/04/05 18:07:24 $|$efs release: 1.15 beta $|
 
 ;;; Host and listing type notation:
 ;;;
@@ -1388,6 +1388,18 @@
 If you set this to nil, efs will wait an arbitrary amount of time to get
 output.")
 
+(defvar efs-remote-shell-file-name
+  (if (memq system-type '(hpux usg-unix-v)) ; hope that's right
+      "remsh"
+    "rsh")
+  "Remote shell used by efs.")
+
+(defvar efs-remote-shell-takes-user
+  (null (null (memq system-type '(aix aix-v3 hpux silicon-graphics-unix
+				      berkeley-unix))))
+  ;; Complete? Doubt it.
+  "Set to non-nil if your remote shell command takes \"-l USER\".")
+
 (defvar efs-make-backup-files efs-unix-host-types
   "*A list of operating systems for which efs will make Emacs backup files.
 The backup files are made on the remote host.
@@ -8089,6 +8101,37 @@
 	    (efs-build-mode-string-element group-int sgid nil)
 	    (efs-build-mode-string-element other-int nil sticky))))
   
+(defun efs-shell-call-process (command dir &optional in-background)
+  ;; Runs shell process on remote hosts.
+  (let* ((parsed (efs-ftp-path dir))
+	 (host (car parsed))
+	 (user (nth 1 parsed))
+	 (rdir (nth 2 parsed))
+	 (file-name-handler-alist nil))
+    (or (string-equal (efs-internal-directory-file-name dir)
+		      (efs-expand-tilde "~" (efs-host-type host) host user))
+	(string-match "^cd " command)
+	(setq command (concat "cd " rdir "; " command)))
+    (setq command
+	  (format  "%s %s%s \"%s\""	; remsh -l USER does not work well
+					; on a hp-ux machine I tried
+		   efs-remote-shell-file-name host
+		   (if efs-remote-shell-takes-user
+		       (concat " -l " user)
+		     "")
+		   command))
+    (message "Doing shell command on %s..." host)
+    ;; do it
+    (let ((process-connection-type ; don't waste pty's
+	     (null (null in-background))))
+	(setq default-directory (file-name-directory efs-tmp-name-template))
+	(if in-background
+	    (progn
+	      (setq mode-line-process '(": %s"))
+	      (start-process "Shell" (current-buffer)
+			     shell-file-name "-c" command))
+	  (call-process shell-file-name nil t nil "-c" command)))))
+
 (defun efs-set-file-modes (file mode)
   ;; set-file-modes for remote files.
   ;; For remote files, if mode is nil, does nothing.
@@ -8111,11 +8154,16 @@
 	    nil nil
 	    (efs-cont (result line cont-lines) (host file r-file omode)
 	      (if result
-		  (progn
-		    (efs-set-host-property host 'chmod-failed t)
-		    (message "CHMOD %s failed for %s on %s." omode r-file host)
-		    (if efs-ding-on-chmod-failure
-			(progn (ding) (sit-for 1))))
+		  (let ((exit-code
+			 (efs-shell-call-process
+			  (concat "chmod " mode " " (file-name-nondirectory file))
+			  (file-name-directory file))))
+		    (if (not (equal 0 exit-code))
+			(progn
+			  (efs-set-host-property host 'chmod-failed t)
+			  (message "CHMOD %s failed for %s on %s." omode r-file host)
+			  (if efs-ding-on-chmod-failure
+			      (progn (ding) (sit-for 1))))))
 		(let ((ent (efs-get-file-entry file)))
 		  (if ent
 		      (let* ((type
@@ -8861,7 +8909,7 @@
 	(format efs-path-format-without-user host path)
       (format efs-path-format-string user host path))))
 
-(efs-define-fun efs-abbreviate-file-name (filename)
+(efs-define-fun efs-abbreviate-file-name (filename &optional ignored-for-now)
   ;; Version of abbreviate-file-name for remote files.
   (efs-save-match-data
     (let ((tail directory-abbrev-alist))
@@ -10761,10 +10809,14 @@
 ;; Yes, this is what it looks like.  I'm defining the handler to run our
 ;; version whenever there is an environment variable.
 
-(nconc file-name-handler-alist
-       (list
-	(cons "\\(^\\|[^$]\\)\\(\\$\\$\\)*\\$[{a-zA-Z0-9]"
-	      'efs-sifn-handler-function)))
+(defvar efs-path-sifn-regexp "\\(^\\|[^$]\\)\\(\\$\\$\\)*\\$[{a-zA-Z0-9]"
+  "Regexp to match environment variables in file names.")
+
+(or (assoc efs-path-sifn-regexp file-name-handler-alist)
+    (nconc file-name-handler-alist
+	   (list
+	    (cons efs-path-sifn-regexp
+		  'efs-sifn-handler-function))))
 
 ;;;; ------------------------------------------------------------
 ;;;; Necessary overloads.
--- a/lisp/egg/egg-kinsoku.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,310 +0,0 @@
-;; Kinsoku shori for Egg
-;; Copyright (C) 1992 Free Software Foundation, Inc.
-;; This file is part of Mule (MULtilingual Enhancement of GNU Emacs).
-;; This file contains Japanese characters.
-
-;; Mule is free software distributed in the form of patches to GNU Emacs.
-;; You can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 1, or (at your option)
-;; any later version.
-
-;; Mule is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-;; Coded by S.Tomura, Electrotechnical Lab. (tomura@etl.go.jp)
-
-;;; 93.5.4   modified for Mule Ver.0.9.8 by K.Handa <handa@etl.go.jp>
-;;;		   and K.Mugitani <a50350@sakura.kudpc.kyoto-u.ac.jp>
-;;;	Kinsoku for GB and BIG5 added.
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Change Log before Ver.0.9.7
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Modified for Mule 0.9.4 by K.Handa 92-May-2
-;;;	Since syntax of multi-byte char is defined now,
-;;;	check of English word is modified.
-;;; Modified for Mule 0.9.0 by K.Handa 92-Mar-3
-;;; Nemacs 3.2 created by S. Tomura 89-Nov-15
-;;; Ver. 3.2  3.2 $BBP1~$KJQ99(B
-;;; Nemacs 3.0 created by S. Tomura 89-Mar-17
-;;; Ver. 2.1a modified by S. Tomura 88-Nov-17
-;;;           word$B$NESCf$GJ,3d$7$J$$$h$&$K=$@5$7$?!#(B
-;;; Ver. 2.1  modified by S. Tomura 88-Jun-24
-;;;           kinsoku-shori moves the point <= fill-column + kinsoku-nobashi
-;;; Nemacs V.2.1
-;;; Ver. 1.1  modified by S. Tomura 88-Feb-29
-;;;           Bug fix:  regexp-quote is used.
-;;; Ver. 1.0  Created by S. Tomura
-;;;           $B6XB'=hM}5!G=$rDs6!$9$k!#(B
-;;;
-
-(defvar japanese-kinsoku-version "3.21")
-;;; Last modified date: Wed Nov 15 11:59:00 1989
-
-;;; The followings must be merged into kanji.el
-;;; patched by S.Tomura 87-Dec-7
-;;;    JIS code$B$NFC<lJ8;z$N0lMwI=$G$9!#!J8MB<!K(B
-;;;;     "$B!!!"!#!$!%!&!'!'!(!)!*!+!,!-!.!/(B"
-;;;;   "$B!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?(B"
-;;;;   "$B!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O(B"
-;;;;   "$B!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_(B"
-;;;;   "$B!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o(B"
-;;;;   "$B!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~(B"
-;;;;     "$B"!"""#"$"%"&"'"(")"*"+","-".(B "
-;;;;     "$B&!&"&#&$&%&&&'&(&)&*&+&,&-&.&/(B"
-;;;;   "$B&0&1&2&3&4&5&6&7&8(B"
-;;;;     "$B&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O(B"
-;;;;   "$B&P&Q&R&S&T&U&V&W&X(B"
-;;;;     "$B'!'"'#'$'%'&'''(')'*'+','-'.'/(B"
-;;;;   "$B'0'1'2'3'4'5'6'7'8'9':';'<'='>'?(B"
-;;;;   "$B'@'A(B"
-;;;;     "$B'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_!I(B
-;;;;   "$B'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o(B"
-;;;;   "$B'p'q(B"
-;;;;    $B#0#1#2#3#4#5#6#7#8#9#A#B#C#D#E#F(B
-;;;;   "$B$!$#$%$'$)$C$c$e$g$n(B"
-;;;;   "$B%!%#%%%'%)%C%c%e%g%n%u%v(B"
-
-;;; Special characters for GB
-;;;
-;;;  $A!!!"!#!$!%!&!'!(!)!*!+!,!-!.!/(B
-;;;$A!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?(B
-;;;$A!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O(B
-;;;$A!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_(B
-;;;$A!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o(B
-;;;$A!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~(B
-;;;  $A"1"2"3"4"5"6"7"8"9":";"<"=">"?(B
-;;;$A"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O(B
-;;;$A"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_(B
-;;;$A"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o(B
-;;;$A"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~(B
-;;;  $A#!#"###$#%#&#'#(#)#*#+#,#-#.#/(B
-;;;$A#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?(B
-;;;$A#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O(B
-;;;$A#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_(B
-;;;$A#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o(B
-;;;$A#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~(B
-;;;  $A$!$"$#$$$%$&$'$($)$*$+$,$-$.$/(B
-;;;$A$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?(B
-;;;$A$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
-;;;$A$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_(B
-;;;$A$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o(B
-;;;$A$p$q$r$s$t$u$v$w$x$y$z${$|$}$~(B
-;;;  $A%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/(B
-;;;$A%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?(B
-;;;$A%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O(B
-;;;$A%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_(B
-;;;$A%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o(B
-;;;$A%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~(B
-;;;  $A&!&"&#&$&%&&&'&(&)&*&+&,&-&.&/(B
-;;;$A&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?(B
-;;;$A&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O(B
-;;;$A&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_(B
-;;;$A&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o(B
-;;;$A&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~(B
-;;;  $A'!'"'#'$'%'&'''(')'*'+','-'.'/(B
-;;;$A'0'1'2'3'4'5'6'7'8'9':';'<'='>'?(B
-;;;$A'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O(B
-;;;$A'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_(B
-;;;$A'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o(B
-;;;$A'p'q'r's't'u'v'w'x'y'z'{'|'}'~(B
-;;;  $A(!("(#($(%(&('((()(*(+(,(-(.(/(B
-;;;$A(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(B
-;;;$A(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(B
-;;;$A(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(B
-;;;$A(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(B
-
-;;; Special characters for BIG5
-;;;
-;;;  $(0!!!"!#!$!%!&!'!(!)!*!+!,!-!.!/(B
-;;;$(0!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?(B
-;;;$(0!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O(B
-;;;$(0!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_(B
-;;;$(0!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o(B
-;;;$(0!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~(B
-;;;  $(0"!"""#"$"%"&"'"(")"*"+","-"."/(B
-;;;$(0"0"1"2"3"4"5"6"7"8"9":";"<"=">"?(B
-;;;$(0"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O(B
-;;;$(0"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_(B
-;;;$(0"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o(B
-;;;$(0"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~(B
-;;;  $(0#!#"###$#%#&#'#(#)#*#+#,#-#.#/(B
-;;;$(0#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?(B
-;;;$(0#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O(B
-;;;$(0#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_(B
-;;;$(0#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o(B
-;;;$(0#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~(B
-;;;  $(0$!$"$#$$$%$&$'$($)$*$+$,$-$.$/(B
-;;;$(0$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?(B
-;;;$(0$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O(B
-;;;$(0$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_(B
-;;;$(0$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o(B
-;;;$(0$p$q$r$s$t$u$v$w$x$y$z${$|$}$~(B
-;;;  $(0%!%"%#%$%%%&%'%(%)%*%+%,%-%.%/(B
-;;;$(0%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?(B
-
-;;;###autoload
-(defvar kinsoku-ascii t "Do kinsoku-shori for ASCII.")
-;;;###autoload
-(defvar kinsoku-jis t "Do kinsoku-shori for JISX0208.")
-;;;###autoload
-(defvar kinsoku-gb t "Do kinsoku-shori for GB2312.")
-;;;###autoload
-(defvar kinsoku-big5 t "Do kinsoku-shori for Big5..")
-
-(defvar kinsoku-ascii-bol "!)-_~}]:;',.?" "BOL kinsoku for ASCII.")
-(defvar kinsoku-ascii-eol "({[" "EOL kinsoku for ASCII.")
-(defvar kinsoku-jis-bol
-  (concat  "$B!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>(B"
-	   "$B!?!@!A!B!C!D!E!G!I!K!M!O!Q!S!U!W!Y![!k!l!m!n(B"
-	   "$B$!$#$%$'$)$C$c$e$g$n%!%#%%%'%)%C%c%e%g%n%u%v(B")
-  "BOL kinsoku for JISX0208.")
-(defvar kinsoku-jis-eol
-  "$B!F!H!J!L!N!P!R!T!V!X!Z!k!l!m!n!w!x(B"
-  "EOL kinsoku for JISX0208.")
-(defvar kinsoku-gb-bol
-  (concat  "$A!"!##.#,!$!%!&!'!(!)!*!+!,!-!/!1#)!3!5!7!9!;!=(B"
-	   "$A!?#;#:#?#!!@!A!B!C!c!d!e!f#/#\#"#_#~#|(e(B")
-  "BOL kinsoku for GB2312.")
-(defvar kinsoku-gb-eol
-  (concat "$A!.!0#"#(!2!4!6!8!:!<!>!c!d!e#@!f!l(B"
-	  "$A(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(h(B")
-  "EOL kinsoku for GB2312.")
-(defvar kinsoku-big5-bol
-  (concat  "$(0!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2(B"
- 	   "$(0!3!4!5!6!7!8!9!:!;!<!=!?!A!C!E!G!I!K(B"
- 	   "$(0!M!O!Q(B	$(0!S!U!W!Y![!]!_!a!c!e!g!i!k!q(B"
- 	   "$(0"#"$"%"&"'"(")"*"+","2"3"4"j"k"l"x%7(B")
-  "BOL kinsoku for BIG5.")
-(defvar kinsoku-big5-eol
-  (concat "$(0!>!@!B!D!F!H!J!L!N!P!R!T!V!X!Z!\!^!`!b(B"
- 	  "$(0!d!f!h!j!k!q!p"i"j"k"n"x$u$v$w$x$y$z${(B"
- 	  "$(0$|$}$~%!%"%#%$%%%&%'%(%)%*%+%:(B")
-  "EOL kinsoku for BIG5.")
-
-(defvar kinsoku-bol-chars 
-  (concat
-   (if kinsoku-ascii kinsoku-ascii-bol "")
-   (if kinsoku-jis kinsoku-jis-bol "")
-   (if kinsoku-gb kinsoku-gb-bol "")
-   (if kinsoku-big5 kinsoku-big5-bol ""))
-  "$B9TF,6XB'$r9T$J$&J8;z$r$9$Y$F4^$`J8;zNs$r;XDj$9$k!#(B
-A string consisting of such characters that can't be beginning of line.")
-
-(defvar  kinsoku-eol-chars
-  (concat
-   (if kinsoku-ascii kinsoku-ascii-eol "")
-   (if kinsoku-jis kinsoku-jis-eol "")
-   (if kinsoku-gb kinsoku-gb-eol "")
-   (if kinsoku-big5 kinsoku-big5-eol ""))
-  "$B9TKv6XB'$r9T$J$&J8;z$r$9$Y$F4^$`J8;zNs$r;XDj$9$k!#(B
-A string consisting of such characters that can't be end of line.")
-
-;;;
-;;; Buffers for kinsoku-shori
-;;;
-(defconst $kinsoku-buff1$ " "   "$B6XB'=hM}$N$?$a$N(B ASCII $BJ8;zMQ:n6HNN0h(B")
-(defconst $kinsoku-buff2$ "  "  "$B6XB'=hM}$N$?$a$N(B 1BYTE $BJ8;zMQ:n6HNN0h(B")
-(defconst $kinsoku-buff3$ "   " "$B6XB'=hM}$N$?$a$N(B 2BYTE $BJ8;zMQ:n6HNN0h(B")
-
-(defun kinsoku-buff (ch)
-  "Set CHAR to appropriate kinsoku-buffer and return the buffer."
-  (let ((bytes (char-bytes ch)))
-    (cond ((= bytes 1)
-	   (aset $kinsoku-buff1$ 0 ch)
-	   (regexp-quote $kinsoku-buff1$))
-	  ((= bytes 2)
-	   (aset $kinsoku-buff2$ 0 (char-component ch 0))
-	   (aset $kinsoku-buff2$ 1 (char-component ch 1))
-	   $kinsoku-buff2$)
-	  (t
-	   (aset $kinsoku-buff3$ 0 (char-component ch 0))
-	   (aset $kinsoku-buff3$ 1 (char-component ch 1))
-	   (aset $kinsoku-buff3$ 2 (char-component ch 2))
-	   $kinsoku-buff3$))))
-  
-
-(defun kinsoku-bol-p ()
-  "point$B$G2~9T$9$k$H9TF,6XB'$K?($l$k$+$I$&$+$r$+$($9!#(B
-$B9TF,6XB'J8;z$O(Bkinsoku-bol-chars$B$G;XDj$9$k!#(B"
-  (string-match "" "") ;;;$B$3$l$O(Bregex comp$B$N%j%;%C%H$G$9!#(B
-  (string-match (kinsoku-buff (following-char))
-		kinsoku-bol-chars))
-
-(defun kinsoku-eol-p ()
-  "point$B$G2~9T$9$k$H9TKv6XB'$K?($l$k$+$I$&$+$r$+$($9!#(B
-$B9TKv6XB'J8;z$O(Bkinsoku-eol-chars$B$G;XDj$9$k!#(B"
-  (string-match "" "") ;;;$B$3$l$O(Bregex comp$B$N%j%;%C%H$G$9!#(B
-  (let ((ch (preceding-char)))
-    (string-match (kinsoku-buff ch)
-		  kinsoku-eol-chars)))
-
-(defvar kinsoku-nobashi-limit nil
-  "$B6XB'=hM}$G9T$r?-$P$7$FNI$$H>3QJ8;z?t$r;XDj$9$k!#(B
-$BHsIi@0?t0J30$N>l9g$OL58BBg$r0UL#$9$k!#(B")
-
-;;;###autoload
-(defun kinsoku-shori ()
-  "$B6XB'$K?($l$J$$E@$X0\F0$9$k!#(B
-point$B$,9TF,6XB'$K?($l$k>l9g$O9T$r?-$P$7$F!"6XB'$K?($l$J$$E@$rC5$9!#(B
-point$B$,9TKv6XB'$K?($l$k>l9g$O9T$r=L$a$F!"6XB'$K?($l$J$$E@$rC5$9!#(B
-$B$?$@$7!"9T?-$P$7H>3QJ8;z?t$,(Bkinsoku-nobashi-limit$B$r1[$($k$H!"(B
-$B9T$r=L$a$F6XB'$K?($l$J$$E@$rC5$9!#(B"
-
-  (let ((bol-kin nil) (eol-kin nil))
-    (if (and (not (bolp))
-	     (not (eolp))
-	     (or (setq bol-kin (kinsoku-bol-p))
-		 (setq eol-kin (kinsoku-eol-p))))
-	(cond(bol-kin (kinsoku-shori-nobashi))
-	     (eol-kin (kinsoku-shori-chizime))))))
-
-;;;###autoload
-(defun kinsoku-shori-nobashi ()
-  "$B9T$r?-$P$7$F6XB'$K?($l$J$$E@$X0\F0$9$k!#(B"
-  (let ((max-column (+ fill-column 
-		       (if (and (numberp kinsoku-nobashi-limit)
-				(>= kinsoku-nobashi-limit 0))
-			   kinsoku-nobashi-limit
-			 10000)))  ;;; 10000$B$OL58BBg$N$D$b$j$G$9!#(B
-	ch1 ch2)			; 92.5.2 by K.Handa
-    (while (and (<= (+ (current-column)
-		       (char-width (setq ch1 (following-char))))
-		    max-column)
-		(not (bolp))
-		(not (eolp))
-		(or (kinsoku-eol-p)
-		    (kinsoku-bol-p)
-	            ;;; English word $B$NESCf$G$OJ,3d$7$J$$!#(B
-		    (and (< ch1 127)	; 92.5.2 by K.Handa
-			 (< (setq ch2 (preceding-char)) 127)
-			 (= ?w (char-syntax ch2))
-			 (= ?w (char-syntax ch1)))))
-      (forward-char))
-    (if (or (kinsoku-eol-p) (kinsoku-bol-p))
-	(kinsoku-shori-chizime))))
-
-;;;###autoload
-(defun kinsoku-shori-chizime ()
-  "$B9T$r=L$a$F6XB'$K?($l$J$$E@$X0\F0$9$k!#(B"
-  (let (ch1 ch2)			; 92.5.2 by K.Handa
-    (while (and (not (bolp))
-		(not (eolp))
-		(or (kinsoku-bol-p)
-		    (kinsoku-eol-p)
-		;;; English word $B$NESCf$G$OJ,3d$7$J$$!#(B
-		    (and		; 92.5.2 by K.Handa
-		     (< (setq ch1 (following-char)) 127)
-		     (< (setq ch2 (preceding-char)) 127)
-		     (= ?w (char-syntax ch2))
-		     (= ?w (char-syntax ch1)))))
-      (backward-char))))
-
-
--- a/lisp/egg/egg-wnn-client.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1203 +0,0 @@
-;; Wnn3 server interface for Egg
-;; Coded by S.Tomura, Electrotechnical Lab. (tomura@etl.go.jp)
-
-;; This file is part of Egg on Mule (Multilingual Environment)
-
-;; Egg is distributed in the forms of patches to GNU
-;; Emacs under the terms of the GNU EMACS GENERAL PUBLIC
-;; LICENSE which is distributed along with GNU Emacs by the
-;; Free Software Foundation.
-
-;; Egg is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied
-;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-;; PURPOSE.  See the GNU EMACS GENERAL PUBLIC LICENSE for
-;; more details.
-
-;; You should have received a copy of the GNU EMACS GENERAL
-;; PUBLIC LICENSE along with Nemacs; see the file COPYING.
-;; If not, write to the Free Software Foundation, 675 Mass
-;; Ave, Cambridge, MA 02139, USA.
-
-;;;
-;;; Nemacs - Wnn V3 server interface in elisp
-;;;
-
-;;; 93.4.6   modified for Mule Ver.0.9.7.1
-;;;			by T.Saneto <sanewo@pdp.crl.sony.co.jp>
-;;;	Bug in wnn-bunsetu-yomi-equal fixed.
-
-(provide 'wnn-client)
-
-;;;
-;;;  Wnn deamon command constants
-;;;
-
-(defconst JD_OPEN_IN    9  "$BJQ49(B") ;;; V3.0
-(defconst JD_OPEN       1  "$BMxMQ<TEPO?(B")
-(defconst JD_CLOSE      2  "$BMxMQ<T:o=|(B")
-(defconst JD_BEGIN      3  "$BJQ493+;O(B")
-(defconst JD_END        4  "$BIQEY99?7(B")
-;;;
-(defconst JD_NEXT       17 "$B<!8uJd(B") ;;; 0x11
-(defconst JD_RECONV     18 "$B:FJQ49!JJ8;zNsJQ99!K(B") ;;; 0x12
-(defconst JD_TANCONV    19 "$B:FJQ49!JJ8@a?-=L!K(B") ;;; 0x13
-;;;
-(defconst JD_UDP        33 "") ;;; 0x21
-(defconst JD_UDCHG      34 "$BMxMQ<T<-=qJQ99(B") ;;; 0x22
-(defconst JD_FREQSV     35 "$B<-=qB`Hr(B") ;;; 0x23
-(defconst JD_DICADD     36 "$B<-=qDI2C(B") ;;; 0x24
-(defconst JD_DICDEL     37 "$B<-=q:o=|(B") ;;; 0x25
-(defconst JD_DICINFO    38 "$B<-=q>pJs(B") ;;; 0x26
-(defconst JD_DICSTAT    39 "") ;;; 0x27 V3.0
-
-(defconst JD_WDEL       49 "$BC18l:o=|(B") ;;; 0x31
-(defconst JD_WSCH       50 "$BC18l8!:w(B") ;;; 0x32
-(defconst JD_WREG       51 "$BC18lEPO?(B") ;;; 0x33
-(defconst JD_WHDEL      52 "") ;;; 0x34
-
-(defconst JD_SETEVF     65 "$BJQ49J}<0JQ99(B") ;;; 0x41
-(defconst JD_GETEVF     66 "$BJQ49J}<0>pJs(B") ;;; 0x42
-
-(defconst JD_MKDIR      81 "") ;;;  0x51 V3.0
-(defconst JD_ACCESS     82 "") ;;;  0x52 V3.0
-(defconst JD_WHO        83 "$BMxMQ<T0lMw(B") ;;;  0x53 V3.0
-(defconst JD_VERSION    84 "") ;;;  0x54 V3.0
-
-
-(defvar wnn-server-buffer nil  "Buffer associated with Wnn server process.")
-
-(defvar wnn-server-process nil  "Wnn Kana Kanji hankan process.")
-
-(defvar wnn-command-tail-position nil)
-(defvar wnn-command-buffer nil)
-
-(defvar wnn-result-buffer nil)
-(defvar wnn-henkan-string nil)
-(defvar wnn-bunsetu-suu   nil)
-
-(defvar wnn-return-code nil)
-(defvar wnn-error-code nil)
-
-;;;
-;;;  Put data into buffer 
-;;;
-
-(defun wnn-put-4byte (integer)
-  (insert (if (<= 0 integer) 0 255)
-	  (logand 255 (lsh integer -16))
-	  (logand 255 (lsh integer -8))
-	  (logand 255 integer)))
-
-(defun wnn-put-string (str)
-  (insert str 0))
-
-(defun wnn-put-string* (str)
-  (let ((size (length str))
-	(i 0))
-    (while (< i size)
-      (if (<= 128 (aref str i))
-	(progn (insert (aref str i) (aref str (1+ i)))
-	       (setq i (+ i 2)))
-	(progn (insert 0 (aref str i))
-	       (setq i (1+ i))))))
-  (insert 0 0))
-
-(defun wnn-put-bit-position  (pos)
-  (if (< pos  24) (wnn-put-4byte (lsh 1 pos))
-    (insert (lsh 1 (- pos 24)) 0 0 0)))
-
-;;;
-;;; Get data from buffer
-;;;
-
-(defun wnn-get-4byte ()
-
-  (let ((c 0) (point (point)))
-    ;;;(goto-char (point-min))
-    (while (< (point-max) (+ point 4))
-      (accept-process-output)
-      (if (= c 10) (error "Count exceed."))
-      (setq c (1+ c)))
-    (goto-char point))
-
-  (let ((point (point)))
-    (if (not (or (and (= (char-after point) 0)
-		      (< (char-after (+ point 1)) 128))
-		 (and (= (char-after point) 255)
-		      (<= 128 (char-after (+ point 1))))))
-	(error "wnn-get-4byte: integer range overflow."))
-    (prog1
-	(logior 
-	 (lsh (char-after point)       24)
-	 (lsh (char-after (+ point 1)) 16)
-	 (lsh (char-after (+ point 2))  8)
-	 (lsh (char-after (+ point 3))  0))
-      (goto-char (+ (point) 4)))))
-
-(defun wnn-peek-4byte ()
-
-  (let ((c 0) (point (point)))
-    ;;;(goto-char (point-min))
-    (while (< (point-max) (+ point 4))
-      (accept-process-output)
-      (if (= c 10) (error "Count exceed."))
-      (setq c (1+ c)))
-    (goto-char point))
-
-  (let ((point (point)))
-    (if (not (or (and (= (char-after point) 0)
-		      (< (char-after (+ point 1)) 128))
-		 (and (= (char-after point) 255)
-		      (<= 128 (char-after (+ point 1))))))
-	(error "wnn-get-4byte: integer range overflow."))
-    (prog1
-	(logior 
-	 (lsh (char-after point)       24)
-	 (lsh (char-after (+ point 1)) 16)
-	 (lsh (char-after (+ point 2))  8)
-	 (lsh (char-after (+ point 3))  0)))))
-
-
-(defun wnn-get-bit-positions ()
-
-  (let ((c 0) (point (point)))
-    ;;;(goto-char (point-min))
-    (while (< (point-max) (+ point 4))
-      (accept-process-output)
-      (if (= c 10) (error "Count exceed."))
-      (setq c (1+ c)))
-    (goto-char point))
-
-  (let* ((point (point))
-	 (left (+ (lsh (char-after point) 8)
-		  (char-after (+ point 1))))
-	 (right (+ (lsh (char-after (+ point 2)) 8)
-		   (char-after (+ point 3))))
-	 (result))
-    (forward-char 4)
-    (let ((i 0))
-      (while (< 0 right)
-	(if (zerop (logand 1 right)) nil
-	  (setq result (cons i result)))
-	(setq right (lsh right -1))
-	(setq i (1+ i)))
-      (setq i 16)
-      (while (< 0 left)
-	(if (zerop (logand 1 left)) nil
-	  (setq result (cons i result)))
-	(setq left (lsh left -1))
-	(setq i (1+ i))))
-    (if (= (length result) 1)
-	(car result)
-      (nreverse result))))
-
-(defun wnn-get-string ()
-  (let ((point (point)))
-    (skip-chars-forward "^\0")
-    (let ((c 0))
-      (while (not (= (following-char) 0))
-	(forward-char -1)
-	(accept-process-output)
-	(if (= c 10) (error "Count exceed"))
-	(setq c (1+ c))
-	(skip-chars-forward "^\0")))
-    (prog1 
-	(buffer-substring point (point))
-      (forward-char 1))))
-
-(defun wnn-get-string* ()
-  (let ((point (point)))
-    (let ((c 0))
-      (while (not (search-forward "\0\0" nil t))
-	(accept-process-output)
-	(goto-char point)
-	(if (= c 10) (error "Count exceed"))
-	(setq c (1+ c))))
-    (goto-char point)
-    (if (= (following-char) 0) (delete-char 1)
-      (forward-char 1))
-    (while (< 0 (following-char))
-      (forward-char 1)
-      (if (= (following-char) 0) (delete-char 1)
-	(forward-char 1)))
-    (prog1 
-	(buffer-substring point (point))
-      (forward-char 1))))
-
-;;;
-;;; Wnn Server Command Primitives
-;;;
-
-(defun wnn-command-start (command)
-  (set-buffer wnn-command-buffer)
-  (goto-char (point-min))
-  (if (not (= (point-max) (+ wnn-command-tail-position 1024)))
-      (error "wnn command start error"))
-  (delete-region (point-min) wnn-command-tail-position)
-  (wnn-put-4byte command))
-
-(defun wnn-command-reset ()
-  (save-excursion
-    (progn  
-      ;;; for Nemacs 3.0 and later
-      (if (fboundp 'set-process-kanji-code)
-	  (set-process-kanji-code wnn-server-process 0))
-      (set-buffer wnn-command-buffer)
-      (setq kanji-flag nil)
-      (setq kanji-fileio-code 0)   ;;; for Nemacs 2.1
-      (buffer-flush-undo wnn-command-buffer)
-      (erase-buffer)
-      (setq wnn-command-tail-position (point-min))
-      (let ((max 1024) (i 0))
-	(while (< i max)
-	  (insert 0)
-	  (setq i (1+ i)))))))
-
-(defun wnn-command-end ()
-  (set-buffer wnn-server-buffer)
-  (erase-buffer)
-  (set-buffer wnn-command-buffer)
-  (setq wnn-command-tail-position (point))
-  (process-send-region wnn-server-process (point-min)
-	       (+ (point-min) (lsh (1+ (lsh (- (point) (point-min)) -10)) 10)))
-  )
-
-;;;
-;;; Wnn Server Reply primitives
-;;;
-
-(defun wnn-get-result ()
-  (set-buffer wnn-server-buffer)
-  (condition-case ()
-      (accept-process-output wnn-server-process)
-    (error nil))
-  (goto-char (point-min)))
-
-(defun wnn-get-return-code ()
-  (setq wnn-return-code (wnn-get-4byte))
-  (setq wnn-error-code  (if (= wnn-return-code -1)
-			    (wnn-error-symbol (wnn-get-4byte))
-			  nil))
-  (if wnn-error-code nil
-    wnn-return-code))
-
-;;;
-;;; Wnn Server Interface:  wnn-server-open
-;;;
-
-(defvar *wnn-server-max-kana-string-length* 1000)
-(defvar *wnn-server-max-bunsetu-suu* 1000)
-
-(defvar *wnn-service-name* "wnn")
-
-(defun wnn-server-open (server-host-name login-name)
-  (if (wnn-server-active-p) t
-    (let ((kana_len  *wnn-server-max-kana-string-length*)
-	  (klist_len *wnn-server-max-bunsetu-suu*)
-	  (jserver_name 
-	   (if (or (null  server-host-name)
-		   (equal server-host-name "")
-		   (equal server-host-name "unix"))
-	       (system-name)
-	     server-host-name))
-	  (user_name
-	   (if (or (null login-name) (equal login-name ""))
-	       (user-login-name)
-	     login-name))
-	  (host_name (system-name)))
-      (setq wnn-server-process 
-	    (condition-case var
-		(open-network-stream "Wnn V3" " [Wnn V3 Output Buffer] "
-				     jserver_name *wnn-service-name* )
-	      (error 
-	        (cond((string-match "Unknown host" (car (cdr var)))
-		      (setq wnn-error-code (list ':WNN_UNKNOWN_HOST
-						 jserver_name)))
-		     ((string-match "Unknown service" (car (cdr var)))
-		      (setq wnn-error-code (list ':WNN_UNKNOWN_SERVICE
-						 *wnn-service-name*)))
-		     (t ;;; "Host ... not respoding"
-		      (setq wnn-error-code ':WNN_SOCK_OPEN_FAIL)))
-		     nil)))
-      (if (null wnn-server-process) nil
-	(setq wnn-server-buffer (get-buffer " [Wnn V3 Output Buffer] "))
-	(setq wnn-command-buffer (get-buffer-create " [Wnn V3 Command Buffer] "))
-	(setq wnn-result-buffer (get-buffer-create " [Wnn V3 Result Buffer] "))
-
-	(save-excursion 
-	  ;;; for Nemacs 3.0 
-	  (if (fboundp 'set-process-kanji-code)
-	      (set-process-kanji-code wnn-server-process 0))
-	  (progn
-	    (set-buffer wnn-server-buffer)
-	    (setq kanji-flag nil)
-	    ;;; for Nemacs 2.1
-	    (setq kanji-fileio-code 0) 
-	    (buffer-flush-undo wnn-server-buffer)
-	    )
-	  (progn
-	    (set-buffer wnn-result-buffer)
-	    (setq kanji-flag nil)
-	    ;;; for Nemacs 2.1 
-	    (setq kanji-fileio-code 0)
-	    (buffer-flush-undo wnn-result-buffer))
-	  (progn  
-	    (set-buffer wnn-command-buffer)
-	    (setq kanji-flag nil)
-	    ;;; for Nemacs 2.1
-	    (setq kanji-fileio-code 0)
-	    (buffer-flush-undo wnn-command-buffer)
-	    (erase-buffer)
-	    (setq wnn-command-tail-position (point-min))
-	    (let ((max 1024) (i 0))
-	      (while (< i max)
-		(insert 0)
-		(setq i (1+ i)))))
-	  (wnn-command-start JD_OPEN_IN)
-	  (wnn-put-4byte kana_len)
-	  (wnn-put-4byte klist_len)
-	  (wnn-put-string user_name)
-	  (wnn-put-string host_name)
-	  (wnn-command-end)
-	  (wnn-get-result)
-	  (wnn-get-return-code))))))
-
-(defun wnn-server-active-p ()
-  (and wnn-server-process
-       (eq (process-status wnn-server-process) 'open)))
-
-(defun wnn-connection-error ()
-  (setq wnn-error-code ':wnn-no-connection)
-  (setq wnn-return-code -1)
-  nil)
-
-(defun wnn-zero-arg-command (op)
-  (if (wnn-server-active-p)
-      (save-excursion
-	(wnn-command-start op)
-	(wnn-command-end)
-	(wnn-get-result)
-	(wnn-get-return-code))
-    (wnn-connection-error)))
-
-(defun wnn-server-close ()
-  (wnn-zero-arg-command JD_CLOSE))
-
-(or (fboundp 'si:kill-emacs)
-    (fset 'si:kill-emacs (symbol-function 'kill-emacs)))
-
-(defun kill-emacs (&optional arg)
-  (interactive "P")
-  (if (wnn-server-active-p)
-      (progn
-	(wnn-server-dict-save)
-	(message "Wnn$B$NIQEY>pJs!&<-=q>pJs$rB`Hr$7$^$7$?!#(B") (sit-for 0)
-	(wnn-server-close)))
-  (si:kill-emacs arg))
-
-(or (fboundp 'si:do-auto-save)
-    (fset 'si:do-auto-save (symbol-function 'do-auto-save)))
-
-(defvar *wnn-do-auto-save-dict* nil)
-
-(defun do-auto-save (&optional nomsg)
-  (interactive)
-  (if (and *wnn-do-auto-save-dict*
-	   (wnn-server-dict-save))
-      (progn
-	(wnn-serve-dict-save)
-	(message "Wnn$B$NIQEY>pJs!&<-=q>pJs$rB`Hr$7$^$7$?!#(B")
-	(sit-for 1)))
-  (si:do-auto-save nomsg))
-
-;;; Wnn Result Buffer's layout:
-;;;
-;;; { length:4  kana 0 kouhoSuu:4 kouhoNo:4 
-;;;   {jihoNo:4 serialNo:4 jirituGo 0 fuzokuGo 0 } ...
-;;; }
-;;;   0 0 0 0
-
-(defun wnn-skip-length ()
-  (goto-char (+ (point) 4)))
-
-(defun wnn-skip-4byte ()
-  (goto-char (+ (point) 4)))
-
-(defun wnn-skip-yomi ()
-  (skip-chars-forward "^\0") (forward-char 1))
-
-(defun wnn-skip-kouho ()
-  (goto-char (+ (point) 8))
-  (skip-chars-forward "^\0") (forward-char 1)
-  (skip-chars-forward "^\0") (forward-char 1)
-  )
-
-(defun wnn-forward-char (n)
-  (let ((i 1))
-    (while (<= i n)
-      (if (<= 128 (following-char))
-	  (forward-char 2)
-	(forward-char 1))
-      (setq i (1+ i)))))
-
-;;;
-;;; entry function
-;;;
-(defun wnn-server-henkan-begin (henkan-string)
-  (if (not (wnn-server-active-p)) (wnn-connection-error)
-    (let ((inhibit-quit t))
-      (save-excursion
-	(setq wnn-henkan-string henkan-string)
-	(set-buffer wnn-result-buffer)
-	(erase-buffer)
-	(setq wnn-bunsetu-suu 0)
-	(goto-char (point-min))
-	(wnn-command-start JD_BEGIN)
-	(wnn-put-string* henkan-string)
-	(wnn-command-end)
-	(wnn-get-result)
-	(wnn-henkan-recieve)))))
-
-;;;
-;;; entry function
-;;;
-(defun wnn-server-henkan-quit () t)
-
-;;;
-;;; entry function
-;;;
-(defun wnn-server-henkan-end (bunsetu-no)
-  (if (not (wnn-server-active-p)) (wnn-connection-error)
-    (let ((inhibit-quit t))
-      (save-excursion
-	(let (length jisho-no serial-no  kouho-no p0)
-	  (wnn-command-start JD_END)
-	  (set-buffer wnn-result-buffer)
-	  (goto-char (point-min))
-	  (let ((max (if (and (integerp bunsetu-no)
-			      (<= 0 bunsetu-no)
-			      (<= bunsetu-no wnn-bunsetu-suu))
-			 bunsetu-no
-		       wnn-bunsetu-suu))
-		(i 0))
-	    (while (< i max)
-	      (setq length (wnn-get-4byte))
-	      (setq p0 (point))
-	      (wnn-skip-yomi)
-	      (wnn-skip-4byte) ;;; kouho suu
-	      (setq kouho-no (wnn-get-4byte))
-	      (let ((j 0))
-		(while (< j kouho-no)
-		  (wnn-skip-kouho) 
-		  (setq j (1+ j))))
-	      (setq jisho-no (wnn-get-4byte))
-	      (setq serial-no (wnn-get-4byte))
-	      (goto-char (+ p0 length))
-	      (set-buffer wnn-command-buffer)
-	      (insert 0 )
-	      (wnn-put-4byte jisho-no)
-	      (wnn-put-4byte serial-no)
-	      (set-buffer wnn-result-buffer)
-	      (setq i (1+ i)))))
-	(set-buffer wnn-command-buffer)
-	(insert 255)
-	(wnn-command-end)
-	(wnn-get-result)
-	(wnn-get-return-code)))))
-
-(defun wnn-result-goto-bunsetu (bunsetu-no)
-    (goto-char (point-min))
-    (let (length (i 0))
-      (while (< i bunsetu-no)
-	(setq length (wnn-get-4byte))
-	(goto-char (+ (point) length))
-	(setq i (1+ i)))))
-	      
-;;;
-;;; entry function
-;;;
-(defun wnn-server-henkan-kakutei (bunsetu-no jikouho-no)
-  (cond((not (wnn-server-active-p)) (wnn-connection-error))
-       ((or (< bunsetu-no 0) (<= wnn-bunsetu-suu bunsetu-no))
-	nil)
-       (t 
-	(let ((inhibit-quit t))
-	  (save-excursion
-	    (set-buffer wnn-result-buffer)
-	    (let (kouho-suu)
-	      (wnn-result-goto-bunsetu bunsetu-no)
-	      (wnn-skip-length)
-	      (wnn-skip-yomi)
-	      (setq kouho-suu (wnn-get-4byte))
-	      (if (or (< jikouho-no 0) (<= kouho-suu jikouho-no)) nil
-		(delete-char 4) (wnn-put-4byte jikouho-no)
-		t)))))))
-
-;;;
-;;; entry function
-;;;
-(defun wnn-server-henkan-next (bunsetu-no)
-  (if (not (wnn-server-active-p)) (wnn-connection-error)
-    (let ((inhibit-quit t))
-      (save-excursion
-	(let (p0 p1 kouho-suu length yomi0 yomi1)
-	  (set-buffer wnn-result-buffer)
-	  (wnn-result-goto-bunsetu bunsetu-no)
-	  (setq length (wnn-get-4byte))
-	  (setq p0 (point))
-	  (setq p1 (+ p0 length))
-	  (setq yomi0 (point))
-	  (wnn-skip-yomi)
-	  (setq yomi1 (point))
-	  (setq kouho-suu (wnn-peek-4byte))
-	  (cond((< 1 kouho-suu) t)
-	       (t
-		(wnn-command-start JD_NEXT)
-		(wnn-put-4byte bunsetu-no)
-		(wnn-command-end)
-		(wnn-get-result)
-		(wnn-get-return-code)
-		(if (= wnn-return-code -1) wnn-return-code
-		  (let (jl jisho-no serial-no kanji)
-		    (set-buffer wnn-result-buffer)
-		    (delete-region (point) p1)
-		    (wnn-put-4byte wnn-return-code)
-		    (wnn-put-4byte 0) ;;; current jikouho number
-		    (set-buffer wnn-server-buffer)
-		    (while (not (= (setq jl (wnn-get-4byte)) -1))
-		      (setq jisho-no (wnn-get-4byte)
-			    serial-no (wnn-get-4byte)
-			    kanji  (wnn-get-string*))
-		      (set-buffer wnn-result-buffer)
-		      (wnn-put-4byte jisho-no)
-		      (wnn-put-4byte serial-no)
-		      (insert kanji 0)
-		      (let ((p1 (point)) fuzoku)
-			(goto-char yomi0)
-			(wnn-forward-char jl)
-			(setq fuzoku (point))
-			(goto-char p1)
-			(insert-buffer-substring wnn-result-buffer fuzoku yomi1))
-		      (set-buffer wnn-server-buffer))
-		    (set-buffer wnn-result-buffer)
-		    (setq length (- (point) p0))
-		    (goto-char p0) (delete-char -4)
-		    (wnn-put-4byte length))
-		  t))))))))
-
-(defun jd_reconv (bunsetu-no new-kana)
-  (if (not (wnn-server-active-p)) (wnn-connection-error)
-    (if (= bunsetu-no 0) (jd_begin kana)
-      (let ((inhibit-quit t))
-	(save-excursion
-	  (wnn-command-start JD_RECONV)
-	  (wnn-put-4byte bunsetu-no)
-	  (wnn-put-string* new-kana)
-	  (wnn-command-end)
-	  (wnn-get-result)
-	  (wnn-henkan-recieve bunsetu-no))))))
-
-;;;
-;;; entry function
-;;;
-(defun wnn-server-bunsetu-henkou (bunsetu-no bunsetu-length)
-  (cond((not (wnn-server-active-p)) (wnn-connection-error))
-       ((or (< bunsetu-no 0) (<= wnn-bunsetu-suu bunsetu-no))
-	nil)
-       (t
-	(let ((inhibit-quit t))
-	  (save-excursion
-	    (set-buffer wnn-result-buffer)
-	    (wnn-result-goto-bunsetu bunsetu-no)
-	    (wnn-command-start JD_TANCONV)
-	    (wnn-put-4byte bunsetu-no)
-	    (wnn-put-4byte bunsetu-length)
-	    (wnn-command-end)
-	    (wnn-get-result)
-	    (setq wnn-bunsetu-suu bunsetu-no)
-	    (wnn-henkan-recieve))))))
-
-(defun wnn-henkan-recieve ()
-  (wnn-get-return-code)
-  (if (= wnn-return-code -1) nil
-    (let (p0 p1 length s-ichi jl fl jisho-no serial-no kanji fuzokugo)
-      (setq wnn-bunsetu-suu (+ wnn-bunsetu-suu wnn-return-code))
-      (if (zerop wnn-return-code) nil
-	(setq s-ichi (wnn-peek-4byte))
-	(set-buffer wnn-result-buffer)
-	(delete-region (point) (point-max))
-	(setq p0 (point))
-	(insert wnn-henkan-string 0 0 0 0)
-	(goto-char p0)
-	(wnn-forward-char s-ichi)
-	(delete-region p0 (point))
-	(set-buffer wnn-server-buffer)
-	(while (not (= (setq s-ichi (wnn-get-4byte)) -1))
-	  (setq jl (wnn-get-4byte)
-		fl (wnn-get-4byte)
-		jisho-no (wnn-get-4byte)
-		serial-no (wnn-get-4byte)
-		kanji (wnn-get-string*))
-	  (set-buffer wnn-result-buffer)
-	  (setq p0 (point))
-	  (wnn-forward-char jl)
-	  (setq p1 (point))
-	  (wnn-forward-char fl)
-	  (setq fuzokugo (buffer-substring p1 (point)))
-	  (insert 0) ;;; yomi
-	  (wnn-put-4byte 1)	;;; kouho suu
-	  (wnn-put-4byte 0)	;;; current kouho number
-	  (wnn-put-4byte jisho-no) 
-	  (wnn-put-4byte serial-no)
-	  (insert kanji 0 fuzokugo 0)
-	  (setq length (- (point) p0))
-	  (goto-char p0) (wnn-put-4byte length)
-	  (goto-char (+ (point) length))
-	  (set-buffer wnn-server-buffer)))))
-  wnn-return-code)
-
-(defun wnn-bunsetu-suu () wnn-bunsetu-suu)
-
-(defun wnn-bunsetu-kanji (bunsetu-no &optional buffer)
-  (let ((savebuffer (current-buffer)))
-    (unwind-protect 
-	(progn
-	  (set-buffer wnn-result-buffer)
-	  (if (or (< bunsetu-no 0)
-		  (<= wnn-bunsetu-suu bunsetu-no))
-	      nil
-	    (wnn-result-goto-bunsetu bunsetu-no)
-	    (wnn-skip-length)
-	    (wnn-skip-yomi)
-
-	    (wnn-skip-4byte) ;;; kouho-suu
-	    (let ((i 0) (max (wnn-get-4byte)))
-	      (while (< i max)
-		(wnn-skip-kouho)
-		(setq i (1+ i))))
-	    
-	    (let ( p1 p2 p3 )
-	      (goto-char (+ (point) 4 4))
-	      (setq p1 (point))
-	      (skip-chars-forward "^\0") (setq p2 (point))
-	      (forward-char 1) (skip-chars-forward "^\0")
-	      (setq p3 (point))
-	      (if (null buffer)
-		  (concat (buffer-substring p1 p2) (buffer-substring (1+ p2) p3))
-		(set-buffer buffer)
-		(insert-buffer-substring wnn-result-buffer p1 p2)
-		(insert-buffer-substring wnn-result-buffer (1+ p2) p3)
-		nil))))
-      (set-buffer savebuffer))))
-
-(defun wnn-bunsetu-kanji-length (bunsetu-no)
-  (save-excursion
-    (set-buffer wnn-result-buffer)
-    (if (or (< bunsetu-no 0)
-	    (<= wnn-bunsetu-suu bunsetu-no))
-	nil
-      (wnn-result-goto-bunsetu bunsetu-no)
-      (wnn-skip-length)
-      (wnn-skip-yomi)
-
-      (wnn-skip-4byte) ;;; kouho-suu
-      (let ((i 0) (max (wnn-get-4byte)))
-	(while (< i max)
-	  (wnn-skip-kouho)
-	  (setq i (1+ i))))
-
-      (let ( p1 p3 )
-	(goto-char (+ (point) 4 4))
-	(setq p1 (point))
-	(skip-chars-forward "^\0")(forward-char 1) (skip-chars-forward "^\0")
-	(setq p3 (point))
-	(- p3 p1 1)))))
-
-(defun wnn-bunsetu-yomi-moji-suu (bunsetu-no)
-  (save-excursion
-    (set-buffer wnn-result-buffer)
-    (if (or (<  bunsetu-no 0)
-	    (<= wnn-bunsetu-suu bunsetu-no))
-	nil
-      (wnn-result-goto-bunsetu bunsetu-no)
-      (wnn-skip-length)
-      (let ((c 0) ch)
-	(while (not (zerop (setq ch (following-char))))
-	  (if (<= 128 ch) (forward-char 2)
-	    (forward-char 1))
-	  (setq c (1+ c)))
-	c))))
-
-(defun wnn-bunsetu-yomi (bunsetu-no &optional buffer)
-  (let ((savebuff (current-buffer)))
-    (unwind-protect 
-	(progn
-	  (set-buffer wnn-result-buffer)
-	  (if (or (<  bunsetu-no 0)
-		  (<= wnn-bunsetu-suu bunsetu-no))
-	      nil
-	    (wnn-result-goto-bunsetu bunsetu-no)
-	    (wnn-skip-length)
-	    (let (p1 p2 )
-	      (setq p1 (point))
-	      (skip-chars-forward "^\0")
-	      (if (null buffer ) (buffer-substring p1 (point))
-		(setq p2 (point))
-		(set-buffer buffer)
-		(insert-buffer-substring wnn-result-buffer p1 p2)
-		t))))
-      (set-buffer savebuff))))
-
-(defun wnn-bunsetu-yomi-equal (bunsetu-no yomi)
-  (save-excursion
-    (set-buffer wnn-result-buffer)
-      (if (or (<  bunsetu-no 0)
-	    (<= wnn-bunsetu-suu bunsetu-no))
-	nil
-      (wnn-result-goto-bunsetu bunsetu-no)
-      (wnn-skip-length)
-      (looking-at yomi))))		; 93.4.6 by T.Saneto
-
-(defun wnn-bunsetu-kouho-suu (bunsetu-no)
-  (save-excursion
-    (set-buffer wnn-result-buffer)
-    (if (or (<  bunsetu-no 0)
-	    (<= wnn-bunsetu-suu bunsetu-no))
-	nil
-      (wnn-result-goto-bunsetu bunsetu-no)
-      (wnn-skip-length)
-      (wnn-skip-yomi)
-      (wnn-get-4byte))))
-
-(defun wnn-bunsetu-kouho-list (bunsetu-no)
-  (save-excursion
-    (set-buffer wnn-result-buffer)
-    (if (or (<  bunsetu-no 0)
-	    (<= wnn-bunsetu-suu bunsetu-no))
-	nil
-      (wnn-result-goto-bunsetu bunsetu-no)
-      (wnn-skip-length)
-      (wnn-skip-yomi)
-      (let ((max (wnn-get-4byte)) (i 0) (result nil) p0 p1)
-	(wnn-skip-4byte) ;;; current kouhou number
-	(while (< i max)
-	  (wnn-skip-4byte) (wnn-skip-4byte)
-	  (setq p0 (point))
-	  (skip-chars-forward "^\0")
-	  (setq p1 (point))
-	  (forward-char 1)
-	  (skip-chars-forward "^\0")
-	  (setq result
-		(cons (concat (buffer-substring p0 p1)
-			      (buffer-substring (1+ p1) (point)))
-		      result))
-	  (forward-char 1)
-	  (setq i (1+ i)))
-	(nreverse result)))))
-
-(defun wnn-bunsetu-kouho-number (bunsetu-no)
-  (save-excursion
-    (set-buffer wnn-result-buffer)
-    (if (or (<  bunsetu-no 0)
-	    (<= wnn-bunsetu-suu bunsetu-no))
-	nil
-      (wnn-result-goto-bunsetu bunsetu-no)
-      (wnn-skip-length)
-      (wnn-skip-yomi)
-      (wnn-skip-4byte)
-      (wnn-get-4byte)))
-  )
-
-(defun wnn-bunsetu-kouho-kanji (bunsetu-no kouho-no)
-  (save-excursion
-    (set-buffer wnn-result-buffer)
-    (if (or (<  bunsetu-no 0)
-	    (<= wnn-bunsetu-suu bunsetu-no))
-	nil
-      (wnn-result-goto-bunsetu bunsetu-no)
-      (wnn-skip-length) (wnn-skip-yomi)
-      (let ((kouho-suu (wnn-get-4byte)))
-	(if (or (< kouho-no 0) (<= kouho-suu kouho-no))
-	    nil
-	  (wnn-skip-4byte) ;;; current kouho number
-	  (let ((i 0))
-	    (while (< i kouho-no)
-	      (wnn-skip-kouho)
-	      (setq i (1+ i))))
-	  (let ( p1 p2 p3 )
-	    (goto-char (+ (point) 4 4))
-	    (setq p1 (point))
-	    (skip-chars-forward "^\0") (setq p2 (point))
-	    (forward-char 1) (skip-chars-forward "^\0")
-	    (setq p3 (point))
-	    (concat (buffer-substring p1 p2) (buffer-substring (1+ p2) p3))))))))
-
-(defun wnn-bunsetu-kouho-inspect (bunsetu-no kouho-no)
-  (save-excursion
-    (set-buffer wnn-result-buffer)
-    (if (or (<  bunsetu-no 0)
-	    (<= wnn-bunsetu-suu bunsetu-no))
-	nil
-      (let  (p0  p1 kouho-suu jiritugo fuzokugo yomi jishono serial )
-	(wnn-result-goto-bunsetu bunsetu-no)
-	(wnn-skip-length) 
-	(setq p0 (point))
-	(wnn-skip-yomi)
-	(setq p1 (1- (point)))
-	(setq kouho-suu (wnn-get-4byte))
-	(if (or (< kouho-no 0) (<= kouho-suu kouho-no))
-	    nil
-	  (wnn-skip-4byte) ;;; current kouho number
-	  (let ((i 0))
-	    (while (< i kouho-no)
-	      (wnn-skip-kouho)
-	      (setq i (1+ i))))
-	  (setq jishono (wnn-get-4byte))
-	  (setq serial  (wnn-get-4byte))
-	  (setq jiritugo (wnn-get-string))
-	  (setq fuzokugo (wnn-get-string))
-	  (goto-char p1)
-	  (if (not (equal "" fuzokugo)) (search-backward fuzokugo p0))
-	  (setq yomi (buffer-substring p0 (point)))
-	  (list jiritugo fuzokugo yomi jishono serial))))))
-
-(defun wnn-simple-command (op arg)
-  (if (wnn-server-active-p)
-      (let ((inhibit-quit t))
-	(save-excursion
-	  (wnn-command-start op)
-	  (wnn-put-4byte arg)
-	  (wnn-command-end)
-	  (wnn-get-result)
-	  (wnn-get-return-code)))
-    (wnn-connection-error)))
-
-(defun jd_udp (dict-no)
-  (wnn-simpale-command JD_UDP dict-no))
-
-(defun wnn-server-set-current-dict (dict-no)
-  (wnn-simple-command JD_UDCHG dict-no))
-
-(defun wnn-server-dict-save ()
-  (wnn-zero-arg-command JD_FREQSV))
-
-(defun wnn-server-use-dict (dict-file-name hindo-file-name priority readonly-flag)
-  (if (not (wnn-server-active-p))(wnn-connection-error)
-    (let ((inhibit-quit t))
-      (save-excursion
-	(wnn-command-start JD_DICADD)
-	(wnn-put-string dict-file-name)
-	(wnn-put-string hindo-file-name)
-	(wnn-put-4byte priority)
-	(wnn-put-4byte (if readonly-flag 1 0))
-	(wnn-command-end)
-	(wnn-get-result)
-	(wnn-get-return-code)))))
-
-(defun jd_dicdel (dict-no)
-  (wnn-simple-command JD_DICDEL dict-no))
-
-(defun jd_dicinfo ()
-  (if (not (wnn-server-active-p)) (wnn-connection-error)
-    (let ((inhibit-quit t))
-      (save-excursion
-	(wnn-command-start JD_DICINFO)
-	(wnn-command-end)
-	(wnn-get-result)
-	(let ((dic-no 0) (result nil))
-	  (while (not (= (setq dic-no (wnn-get-4byte)) -1))
-	    (setq result
-		  (cons (list
-			 dic-no
-			 (wnn-get-4byte) ;;; ttl_hindo
-			 (wnn-get-4byte) ;;; dic_type
-			 (wnn-get-4byte) ;;; udp
-			 (wnn-get-4byte) ;;; dic_size
-			 (wnn-get-4byte) ;;; prioritry
-			 (wnn-get-4byte) ;;; readonly no:0 yes:1
-			 (wnn-get-string)	;;; dic_name
-			 (wnn-get-string)	;;; hindo_name
-			 )
-			result))
-	    (nreverse result)))))))
-
-(defun jd_dicstat (file-name)
-  (if (not (wnn-server-active-p)) (wnn-connection-error)
-    (let ((inhibit-quit t))
-      (save-excursion
-	(wnn-command-start JD_DICSTAT)
-	(wnn-put-string file-name)
-	(wnn-command-end)
-	(wnn-get-result)
-	(wnn-get-return-code)))))
-
-(defun wnn-server-dict-delete (serial-no yomi)
-  (if (not (wnn-server-active-p)) (wnn-connection-error)
-    (let ((inhibit-quit t))
-      (save-excursion
-	(wnn-command-start JD_WDEL)
-	(wnn-put-4byte serial-no)
-	(wnn-put-string* yomi)
-	(wnn-command-end)
-	(wnn-get-result)
-	(wnn-get-return-code)))))
-
-(defun wnn-server-dict-info (yomi)
-  (if (not (wnn-server-active-p)) (wnn-connection-error)
-    (let ((inhibit-quit t))
-      (save-excursion
-	(wnn-command-start JD_WSCH)
-	(wnn-put-string* yomi)
-	(wnn-command-end)
-	(wnn-get-result)
-	(wnn-get-return-code)
-	(if (= wnn-return-code -1) nil
-	  (let ((hindo 0) bunpo jisho serial kanji (result nil))
-	    (while (not (= (setq hindo (wnn-get-4byte)) -1))
-	      (setq bunpo (wnn-get-bit-positions))
-	      (setq jisho (wnn-get-4byte))
-	      (setq serial (wnn-get-4byte))
-	      (setq kanji (wnn-get-string*))
-	      (setq result 
-		    (if (integerp bunpo)
-			(cons (list kanji bunpo hindo jisho serial)
-			      result)
-		      (append 
-		       (mapcar (function (lambda (x)
-					   (list kanji x hindo jisho serial)))
-			       bunpo)
-		       result))))
-	    (nreverse result)))))))
-
-(defun wnn-server-dict-add (kanji yomi bunpo)
-  (if (not (wnn-server-active-p))(wnn-connection-error) 
-    (let ((inhibit-quit t))
-      (save-excursion
-	(wnn-command-start JD_WREG)
-	(wnn-put-bit-position bunpo)
-	(wnn-put-4byte 129) ;;; 0x81 hindo always 1 with imatukattayo bit.(jl.c)
-	(wnn-put-string* kanji)
-	(wnn-put-string* yomi)
-	(wnn-command-end)
-	(wnn-get-result)
-	(wnn-get-return-code)))))
-
-(defun jd_whdel (serial-no yomi bunpo)
-  (if (not (wnn-server-active-p)) (wnn-connection-error)
-    (let ((inhibit-quit t))
-      (save-excursion
-	(wnn-command-start JD_WHDEL)
-	(wnn-put-4byte serial-no)
-	(wnn-put-string* yomi)
-	(wnn-put-4byte bunpo)
-	(wnn-command-end)
-	(wnn-get-result)
-	(wnn-get-return-code)))))
-
-(defun jd_setevf (bunsetu-su p1 p2 p3 p4 p5)
-  (if (not (wnn-server-active-p)) (wnn-connection-error)
-    (let ((inhibit-quit t))
-      (save-excursion
-       (wnn-command-start JD_SETEVF)
-       (wnn-put-4byte bunsetu-su)
-       (wnn-put-4byte p1)
-       (wnn-put-4byte p2)
-       (wnn-put-4byte p3)
-       (wnn-put-4byte p4)
-       (wnn-put-4byte p5)
-       (wnn-put-4byte 0);; p6
-       (wnn-put-4byte 0);; p7
-       (wnn-put-4byte 0);; p8
-       (wnn-put-4byte 0);; p9
-       (wnn-put-4byte 0);; p10
-       (wnn-command-end)
-       (wnn-get-result)
-       (wnn-get-return-code)))))
-
-(defun jd_getevf ()
-  (if (not (wnn-server-active-p)) (wnn-connection-error)
-    (let ((inhibit-quit t))
-      (save-excursion
-	(wnn-command-start JD_GETEVF)
-	(wnn-command-end)
-	(wnn-get-result)
-	(prog1
-	    (list
-	     (wnn-get-4byte) ;;; bunsetu-su
-	     (wnn-get-4byte) ;;; p1
-	     (wnn-get-4byte) ;;; p2
-	     (wnn-get-4byte) ;;; p3
-	     (wnn-get-4byte) ;;; p4
-	     (wnn-get-4byte) ;;; p5
-	     )
-	  (wnn-get-4byte);; p6
-	  (wnn-get-4byte);; p7
-	  (wnn-get-4byte);; p8
-	  (wnn-get-4byte);; p9
-	  (wnn-get-4byte);; p10
-	  )))))
-
-(defun wnn-server-make-directory (dir-name)
-  (if (not (wnn-server-active-p)) (wnn-connection-error)
-    (let ((inhibit-quit t))
-      (save-excursion
-	(wnn-command-start JD_MKDIR)
-	(wnn-put-string dir-name)
-	(wnn-command-end)
-	(wnn-get-result)
-	(wnn-get-return-code)))))
-
-(defun wnn-server-file-access (file-name access-mode)
-  (if (not (wnn-server-active-p)) (wnn-connection-error)
-    (let ((inhibit-quit t))
-      (save-excursion
-	(wnn-command-start JD_ACCESS)
-	(wnn-put-4byte access-mode)
-	(wnn-put-string file-name)
-	(wnn-command-end)
-	(wnn-get-result)
-	(setq wnn-return-code (wnn-get-4byte))
-	(setq wnn-error-code nil)
-	wnn-return-code))))
-
-(defun jd_who ()
-  (if (not (wnn-server-active-p)) (wnn-connection-error)
-    (let ((inhibit-quit t))
-      (save-excursion
-	(wnn-command-start JD_WHO)
-	(wnn-command-end)
-	(wnn-get-result)
-	(let ( number user host result)
-	  (while (not (= (setq number (wnn-get-4byte)) -1))
-	    (setq result
-		  (cons 
-		   (list number (wnn-get-string) (wnn-get-string))
-		   result)))
-	  (nreverse result))))))
-
-(defun jd_version ()
-  (wnn-zero-arg-command JD_VERSION))
-
-(defconst *wnn-error-alist*
-  '(
-    (1 :WNN_NO_EXIST     
-       "$B%U%!%$%k$,B8:_$7$^$;$s!#(B")
-    (2 :WNN_NOT_USERDICT
-       "$B@5$7$$%f!<%6!<<-=q$G$O$"$j$^$;$s!#(B")
-    (3 :WNN_MALLOC_ERR
-       "$B%a%b%j(Balloc$B$G<:GT$7$^$7$?!#(B")
-    (4 :WNN_NOT_SYSTEM
-       "$B@5$7$$%7%9%F%`<-=q$G$O$"$j$^$;$s!#(B")
-    (5 :WNN_NOT_A_DICT
-       "$B@5$7$$<-=q$G$O$"$j$^$;$s!#(B")
-    (6 :WNN_FILE_NO_SPECIFIED
-       "$B%U%!%$%kL>$,;XDj$5$l$F$$$^$;$s!#(B")
-    (8 :WNN_HINDO_FILE_NOT_SPECIFIED
-       "$B%7%9%F%`<-=q$KBP$7$F!"IQEY%U%!%$%k$N;XDj$,$"$j$^$;$s!#(B")
-    (9 :WNN_JISHOTABLE_FULL
-       "$B<-=q%F!<%V%k$,0lGU$G$9!#(B")
-    (10 :WNN_HINDO_NO_MATCH
-	"$BIQEY%U%!%$%k$,!";XDj$5$l$?<-=q$NIQEY%U%!%$%k$G$O$"$j$^$;$s!#(B")
-    (11 :WNN_PARAMR
-	"$B%U%!%$%k$NFI$_9~$_8"8B$,$"$j$^$;$s!#(B")
-    (12 :WNN_HJT_FULL
-	"$B%0%m!<%P%kIQEY%F!<%V%k$,0lGU$G$9!#(B")
-    (13 :WNN_JT_FULL
-	"$B%0%m!<%P%k<-=q%F!<%V%k$,0lGU$G$9!#(B")
-    (15 :WNN_PARAMW
-	"$B%U%!%$%k$KBP$9$k=q$-9~$_8"8B$,$"$j$^$;$s!#(B")
-    (16 :WNN_OPENF_ERR
-	"$B%U%!%$%k$,%*!<%W%s$G$-$^$;$s!#(B")
-;;; $B<-=q:o=|4X78$N%(%i!<(B 
-    (20 :WNN_DICT_NOT_USED
-	"$B$=$NHV9f$N<-=q$O!";H$o$l$F$$$^$;$s!#(B")
-;;; $B%f!<%6!<<-=qJQ994X78$N%(%i!<(B 
-;;;
-;;;WNN_DICT_NOT_USED
-;;;
-    (21 :WNN_NOT_A_USERDICT
-	"$B;XDj$5$l$F<-=q$O!"%f!<%6!<<-=q$G$O$"$j$^$;$s!#(B")
-    (22 :WNN_READONLY
-	"$B%j!<%I%*%s%j!<$N<-=q$O!"%+%l%s%H%f!<%6!<<-=q$K$O$G$-$^$;$s!#(B")
-;;; $B<-=q%;!<%V4X78$N%(%i!<(B 
-;;;
-;;; WNN_PARAMW
-;;; WNN_OPENF_ERR
-;;; $BJQ49;~$N%(%i!<(B 
-;;; jishobiki.c 
-    (30 :WNN_JMT_FULL
-	"$B<-=q%F!<%V%k$,$"$U$l$F$$$^$9!#(B ")
-
-    (31 :WNN_LONG_MOJIRETSU
-	"$BJQ49$7$h$&$H$9$kJ8;zNs$,D92a$.$^$9!#(B")
-    (32 :WNN_WKAREA_FULL
-	"$BIUB08l2r@ONN0h$,ITB-$7$F$$$^$9!#(B")
-    (33 :WNN_KAREA_FULL
-	"$B2r@ONN0h$,ITB-$7$F$$$^$9!#(B")
-
-;;; $BC18lEPO?;~$N%(%i!<(B 
-    (40 :WNN_YOMI_LONG
-	"$BFI$_$,D92a$.$^$9!#(B")
-    (41 :WNN_KANJI_LONG
-	"$B4A;z$,D92a$.$^$9!#(B")
-    (42 :WNN_BAD_YOMI
-	"$BFI$_$KITE,Ev$JJ8;z$,4^$^$l$F$$$^$9!#(B")
-    (43  :WNN_NO_YOMI
-	 "$BFI$_$ND9$5$,(B0$B$G$9!#(B")
-    (44 :WNN_NO_CURRENT
-	"$B%+%l%s%H<-=q$,B8:_$7$^$;$s!#(B")
-    (45 :WNN_RDONLY
-	"$B%j!<%I%*%s%j!<$N<-=q$KEPO?$7$h$&$H$7$^$7$?!#(B")
-
-;;; $BC18l:o=|;~!"IJ;l:o=|;~$N%(%i!<(B 
-;;;
-;;;WNN_NO_CURRENT
-;;;WNN_RDONLY
-;;;
-    (50 :WNN_WORD_NO_EXIST
-	"$B;XDj$5$l$?C18l$,B8:_$7$^$;$s!#(B")
-
-;;; $B<!8uJd;~$N%(%i!<(B 
-    (55 :WNN_JIKOUHO_TOO_MANY
-	"$B<!8uJd$N%(%s%H%j!<$N8D?t$,$*$*2a$.$^$9!#(B")
-
-;;; $B=i4|2=$N;~$N%(%i!<(B 
-    (60 :WNN_MALLOC_INITIALIZE
-	"$B%a%b%j(Balloc$B$G<:GT$7$^$7$?!#(B")
-
-;;; $BC18l8!:w;~$N%(%i!<(B 
-;;;
-;;;WNN_BAD_YOMI
-;;;WNN_JMT_FULL
-;;;
-
-    (68 :WNN_SOME_ERROR
-	" $B2?$+$N%(%i!<$,5/$3$j$^$7$?!#(B")
-    (69 :WNN_SONOTA
-	"$B%P%0$,H/@8$7$F$$$kLOMM$G$9!#(B")
-    (70 :WNN_JSERVER_DEAD
-	"$B%5!<%P$,;`$s$G$$$^$9!#(B")
-    (71 :WNN_ALLOC_FAIL
-	"jd_begin$B$G(Balloc$B$K<:GT(B")
-    (72 :WNN_SOCK_OPEN_FAIL
-	"jd_begin$B$G(Bsocket$B$N(Bopen$B$K<:GT(B")
-
-    (73 :WNN_RCV_SPACE_OVER
-	"$B<u?.%9%Z!<%9$+$i%G!<%?$,$O$_$@$7$?(B")
-    (74  :WNN_MINUS_MOJIRETSU
-	 "$BJ8;zNs$ND9$5$N;XDj$,Ii$G$"$k(B")
-;;;	V3.0	
-    (80 :WNN_MKDIR_FAIL
-	" $B%G%#%l%/%H%j$r:n$jB;$J$C$?(B ")
-    (81 :WNN_BAD_USER
-	" $B%f!<%6L>$,$J$$(B ")
-    (82 :WNN_BAD_HOST
-	" $B%[%9%HL>$,$J$$(B ")
-    ))
-
-(defun wnn-error-symbol (code)
-  (let ((pair (assoc code *wnn-error-alist*)))
-    (if (null pair)
-	(list ':wnn-unknown-error-code code)
-      (car (cdr pair)))))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/games/xmine.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,735 @@
+;;; xmine.el --- Mine game for XEmacs
+
+;; Author:     Jens Lautenbacher <jens@lemming0.lem.uni-karlsruhe.de>
+;; Keywords:   games
+;; Version:    1.2
+
+(defconst xmine-version-number "1.2" "XEmacs Mine version number.")
+(defconst xmine-version (format "XEmacs Mine v%s by Jens Lautenbacher © 1997"
+			       xmine-version-number)
+  "Full XEmacs Mine version number.")
+
+;; This file is part of XEmacs.
+
+;; XEmacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; XEmacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with XEmacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;; Commentary: This is a complete reimplementation of the classical
+;; mine searching game known from various OS/GUIs under names like
+;; xmine, minesweeper etc.
+
+;; The idea to implement this in elisp is from
+;; Jacques Duthen <duthen@cegelec-red.fr>,
+;; the author of the original mine game for GNU Emacs. This version
+;; has to the best of my knowledge no code in common with his version,
+;; but cudos go to him for first starting this...
+;;
+;; I mainly wrote this as an example how graphics handling in XEmacs
+;; is possible. I think I did it the right way, using an extension to
+;; the annotation mechanism and via extensive use of `slots' (realized
+;; as properties of extents) to hold the data in the object itself.
+;; (Of course this is not true. The keyboard handling is controlled from
+;; the "outside" of the objects. But at one time during development
+;; before hacking the keyboard controls the code really _was_ nice...
+;; now it's a bad messing with slots and controls from the outside)
+;;
+;; Code:
+;;
+;;; First of all we'll define the needed varibles.
+
+(defgroup xmine nil
+  "The well known mine searching game."
+  :group 'games)
+
+(defcustom xmine-width 25
+  "The width of the mine field"
+  :group 'xmine
+  :type 'integer)
+
+(defcustom xmine-height 20
+  "The height of the mine field"
+  :group 'xmine
+  :type 'integer)
+
+(defcustom xmine-glyph-dir (concat data-directory "mine/")
+  "The directory where the mine glyphs reside"
+  :group 'xmine
+  :type 'directory)
+
+(defface xmine-hidden-face
+  '((t
+     (:background "blue")))
+  "The face used for hidden tiles on ttys"
+  :group 'xmine)
+
+(defface xmine-flagged-face
+  '((t
+     (:background "red")))
+  "The face used for flagged tiles on ttys"
+  :group 'xmine)
+
+(defface xmine-number-face
+  '((t
+     (:background "green")))
+  "The face used for unhidden, numbered tiles on ttys"
+  :group 'xmine)
+
+
+(defvar xmine-pad-glyph
+  (make-glyph
+   (if (and (eq window-system 'x) (featurep 'xpm))
+       (concat xmine-glyph-dir "pad.xpm")
+     "      ")))
+
+(defvar xmine-title-glyph
+  (make-glyph
+   (if (and (eq window-system 'x) (featurep 'xpm))
+       (concat xmine-glyph-dir "splash.xpm")
+     "------------------ XEmacs XMine ------------------")))
+
+(defvar xmine-glyph-production-list
+  '(("xmine-new-up"            "new_up.gif"               "new"  nil               )
+    ("xmine-new-down"          "new_down.gif"             "NEW"  nil               )
+    ("xmine-quit-up"           "quit_up.gif"              "quit" nil               )
+    ("xmine-quit-down"         "quit_down.gif"   	  "QUIT" nil               )
+    ("xmine-up-glyph"          "empty_16_up.gif"          "@ "   xmine-hidden-face )
+    ("xmine-up-sel-glyph"      "empty_16_up_sel.gif"      "@<"   xmine-hidden-face )
+    ("xmine-down-glyph"        "empty_16_down.gif"        "? "   nil               ) 
+    ("xmine-flagged-glyph"     "flagged_16_up.gif"        "! "   xmine-flagged-face)
+    ("xmine-flagged-sel-glyph" "flagged_16_up_sel.gif"    "!<"   xmine-flagged-face)
+    ("xmine-mine-glyph"        "bomb_16_flat.gif"         "* "   nil               )
+    ("xmine-mine-sel-glyph"    "bomb_16_flat.gif"         "*<"   nil               )
+    ("xmine-trapped-glyph"     "bomb_trapped_16_flat.gif" "X "   nil               )
+    ("xmine-0-glyph"           "empty_16_flat.gif"        ". "   nil               )
+    ("xmine-0-sel-glyph"       "empty_16_flat_sel.gif"    ".<"   nil               )
+    ("xmine-1-glyph"           "1_16_flat.gif"            "1 "   xmine-number-face )
+    ("xmine-1-sel-glyph"       "1_16_flat_sel.gif"        "1<"   xmine-number-face )
+    ("xmine-2-glyph"           "2_16_flat.gif"            "2 "   xmine-number-face )
+    ("xmine-2-sel-glyph"       "2_16_flat_sel.gif"        "2<"   xmine-number-face )
+    ("xmine-3-glyph"           "3_16_flat.gif"            "3 "   xmine-number-face )
+    ("xmine-3-sel-glyph"       "3_16_flat_sel.gif"        "3<"   xmine-number-face )
+    ("xmine-4-glyph"           "4_16_flat.gif"            "4 "   xmine-number-face )
+    ("xmine-4-sel-glyph"       "4_16_flat_sel.gif"        "4<"   xmine-number-face )
+    ("xmine-5-glyph"           "5_16_flat.gif"            "5 "   xmine-number-face )
+    ("xmine-5-sel-glyph"       "5_16_flat_sel.gif"        "5<"   xmine-number-face )
+    ("xmine-6-glyph"           "6_16_flat.gif"            "6 "   xmine-number-face )
+    ("xmine-6-sel-glyph"       "6_16_flat_sel.gif"        "6<"   xmine-number-face )
+    ("xmine-7-glyph"           "7_16_flat.gif"            "7 "   xmine-number-face )
+    ("xmine-7-sel-glyph"       "7_16_flat_sel.gif"        "7<"   xmine-number-face )
+    ("xmine-8-glyph"           "8_16_flat.gif"            "8 "   xmine-number-face )
+    ("xmine-8-sel-glyph"       "8_16_flat_sel.gif"        "8<"   xmine-number-face )))
+
+(defun xmine-generate-glyphs ()
+  (let ((list xmine-glyph-production-list)
+	elem var gif text face)
+    (while (setq elem (pop list))
+      (setq var  (car    elem)
+	    gif  (cadr   elem)
+	    text (caddr  elem)
+	    face (cadddr elem))
+      (set (intern var)
+	   (make-glyph (if (eq window-system 'x)
+			   (concat xmine-glyph-dir gif)
+			 text)))
+      (if face
+	  (set-glyph-face (eval (intern-soft var)) face)))))
+
+(xmine-generate-glyphs)
+
+(defvar xmine-key-sel-button nil)
+
+(defun xmine-up-glyph (ext)
+  (if (equal ext xmine-key-sel-button)
+      (progn
+	(set-extent-property ext 'xmine-non-selected-glyph xmine-up-glyph)
+	xmine-up-sel-glyph)
+    xmine-up-glyph))
+
+(defun xmine-flagged-glyph (ext)
+  (if (equal ext xmine-key-sel-button)
+      (progn
+	(set-extent-property ext 'xmine-non-selected-glyph xmine-flagged-glyph)
+	xmine-flagged-sel-glyph)
+    xmine-flagged-glyph))
+
+(defcustom xmine-%-of-mines 12
+  "The percentage of tiles that should be mines."
+  :group 'xmine
+  :type 'integer)
+
+(defcustom xmine-balloon-list (list "What are you waiting for?"
+				    "Push me!"
+				    "Come on. Don't sleep."
+				    "Are you sure?"
+				    "Are you sleeping?"
+				    "Yes! Do it!"
+				    "I'm getting bored."
+				    "You will NEVER beat me.")
+  "(Random) texts for the balloon-help property of the tiles"
+  :group 'xmine
+  :type '(repeat (string)))
+
+(defcustom xmine-background "white"
+  "The background color of XMine's buffer.
+Many colors will not blend nicely with the logo. Shades of light grey are
+preferred if you don't want to use white."
+  :group 'xmine
+  :type 'color)
+
+(defvar xmine-keymap nil)
+
+(if xmine-keymap ()
+  (setq xmine-keymap (make-sparse-keymap))
+  (suppress-keymap xmine-keymap)
+  (define-key xmine-keymap [up] 'xmine-key-up)
+  (define-key xmine-keymap [down] 'xmine-key-down)
+  (define-key xmine-keymap [right] 'xmine-key-right)
+  (define-key xmine-keymap [left] 'xmine-key-left)
+  (define-key xmine-keymap "e" 'xmine-key-up)
+  (define-key xmine-keymap "c" 'xmine-key-down)
+  (define-key xmine-keymap "f" 'xmine-key-right)
+  (define-key xmine-keymap "s" 'xmine-key-left)
+  (define-key xmine-keymap "w" 'xmine-key-up-left)
+  (define-key xmine-keymap "x" 'xmine-key-down-left)
+  (define-key xmine-keymap "r" 'xmine-key-up-right)
+  (define-key xmine-keymap "v" 'xmine-key-down-right)
+  (define-key xmine-keymap [return] 'xmine-key-action3)
+  (define-key xmine-keymap "d" 'xmine-key-action3)
+  (define-key xmine-keymap [(shift space)] 'xmine-key-action2)
+  (define-key xmine-keymap "a" 'xmine-key-action2)
+  (define-key xmine-keymap [space] 'xmine-key-action1)
+  (define-key xmine-keymap [Q] 'xmine-key-quit)
+  (define-key xmine-keymap [N] 'xmine-key-new))
+
+(defvar xmine-number-of-flagged 0)
+
+(defvar xmine-number-of-opened 0)
+  
+(defvar xmine-number-of-mines 0)
+
+(defvar xmine-field nil)
+
+(defvar xmine-buffer nil)
+
+(defvar xmine-quit-ann nil)
+
+(defvar xmine-new-ann nil)
+
+(defvar xmine-count-ann nil)
+
+(defvar xmine-count-glyph (make-glyph "Mines: 00"))
+
+(defvar xmine-mode-hook nil
+  "*Hook called by `xmine-mode-hook'.")
+
+;; the next function is more or less stolen from annotation.el and
+;; modified to fit in our scheme were all three buttons should trigger
+;; actions
+
+(defun xmine-activate-function-button (event)
+  (interactive "e")
+  (let* ((extent (event-glyph-extent event))
+	 (button (event-button event))
+	 (action (intern (concat "action" (number-to-string button))))
+	 (mouse-down t)
+	 (up-glyph nil))
+    ;; make the glyph look pressed
+    (cond ((annotation-down-glyph extent)
+	   (setq up-glyph (annotation-glyph extent))
+	   (set-annotation-glyph extent (annotation-down-glyph extent))))
+    (while mouse-down
+      (setq event (next-event event))
+      (if (button-release-event-p event)
+	  (setq mouse-down nil)))
+    ;; make the glyph look released
+    (cond ((annotation-down-glyph extent)
+	   (set-annotation-glyph extent up-glyph)))
+    (if (eq extent (event-glyph-extent event))
+	(if (extent-property extent action)
+	    (funcall (extent-property extent action) extent)))))
+
+;;; Here we define the button object's constructor function
+
+(defun xmine-button-create (x y type)
+  (let ((ext (make-annotation
+	      xmine-up-glyph nil 'text nil nil xmine-down-glyph nil)))
+    (set-extent-property ext 'action1 'xmine-action1)
+    (set-extent-property ext 'action2 'xmine-beep)
+    (set-extent-property ext 'action3 'xmine-action3)
+    (set-extent-property ext 'xmine-glyph (xmine-type-to-glyph type))
+    (set-extent-property ext 'xmine-sel-glyph (xmine-type-to-sel-glyph type)) 
+    (set-extent-property ext 'xmine-type type)
+    (set-extent-property ext 'xmine-x x)
+    (set-extent-property ext 'xmine-y y)
+    (set-extent-property ext 'xmine-flagged nil)
+    (set-extent-property ext 'xmine-hidden t)
+    (set-extent-property ext 'end-open t)
+    (set-extent-property ext 'balloon-help (xmine-balloon-text))
+    (aset xmine-field (+ (* (1- y) xmine-width) (1- x)) ext)))
+
+;;; ...and this is the second global function to change a
+;;; button object. It is only needed during creation of the board.
+
+(defun xmine-button-change-type (ext type)
+  (set-extent-property ext 'xmine-glyph (xmine-type-to-glyph type))
+  (set-extent-property ext 'xmine-sel-glyph (xmine-type-to-sel-glyph type)) 
+  (set-extent-property ext 'xmine-type type))
+
+;;; some needed predicates.
+
+(defun xmine-flat-button-p (ext)
+  (and ext
+       (not (extent-property ext 'xmine-hidden))
+       (equal "0" (extent-property ext 'xmine-type))))
+
+(defun xmine-mine-button-p (ext)
+  (and ext
+       (equal "mine" (extent-property ext 'xmine-type))))
+
+;;; the next three functions are helper functions used inside a button
+;;; object.
+
+(defun xmine-balloon-text ()
+  (nth (random (length xmine-balloon-list)) xmine-balloon-list))
+
+(defun xmine-beep (&rest forget)
+  (beep))
+
+(defun xmine-type-to-glyph (type)
+  (eval (intern-soft (concat "xmine-" type "-glyph"))))
+
+(defun xmine-type-to-sel-glyph (type)
+  (eval (intern-soft (concat "xmine-" type "-sel-glyph"))))
+
+;;; the next three functions are the main functions that are used
+;;; inside the button objects and which are bound to the 'action1,
+;;; 'action2 and 'action3 slots respectively
+
+(defun xmine-action1 (ext &optional no-repaint force)
+  "This unhides a hidden button"
+  (if (or force
+	  (not (extent-property ext 'xmine-flagged)))
+      (progn
+	(if (and (not force)
+		 (extent-property ext 'xmine-hidden))
+	    (setq xmine-number-of-opened (1+ xmine-number-of-opened)))
+	(set-extent-property ext 'xmine-hidden nil)
+	(set-annotation-glyph ext (if (equal ext xmine-key-sel-button)
+				      (progn
+					(set-extent-property
+					 ext 'xmine-non-selected-glyph
+					 (extent-property ext 'xmine-glyph))
+					(extent-property ext 'xmine-sel-glyph))
+				    (extent-property ext 'xmine-glyph)))
+	(set-extent-property ext 'action3 nil)
+	(set-extent-property ext 'action1 nil)
+	(set-extent-property ext 'balloon-help nil)
+	(set-extent-property ext 'action2 'xmine-action2)
+	(if (not no-repaint)
+	    (progn
+	      (xmine-field-repaint ext)
+	      (if (xmine-game-solved-p) (xmine-end-game)))))))
+
+(defun xmine-action2 (ext)
+  "This unhides all hidden neighbours of a button.
+It is meant as convenience function you can use if you're sure that
+you've marked all mines around the button correctly (or you're sure
+there isn't one)"
+  (let ((list (xmine-get-neighbours ext))
+	next)
+    (while (setq next (pop list))
+      (if (not (xmine-flat-button-p next)) (xmine-action1 next)))))
+
+(defun xmine-action3 (ext)
+  "This toggles the flagged status of a button.
+You flag a button if you know - or think - that there's a mine under it"
+(if (extent-property ext 'xmine-flagged)
+      (progn
+	(set-annotation-glyph ext (xmine-up-glyph ext))
+	(set-extent-property ext 'action1 'xmine-action1)
+	(set-extent-property ext 'xmine-flagged nil)
+	(setq xmine-number-of-flagged (1- xmine-number-of-flagged))
+	(set-annotation-glyph xmine-count-ann
+			      (make-glyph
+			       (format "Mines: %2d"
+				       (- xmine-number-of-mines
+					    xmine-number-of-flagged)))))
+    (if (= xmine-number-of-flagged xmine-number-of-mines)
+	(progn 
+	  (beep)
+	  (message
+	   "Impossible. You seem to have marked too many tiles as mines?"))
+      (set-annotation-glyph ext (xmine-flagged-glyph ext))
+      (set-extent-property ext 'action1 nil)
+      (set-extent-property ext 'xmine-flagged t)
+      (setq xmine-number-of-flagged (1+ xmine-number-of-flagged))
+      (if (xmine-game-solved-p) (xmine-end-game)
+	(set-annotation-glyph xmine-count-ann
+			      (make-glyph
+			       (format "Mines: %2d"
+				       (- xmine-number-of-mines
+					  xmine-number-of-flagged))))))))
+
+
+;;; what to do after a button is unhidden: We (maybe) have to repaint
+;;; parts of the board. This is done here recursively.
+
+(defun xmine-field-repaint (ext)
+  (let* ((flatp  (xmine-flat-button-p ext))
+	 (minep  (xmine-mine-button-p ext))
+	 (neighbours (xmine-get-neighbours ext))
+	 (max-lisp-eval-depth (* 8 xmine-width xmine-height))
+	 next-ext ext-list)
+    (cond (flatp
+	   (while (setq next-ext (pop neighbours))
+	     (if (extent-property next-ext 'xmine-hidden)
+		 (progn
+		   (xmine-action1 next-ext 'no-repaint)
+		   (and (equal "0" (extent-property next-ext 'xmine-type))
+			(push next-ext ext-list)))))
+	   (while ext-list
+	     (setq next-ext (pop ext-list))
+	     (xmine-field-repaint next-ext)))
+	  (minep
+	   (set-extent-property ext 'xmine-glyph xmine-trapped-glyph)
+	   (set-extent-property ext 'xmine-sel-glyph xmine-trapped-glyph)
+	   (xmine-show-all)
+	   (xmine-end-game-trapped)))))
+
+
+(defun xmine-get-neighbours (ext)
+  "This gives back a list of all neighbours of a button, correctly
+  handling buttons at the side or corner of course"
+(let* ((x (extent-property ext 'xmine-x))
+	 (y (extent-property ext 'xmine-y))
+	 next-coord next list
+	 (neighbours  (list (list (1- x) (1+ y))
+			    (list     x  (1+ y))
+			    (list (1+ x) (1+ y))
+			    (list (1- x) (1- y))
+			    (list     x  (1- y))
+			    (list (1+ x) (1- y))
+			    (list (1+ x)     y)
+			    (list (1- x)     y))))
+    (while (setq next-coord (pop neighbours))
+      (if (setq next (xmine-field-button-at (car next-coord)
+					    (cadr next-coord)))
+	  (push next list)))
+    list))
+    
+
+;;; the next four functions are used to know if we're at the end of
+;;; the game (either successfully or exploded) and do the approbate
+;;; action
+
+(defun xmine-game-solved-p ()
+  "You have solved the game successfully if the number of flagged
+mines plus the number of unhidden buttons equals width*height of the field"
+  (equal (+ xmine-number-of-flagged xmine-number-of-opened)
+	 (* xmine-width xmine-height)))
+
+(defun xmine-end-game ()
+  (beep)
+  (set-annotation-glyph xmine-count-ann
+			(make-glyph " Solved. ")))
+
+(defun xmine-end-game-trapped ()
+  (beep)
+  (set-annotation-glyph xmine-count-ann
+			(make-glyph "++ RIP ++")))
+
+(defun xmine-show-all ()
+  (let ((list (append xmine-field nil))
+	next)
+    (while (setq next (pop list))
+      (xmine-action1 next 'no-repaint 'force))))
+
+
+(defun xmine-field-button-at (x y)
+  "This function gives back the button at a given coordinate pair (x y)
+It is only used during creation of the board and when getting the
+neighbours of a button (and for keyboard handling...), as we don't
+want to use coordinates in the main loop, only the button object
+itself should be referenced. Of course the use of this function could
+be avoided in xmine-get-neighbours by storing the neighbour buttons
+directly in the button, but this seems to be a bit oversized for this
+little game."
+  (if (or (> x xmine-width)  (< x 1)
+	  (> y xmine-height) (< y 1)) nil
+    (aref xmine-field (+ (* (1- y) xmine-width) (1- x)))))
+
+(defun xmine-mode ()
+"A mode for playing the well known mine searching game.
+
+   `\\<annotation-local-map-default>\\[xmine-activate-function-button1]' or `\\<xmine-keymap>\\[xmine-key-action1]' unhides a tile,
+   `\\<annotation-local-map-default>\\[xmine-activate-function-button2]' or `\\<xmine-keymap>\\[xmine-key-action2]' unhides all neighbours of a tile,
+   `\\<annotation-local-map-default>\\[xmine-activate-function-button3]' or `\\<xmine-keymap>\\[xmine-key-action3]' (un)flagges a tile to hold a mine.
+
+   `\\[xmine-key-new]' starts a new game.
+   `\\[xmine-key-quit]' ends a game.
+
+All keybindings (with alternatives) currently in effect:
+   \\{xmine-keymap}
+
+The rules are quite easy: You start by unhiding (random) tiles. An unhidden
+tile showing a number tells you something about the number of mines in it's
+neighborhood, where the neighborhood are all 8 tiles (or less if it's
+at a border) around the tile.
+
+E.g. a \"1\" shows you that there is only one mine in the neighborhood of
+this tile. Empty tiles have no mines around them, and empty tiles in
+the neighborhood of another empty tile are all automatically unhidden
+if you unhide one of them. You need to find a strategy to use the
+information you have from the numbers to \"flag\" the tiles with mines
+under them and unhide all other tiles. If you correctly made this
+without accidently unhiding a mine, you've won.
+
+If you are sure you have correctly flagged all mines around a unhidden tile,
+you can use Button-2 or \\[xmine-key-action2] on it to unhide all it's
+neighbors. But beware: If you made a mistake by flagging the wrong mines,
+you'll blow up! 
+
+Have Fun."
+  (interactive)
+  (xmine-field-create))
+
+(fset 'xmine 'xmine-mode)
+
+(defun xmine-field-create ()
+  "We create the playing board here."
+  (let ((width 1)
+	(height 1)
+	(pop-up-windows nil)
+	total)
+    (xmine-buffer-init)
+    (pop-to-buffer xmine-buffer)
+    (setq total (* xmine-height xmine-width))
+    (setq xmine-field (make-vector total nil))
+    (xmine-init-mines
+     (setq xmine-number-of-mines
+	   (min 99 (round (* (/ (float xmine-%-of-mines) 100) total)))))
+    (insert "\n ")
+    (set-extent-end-glyph (make-extent (point) (point)) xmine-title-glyph)
+    (insert "\n\n")
+    (while (<= height xmine-height)
+      (insert " ")
+      (while (<= width xmine-width)
+	(if (xmine-field-button-at width height)
+	    (xmine-button-create width height "mine")
+	  (xmine-button-create width height "0"))
+	(setq width (+ width 1)))
+      (insert " \n")
+      (setq width 1)
+      (setq height (+ height 1)))
+    (insert "\n  ")
+    (set-extent-begin-glyph (make-extent (point) (point)) xmine-pad-glyph)
+    (setq xmine-new-ann
+	  (make-annotation xmine-new-up nil
+			   'text nil nil xmine-new-down nil))
+    (set-extent-property xmine-new-ann 'action1 '(lambda (&rest egal)
+						   (xmine-field-create)))
+    (set-extent-property xmine-new-ann 'action2 nil)
+    (set-extent-property xmine-new-ann 'action3 nil)
+    (set-extent-property xmine-new-ann 'end-open t)
+    (set-extent-begin-glyph (make-extent (point) (point)) xmine-pad-glyph)
+    (setq xmine-count-ann
+	  (make-annotation xmine-count-glyph nil
+			   'text nil nil nil nil))
+    (set-extent-begin-glyph (make-extent (point) (point)) xmine-pad-glyph)
+    (setq xmine-quit-ann
+	  (make-annotation xmine-quit-up nil
+			   'text nil nil xmine-quit-down nil))
+    (set-extent-property xmine-quit-ann 'action1
+			 '(lambda (&rest egal)
+			    (kill-buffer (current-buffer))))
+    (set-extent-property xmine-quit-ann 'action2 nil)
+    (set-extent-property xmine-quit-ann 'action3 nil)
+    (set-extent-property xmine-quit-ann 'end-open t)
+    (xmine-attach-numbers)
+    (setq xmine-number-of-flagged 0)
+    (setq xmine-number-of-opened 0)
+    (set-annotation-glyph xmine-count-ann
+			  (make-glyph
+			   (format "Mines: %2d" xmine-number-of-mines)))
+    (goto-char (point-min))
+    (setq buffer-read-only 't)
+    (if (eq window-system 'x)
+	(set-specifier (face-background 'default)
+		       xmine-background xmine-buffer))
+    (set-specifier (face-background 'text-cursor)
+		   xmine-background xmine-buffer)
+    (setq xmine-key-sel-button nil)
+    (xmine-select-button (xmine-field-button-at (/ xmine-width 2)
+						(/ xmine-height 2)))))
+
+
+(defun xmine-init-mines (num)
+  "A subroutine for xmine-field create.
+We randomly set a part of the nil-filled board vector with t to
+indicate the places where mines should reside."
+  (let (x y elem)
+    (random t)
+    (while (> num 0)
+      (setq x (1+ (random xmine-width)))
+      (setq y (1+ (random xmine-height)))
+      (setq elem (xmine-field-button-at x y))
+      (if (not elem)
+	  (progn
+	    (aset xmine-field (+ (* (1- y) xmine-width) (1- x)) t)
+	    (setq num (1- num)))))))
+	
+(defun xmine-attach-numbers ()
+  "A subroutine for xmine-field-create.
+The board is populated by now with empty buttons and mines. Here we
+change the correct empty buttons to \"numbered\" buttons"
+  (let 
+      ((buttons (append xmine-field nil))
+       ext)
+    (while (setq ext (pop buttons))
+      (let ((num 0)
+	    (minep (xmine-mine-button-p ext))
+	    (neighbours (xmine-get-neighbours ext))
+	    next)
+	(if (not minep)
+	    (progn
+	      (while (setq next (pop neighbours))
+		(if (xmine-mine-button-p next) (setq num (1+ num))))
+	      (if (> num 0)
+		  (xmine-button-change-type ext (number-to-string num)))))))))
+
+	    
+(defun xmine-buffer-init ()
+  "A subroutine for xmine-create-field.
+We set up the XMine buffer, set up the keymap and so on."
+  (if xmine-buffer (kill-buffer xmine-buffer))
+  (setq xmine-buffer (get-buffer-create "XEmacs Mine"))
+  (save-excursion
+    (set-buffer xmine-buffer)
+    (kill-all-local-variables)
+    (make-local-variable 'annotation-local-map-default)
+    (setq truncate-lines 't)
+    (setq major-mode 'xmine-mode)
+    (setq mode-name "XMine")
+    (put 'xmine-mode 'mode-class 'special)
+    (use-local-map xmine-keymap)
+    (buffer-disable-undo (current-buffer))
+    (setq annotation-local-map-default
+	  (let ((map (make-sparse-keymap)))
+	    (set-keymap-name map 'annotation-local-map)
+	    (define-key map 'button1 'xmine-activate-function-button)
+	    (define-key map 'button2 'xmine-activate-function-button)
+	    (define-key map 'button3 'xmine-activate-function-button)
+	    map))
+    (run-hooks 'xmine-mode-hook)))
+
+;;; The keyboard navigation.
+
+(defun xmine-select-button (ext)
+  (let ((flagged (extent-property ext 'xmine-flagged))
+	(hidden  (extent-property ext 'xmine-hidden))
+	sel-glyph)
+    (setq sel-glyph (if hidden
+		       (if flagged xmine-flagged-sel-glyph
+			 xmine-up-sel-glyph)
+		      (extent-property ext 'xmine-sel-glyph)))
+    (if xmine-key-sel-button
+	(set-annotation-glyph xmine-key-sel-button
+			      (extent-property xmine-key-sel-button
+					       'xmine-non-selected-glyph)))
+    (set-extent-property ext 'xmine-non-selected-glyph
+			 (annotation-glyph ext))
+    (set-annotation-glyph ext sel-glyph)
+    (setq xmine-key-sel-button ext)))
+
+(defun xmine-key-action1 ()
+  (interactive)
+  (let ((action (extent-property xmine-key-sel-button 'action1)))
+    (if action
+	(funcall action xmine-key-sel-button))))
+
+(defun xmine-key-action2 ()
+  (interactive)
+  (let ((action (extent-property xmine-key-sel-button 'action2)))
+    (if action
+	(funcall action xmine-key-sel-button))))
+
+(defun xmine-key-action3 ()
+  (interactive)
+  (let ((action (extent-property xmine-key-sel-button 'action3)))
+    (if action
+	(funcall action xmine-key-sel-button))))
+
+(defun xmine-key-quit ()
+  (interactive)
+  (kill-buffer (current-buffer)))
+  
+(defun xmine-key-new ()
+  (interactive)
+  (xmine-field-create))
+
+(defun xmine-key-down-right ()
+  (interactive)
+  (xmine-key-down)
+  (xmine-key-right))
+
+(defun xmine-key-down-left ()
+  (interactive)
+  (xmine-key-down)
+  (xmine-key-left))
+
+(defun xmine-key-up-right ()
+  (interactive)
+  (xmine-key-up)
+  (xmine-key-right))
+
+(defun xmine-key-up-left ()
+  (interactive)
+  (xmine-key-up)
+  (xmine-key-left))
+
+(defun xmine-key-down ()
+  (interactive)
+  (let* ((x (extent-property xmine-key-sel-button 'xmine-x))
+	 (y (extent-property xmine-key-sel-button 'xmine-y))
+	 (ext (xmine-field-button-at x (1+ y))))
+    (if ext (xmine-select-button ext)
+      (xmine-select-button (xmine-field-button-at x 1)))))
+
+(defun xmine-key-up ()
+  (interactive)
+  (let* ((x (extent-property xmine-key-sel-button 'xmine-x))
+	 (y (extent-property xmine-key-sel-button 'xmine-y))
+	 (ext (xmine-field-button-at x (1- y))))
+    (if ext (xmine-select-button ext)
+      (xmine-select-button (xmine-field-button-at x xmine-height)))))
+
+(defun xmine-key-right ()
+  (interactive)
+  (let* ((x (extent-property xmine-key-sel-button 'xmine-x))
+	 (y (extent-property xmine-key-sel-button 'xmine-y))
+	 (ext (xmine-field-button-at (1+ x) y)))
+    (if ext (xmine-select-button ext)
+      (xmine-select-button (xmine-field-button-at 1 y)))))
+
+(defun xmine-key-left ()
+  (interactive)
+  (let* ((x (extent-property xmine-key-sel-button 'xmine-x))
+	 (y (extent-property xmine-key-sel-button 'xmine-y))
+	 (ext (xmine-field-button-at (1- x) y)))
+    (if ext (xmine-select-button ext)
+      (xmine-select-button (xmine-field-button-at xmine-width y)))))
+
+(provide 'xmine)
+
--- a/lisp/gnats/send-pr.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnats/send-pr.el	Mon Aug 13 09:24:17 2007 +0200
@@ -129,13 +129,14 @@
     ret))
 
 ;; const because it must match the script's value
-(defconst send-pr:datadir (or (gnats::get-config "DATADIR") "/usr/share")
+;; XEmacs, former value was (or (gnats::get-config "DATADIR") "/usr/share")
+(defconst send-pr:datadir data-directory 
   "*Where the `gnats' subdirectory containing category lists lives.")
 
 (defvar send-pr::sites nil
   "List of GNATS support sites; computed at runtime.")
 (defvar send-pr:default-site
-  (or (gnats::get-config "GNATS_SITE") "altair.xemacs.org")
+  (or (gnats::get-config "GNATS_SITE") "xemacs.org")
   "Default site to send bugs to.")
 (defvar send-pr:::site send-pr:default-site
   "The site to which a problem report is currently being submitted, or NIL
@@ -213,7 +214,7 @@
 		(not (file-readable-p file))
 		(gnats::push (list (file-name-nondirectory file))
 			    send-pr::sites))))
-	 (directory-files (format "%s/gnats" send-pr:datadir) t))
+	 (directory-files (format "%sgnats" send-pr:datadir) t))
 	(setq send-pr::sites (reverse send-pr::sites)))))
 
 (defconst send-pr::pr-buffer-name "*send-pr*"
@@ -305,6 +306,7 @@
   (let ((elt (assoc site send-pr::template-alist)))
     (if elt
 	(save-excursion (insert (cdr elt)))
+      (setenv "DATADIR" send-pr:datadir)
       (call-process "send-pr" nil t nil "-P" site)
       (save-excursion
 	(setq send-pr::template-alist
@@ -335,6 +337,7 @@
       (message "running send-pr...")
       (let ((oldpr (getenv "GNATS_ROOT")))
 	(setenv "GNATS_ROOT" gnats:root)
+	(setenv "DATADIR" send-pr:datadir)
 	(call-process-region (point-min) (point-max) "send-pr"
 			     nil err-buffer nil send-pr:::site
 			     "-b" "-f" "-")
--- a/lisp/gnus/ChangeLog	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/ChangeLog	Mon Aug 13 09:24:17 2007 +0200
@@ -1,3 +1,122 @@
+Wed Apr  2 12:39:15 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+	* gnus-util.el (gnus-kill-all-overlays): Force Gnus to use extents 
+	even when overlays are available.  (From a patch by MORIOKA
+	Tomohiko).
+
+Wed Apr  2 14:12:45 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+	* gnus.el: Gnus v5.4.40 is released.
+
+Wed Apr  2 13:17:16 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+	* gnus-start.el (gnus-check-bogus-newsgroups): Supply a help
+	param. 
+	
+	* message.el (message-bounce): Remove the right portion of
+	"simple" bounces.
+
+	* gnus-art.el (gnus-read-save-file-name): Would bug out when
+	saving multiple articles.
+
+	* gnus-sum.el (gnus-summary-update-article-line): Insert the
+	correct subject.
+
+Tue Apr  1 11:21:48 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+	* gnus-score.el (gnus-score-find-hierarchical): Translate file
+	chars. 
+
+	* gnus-topic.el (gnus-topic-goto-missing-topic): Bugola.
+	(gnus-topic-forward-topic): New function.
+	(gnus-topic-goto-missing-topic): Use it.
+
+	* nnmh.el (nnmh-active-number): Make sure the directory exist.
+	(nnmh-request-accept-article): Bizarre problem.
+
+	* gnus-topic.el (gnus-topic-goto-missing-group): Don't double
+	topics. 
+
+Mon Mar 31 17:30:10 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+	* gnus.el: Gnus v5.4.39 is released.
+
+Mon Mar 31 17:29:13 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+	* nntp.el (nntp-connection-alist): Ooize.
+
+Mon Mar 31 16:34:37 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+	* gnus.el: Gnus v5.4.38 is released.
+
+Mon Mar 31 16:12:31 1997  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* message.el (message-add-header): New function.
+
+	* gnus-art.el (gnus-sorted-header-list): List `Followup-To' after
+	`Newsgroups'.
+
+	* gnus-undo.el (gnus-undo-mode-map): Bind `gnus-undo' to `C-_',
+	`C-x u' and `C-/'.
+
+Mon Mar 31 16:02:47 1997  Toby Speight  <tms@ansa.co.uk>
+
+	* gnus-art.el (gnus-article-add-buttons): Eval the right element. 
+
+Mon Mar 31 15:57:17 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+	* gnus-msg.el (gnus-add-to-list): New variable.
+	(gnus-post-news): Use it.
+
+Mon Mar 31 15:46:34 1997  Francois Felix Ingrand  <felix@laas.fr>
+
+	* gnus-start.el (gnus-slave-save-newsrc): Get modes right.
+
+Mon Mar 31 15:43:29 1997  Michael Sperber  <sperber@informatik.uni-tuebingen.de>
+
+	* message.el (message-functionp): Recognize compiled functions.
+
+Mon Mar 31 15:43:57 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+	* gnus-util.el (gnus-functionp): Ditto.
+
+Mon Mar 31 15:18:11 1997  Katsumi Yamaoka  <yamaoka@ga.sony.co.jp>
+
+	* gnus-ems.el (gnus-ems-redefine): Don't change display table. 
+
+Mon Mar 24 11:33:59 1997  Michael Welsh Duggan  <md5i@schenley.com>
+
+      * message.el (message-insert-to): Use mail-copies-to.
+
+Mon Mar 31 12:35:12 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+	* gnus-topic.el (gnus-topic-goto-missing-topic): New function.
+	(gnus-topic-goto-missing-group): Use it.
+
+	* gnus-msg.el (gnus-debug): Scan gnus-topic.el.
+
+	* message.el (message-reply): Don't insert extra , when not to
+	header. 
+
+	* nntp.el (nntp-connection-alist): Un-voo.
+
+Sun Mar 30 09:48:41 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+	* gnus-art.el (gnus-article-mode-syntax-table): Make <> paren
+	chars. 
+	(gnus-emphasis-alist): Use it.
+
+	* gnus.el (gnus-maintainer): Changed.
+
+	* nnfolder.el (nnfolder-request-accept-article): Ask before
+	junking. 
+	(nnfolder-save-mail): Make buffer read/write.
+
+	* nnmh.el (nnmh-request-accept-article): Ditto.
+	* nnbabyl.el (nnbabyl-request-accept-article): Ditto.
+	* nnmbox.el (nnmbox-request-accept-article): Ditto.
+	* nnml.el (nnml-request-accept-article): Ditto.
+
 Mon Mar 24 16:57:26 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
 	* gnus.el: Gnus v5.4.37 is released.
--- a/lisp/gnus/gnus-art.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/gnus-art.el	Mon Aug 13 09:24:17 2007 +0200
@@ -115,8 +115,8 @@
   :group 'gnus-article-hiding)
 
 (defcustom gnus-sorted-header-list
-  '("^From:" "^Subject:" "^Summary:" "^Keywords:" "^Newsgroups:" "^To:"
-    "^Cc:" "^Date:" "^Organization:")
+  '("^From:" "^Subject:" "^Summary:" "^Keywords:" "^Newsgroups:"
+    "^Followup-To:" "^To:" "^Cc:" "^Date:" "^Organization:")
   "This variable is a list of regular expressions.
 If it is non-nil, headers that match the regular expressions will
 be placed first in the article buffer in the sequence specified by
@@ -174,7 +174,7 @@
 
 (defcustom gnus-emphasis-alist
   (let ((format
-	 "\\(\\s-\\|^\\|[-\"\(]\\)\\(%s\\(\\w+\\(\\s-+\\w+\\)*[.,]?\\)%s\\)\\(\\s-\\|[-?!.,;:\"\)]\\)")
+	 "\\(\\s-\\|^\\|[-\"]\\|\\s(\\|\\s)\\)\\(%s\\(\\w+\\(\\s-+\\w+\\)*[.,]?\\)%s\\)\\(\\s-\\|[-?!.,;:\"]\\|\\s(\\|\\s)\\)")
 	(types
 	 '(("_" "_" underline)
 	   ("/" "/" italic)
@@ -512,6 +512,8 @@
 (defvar gnus-article-mode-syntax-table
   (let ((table (copy-syntax-table text-mode-syntax-table)))
     (modify-syntax-entry ?- "w" table)
+    (modify-syntax-entry ?> ")" table)
+    (modify-syntax-entry ?< "(" table)
     table)
   "Syntax table used in article mode buffers.
 Initialized from `text-mode-syntax-table.")
@@ -1396,14 +1398,16 @@
 
 (defun gnus-read-save-file-name (prompt &optional filename
 					function group headers variable)
-  (let ((default-name (funcall function group headers
-			       (symbol-value variable)))
+  (let ((default-name
+	  (funcall function group headers (symbol-value variable)))
 	result)
     (setq
      result
      (cond
       ((eq filename 'default)
        default-name)
+      ((eq filename t)
+       default-name)
       (filename filename)
       (t
        (let* ((split-name (gnus-get-split-value gnus-split-methods))
@@ -2759,8 +2763,8 @@
 	  (let* ((start (and entry (match-beginning (nth 1 entry))))
 		 (end (and entry (match-end (nth 1 entry))))
 		 (from (match-beginning 0)))
-	    (when (and (or (eq t (nth 1 entry))
-			   (eval (nth 1 entry)))
+	    (when (and (or (eq t (nth 2 entry))
+			   (eval (nth 2 entry)))
 		       (not (gnus-button-in-region-p
 			     start end 'gnus-callback)))
 	      ;; That optional form returned non-nil, so we add the
--- a/lisp/gnus/gnus-ems.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/gnus-ems.el	Mon Aug 13 09:24:17 2007 +0200
@@ -170,6 +170,7 @@
       "Display table used in summary mode buffers.")
     (fset 'gnus-cite-add-face 'gnus-mule-cite-add-face)
     (fset 'gnus-max-width-function 'gnus-mule-max-width-function)
+    (fset 'gnus-summary-set-display-table 'ignore)
 
     (when (boundp 'gnus-check-before-posting)
       (setq gnus-check-before-posting
--- a/lisp/gnus/gnus-group.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/gnus-group.el	Mon Aug 13 09:24:17 2007 +0200
@@ -2063,7 +2063,7 @@
 	   (list 'nndir-directory
 		 (if all gnus-group-archive-directory
 		   gnus-group-recent-archive-directory))))
-    (gnus-group-add-parameter group (cons 'to-address "ding@ifi.uio.no"))))
+    (gnus-group-add-parameter group (cons 'to-address "ding@gnus.org"))))
 
 (defun gnus-group-make-directory-group (dir)
   "Create an nndir group.
--- a/lisp/gnus/gnus-msg.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/gnus-msg.el	Mon Aug 13 09:24:17 2007 +0200
@@ -61,6 +61,9 @@
 gatewayed to a newsgroup, and you want to followup to an article in
 the group.")
 
+(defvar gnus-add-to-list nil
+  "*If non-nil, add a `to-list' parameter automatically.")
+
 (defvar gnus-sent-message-ids-file
   (nnheader-concat gnus-directory "Sent-Message-IDs")
   "File where Gnus saves a cache of sent message ids.")
@@ -367,7 +370,8 @@
 			    force-news)
   (when article-buffer
     (gnus-copy-article-buffer))
-  (let ((gnus-article-reply article-buffer))
+  (let ((gnus-article-reply article-buffer)
+	(add-to-list gnus-add-to-list))
     (gnus-setup-message (cond (yank 'reply-yank)
 			      (article-buffer 'reply)
 			      (t 'message))
@@ -406,7 +410,8 @@
 		;; Arrange for mail groups that have no `to-address' to
 		;; get that when the user sends off the mail.
 		(when (and (not to-list)
-			   (not to-address))
+			   (not to-address)
+			   add-to-list)
 		  (push (list 'gnus-inews-add-to-address pgroup)
 			message-send-actions)))
 	    (set-buffer gnus-article-copy)
@@ -818,7 +823,7 @@
   (interactive)
   (let ((files '("gnus.el" "gnus-sum.el" "gnus-group.el"
 		 "gnus-art.el" "gnus-start.el" "gnus-async.el"
-		 "gnus-msg.el" "gnus-score.el" "gnus-win.el"
+		 "gnus-msg.el" "gnus-score.el" "gnus-win.el" "gnus-topic.el"
 		 "nnmail.el" "message.el"))
 	file expr olist sym)
     (gnus-message 4 "Please wait while we snoop your variables...")
--- a/lisp/gnus/gnus-score.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/gnus-score.el	Mon Aug 13 09:24:17 2007 +0200
@@ -37,11 +37,11 @@
 by itself what score files are applicable to which group.
 
 Say you want to use the single score file
-\"/ftp.ifi.uio.no@ftp:/pub/larsi/ding/score/soc.motss.SCORE\" and all
+\"/ftp.gnus.org@ftp:/pub/larsi/ding/score/soc.motss.SCORE\" and all
 score files in the \"/ftp.some-where:/pub/score\" directory.
 
  (setq gnus-global-score-files
-       '(\"/ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE\"
+       '(\"/ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE\"
          \"/ftp.some-where:/pub/score\"))"
   :group 'gnus-score-files
   :type '(repeat file))
@@ -2502,8 +2502,9 @@
 	all
       (mapcar
        (lambda (file)
-	 (concat (file-name-directory file) prefix
-		 (file-name-nondirectory file)))
+	 (nnheader-translate-file-chars
+	  (concat (file-name-directory file) prefix
+		  (file-name-nondirectory file))))
        all))))
 
 (defun gnus-score-file-rank (file)
--- a/lisp/gnus/gnus-start.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/gnus-start.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1243,7 +1243,7 @@
 	     (when (setq entry (gnus-gethash group gnus-newsrc-hashtb))
 	       (gnus-group-change-level entry gnus-level-killed)
 	       (setq gnus-killed-list (delete group gnus-killed-list))))
-	   bogus)
+	   bogus '("group" "groups" "remove"))
 	(while (setq group (pop bogus))
 	  ;; Remove all bogus subscribed groups by first killing them, and
 	  ;; then removing them from the list of killed groups.
@@ -2302,9 +2302,12 @@
   (save-excursion
     (set-buffer gnus-dribble-buffer)
     (let ((slave-name
-	   (make-temp-name (concat gnus-current-startup-file "-slave-"))))
+	   (make-temp-name (concat gnus-current-startup-file "-slave-")))
+	  (modes (ignore-errors
+		   (file-modes (concat gnus-current-startup-file ".eld")))))
       (gnus-write-buffer slave-name)
-      (set-file-modes slave-name (file-modes gnus-current-startup-file)))))
+      (when modes
+	(set-file-modes slave-name modes)))))
 
 (defun gnus-master-read-slave-newsrc ()
   (let ((slave-files
--- a/lisp/gnus/gnus-sum.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/gnus-sum.el	Mon Aug 13 09:24:17 2007 +0200
@@ -2193,8 +2193,8 @@
   ;; We start from the standard display table, if any.
   (let ((table (or (copy-sequence standard-display-table)
 		   (make-display-table)))
-	;; Nix out all the control chars...
 	(i 32))
+    ;; Nix out all the control chars...
     (while (>= (setq i (1- i)) 0)
       (aset table i [??]))
     ;; ... but not newline and cr, of course.  (cr is necessary for the
@@ -2205,8 +2205,8 @@
     (let ((i 256))
       (while (>= (setq i (1- i)) 127)
 	;; Only modify if the entry is nil.
-	(or (aref table i)
-	    (aset table i [??]))))
+	(unless (aref table i)
+	  (aset table i [??]))))
     (setq buffer-display-table table)))
 
 (defun gnus-summary-setup-buffer (group)
@@ -2948,7 +2948,8 @@
 		   (gnus-data-find-list
 		    article
 		    (gnus-data-list t)))))
-	      (error ""))
+	      ;; Error on the side of excessive subjects.
+	      (error (mail-header-subject header)))
 	    (mail-header-subject header))
 	   (mail-header-subject header)
 	 "")
--- a/lisp/gnus/gnus-topic.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/gnus-topic.el	Mon Aug 13 09:24:17 2007 +0200
@@ -254,6 +254,20 @@
 	prev
       (caaadr parentt))))
 
+(defun gnus-topic-forward-topic (num)
+  "Go to the next topic on the same level as the current one."
+  (let* ((topic (gnus-current-topic))
+	 (way (if (< num 0) 'gnus-topic-previous-topic
+		'gnus-topic-next-topic))
+	 (num (abs num)))
+    (while (and (not (zerop num))
+		(setq topic (funcall way topic)))
+      (when (gnus-topic-goto-topic topic)
+	(decf num)))
+    (unless (zerop num)
+      (goto-char (point-max)))
+    num))
+
 (defun gnus-topic-find-topology (topic &optional topology level remove)
   "Return the topology of TOPIC."
   (unless topology
@@ -557,9 +571,28 @@
 	(when (gnus-group-goto-group (pop g) t)
 	  (forward-line 1)
 	  (setq unfound nil)))
-      (when unfound
-	(gnus-topic-goto-topic topic)
-	(forward-line 1)))))
+      (when (and unfound
+		 (not (gnus-topic-goto-missing-topic topic)))
+	(gnus-topic-insert-topic-line
+	 topic t t (car (gnus-topic-find-topology topic)) nil 0)))))
+
+(defun gnus-topic-goto-missing-topic (topic)
+  (if (gnus-topic-goto-topic topic)
+      (forward-line 1)
+    ;; Topic not displayed.
+    (let* ((top (gnus-topic-find-topology
+		 (gnus-topic-parent-topic topic)))
+	   (tp (reverse (cddr top))))
+      (while (not (equal (caaar tp) topic))
+	(setq tp (cdr tp)))
+      (pop tp)
+      (while (and tp
+		  (not (gnus-topic-goto-topic (caaar tp))))
+	(pop tp))
+      (if tp
+	  (gnus-topic-forward-topic 1)
+	(gnus-topic-goto-missing-topic (caadr top))))
+    nil))
 
 (defun gnus-topic-update-topic-line (topic-name &optional reads)
   (let* ((top (gnus-topic-find-topology topic-name))
--- a/lisp/gnus/gnus-undo.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/gnus-undo.el	Mon Aug 13 09:24:17 2007 +0200
@@ -68,7 +68,12 @@
   (setq gnus-undo-mode-map (make-sparse-keymap))
 
   (gnus-define-keys gnus-undo-mode-map
-   "\M-\C-_" gnus-undo))
+   "\M-\C-_"     gnus-undo
+   "\C-_"        gnus-undo
+   "\C-xu"       gnus-undo
+   [(control /)] gnus-undo    ; many people are used to type `C-/' on
+			      ; X terminals and get `C-_'.
+   ))
 
 (defun gnus-undo-make-menu-bar ()
   (when nil
--- a/lisp/gnus/gnus-util.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/gnus-util.el	Mon Aug 13 09:24:17 2007 +0200
@@ -89,7 +89,8 @@
 (defsubst gnus-functionp (form)
   "Return non-nil if FORM is funcallable."
   (or (and (symbolp form) (fboundp form))
-      (and (listp form) (eq (car form) 'lambda))))
+      (and (listp form) (eq (car form) 'lambda))
+      (compiled-function-p form)))
 
 (defsubst gnus-goto-char (point)
   (and point (goto-char point)))
--- a/lisp/gnus/gnus-xmas.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/gnus-xmas.el	Mon Aug 13 09:24:17 2007 +0200
@@ -185,8 +185,8 @@
   ;; Setup the display table -- like gnus-summary-setup-display-table,
   ;; but done in an XEmacsish way.
   (let ((table (make-display-table))
-	;; Nix out all the control chars...
 	(i 32))
+    ;; Nix out all the control chars...
     (while (>= (setq i (1- i)) 0)
       (aset table i [??]))
     ;; ... but not newline and cr, of course.  (cr is necessary for the
@@ -197,8 +197,8 @@
     (let ((i 256))
       (while (>= (setq i (1- i)) 127)
 	;; Only modify if the entry is nil.
-	(or (aref table i)
-	    (aset table i [??]))))
+	(unless (aref table i)
+	  (aset table i [??]))))
     (add-spec-to-specifier current-display-table table (current-buffer) nil)))
 
 (defun gnus-xmas-add-hook (hook function &optional append local)
--- a/lisp/gnus/gnus.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/gnus.el	Mon Aug 13 09:24:17 2007 +0200
@@ -226,7 +226,7 @@
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
-(defconst gnus-version-number "5.4.37"
+(defconst gnus-version-number "5.4.40"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Gnus v%s" gnus-version-number)
@@ -1431,7 +1431,7 @@
 (defvar gnus-have-read-active-file nil)
 
 (defconst gnus-maintainer
-  "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
+  "bugs@gnus.org (The Gnus Bugfixing Girls + Boys)"
   "The mail address of the Gnus maintainers.")
 
 (defvar gnus-info-nodes
--- a/lisp/gnus/message.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/message.el	Mon Aug 13 09:24:17 2007 +0200
@@ -928,6 +928,19 @@
     (when value
       (nnheader-replace-chars-in-string value ?\n ? ))))
 
+(defun message-add-header (&rest headers)
+  "Add the HEADERS to the message header, skipping those already present."
+  (while headers
+    (let (hclean)
+      (unless (string-match "^\\([^:]+\\):[ \t]*[^ \t]" (car headers))
+	(error "Invalid header `%s'" (car headers)))
+      (setq hclean (match-string 1 (car headers)))
+    (save-restriction
+      (message-narrow-to-headers)
+      (unless (re-search-forward (concat "^" (regexp-quote hclean) ":") nil t)
+	(insert (car headers) ?\n))))
+    (setq headers (cdr headers))))
+
 (defun message-fetch-reply-field (header)
   "Fetch FIELD from the message we're replying to."
   (when (and message-reply-buffer
@@ -948,7 +961,8 @@
 (defun message-functionp (form)
   "Return non-nil if FORM is funcallable."
   (or (and (symbolp form) (fboundp form))
-      (and (listp form) (eq (car form) 'lambda))))
+      (and (listp form) (eq (car form) 'lambda))
+      (compiled-function-p form)))
 
 (defun message-strip-subject-re (subject)
   "Remove \"Re:\" from subject lines."
@@ -1316,7 +1330,7 @@
 (defun message-insert-to ()
   "Insert a To header that points to the author of the article being replied to."
   (interactive)
-  (let ((co (message-fetch-field "courtesy-copies-to")))
+  (let ((co (message-fetch-field "mail-copies-to")))
     (when (and co
 	       (equal (downcase co) "never"))
       (error "The user has requested not to have copies sent via mail")))
@@ -3005,7 +3019,7 @@
 	      (message-set-work-buffer)
 	      (unless never-mct
 		(insert (or reply-to from "")))
-	      (insert (if (bolp) "" ", ") (or to ""))
+	      (insert (if to (concat (if (bolp) "" ", ") to "") ""))
 	      (insert (if mct (concat (if (bolp) "" ", ") mct) ""))
 	      (insert (if cc (concat (if (bolp) "" ", ") cc) ""))
 	      (goto-char (point-min))
@@ -3378,8 +3392,7 @@
 	     (forward-line 2))
 	(and (re-search-forward message-unsent-separator nil t)
 	     (forward-line 1))
-	(and (search-forward "\n\n" nil t)
-	     (re-search-forward "^Return-Path:.*\n" nil t)))
+	(re-search-forward "^Return-Path:.*\n" nil t))
     ;; We remove everything before the bounced mail.
     (delete-region
      (point-min)
--- a/lisp/gnus/nnbabyl.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/nnbabyl.el	Mon Aug 13 09:24:17 2007 +0200
@@ -339,7 +339,8 @@
 	     (if (stringp group)
 		 (list (cons group (nnbabyl-active-number group)))
 	       (nnmail-article-group 'nnbabyl-active-number)))
-       (if (null result)
+       (if (and (null result)
+		(yes-or-no-p "Moved to `junk' group; delete article? "))
 	   (setq result 'junk)
 	 (setq result (car (nnbabyl-save-mail result))))
        (set-buffer nnbabyl-mbox-buffer)
--- a/lisp/gnus/nnfolder.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/nnfolder.el	Mon Aug 13 09:24:17 2007 +0200
@@ -381,7 +381,8 @@
 			(list (cons group (nnfolder-active-number group)))
 		      (setq art-group
 			    (nnmail-article-group 'nnfolder-active-number))))
-       (if (null result)
+       (if (and (null result)
+		(yes-or-no-p "Moved to `junk' group; delete article? "))
 	   (setq result 'junk)
 	 (setq result
 	       (car (nnfolder-save-mail result)))))
@@ -578,12 +579,13 @@
 	      (end (point-max))
 	      (obuf (current-buffer)))
 	  (nnfolder-possibly-change-folder (car group-art))
-	  (goto-char (point-max))
-	  (unless (eolp)
-	    (insert "\n"))
-	  (unless (bobp)
-	    (insert "\n"))
-	  (insert-buffer-substring obuf beg end))))
+	  (let ((buffer-read-only nil))
+	    (goto-char (point-max))
+	    (unless (eolp)
+	      (insert "\n"))
+	    (unless (bobp)
+	      (insert "\n"))
+	    (insert-buffer-substring obuf beg end)))))
 
     ;; Did we save it anywhere?
     save-list))
--- a/lisp/gnus/nnmbox.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/nnmbox.el	Mon Aug 13 09:24:17 2007 +0200
@@ -309,7 +309,8 @@
        (setq result (if (stringp group)
 			(list (cons group (nnmbox-active-number group)))
 		      (nnmail-article-group 'nnmbox-active-number)))
-       (if (null result)
+       (if (and (null result)
+		(yes-or-no-p "Moved to `junk' group; delete article? "))
 	   (setq result 'junk)
 	 (setq result (car (nnmbox-save-mail result)))))
      (save-excursion
--- a/lisp/gnus/nnmh.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/nnmh.el	Mon Aug 13 09:24:17 2007 +0200
@@ -301,10 +301,11 @@
 		 noinsert)))
 	(and
 	 (nnmail-activate 'nnmh)
-	 (let ((resu|t (nnmail-article-group 'nnmh-active-number)))
-	   (if (not result)
+	 (let ((res (nnmail-article-group 'nnmh-active-number)))
+	   (if (and (null res)
+		    (yes-or-no-p "Moved to `junk' group; delete article? "))
 	       'junk
-	     (car (nnmh-save-mail result noinsert))))))
+	     (car (nnmh-save-mail res noinsert))))))
     (when (and last nnmail-cache-accepted-message-ids)
       (nnmail-cache-close))))
 
@@ -442,21 +443,22 @@
 
 (defun nnmh-active-number (group)
   "Compute the next article number in GROUP."
-  (let ((active (cadr (assoc group nnmh-group-alist))))
+  (let ((active (cadr (assoc group nnmh-group-alist)))
+	(dir (nnmail-group-pathname group nnmh-directory)))
     (unless active
       ;; The group wasn't known to nnmh, so we just create an active
       ;; entry for it.
       (setq active (cons 1 0))
       (push (list group active) nnmh-group-alist)
+      (unless (file-exists-p dir)
+	(make-directory dir))
       ;; Find the highest number in the group.
       (let ((files (sort
 		    (mapcar
 		     (lambda (f)
 		       (string-to-int f))
-		     (directory-files
-		      (nnmail-group-pathname group nnmh-directory)
-		      nil "^[0-9]+$"))
-		     '>)))
+		     (directory-files dir nil "^[0-9]+$"))
+		    '>)))
 	(when files
 	  (setcdr active (car files)))))
     (setcdr active (1+ (cdr active)))
--- a/lisp/gnus/nnml.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/gnus/nnml.el	Mon Aug 13 09:24:17 2007 +0200
@@ -325,7 +325,8 @@
 	   (and last (nnml-save-nov))))
       (and
        (nnmail-activate 'nnml)
-       (if (not (setq result (nnmail-article-group 'nnml-active-number)))
+       (if (and (not (setq result (nnmail-article-group 'nnml-active-number)))
+		(yes-or-no-p "Moved to `junk' group; delete article? "))
 	   (setq result 'junk)
 	 (setq result (car (nnml-save-mail result))))
        (when last
--- a/lisp/modes/cc-mode.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/modes/cc-mode.el	Mon Aug 13 09:24:17 2007 +0200
@@ -6,8 +6,8 @@
 ;;          1987 Dave Detlefs and Stewart Clamen
 ;;          1985 Richard M. Stallman
 ;; Created: a long, long, time ago. adapted from the original c-mode.el
-;; Version:         4.388
-;; Last Modified:   1997/03/25 03:19:17
+;; Version:         4.390
+;; Last Modified:   1997/04/02 15:46:35
 ;; Keywords: c languages oop
 
 ;; NOTE: Read the commentary below for the right way to submit bug reports!
@@ -2448,6 +2448,7 @@
 	(c-set-style-1 vars)))
   (c-keep-region-active))
 
+;;;###autoload
 (defun c-add-style (style descrip &optional set-p)
   "Adds a style to `c-style-alist', or updates an existing one.
 STYLE is a string identifying the style to add or update.  DESCRIP is
@@ -4141,8 +4142,10 @@
 				  (setq done t))
 				 )
 			   (setq cont t)))
-		       injava-inher))
-		)
+		       injava-inher)
+		     (not (c-crosses-statement-barrier-p (cdr injava-inher)
+							 (point)))
+		     ))
 	    (cond
 	     ;; CASE 5C.1: non-hanging colon on an inher intro
 	     ((= char-after-ip ?:)
@@ -5203,7 +5206,7 @@
 
 ;; defuns for submitting bug reports
 
-(defconst c-version "4.388"
+(defconst c-version "4.390"
   "CC Mode version number.")
 (defconst c-mode-help-address
   "bug-gnu-emacs@prep.ai.mit.edu, cc-mode-help@python.org"
--- a/lisp/mule/canna.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/mule/canna.el	Mon Aug 13 09:24:17 2007 +0200
@@ -29,6 +29,11 @@
 
 ;; #### This is far from working in XEmacs.
 
+;; added by MORIOKA Tomohiko <morioka@jaist.ac.jp>, 1996/6/18
+(defvar running-xemacs (string-match "XEmacs" emacs-version))
+
+(if running-xemacs (require 'overlay))
+
 ;; added by MORIOKA Tomohiko <morioka@jaist.ac.jp>, 1996/6/7
 (or (fboundp 'minibuffer-prompt-width)
     (defun minibuffer-prompt-width ()
@@ -42,14 +47,6 @@
       (char-after (1- (point)))
       )
     )
-(or (fboundp 'overlayp)
-    (defalias 'overlayp 'extentp)
-    )
-
-;; added by MORIOKA Tomohiko <morioka@jaist.ac.jp>, 1996/6/18
-(defvar running-xemacs (string-match "XEmacs" emacs-version))
-
-(if running-xemacs (require 'overlay))
 
 (if running-xemacs
     (progn
--- a/lisp/mule/kinsoku.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/mule/kinsoku.el	Mon Aug 13 09:24:17 2007 +0200
@@ -195,12 +195,13 @@
 Uses category \'s\' to check.
 point$B$G2~9T$9$k$H9TF,6XB'$K?($l$k$+$I$&$+$r$+$($9!#(B
 $B9TF,6XB'J8;z$O(B\'s\'$B$N(Bcategory$B$G;XDj$9$k!#(B"
-  (let ((ch (following-char)))
-    (if (or
-	 (and kinsoku-ascii (char-in-category-p ch ?a))
-	 (and kinsoku-jis (char-in-category-p ch ?j))
-	 (and kinsoku-gb (char-in-category-p ch ?c))
-	 (and kinsoku-big5 (char-in-category-p ch ?t)))
+  (let ((ch (char-after)))
+    (if (and ch
+	     (or
+	      (and kinsoku-ascii (char-in-category-p ch ?a))
+	      (and kinsoku-jis (char-in-category-p ch ?j))
+	      (and kinsoku-gb (char-in-category-p ch ?c))
+	      (and kinsoku-big5 (char-in-category-p ch ?t))))
 	(char-in-category-p ch ?s)
       nil)))
 
@@ -209,12 +210,13 @@
 Uses category \'e\' to check.
 point$B$G2~9T$9$k$H9TKv6XB'$K?($l$k$+$I$&$+$r$+$($9!#(B
 $B9TKv6XB'J8;z$O(B\'s\'$B$N(Bcategory$B$G;XDj$9$k!#(B"
-  (let ((ch (preceding-char)))
-    (if (or
-	 (and kinsoku-ascii (char-in-category-p ch ?a))
-	 (and kinsoku-jis (char-in-category-p ch ?j))
-	 (and kinsoku-gb (char-in-category-p ch ?c))
-	 (and kinsoku-big5 (char-in-category-p ch ?t)))
+  (let ((ch (char-before)))
+    (if (and ch
+	     (or
+	      (and kinsoku-ascii (char-in-category-p ch ?a))
+	      (and kinsoku-jis (char-in-category-p ch ?j))
+	      (and kinsoku-gb (char-in-category-p ch ?c))
+	      (and kinsoku-big5 (char-in-category-p ch ?t))))
 	(char-in-category-p ch ?e)
       nil)))
 
@@ -248,8 +250,9 @@
 			   kinsoku-extend-limit
 			 10000)))  ;;; 10000 is deliberatly unreasonably large
 	ch1 ch2)
-    (while (and (<= (+ (current-column)
-		       (char-width (setq ch1 (following-char))))
+    (while (and (setq ch1 (char-after))
+		(<= (+ (current-column)
+		       (char-width ch1 ))
 		    max-column)
 		(not (bolp))
 		(not (eolp))
@@ -257,7 +260,8 @@
 		    (kinsoku-bol-p)
 	            ;;; don't break in the middle of an English word
 		    (and (char-in-category-p ch1 ?a)
-			 (char-in-category-p (setq ch2 (preceding-char)) ?a)
+			 (setq ch2 (char-before))
+			 (char-in-category-p ch2 ?a)
 			 (= ?w (char-syntax ch2))
 			 (= ?w (char-syntax ch1)))))
       (forward-char))
--- a/lisp/packages/supercite.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/packages/supercite.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,13 +1,13 @@
 ;;; supercite.el --- minor mode for citing mail and news replies
 
-;; Author: 1993 Barry A. Warsaw, Century Computing, Inc. <bwarsaw@cen.com>
-;; Maintainer:    supercite-help@anthem.nlm.nih.gov
+;; Author: 1993 Barry A. Warsaw, Century Computing, Inc. <bwarsaw@python.org>
+;; Maintainer:    supercite-help@python.org
 ;; Created:       February 1993
 ;; Version:       3.1
 ;; Last Modified: 1993/09/22 18:58:46
 ;; Keywords: citation attribution mail news article reply followup
 
-;; supercite.el revision: 3.54
+;; supercite.el revision: 3.55
 
 ;; Copyright (C) 1993 Barry A. Warsaw
 
@@ -35,6 +35,10 @@
 ;; |Mail and news reply citation package
 ;; |1993/09/22 18:58:46|3.1|
 
+;; sb 1997/Apr/02:  Added attribution function sc-header-author-email-writes
+;; which gives attribution in the form -
+;; Steve Baur <steve@altair.xemacs.org> writes:
+
 ;; Code:
 
 
@@ -340,6 +344,7 @@
     (sc-header-author-writes)
     (sc-header-verbose)
     (sc-no-blank-line-or-header)
+    (sc-header-author-email-writes)
     )
   "*List of reference header rewrite functions.
 The variable `sc-preferred-header-style' controls which function in
@@ -1507,6 +1512,19 @@
 			" for more details)\n")
 		))))
 
+;; Added by Ateve Baur <steve@altair.xemacs.org> Apr-02-1997.
+(defun sc-header-author-email-writes ()
+  "sc-author <email-addr> writes:"
+  (let ((sc-mumble "")
+	(whofrom (sc-whofrom)))
+    (if whofrom
+	(insert sc-reference-tag-string
+		(sc-hdr "" (sc-mail-field "sc-author") " ")
+		(or (sc-hdr "<" (sc-mail-field "sc-from-address") ">" t)
+		    (sc-hdr "<" (sc-mail-field "sc-reply-address") ">"  t)
+		    "")
+		" writes:\n"))))
+
 
 ;; ======================================================================
 ;; header rewrites
--- a/lisp/packages/time.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/packages/time.el	Mon Aug 13 09:24:17 2007 +0200
@@ -2,9 +2,10 @@
 
 ;; Copyright (C) 1985, 86, 87, 93, 94, 1996 Free Software Foundation, Inc.
 
-;; Maintainer: FSF,     XEmacs add-ons (C) by Jens T. Lautenbacher
-;;                      mail <jens@lemming0.lem.uni-karlsruhe.de>
-;;                      for comments/fixes about the enhancements.
+;; Maintainer: FSF for the original version. 
+;;             XEmacs add-ons and rewrite (C) by Jens Lautenbacher
+;;                            mail <jens@lemming0.lem.uni-karlsruhe.de>
+;;                            for comments/fixes about the enhancements.
 
 ;; This file is part of XEmacs.
 
@@ -23,7 +24,7 @@
 ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 ;; 02111-1307, USA.
 
-;;; Version: 1.10  (I choose the version number starting at 1.1
+;;; Version: 1.13  (I choose the version number starting at 1.1
 ;;;                to indicate that 1.0 was the old version
 ;;;                before I hacked away on it -jtl)
 
@@ -56,11 +57,22 @@
 
 (require 'itimer)
 
+(defconst display-time-version-number "1.13" "Version number of time.el")
+(defconst display-time-version (format "Time.el version %s for XEmacs"
+				       display-time-version-number)
+  "The full version string for time.el")
+
 (defgroup display-time nil
   "Facilities to display the current time/date/load and a new-mail indicator
 in the XEmacs mode line or echo area."
   :group 'applications)
 
+(defgroup display-time-balloon nil
+  "Fancy add-ons to display-time for using the `balloon-help' feature.
+balloon-help must be loaded before these settings take effect."
+  :group 'display-time)
+
+
 (defcustom display-time-mail-file nil
   "*File name of mail inbox file, for indicating existence of new mail.
 Non-nil and not a string means don't check for mail.  nil means use
@@ -204,7 +216,7 @@
   "What to use to generate the ballon frame of the \"mail\" glyph
 if balloon-help is loaded. This can be the function
 display-time-mail-balloon, nil or a string."
-  :group 'display-time 
+  :group 'display-time-balloon 
   :type '(choice (const display-time-mail-balloon)
 		 (const nil)
 		 (string)))
@@ -212,7 +224,7 @@
 (defcustom display-time-no-mail-balloon "No mail is good mail."
   "The string used in the ballon frame of the \"no mail\" glyph
 if balloon-help is loaded. This can also be nil"
-  :group 'display-time 
+  :group 'display-time-balloon
   :type '(choice (const nil)
 		 (string)))
 
@@ -222,36 +234,36 @@
 nnmail-split-methods to split your incoming mail into different groups.
 Look at the documentation for gnus. If you don't know what we're talking about,
 don't care and leave this set to nil"
-  :group 'display-time
+  :group 'display-time-balloon
   :type 'boolean)
 
 (defface display-time-mail-balloon-enhance-face '((t (:background  "orange")))
   "Face used for entries in the mail balloon which match the regexp
 display-time-mail-balloon-enhance"
-  :group 'display-time)
+  :group 'display-time-balloon)
 
 (defface display-time-mail-balloon-gnus-group-face '((t (:foreground "blue")))
   "Face used for the gnus group entry in the mail balloon
 if display-time-mail-balloon-show-gnus-group is t (see the documentation there
 before you set it to t)"
-  :group 'display-time)
+  :group 'display-time-balloon)
 
 (defcustom display-time-mail-balloon-max-displayed 10
   "The maximum number of messaged which are displayed in the mail balloon.
 You need to have balloon-help loaded to use this."
-  :group 'display-time
+  :group 'display-time-balloon
   :type 'number)
 
 (defcustom display-time-mail-balloon-from-width 20
   "The width of the `From:' part of the mail balloon.
 You need to have ballon-help loaded to use this"
-  :group 'display-time
+  :group 'display-time-balloon
   :type 'number)
 
 (defcustom display-time-mail-balloon-subject-width 25
   "The width of the `Subject:' part of the mail balloon.
 You need to have ballon-help loaded to use this"
-  :group 'display-time
+  :group 'display-time-balloon
   :type 'number)
 
 (defcustom display-time-mail-balloon-gnus-split-width 10
@@ -260,14 +272,14 @@
 For getting this information, it consults the relevant variables from gnus
 (nnmail-split-methods).
 You need to have ballon-help loaded to use this"
-  :group 'display-time
+  :group 'display-time-balloon
   :type 'number)
 
 (defcustom display-time-mail-balloon-enhance nil
   "A list of regular expressions describing which messages should be highlighted
 in the mail balloon. The regexp will be matched against the complete header block
 of an email. You need to load balloon-help to use this"
-  :group 'display-time
+  :group 'display-time-balloon
   :type '(repeat (string :tag "Regexp")))
 
 (defcustom display-time-mail-balloon-suppress nil
@@ -276,7 +288,7 @@
 of an email. It will only take effect if the message is not matched already
 by display-time-mail-balloon-enhance.
 You need to load balloon-help to use this"
-  :group 'display-time
+  :group 'display-time-balloon
   :type '(repeat (string :tag "Regexp")))
 
 (defcustom display-time-mail-balloon-enhance-gnus-group nil
@@ -287,7 +299,7 @@
 
 This requires display-time-mail-balloon-show-gnus-group to be t
 and balloon-help to be loaded"
-  :group 'display-time 
+  :group 'display-time-balloon
   :type '(repeat (string :tag "Regexp")))
 
 (defcustom display-time-mail-balloon-suppress-gnus-group nil
@@ -298,7 +310,7 @@
 
 This requires display-time-mail-balloon-show-gnus-group to be t
 and balloon-help to be loaded"
-  :group 'display-time
+  :group 'display-time-balloon
   :type '(repeat (string :tag "Regexp")))
 
 (defvar display-time-spool-file-modification nil)
@@ -439,7 +451,33 @@
 		display-time-display-time-background)
 	  ))))
 
-  (if (featurep 'xpm)
+(defun display-time-init-glyphs ()
+  "This is a hack to have all glyphs be displayed one time at startup.
+It helps avoiding problems with the background color of the glyphs if a
+balloon-help frame is open and a not yet displayed glyph is going to be
+displayed."
+  (let ((i 0)
+	(list '("am" "pm" ":"))
+	elem mlist)
+    (while (< i 10)
+      (push (eval (intern-soft (concat "display-time-"
+				       (number-to-string i)
+				       "-glyph"))) mlist)
+      (setq i (1+ i)))
+    (setq i 0.0)
+    (while (<= i 3.0)
+      (push (eval (intern-soft (concat "display-time-load-"
+				       (number-to-string i)
+				       "-glyph"))) mlist)
+      (setq i (+ i 0.5)))
+    (while (setq elem (pop list))
+      (push (eval (intern-soft (concat "display-time-"
+				       elem "-glyph"))) mlist))
+    (let ((global-mode-string mlist))
+      (redisplay-frame))
+    ))
+
+(if (featurep 'xpm)
     (progn
       (defvar display-time-mail-sign
 	(cons (make-extent nil nil)
@@ -473,8 +511,10 @@
       (defvar display-time-load-3.0-glyph nil)
       (display-time-generate-time-glyphs 'force)
       (display-time-generate-load-glyphs 'force)  
+      (display-time-init-glyphs)
       ))
 
+
 (defun display-time-can-do-graphical-display (&optional textual)
   (and display-time-show-icons-maybe
        (not textual)
@@ -541,7 +581,7 @@
 			  (or (featurep 'nnmail) (require 'nnmail))))
 	 (display-time-mail-balloon-gnus-split-width
 	  (if (not show-split) 0
-	    (+ 3 display-time-mail-balloon-gnus-split-width))) ; <space>[...] -> +3
+	    (+ 3 display-time-mail-balloon-gnus-split-width))) ; -><space>... = +3
 	 (mod (nth 5 (file-attributes mail-spool-file)))
 	 header	header-ext)
     (setq header "You have mail:")
@@ -612,7 +652,7 @@
 		      (re-search-forward enhance-reg nil t))))
 	  (if show-split
 	      (save-excursion
-		(setq point (point-min))
+		(goto-char (point-min))
 		(nnmail-article-group '(lambda (name) (setq gnus-group name)))))
 	    
 	  (if enhance () ; this takes prejudice over everything else
@@ -626,7 +666,8 @@
 			  (if (and show-split gnus-group
 				   display-time-mail-balloon-enhance-gnus-group)
 			      (string-match gnus-enhance-reg gnus-group))))
-		  (setq suppress  ;; if we didn't enhance then maybe we have to suppress it?
+		  (setq suppress  ;; if we didn't enhance then maybe we have to
+			          ;; suppress it?
 			(save-excursion
 			  (if (and show-split gnus-group
 				   display-time-mail-balloon-suppress-gnus-group)
@@ -686,12 +727,13 @@
 		  (set-extent-property line-ext 'duplicable t)
 		  (set-extent-property line-ext 'end-open t)))
 	    (push line mail-headers-list))
-	  (setq point (point-max))
+	  (goto-char (point-max))
 	  (setq suppress nil
 		gnus-group nil
 		enhance nil)
 	  (widen)
 	  )))
+    (kill-buffer display-time-temp-buffer)
     (if (> (length mail-headers-list) display-time-mail-balloon-max-displayed)
 	(setq not-displayed (- (length mail-headers-list)
 			       display-time-mail-balloon-max-displayed)))
@@ -903,7 +945,7 @@
             (if display-time-24hr-format "" am-pm))
     load
     (if mail " Mail" ""))
-    "*THIS IS OBSOLETE! It will only be used if display-time-compatible is t.
+    "*It will only be used if display-time-compatible is t.
 A list of expressions governing display of the time in the mode line.
 This expression is a list of expressions that can involve the keywords
 `load', `day', `month', and `year', `12-hours', `24-hours', `minutes',
@@ -918,6 +960,10 @@
 
 would give mode line times like `94/12/30 21:07:48 (UTC)'.")
 
+(make-obsolete-variable 'display-time-string-forms
+			"You should use the new facilities for `display-time'.
+Look at display-time-form-list.")   
+
 (defun display-time-function ()
   (let* ((now (current-time))
 	 (time (current-time-string now))
--- a/lisp/packages/webster-ucb.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1452 +0,0 @@
-;;; -*- Mode:Emacs-Lisp -*-
-
-;;; Synched up with: Not in FSF.
-
-;;; Yet Another Webster Protocol.
-;;; This one is for talking to the kind of Webster server of which 
-;;; pasteur.Berkeley.EDU port 1964 is an instance (the "edjames" protocol).
-;;;
-;;; The interface and much of the process-handling code in this file were
-;;; lifted from the Webster client by Jason Glasgow that talks to the kind
-;;; of Webster server of which mintaka.lcs.mit.edu port 103 is an instance.
-;;;
-;;; 13 nov 90  Jamie Zawinski <jwz@lucid.com>  created
-;;; 14 sep 91  Jamie Zawinski <jwz@lucid.com>  hacked on some more
-;;; 19 feb 91  Jamie Zawinski <jwz@lucid.com>  added Lucid Emacs font support
-;;; 15 apr 92  Jamie Zawinski <jwz@lucid.com>  added mouse support
-;;; 29 aug 92  Jamie Zawinski <jwz@lucid.com>  added 8-bit output
-;;;  6 nov 92  Jamie Zawinski <jwz@lucid.com>  hack hack
-;;; 31 dec 92  Jamie Zawinski <jwz@lucid.com>  made it guess the root word
-;;; 17 mar 93  Jamie Zawinski <jwz@lucid.com>  more hacking, more gnashing
-;;; 31 jul 93  Jamie Zawinski <jwz@lucid.com>  variable height fonts in 19.8
-
-;; TODO:
-;; 
-;; vinculum has a "3 character overbar" code.  Really need to figure out
-;; some way to hack overbars...  Background pixmap?  Need to know line
-;; height in pixels to do that.  
-;;
-;; I don't event know what half of these special characters are supposed
-;; to look like.  Like the "s," in the Turkish root of "chouse"...
-;;
-;; We could fake some of these chars (like upside-down-e) by including bitmaps
-;; in this file, and using extent-begin-glpyhs.  Except that right now glyphs
-;; have to come from files, not from '(w h "string") form, so that'll have to
-;; be fixed first.  We could also just create an X font...
-;;
-;; note that googol says "10100" instead of "10(\bI100)\bI
-
-(defvar webster-host "westerhost" "*The host with the webster server")
-(defvar webster-port "webster" "*The port on which the webster server listens")
-
-(defvar webster-running nil "Used to determine when connection is established")
-(defvar webster-state "closed" "for the modeline")
-(defvar webster-process nil "The current webster process")
-(defvar webster-process-name "webster" "The current webster process")
-(defvar webster-buffer nil "The current webster process")
-
-(defvar webster-start-mark nil)
-
-(defvar webster-fontify (string-match "XEmacs" emacs-version)
-  "*Set to t to use the XEmacs/Lucid Emacs font-change mechanism.")
-
-(defvar webster-iso8859/1 (string-match "XEmacs" emacs-version)
-  "*Set to t to print certain special characters using ISO-8859/1 codes.")
-
-(defconst webster-completion-table (make-vector 511 0))
-
-(cond ((fboundp 'make-face)
-       (or (find-face 'webster)
-	   (face-differs-from-default-p (make-face 'webster))
-	   (copy-face 'default 'webster))
-       (or (find-face 'webster-bold)
-	   (face-differs-from-default-p (make-face 'webster-bold))
-	   (progn
-	     (copy-face 'webster 'webster-bold)
-	     (make-face-bold 'webster-bold)))
-       (or (find-face 'webster-italic)
-	   (face-differs-from-default-p (make-face 'webster-italic))
-	   (progn
-	     (copy-face 'webster 'webster-italic)
-	     (make-face-italic 'webster-italic)))
-       (or (find-face 'webster-bold-italic)
-	   (face-differs-from-default-p (make-face 'webster-bold-italic))
-	   (progn
-	     (copy-face 'webster 'webster-bold-italic)
-	     (make-face-bold-italic 'webster-bold-italic)))
-       (or (find-face 'webster-underline)
-	   (face-differs-from-default-p (make-face 'webster-underline))
-	   (progn
-	     (copy-face 'webster 'webster-underline)
-	     (set-face-underline-p 'webster-underline t)))
-       (or (find-face 'webster-small)
-	   (face-differs-from-default-p (make-face 'webster-small))
-	   (progn
-	     (copy-face 'webster-bold 'webster-small)
-	     (and (fboundp 'make-face-smaller)	; XEmacs 19.8+
-		  (make-face-smaller 'webster-small))))
-       (or (find-face 'webster-subscript)
-	   (face-differs-from-default-p (make-face 'webster-subscript))
-	   (progn
-	     (copy-face 'webster-italic 'webster-subscript)
-	     (if (fboundp 'make-face-smaller)	; XEmacs 19.8+
-		 (and (make-face-smaller 'webster-subscript)
-		      (make-face-smaller 'webster-subscript))
-	       (set-face-underline-p 'webster-subscript t))))
-       (or (find-face 'webster-superscript)
-	   (face-differs-from-default-p (make-face 'webster-superscript))
-	   ;; #### need some way to raise baseline...
-	   (copy-face 'webster-subscript 'webster-superscript))
-       ))
-
-(defun webster-fontify (start end face &optional highlight)
-  (let ((os start)
-	(count 0)
-	e)
-    (save-excursion
-      (goto-char start)
-      ;; this mess is so we don't fontify the spaces between the words, so that
-      ;; when the lines are wrapped, the stuff at the beginning of the line
-      ;; doesn't go in the font of the split word.  Kludge kludge.
-      (while (prog1
-		 (/= (point) end)
-	       (skip-chars-forward " \t")
-	       (setq start (point))
-	       (re-search-forward "[ \t]" (1+ end) 'go)
-	       (forward-char -1))
-	(setq e (make-extent start (point) (current-buffer)))
-	(set-extent-face e face)
-	(setq count (1+ count))))
-    (if highlight
-	(set-extent-property
-	 ;; use the same extent if we didn't have to split it.
-	 (if (= count 1) e (make-extent os end (current-buffer)))
-	 'highlight t))
-    ))
-
-(defconst webster-umlauts
-  '((?A . ?\304) (?E . ?\313) (?I . ?\317) (?O . ?\326) (?U . ?\334)
-    (?a . ?\344) (?e . ?\353) (?i . ?\357) (?o . ?\366) (?u . ?\374)
-    (?y . ?\377)))
-
-(defconst webster-graves
-  '((?A . ?\300) (?E . ?\310) (?I . ?\314) (?O . ?\322) (?U . ?\331)
-    (?a . ?\340) (?e . ?\350) (?i . ?\354) (?o . ?\362) (?u . ?\371)))
-
-(defconst webster-acutes
-  '((?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
-    (?Y . ?\335) (?a . ?\341) (?e . ?\351) (?i . ?\355) (?o . ?\363)
-    (?u . ?\372) (?y . ?\375)))
-
-;;;
-;;; Initial filter for ignoring information until successfully connected
-;;;
-(defun webster-initial-filter (proc string)
-  (let ((this-buffer (current-buffer)))
-    ;; don't use save-excursion so that point moves in webster-buffer
-    (set-buffer webster-buffer)
-    (goto-char (point-max))
-    (setq webster-state "closed")
-    (cond ((not (eq (process-status webster-process) 'run))
-	   (setq webster-running t)
-	   (message "Webster died"))
-	  ((string-match "No such host" string)
-	   (setq webster-running t)
-	   (kill-buffer (process-buffer proc))
-	   (error "No such host."))
-	  ((string-match "]" string)
-	   (setq webster-running t)
-	   (setq webster-state "opening")
-	   (set-process-filter proc 'webster-filter)))
-    (set-buffer this-buffer)))
-
-
-(defun webster-filter (proc string)
-  (let ((this-buffer (current-buffer))
-	(endp nil))
-    (set-buffer webster-buffer)
-    (widen)
-    (goto-char (point-max))
-    (cond ((not (eq (process-status webster-process) 'run))
-	   (setq webster-state (format "%s" (process-status webster-process)))
-	   (set-marker webster-start-mark (point-max))
-	   (message "Webster died"))
-	  ((string-match "Connection closed" string)
-	   (message "Closing webster connection...")
-	   (kill-process proc)
-	   (setq webster-state "closed")
-	   (replace-regexp "Process webster killed" "" nil)
-	   (set-marker webster-start-mark (point-max))
-	   (message "Closing webster connection...Done."))
-	  ((let ((end-def-message (string-match "\n\\.\r?\n" string)))
-	     (if end-def-message
-		 (progn
-		   (webster-filter 
-		    proc
-		    (concat (substring string 0 (- end-def-message 1)) "\n\n"))
-		   (setq endp t)
-		   (setq webster-state "ready")
-		   t))))
-	  (t
-	   (setq webster-state "working")
-	   (if (string-match "^[45][0-9][0-9]" string)
-	       (setq webster-state "ready"
-		     endp t))
-	   (widen)
-	   (let ((now (point)))
-	     (goto-char (point-max))
-	     (insert string)
-	     (save-excursion
-	       (goto-char now)
-	       (while (search-forward "\r" nil t)
-		 (delete-char -1))))
-	   (if (process-mark proc)
-	       (set-marker (process-mark proc) (point)))
-	   (narrow-to-region (point-min) webster-start-mark)
-	   ))
-    (if endp
-	;; if the *webster* window is visible, move the last line to the
-	;; bottom of that window
-	(let ((webster-window (get-buffer-window webster-buffer))
-	      (window (selected-window))
-	      error p)
-	  (set-buffer webster-buffer)
-	  (widen)
-	  (goto-char (point-min))
-	  (narrow-to-region webster-start-mark (point-max))
-	  (let ((buffer-undo-list t))
-	    (if (looking-at "WORD \"\\([^\"\n]*\\)\"\\(\n403 [^\n]+\\)\n")
-		(progn
-		  (downcase-word 1)
-		  (setq error
-			(buffer-substring (match-beginning 1) (match-end 1)))
-		  (goto-char (match-beginning 2))
-		  (delete-region (match-beginning 2) (match-end 2))
-		  (insert " not found")
-		  (setq error (webster-guess-root error))
-		  (if error
-		      (insert "; trying \"" error "\"...")
-		    (insert "."))
-		  )
-	      (webster-convert)))
-	  (widen)
-	  (setq p (marker-position webster-start-mark))
-	  (goto-char (point-max))
-	  (or (bobp)
-	      (save-excursion (forward-line -1) (looking-at "-"))
-	      (insert "\n--------------------\n"))
-	  (set-marker webster-start-mark (point-max))
-	  (goto-char p)
-	  (if webster-window
-	      (progn
-		(select-window webster-window)
-		(goto-char p)
-		(recenter 3)
-		(select-window window)))
-	  (if error (webster error))))))
-
-(defun webster-guess-root (word)
-  (let ((case-fold-search t))
-    (cond ((null word) nil)
-	  ((string-match "[ \t\n]" word)
-	   nil)
-	  ((string-match "[^aeiou]ing\\'" word)
-	   (concat (substring word 0 (+ 1 (match-beginning 0))) "e"))
-	  ((string-match "[a-z]ing\\'" word)
-	   (substring word 0 (+ 1 (match-beginning 0))))
-	  ((string-match "ies\\'" word)
-	   (concat (substring word 0 (match-beginning 0)) "y"))
-	  ((string-match "ied\\'" word)
-	   (concat (substring word 0 (match-beginning 0)) "y"))
-	  ((and (string-match "[^aeiouy][^aeiouy]ed\\'" word)
-		(= (aref word (match-beginning 0))
-		   (aref word (1+ (match-beginning 0)))))
-	   (substring word 0 (+ 1 (match-beginning 0))))
-	  ((string-match "[a-z]ed\\'" word)
-	   (substring word 0 (+ 2 (match-beginning 0))))
-	  ((string-match "[aeiouy]lly\\'" word)
-	   (substring word 0 (+ 2 (match-beginning 0))))
-	  ((string-match "[^l]ly\\'" word)
-	   (substring word 0 (+ 1 (match-beginning 0))))
-;	  ((string-match "es\\'" word)
-;	   (substring word 0 (match-beginning 0)))
-;	  ((string-match "[^e]s\\'" word)
-;	   (substring word 0 (+ 1 (match-beginning 0))))
-	  ((string-match "s\\'" word)
-	   (substring word 0 (match-beginning 0)))
-	  ((string-match "...ed\\'" word)
-	   (substring word (1- (match-end 0))))
-	  (t nil))))
-
-
-;;;###don't autoload
-(defun webster (arg)
-  "Look up a word in the Webster's dictionary.
-Open a network login connection to a webster host if necessary.
-Communication with host is recorded in a buffer *webster*."
-  (interactive (list
-		(let ((prompt (concat "Look up word in webster ("
-				      (current-word) "): "))
-		      (completion-ignore-case t))
-		  (downcase
-		   (completing-read prompt webster-completion-table
-				    nil nil)))))
-  (if (equal "" arg) (setq arg (current-word)))
-  (message "looking up %s..." (upcase arg))
-  (webster-send-request "WORD" (prin1-to-string arg)))
-
-;;;###don't autoload
-(defun webster-endings (arg)
-  "Look up endings for a word in the Webster's dictionary.
-Open a network login connection to a webster host if necessary.
-Communication with host is recorded in a buffer *webster*."
-  (interactive (list
-		(read-string
-		 (concat
-		  "Find endings for word in webster (" (current-word) "): "))))
-  (if (equal "" arg) (setq arg (current-word)))
-  (webster-send-request "PREFIX" arg)
-  (webster-send-request "LIST" ""))
-
-;;;###don't autoload
-(defun webster-spell (arg)
-  "Look spelling for a word in the Webster's dictionary.
-Open a network login connection to a webster host if necessary.
-Communication with host is recorded in a buffer *webster*."
-  (interactive (list
-		(read-string
-		 (concat
-		  "Try to spell word in webster (" (current-word) "): "))))
-  (if (equal "" arg) (setq arg (current-word)))
-  (webster-send-request "EXACT" arg)
-  (webster-send-request "LIST" arg))
-
-
-(defun webster-send-request (kind word)
-  (require 'shell)
-  (let ((webster-command (concat "open " webster-host " " webster-port "\n")))
-    (if (or (not webster-buffer)
-	    (not (buffer-name webster-buffer))
-	    (not webster-process)
-	    (not (eq (process-status webster-process) 'run)))
-	(progn
-	  (message
-	   (concat "Attempting to connect to server " webster-host "..."))
-	  (setq webster-buffer
-		(if (not (fboundp 'make-shell)) ;emacs19
-		    (make-comint webster-process-name "telnet")
-		  (make-shell webster-process-name "telnet")))
-	  (set-buffer webster-buffer)
-	  (webster-mode)
-	  (setq webster-process (get-process webster-process-name))
-	  (process-kill-without-query webster-process)
-	  (set-process-filter webster-process 'webster-initial-filter)
-	  (process-send-string  webster-process webster-command)
-	  (setq webster-running nil)
-	  (while (not webster-running)	; wait for feedback
-	    (accept-process-output webster-process))
-	  (message
-	   (concat "Attempting to connect to server " webster-host
-		   "... Connected."))
-	  ))
-    (display-buffer webster-buffer nil)
-    (process-send-string webster-process (concat kind " " word "\n"))))
-
-(defun webster-quit ()
-  "Close connection and quit webster-mode.  Buffer is not deleted."
-  (interactive)
-  (message "Closing connection to %s..." webster-host)
-  (kill-process webster-process)
-  (message "Closing connection to %s...done" webster-host)
-  (setq webster-state "closed")
-  (if (eq (current-buffer) webster-buffer)
-      (bury-buffer)))
-
-
-(defun webster-xref-data (event &optional selection-only)
-  (let* ((buffer (event-buffer event))
-	 (extent (if buffer (extent-at (event-point event) buffer 'highlight)))
-	 text)
-    (cond ((and extent (not selection-only))
-	   (setq text (save-excursion
-			(set-buffer buffer)
-			(buffer-substring
-			 (extent-start-position extent)
-			 (extent-end-position extent)))))
-	  ((x-selection-owner-p) ; the selection is in this emacs process.
-	   (setq text (x-get-selection))
-	   (if (string-match "[\n\r]" text)
-	       (setq text nil))))
-    (if (null text)
-	nil
-      (while (string-match "\\." text)
-	(setq text (concat (substring text 0 (match-beginning 0))
-			   (substring text (match-end 0)))))
-      (webster-unISO text)
-      text)))
-
-(defun webster-xref-word (event)
-  "Define the highlighted word under the mouse.
-Words which are known to have definitions are highlighted when the mouse
-moves over them.  You may define any word by selecting it with the left
-mouse button and then clicking middle."
-  (interactive "e")
-  (webster (or (webster-xref-data event)
-	       (error "click on a highlighted word to define"))))
-
-(defvar webster-menu
-  '("Webster"
-    ["Define Word..." webster t]
-    ["List Words Beginning With..." webster-endings t]
-    ["Check Spelling Of..." webster-spell t]
-    "----"
-    ["Quit Webster" webster-quit t]
-    ))
-
-(defun webster-menu (event)
-  (interactive "e")
-  (let ((text1 (webster-xref-data event nil))
-	(text2 (webster-xref-data event t)))
-    (if (equal text1 text2) (setq text2 nil))
-    (let ((popup-menu-titles t))
-      (popup-menu
-       (nconc (list (car webster-menu))
-	      (if text1 (list (vector (format "Define %s" (upcase text1))
-				      (list 'webster text1) t)))
-	      (if text2 (list (vector (format "Define %s" (upcase text2))
-				      (list 'webster text2) t)))
-	      (cdr webster-menu))))))
-
-
-(defvar webster-mode-map nil)
-(if webster-mode-map
-    nil
-  (setq webster-mode-map (make-sparse-keymap))
-  (define-key webster-mode-map "?" 'describe-mode)
-  (define-key webster-mode-map "d" 'webster)
-  (define-key webster-mode-map "e" 'webster-endings)
-  (define-key webster-mode-map "q" 'webster-quit)
-  (define-key webster-mode-map "s" 'webster-spell)
-  (cond ((string-match "XEmacs" emacs-version)
-	 (define-key webster-mode-map 'button2 'webster-xref-word)
-	 (define-key webster-mode-map 'button3 'webster-menu)))
-  )
-
-(defun webster-mode ()
-  "Major mode for interacting with on-line Webster's dictionary.
-\\{webster-mode-map}
-Use webster-mode-hook for customization."
-  (interactive)
-  (kill-all-local-variables)
-  (setq major-mode 'webster-mode)
-  (setq mode-name "Webster")
-  (use-local-map webster-mode-map)
-  (setq mode-line-process '(" " webster-state))
-  (make-local-variable 'kill-buffer-hook)
-  (if (not (string= (buffer-name (current-buffer)) "*webster*"))
-      (setq kill-buffer-hook '(lambda ()
-				(if (get-buffer "*webster*")
-				    (kill-buffer "*webster*")))))
-  (set (make-local-variable 'webster-start-mark)
-       (set-marker (make-marker) (point-max)))
-  (set (make-local-variable 'page-delimiter) "^-")
-  (if webster-iso8859/1 (setq ctl-arrow 'iso-8859/1))
-  (run-hooks 'webster-mode-hook))
-
-;; now in simple.el
-;(defun current-word ()
-;   "Word cursor is over, as a string."
-;   (save-excursion
-;      (let (beg end)
-;	 (re-search-backward "\\w" nil 2)
-;	 (re-search-backward "\\b" nil 2)
-;	 (setq beg (point))
-;	 (re-search-forward "\\w*\\b" nil 2)
-;	 (setq end (point))
-;	 (buffer-substring beg end))))
-
-(defun webster-intern (string)
-  (intern (webster-strip-crud (webster-unISO (downcase string)))
-	  webster-completion-table))
-
-(defun webster-unISO (text)
-  ;; turn the ISO chars into the closest ASCII equiv (how they are indexed)
-  (while (string-match "\347" text) (aset text (match-beginning 0) ?c))
-  (while (string-match "\307" text) (aset text (match-beginning 0) ?C))
-  (while (string-match "\335" text) (aset text (match-beginning 0) ?Y))
-  (while (string-match "[\375\377]" text) (aset text (match-beginning 0) ?y))
-  (while (string-match "[\300-\305]" text) (aset text (match-beginning 0) ?A))
-  (while (string-match "[\310-\313]" text) (aset text (match-beginning 0) ?E))
-  (while (string-match "[\314-\317]" text) (aset text (match-beginning 0) ?I))
-  (while (string-match "[\322-\326]" text) (aset text (match-beginning 0) ?O))
-  (while (string-match "[\331-\334]" text) (aset text (match-beginning 0) ?U))
-  (while (string-match "[\340-\345]" text) (aset text (match-beginning 0) ?a))
-  (while (string-match "[\350-\353]" text) (aset text (match-beginning 0) ?e))
-  (while (string-match "[\354-\357]" text) (aset text (match-beginning 0) ?i))
-  (while (string-match "[\362-\366]" text) (aset text (match-beginning 0) ?o))
-  (while (string-match "[\371-\374]" text) (aset text (match-beginning 0) ?u))
-  text)
-
-(defun webster-strip-crud (text)
-  (while (string-match ".\b" text)
-    (setq text (concat (substring text 0 (match-beginning 0))
-		       (substring text (match-end 0)))))
-  text)
-
-
-(defun webster-textify-region (start end &optional nointern)
-  (save-excursion
-    (goto-char (1- end))
-    (if (looking-at "[^\n]\n") (setq end (1+ end)))
-    (save-restriction
-     (let ((case-fold-search nil))
-      (narrow-to-region start end)
-      ;; translate silly "special character" codes into something we can use.
-      ;; we need to do this before nuking the recursive backspace codes.
-      ;;
-      ;; Note that mostly these are used as modifiers, like "h(\bQsub-dot)\bQ"
-      ;; meaning h with a dot under it.  We don't handle any of that...
-      ;;
-      (goto-char (point-min))
-      (while (re-search-forward "(\bQ[-a-z0-9*$ ]+)\bQ" nil t)
-	(goto-char (match-beginning 0))
-	(let ((s (point))
-	      (e (match-end 0)))
-	  (forward-char 3)
-	  (if (cond
-	       ((looking-at "circumflex")	(insert ?^)	t)
-	       ((looking-at "brace")		(insert ?\{)	t)
-	       ((looking-at "tilda")		(insert ?\~)	t)
-	       ((looking-at "prime")		(insert ?\')	t)
-	       ((looking-at "accent grave")	(insert ?\`)	t)
-	       ((looking-at "accent acute")	(insert ?\264)	t)
-	       ((looking-at "sub-diaeresis")	(insert ?\250)	t)
-	       ((looking-at "macron")		(insert ?\257)	t)
-	       ((looking-at "a-e")	 	(insert ?\346)	t)
-	       ((looking-at "curly-N")		(insert ?\361)	t)
-	       ((looking-at "sub-macron")	(insert ?\367)	t)
-	       ((looking-at "slash-o")		(insert ?\370)	t)
-	       ((looking-at "cidilla")		(insert ?\371)	t)
-	       ((looking-at "sup-circle")	(insert ?\372)	t)
-	       ((looking-at "macron-tilda")	(insert ?\373)	t)
-	       ((looking-at "hachek")		(insert ?\374)	t)
-	       ((looking-at "sub-breve")	(insert ?\375)	t)
-	       ((looking-at "breve")		(insert ?\376)	t)
-	       ((looking-at "sub-dot")		(insert ?\377)	t)
-	       ((looking-at "double-bar-\\$")	(insert ?$)	t)
-	       ;; talk about your special-purpose characters...
-	       ((looking-at "10\\*10\\*100")
-		(delete-region s e)
-		(insert "10^10^100")
-		nil)
-	       ((looking-at "plus squareroot -1")
-		(delete-region s e)
-		(insert "sqrt(-1)")
-		nil)
-	       ;; We don't handle these yet:
-	       ;; aleph ayin beth breve c-bar check daleth double-arrows
-	       ;; double-half-arrows double-hyphen edh fermata-up fermata-down
-	       ;; fist flat-sign g-sub-macron gimel hachek he heth kaph lamed
-	       ;; mem natural-sign nun parallel pe presa prime qoph radical
-	       ;; radical-sign resh sadhe samekh shin sin slur-down spade
-	       ;; stacked-commas tau teth thorn triple-bond waw yod yogh
-	       ;; zayin "* * *" sadhe(final) "3 character overbar"
-	       (t nil))
-	      (progn
-		(delete-region s (+ s 3))
-		(delete-region (+ s 1) (- e 2))))))
-      
-      ;; nuke silly recursive backspace codes
-      (goto-char (point-min))
-      (while (search-forward "|\bB" nil t)
-	(goto-char (point-min))
-	(save-excursion
-	  (while (search-forward "|\bB" nil t)
-	    (delete-char -3)
-	    (insert "\b"))))
-      ;; convert @ to ~
-      (goto-char (point-min))
-      (while (search-forward "@" nil t)
-	(delete-char -1) (insert "~")
-	(if webster-fontify
-	    (webster-fontify (- (point) 1) (point) 'webster-bold-italic)))
-      ;; now convert lots of other magic codes...
-      (goto-char (point-min))
-      (while (search-forward "\b" nil t)
-	(delete-char -1)
-	(forward-char -1)
-	(cond
-
-	 ((looking-at "([MXYAIJ]")
-	  ;; start smallcaps/italic/bold/super/sub/subitalic
-	  (looking-at "([MXYAIJ]\\([^\)]*\\))")
-	  (let ((start (match-beginning 1))
-		(end (match-end 1)))
-	    (and (not nointern) (looking-at "(M")
-		 (webster-intern (buffer-substring start end)))
-	    (if webster-fontify
-		(let ((c (char-after (1- start))))
-		  (webster-fontify start end
-				   (cond ((= ?M c) 'webster-small)
-					 ((= ?X c) 'webster-italic)
-					 ((= ?Y c) 'webster-bold)
-					 ((= ?A c) 'webster-superscript)
-					 ((= ?I c) 'webster-subscript)
-					 ((= ?J c) 'webster-subscript)
-					 )
-				   (= ?M c))))))
-
-	 ;; #### dubious
-	 ((looking-at "([BGR]")	; start greek/APL/symbol
-	  (and webster-fontify
-	       (looking-at "(\\(.\\)[^\)]*)\^H\\1")
-	       (let ((c (char-after (1- (match-beginning 1)))))
-		 (webster-fontify
-		  (match-beginning 0) (match-end 0) 'webster-small))))
-
-	 ((looking-at ")[ABGIJMRXY]")	; end font-shift
-	  nil)
-
-	 ((looking-at "<(\\|(<")
-	  (insert (if webster-iso8859/1 ?\253 "<<"))
-	  (if webster-fontify
-	      (let ((p (point))
-		    (e (and (save-excursion (search-forward ")\b>" nil t))
-			    (match-beginning 0))))
-		(if e
-		    (webster-fontify p e 'webster-italic)))))
-
-	 ((looking-at ")>\\|>)")
-	  (insert  (if webster-iso8859/1 ?\273 ">>")))
-
-	 ;; #### dubious
-	 ((looking-at "[a-z\346][-._]")	; lineover,dotover/under,over/underbar
-	  (insert (following-char))
-	  (if webster-fontify
-	      (webster-fontify (- (point) 1) (point) 'webster-underline)))
-
-	 ((looking-at "[a-zA-Z]:")	; umlaut
-	  (let (c)
-	    (if (and webster-iso8859/1
-		     (setq c (cdr (assq (following-char) webster-umlauts))))
-		(insert c)
-	      (insert (following-char))
-	      (insert (if webster-iso8859/1 ?\250 ?:)))))
-
-	 ((looking-at "[\"~][a-zA-Z]")	; umlaut
-	  (let (c)
-	    (delete-char 1)
-	    (if (and webster-iso8859/1
-		     (setq c (cdr (assq (following-char) webster-umlauts))))
-		(insert c)
-	      (insert (following-char))
-	      (insert (if webster-iso8859/1 ?\250 ?:)))
-	    (insert " ")
-	    (forward-char -1)))
-
-	 ((looking-at "[a-zA-Z]\)")	; grave
-	  (let (c)
-	    (if (and webster-iso8859/1
-		     (setq c (cdr (assq (following-char) webster-graves))))
-		(insert c)
-	      (insert (following-char))
-	      (insert "`"))))
-
-	 ((looking-at ">[a-zA-Z]")	; grave
-	  (let (c)
-	    (delete-char 1)
-	    (if (and webster-iso8859/1
-		     (setq c (cdr (assq (following-char) webster-graves))))
-		(insert c)
-	      (insert (following-char))
-	      (insert "`"))
-	    (insert " ")
-	    (forward-char -1)))
-
-	 ((looking-at "[a-zES]\(")	; acute
-	  (let (c)
-	    (if (and webster-iso8859/1
-		     (setq c (cdr (assq (following-char) webster-acutes))))
-		(insert c)
-	      (insert (following-char))
-	      (insert (if webster-iso8859/1 ?\264 ?\')))))
-
-	 ((looking-at "<[a-zA-Z]")	; acute
-	  (let (c)
-	    (delete-char 1)
-	    (if (and webster-iso8859/1
-		     (setq c (cdr (assq (following-char) webster-acutes))))
-		(insert c)
-	      (insert (following-char))
-	      (insert (if webster-iso8859/1 ?\264 ?\')))
-	    (insert " ")
-	    (forward-char -1)))
-
-	 ((looking-at ";[Cc]")		; ccedilla
-	  (delete-char 1)
-	  (if webster-iso8859/1
-	      (progn
-		(insert (if (= (following-char) ?C) ?\307 ?\347))
-		(insert ? ) (forward-char -1))
-	    (forward-char 1)
-	    (insert ?\,)))
-
-	 ((looking-at "|S")		; section
-	  (insert (if webster-iso8859/1 ?\247 "SS")))
-
-	 ((looking-at "|q")		; paragraph
-	  (insert (if webster-iso8859/1 ?\266 "PP")))
-
-	 ((looking-at "*o")		; centerdot
-	  (insert (if webster-iso8859/1 ?\267 ?\*)))
-
-	 ((looking-at "+=")		; plusminus
-	  (insert (if webster-iso8859/1 ?\261 "+/-")))
-
-	 ((looking-at "-:")		; division
-	  (insert (if webster-iso8859/1 ?\367 "+/-")))
-
-	 ((looking-at "-[xX]")		; multiplication
-	  (insert (if webster-iso8859/1 ?\327 "+/-")))
-
-	 ((looking-at "-m") (insert "--"))
-	 ((looking-at "-n") (insert "-"))
-	 ((looking-at "-/") (insert "\\"))
-	 ((looking-at ")|") (insert ?\[))
-	 ((looking-at "|)") (insert ?\]))
-	 ((looking-at "-3") (insert "..."))
-	 ((looking-at "=\\\\") (insert "$"))
-
-	 ((looking-at "'o")		; degree
-	  (insert (if webster-iso8859/1 ?\260 ?\*)))
-
-	 ((or (looking-at "nj")		; nj symbol
-	      (looking-at "|-")		; dagger
-	      (looking-at "|=")		; doubledagger
-	      (looking-at "|o")		; lowerphi
-	      (looking-at "'b")		; stroke
-	      )
-	  (if webster-fontify
-	      (webster-fontify (point) (+ (point) 2) 'webster-bold))
-	  (insert "  ")
-	  (forward-char -2))
-
-	 ((looking-at "[cC]\371")	; (\bQcidilla)\bQ
-	  (if webster-iso8859/1
-	      (insert (if (= (following-char) ?C) ?\307 ?\347))
-	    (forward-char 1)
-	    (insert ?\,)))
-
-;	 ((or (looking-at "[a-zA-Z]\250")	; (\bQsub-diaeresis)\bQ
-;	      (looking-at "[a-zA-Z]\346")	; (\bQa-e)\bQ
-;	      (looking-at "[a-zA-Z]\361")	; (\bQcurly-N)\bQ
-;	      (looking-at "[a-zA-Z]\367")	; (\bQsub-macron)\bQ
-;	      (looking-at "[a-zA-Z]\370")	; (\bQslash-o)\bQ
-;	      (looking-at "[a-zA-Z]\371")	; (\bQcidilla)\bQ
-;	      (looking-at "[a-zA-Z]\372")	; (\bQsup-circle)\bQ
-;	      (looking-at "[a-zA-Z]\373")	; (\bQmacron-tilda)\bQ
-;	      (looking-at "[a-zA-Z]\374")	; (\bQhachek)\bQ
-;	      (looking-at "[a-zA-Z]\375")	; (\bQsub-breve)\bQ
-;	      (looking-at "[a-zA-Z]\376")	; (\bQbreve)\bQ
-;	      (looking-at "[a-zA-Z]\377")	; (\bQsub-dot)\bQ
-;	      )
-;	  (forward-char 1) (insert " ") (forward-char -1)
-;	  (webster-fontify (1- (point)) (point) 'webster-underline))
-
-	 ((looking-at "/[a-zA-Z]")		; greek
-	  (forward-char 1)
-	  (insert " <")
-	  (forward-char 1)
-	  (insert ?\>)
-	  (forward-char -5))
-
-	 ;; overstrike
-	 ((looking-at (format "[%c][%c]" (following-char) (following-char)))
-	  (insert (following-char))
-	  (if webster-fontify
-	      (webster-fontify (- (point) 1) (point) 'webster-bold)))
-
-	 (t				; ## debug
-	  (insert (following-char))
-	  (insert "\b")
-	  (insert (buffer-substring (+ 1 (point)) (+ 2 (point))))
-	  ))
-	(delete-char 2))
-
-      (goto-char (point-min))
-      (setq start (point)
-	    end (point-max))
-      (widen)
-      (beginning-of-line)
-      (narrow-to-region (point) end)
-      (goto-char start)
-      ;; (fill-region-as-paragraph (point-min) (point-max))
-      (while (not (eobp))
-	(setq start (point))
-	(skip-chars-forward "^ \n\t")
-	(if (>= (current-column) fill-column)
-	    (progn
-	      (goto-char start)
-	      (delete-horizontal-space)
-	      (insert "\n" (or fill-prefix "")))
-	  (skip-chars-forward " \n\t")))
-      ))))
-
-
-(defun webster-pos (start end)
-  (save-excursion
-    (goto-char start)
-    (cond ((and (= start (1- end)) (looking-at "n")) "noun")
-	  ((or (not webster-fontify) (/= start (- end 2)))
-	   (buffer-substring start end))
-	  ((looking-at "ac") "adjective combinational form")
-	  ((looking-at "aj") "adjective")
-	  ((looking-at "as") "adjective suffix")
-	  ((looking-at "av") "adverb")
-	  ((looking-at "ca") "adjective combinational form")
-	  ((looking-at "cf") "combinational form")
-	  ((looking-at "cj") "conjunction")
-	  ((looking-at "da") "definite article")
-	  ((looking-at "ia") "indefinite article")
-	  ((looking-at "ij") "interjection")
-	  ((looking-at "is") "interjection suffix")
-	  ((looking-at "js") "adjective suffix")
-	  ((looking-at "nc") "noun combinational form")
-	  ((looking-at "np") "noun plural suffix")
-	  ((looking-at "ns") "noun suffix")
-	  ((looking-at "pf") "prefix")
-	  ((looking-at "pn") "pronoun")
-	  ((looking-at "pp") "preposition")
-	  ((looking-at "sf") "verb suffix")
-	  ((looking-at "tm") "trademark")
-	  ((looking-at "va") "verbal auxilliary")
-	  ((looking-at "vb") "verb")
-	  ((looking-at "vc") "verb combinational form")
-	  ((looking-at "vi") "verb intransitive")
-	  ((looking-at "vm") "verb impersonal")
-	  ((looking-at "vp") "verb imperfect")
-	  ((looking-at "vs") "verb suffix")
-	  ((looking-at "vt") "verb transitive")
-	  (t (buffer-substring start end)))))
-
-
-(defun webster-convert ()
-  (goto-char (point-min))
-  ;; nuke the continuation lines
-  (save-excursion
-    (while (re-search-forward "^C:" nil t)
-      (forward-char -2)
-      (while (looking-at "^C:")
-	(forward-line 1))
-      (forward-line -1)
-      (while (looking-at "^C:")
-	(forward-char -1)
-	(let ((n (- (point) (save-excursion (beginning-of-line) (point)))))
-	  (delete-char 3)
-	  ;; What a stupid format!  (example: "fat")
-	  (if (= n 79) (insert " "))
-	  (beginning-of-line)))))
-  (goto-char (point-min))
-  (let ((last-type nil)
-	(this-type nil)
-	(last-part nil))
-    (while (not (eobp))
-      (setq this-type (following-char))
-      (cond
-       ((looking-at "^WORD ")
-	(let ((p (point)))
-	  (end-of-line)
-	  (delete-region p (point))))
-
-       ((looking-at "^21[12] ")	; reply to a LIST command; one line.
-	(delete-char 4))
-       ((looking-at "^220 ")	; reply to a LIST command; intern the results.
-	(let ((p (point)))
-	  (if (eq (preceding-char) ?\n) (setq p (1- p)))
-	  (end-of-line)
-	  (delete-region p (point)))
-	(insert "\n")
-	(while (not (or (eobp) (looking-at "\n\n")))
-	  (forward-line 1)
-	  (insert "    ")
-	  (let (s e)
-	    (while (looking-at "[^\n;]+;")
-	      (webster-intern (buffer-substring (setq s (match-beginning 0))
-						(setq e (1- (match-end 0)))))
-	      (goto-char (match-end 0))
-	      (insert " ")
-	      (if webster-fontify
-		  (webster-fontify s e 'webster-bold t)))
-	    (if (looking-at "\n")
-		nil
-	      (webster-intern
-	       (buffer-substring (setq s (point))
-				 (progn (end-of-line) (setq e (point)))))
-	      (if webster-fontify
-		  (webster-fontify s e 'webster-bold t)))
-	    )))
-
-       ((looking-at "^\n")
-	(delete-char 1))
-
-       ((looking-at "^\\(200\\|221\\|PREFIX\\|LIST\\|EXACT\\)[- ]")
-	;; just toss these.
-	(let ((p (point)))
-	  (if (eq (preceding-char) ?\n) (setq p (1- p)))
-	  (end-of-line)
-	  (delete-region p (point))))
-
-       ((looking-at "^F:")
-	;; First record:  F:entname;homono;prefsuf;dots;accents;pos;posjoin;pos2
-	(delete-char 2)
-	(search-forward ";")
-	(let ((p (1- (point)))
-	      homonym prefix dots pos posj pos2)
-	  (if (looking-at "[0-9]+")
-	      (setq homonym (buffer-substring (point) (match-end 0))))
-	  (search-forward ";")
-	  (if (looking-at "[^;]+")
-	      (setq prefix (buffer-substring (point) (match-end 0))))
-	  (search-forward ";")
-	  (if (looking-at "[0-9]+")
-	      (setq dots (append (buffer-substring (point) (match-end 0))
-				 nil)))
-	  (search-forward ";")
-	  ;; ignore accents
-	  (search-forward ";")
-	  (if (looking-at "[a-z]+")
-	      (setq pos (webster-pos (point) (match-end 0))))
-	  (search-forward ";")
-	  (if (looking-at "[a-z]+")
-	      (setq posj (webster-pos (point) (match-end 0))))
-	  (if (looking-at "[a-z]+")
-	      (setq pos2 (webster-pos (point) (match-end 0))))
-	  (end-of-line)
-	  (delete-region p (point))
-	  (beginning-of-line)
-	  (insert " ")
-	  (let ((e (save-excursion (end-of-line) (point))))
-	    (webster-intern (buffer-substring (point) e))
-	    (if webster-fontify
-		(webster-fontify (point) e 'webster-bold t)))
-	  (beginning-of-line)
-	  (if (not homonym)
-	      (insert " ")
-	    (let ((p (point)))
-	      (insert homonym)
-	      (if webster-fontify
-		  (webster-fontify p (point) 'webster-bold-italic))))
-	  (forward-char 1)
-	  (while dots
-	    (forward-char (- (car dots) ?0))
-	    (insert ".")
-	    (setq dots (cdr dots)))
-	  (end-of-line)
-	  (let ((p (point)))
-	    (if pos (insert " " pos))
-	    (if posj (insert " " posj))
-	    (if pos2 (insert " " pos2))
-	    (if (and webster-fontify (or pos posj pos2))
-		(webster-fontify p (point) 'webster-italic)))
-	  (insert "  ")
-	  ;; prefix/suffix is "p" or "s"; I don't know what it's for.
-	  (setq last-part pos)))
-
-       ((looking-at "^P:")
-	;; Pronunciation: P:text
-	(delete-char 2) (delete-char -1)
-	(insert " \\")
-	(let ((p (point))
-	      (fill-prefix "     "))
-	  (end-of-line)
-	  (insert " ")
-	  (if webster-fontify
-	      (progn
-		(webster-fontify (1- p) (1- (point)) 'webster-italic)
-		(forward-char -1)))
-	  (webster-textify-region p (point))
-	  (insert "\\")))
-
-       ((looking-at "E:")
-	;; Etymology:  E:text
-	(delete-char 2) (insert "   [")
-	(let ((fill-prefix "    "))
-	  (webster-textify-region (point) (progn (end-of-line) (point))))
-	(insert "]"))
-
-       ((looking-at "S:")
-	;; Synonym:  S:text
-	(delete-char 2) (insert "  ")
-	(let ((fill-prefix "      "))
-	  (webster-textify-region (point) (progn (end-of-line) (point)))))
-
-       ((looking-at "X:")
-	;; Cross Reference:  X:word;wrdsuper;wrdsubs;type;word2
-	(setq last-part nil)
-	(let (p word super sub type word2)
-	  (delete-char 2)
-	  (setq p (point))
-	  (if (looking-at "[^;]+")
-	      (setq word (upcase (buffer-substring (point) (match-end 0)))))
-	  (search-forward ";")
-	  (if (looking-at "[^;]+")
-	      (setq super (buffer-substring (point) (match-end 0))))
-	  (search-forward ";")
-	  (if (looking-at "[^;]+")
-	      (setq sub (buffer-substring (point) (match-end 0))))
-	  (search-forward ";")
-	  (if (looking-at "[0-9]+")
-	      (setq type (string-to-int
-			  (buffer-substring (point) (match-end 0)))))
-	  (search-forward ";")
-	  (if (looking-at  "[^;]+")
-	      (setq word2 (upcase (buffer-substring (point) (match-end 0)))))
-	  (delete-region p (point))
-	  (insert "  ")
-	  (cond ((eq type 0) (insert "see (\bM" word ")\bM"))
-		((eq type 1) (insert "see (\bM" word ")\bM table"))
-		((eq type 2) (insert "### ILLEGAL XREF CODE 2"))
-		((eq type 3) (insert "see (\bM" word2 ")\bM at (\bM" word
-				     ")\bM table"))
-		((eq type 4) (insert "compare (\bM" word ")\bM"))
-		((eq type 5) (insert "compare (\bM" word ")\bM table"))
-		((eq type 6) (insert "called also (\bM" word ")\bM"))
-		((eq type 7) (insert "### ILLEGAL XREF CODE 7"))
-		((eq type 8) (insert "(\bYsyn)\bY see in addition (\bM" word
-				     ")\bM"))
-		((eq type 9) (insert "(\bYsyn)\bY see (\bM" word ")\bM"))
-		(t (insert "#### ILLEGAL XREF CODE " (or type "nil"))))
-	  (let ((fill-prefix "     "))
-	    (webster-textify-region p (point)))))
-
-       ((looking-at "D:")
-	;; Definition:  D:snsnumber;snsletter;snssubno;pos;text
-	(let (p n sub1 sub2 part)
-	  (setq p (point))
-	  (forward-char 2)
-	  (if (looking-at "[0-9]+")
-	      (setq n (buffer-substring (point) (match-end 0))))
-	  (search-forward ";")
-	  (if (looking-at "[a-z]+")
-	      (setq sub1 (buffer-substring (point) (match-end 0))))
-	  (search-forward ";")
-	  (if (looking-at "[0-9]+")
-	      (setq sub2 (buffer-substring (point) (match-end 0))))
-	  (search-forward ";")
-	  (if (looking-at "[a-z]+")
-	      (setq part (webster-pos (point) (match-end 0))))
-	  (search-forward ";")
-	  (delete-region p (point))
-	  (if (and sub2 (not (equal sub2 "1")))
-	      (setq sub1 " "))
-	  (if (and sub1 (not (equal sub1 "a")))
-	      (setq n " "))
-	  ;; If a Definition appears after a Label, don't print numbers
-	  ;; as the label has done that already.
-	  (if (eq last-type ?L)
-	      (setq n (and n " ") sub1 (and sub1 " ") sub2 (and sub2 " ")))
-	  (if (and part (not (equal part last-part)))
-	      (let ((p (point)))
-		(insert "   " part "\n")
-		(if webster-fontify
-		    (webster-fontify p (1- (point)) 'webster-italic))
-		(setq last-part part)))
-	  (indent-to (- 6 (length n)))
-	  (setq p (point))
-	  (if (and n (not (equal n "0")))
-	      (insert n " "))
-	  (if sub1 (insert " " sub1 " "))
-	  (if sub2 (insert " (" sub2 ") "))
-	  (insert ": ")
-	  (if webster-fontify
-	      (webster-fontify p (point) 'webster-bold-italic))
-	  (setq p (point))
-	  (end-of-line)
-	  (let ((fill-prefix (make-string (if sub2 17 (if sub1 12 9)) ? )))
-	    (webster-textify-region p (point)))))
-
-       ((looking-at "R:")
-	;; Run-on:  R:name;dots;accents;pos1;posjoin;pos2
-	(delete-char 2)
-	(insert "  ")
-	(search-forward ";") (delete-char -1)
-	(let ((beg (save-excursion (beginning-of-line) (+ (point) 2))))
-	  (webster-intern (buffer-substring beg (point)))
-	  (if webster-fontify
-	      (webster-fontify beg (point) 'webster-bold t)))
-	(if (looking-at "[0-9]+")
-	    (let* ((dots (append (buffer-substring (point) (match-end 0))
-				 nil)))
-	      (delete-region (point) (match-end 0))
-	      (beginning-of-line)
-	      (forward-char 2)
-	      (while dots
-		(forward-char (- (car dots) ?0))
-		(insert ".")
-		(setq dots (cdr dots)))))
-	(search-forward ";") (delete-char -1)
-	;; throw away the accents
-	(let ((p (point)))
-	  (search-forward ";")
-	  (delete-region p (point)))
-	(insert " ")
-	(if (looking-at "[a-z][a-z]?;")
-	    (let* ((start (point))
-		   (end (1- (match-end 0)))
-		   (pos (webster-pos start end)))
-	      (delete-region start end)
-	      (insert pos)
-	      (if webster-fontify
-		  (webster-fontify start (point) 'webster-italic))))
-	(cond ((search-forward ";" nil t) (delete-char -1) (insert " ")))
-	(cond ((search-forward ";" nil t) (delete-char -1) (insert " "))))
-
-       ((looking-at "L:")
-	;; Label:  L:snsnumber;snsletter;snssubno;text
-	(let (p n sub1 sub2)
-	  (setq p (point))
-	  (forward-char 2)
-	  (if (looking-at "[0-9]+")
-	      (setq n (buffer-substring (point) (match-end 0))))
-	  (search-forward ";")
-	  (if (looking-at "[a-z]+")
-	      (setq sub1 (buffer-substring (point) (match-end 0))))
-	  (search-forward ";")
-	  (if (looking-at "[0-9]+")
-	      (setq sub2 (buffer-substring (point) (match-end 0))))
-	  (search-forward ";")
-	  (delete-region p (point))
-	  (if (and sub2 (not (equal sub2 "1")))
-	      (setq sub1 " "))
-	  (if (and sub1 (not (equal sub1 "a")))
-	      (setq n " "))
-	  (indent-to (- 6 (length n)))
-	  (setq p (point))
-	  (if (not (equal n "0"))
-	      (insert (or n " ") " "))
-	  (if sub1 (insert " " sub1))
-	  (if sub2 (insert " (" sub2 ")"))
-	  (insert " ")
-	  (if webster-fontify
-	      (webster-fontify p (point) 'webster-bold-italic))
-	  (setq p (point))
-	  (end-of-line)
-	  (let ((fill-prefix (make-string (if sub2 17 (if sub1 12 9)) ? )))
-	    (webster-textify-region p (point)))))
-
-       ((looking-at "V:")
-	;; Variant:  V:name;dots;accents;level1()level2
-	(delete-char 2)
-	(let ((p (point))
-	      beg)
-	  (search-forward ";") (delete-char -1)
-	  (webster-intern (buffer-substring
-			   (save-excursion (beginning-of-line)
-					   (setq beg (point)))
-			   (point)))
-	  (if webster-fontify
-	      (webster-fontify beg (point) 'webster-bold t))
-	  (if (looking-at "[0-9]+")
-	      (let* ((dots (append (buffer-substring (point) (match-end 0))
-				   nil)))
-		(delete-region (point) (match-end 0))
-		(beginning-of-line)
-		(while dots
-		  (forward-char (- (car dots) ?0))
-		  (insert ".")
-		  (setq dots (cdr dots)))))
-	  (search-forward ";") ; skip accents
-	  (delete-region (1- (point))
-			 (save-excursion (end-of-line) (point)))
-	  (let ((fill-prefix "    "))
-	    (webster-textify-region p (point) t)))
-	(save-excursion
-	  (beginning-of-line)
-	  (cond ((eq last-type ?F) (delete-char -1))
-		((eq last-type ?V) (delete-char -1) (insert "; "))
-		(t (insert "  ")))))
-
-       ((looking-at ".\n")
-	(delete-char 1))
-       ((looking-at "22[0-9] ")
-	(delete-region (point) (save-excursion (end-of-line) (point))))
-       ((looking-at "\n")
-	nil)
-       (t
-	(insert "* ")))
-      (setq last-type this-type)
-      (forward-line 1)
-      (while (save-excursion
-	       (and (not (bobp))
-		    (progn (forward-line -1) (looking-at "\n"))))
-	(delete-char -1))
-      ))
-  (goto-char (point-min))
-  (cond ((search-forward "\^H" nil t)
-	 (goto-char (point-min))
-	 (insert
-	  "\n****\tThis definition contains unrecognized font-change codes."
-	  "\n****\tPlease tell jwz.\n\n")
-	 (goto-char (point-min))))
-
-  ;; lay down the default font; don't put it over the spaces and tabs on
-  ;; the beginning of the line so that those space as if it was a fixed
-  ;; width font.  There must be a better way than 
-  (if webster-fontify
-      (save-excursion
-	(let (e)
-	(goto-char (point-min))
-	(while (not (eobp))
-	  (skip-chars-forward " \t")
-	  ;; avoid extent overlaps; should be able to use extent priorities
-	  ;; to obviate this, but it's late.
-	  (while (setq e (extent-at (point)))
-	    (goto-char (1+ (extent-end-position e))))
-	  (setq e (make-extent (point) (progn (forward-line 1) (point))))
-	  (set-extent-face e 'webster)))))
-  )
-
-
-;; Codes:
-;;
-;;	(A		start superscript	catalan
-;;	(B		start unknown		mixed number
-;;	(G		start greek		alpha
-;;	(I		start subscript		alcohol
-;;	(J		start subitalic		mixed number
-;;	(M		start small		mitten
-;;	(Q		start special		mitzvah
-;;	(R		start APL		mixed
-;;	(X		start italic		everywhere...
-;;	(Y		start bold		everywhere...
-;;	)A		end superscript		catalan
-;;	)B		end unknown		mixed number
-;;	)G		end greek		alpha
-;;	)I		end subscript		alcohol
-;;	)J		end subitalic		mixed number
-;;	)M		end small		mitten
-;;	)Q		end special		mitzvah
-;;	)R		end APL			mixed
-;;	)X		end italic		everywhere...
-;;	)Y		end bold		everywhere...
-;;	"a		a-umlaut		acetoacetic acid
-;;	"e		e-umlaut		agio
-;;	"i		i-umlaut		alcaic
-;;	"o		o-umlaut		ale
-;;	"u		u-umlaut		alpenglow
-;;	a:		a-umlaut		aardvark
-;;	n:		n-umlaut		pogy
-;;	o:		o-umlaut		coccyx
-;;	s:		s-umlaut		centrifugation
-;;	u:		u-umlaut		accouter
-;;	w:		w-umlaut		bourgeois
-;;	I:		I-umlaut		natural
-;;	~a		a-umlaut		alcove
-;;	~e		e-umlaut		Boxer
-;;	~i		i-umlaut		Cistercian
-;;	~o		o-umlaut		alcove
-;;	~u		u-umlaut		Boxer
-;;	~E		E-umlaut		arris
-;;	~O		O-umlaut		prix fixe
-;;	>e		e-grave			arriere-pensee
-;;	>a		a-grave			pompano
-;;	>u		u-grave			coca
-;;	>E		E-grave
-;;	u)		u-grave
-;;	o)		o-grave
-;;	i)		i-grave
-;;	s)		s-grave
-;;	;C		C-cedilla		compendia
-;;	;c		c-cedilla		babassu
-;;	<E		E-acute
-;;	<a		a-acute
-;;	<e		e-acute
-;;	S(		S-acute
-;;	c(		c-acute
-;;	i(		i-acute
-;;	o(		o-acute
-;;	r(		r-acute
-;;	s(		s-acute
-;;	y(		y-acute
-;;	)>		guillemotright		everywhere...
-;;	<(		guillemotleft		everywhere...
-;;	(<		guillemotleft (?)	come
-;;	-m		longdash		pi
-;;	n_		nj			babbling
-;;	'o		degree			
-;;	|)		]
-;;	|-		dagger
-;;	|=		doubledagger
-;;	|S		section
-;;	|o		lower-phi
-;;	|q		paragraph		paragraph
-;;	=\		"$"
-;;	(<		"<"
-;;	(|		"["
-;;	'b		stroke
-;;	*o		centerdot
-;;	+=		plusminus
-;;	-/		\
-;;	-3		"..."
-;;	-:		division
-;;	-X		multiplication
-;;	-n		"-"
-;;	-x		multiplication
-;;	''		' overstrike
-;;	::		: overstrike
-;;	;;		; overstrike
-;;	MM		M overstrike
-;;	a-		a-lineover
-;;	e-		e-lineover
-;;	i-		i-lineover
-;;	o-		o-lineover
-;;	u-		u-lineover
-;;	y-		y-lineover
-;;	A-		A-lineover
-;;	E-		E-lineover
-;;	I-		I-lineover
-;;	O-		O-lineover
-;;	U-		U-lineover
-;;	Q-		Q-lineover2
-;;	a.		a-dotover
-;;	e.		e-dotover
-;;	m.		m-dotover
-;;	n.		n-dotover
-;;	o.		o-dotover
-;;	r.		r-dotover
-;;	u.		u-dotover
-;;	e_		e-lineunder
-;;	h_		h-lineunder
-;;	k_		k-lineunder
-;;	r-		r-lineunder
-;;	r_		r-lineunder
-;;	t_		t-lineunder
-;;	u_		u-lineunder
-;;	k-		k-dotunder
-
-;; t(\bQsub-dot)\bQ		t-dotunder
-;; s(\bQsub-dot)\bQ		s-dotunder
-;; h(\bQsub-dot)\bQ		h-dotunder		aceldama
-;; n(\bQsub-dot)\bQ		n-dotunder
-;; r(\bQsub-dot)\bQ		r-dotunder
-;; d(\bQsub-dot)\bQ		d-dotunder
-;; z(\bQsub-dot)\bQ		z-dotunder
-;; l(\bQsub-dot)\bQ		l-dotunder
-;; S(\bQsub-dot)\bQ		S-dotunder
-;; H(\bQsub-dot)\bQ		H-dotunder
-;; o(\bQsub-dot)\bQ		o-dotunder
-;; a(\bQsub-dot)\bQ		a-dotunder
-;; e(\bQbreve)\bQ		e-breve
-;; u(\bQbreve)\bQ		u-breve
-;; i(\bQbreve)\bQ		i-breve
-;; a(\bQbreve)\bQ		a-breve
-;; A(\bQbreve)\bQ		A-breve
-;; s(\bQbreve)\bQ		s-breve
-;; n(\bQbreve)\bQ		n-breve
-;; E(\bQbreve)\bQ		E-breve
-;; y(\bQbreve)\bQ		y-breve
-;; o(\bQbreve)\bQ		o-breve
-;; h(\bQsub-breve)\bQ		h-breve
-;; e(\bQhachek)\bQ		e-hachek
-;; s(\bQhachek)\bQ		s-hachek
-;; z(\bQhachek)\bQ		z-hachek
-;; c(\bQhachek)\bQ		c-hachek
-;; j(\bQhachek)\bQ		j-hachek
-;; i(\bQhachek)\bQ		i-hachek
-;; u(\bQhachek)\bQ		u-hachek
-;; g(\bQhachek)\bQ		g-hachek
-;; r(\bQhachek)\bQ		r-hachek
-;; a(\bQhachek)\bQ		a-hachek
-;; C(\bQhachek)\bQ		C-hachek
-;; a(\bQmacron-tilda)\bQ	a-macrontilda
-;; i(\bQmacron-tilda)\bQ	i-macrontilda
-;; e(\bQmacron-tilda)\bQ	e-macrontilda
-;; a(\bQsup-circle)\bQ		a-circleover
-;; A(\bQsup-circle)\bQ		A-circleover
-;; e(\bQcidilla)\bQ		e-cedilla
-;; o(\bQcidilla)\bQ		o-cedilla
-;; a(\bQcidilla)\bQ		a-cedilla
-;; z(\bQsub-diaeresis)\bQ	z-umlautunder
-;; r(\bQsub-diaeresis)\bQ	r-umlautunder
-;; t(\bQsub-macron)\bQ		t-lineunder
-;; B(\bQ3 character overbar)\bQ	B-lineover3
-
-;; (\bQa-e)\bQ-		ae-overbar (?)		herring
-
-;; "U			unknown
-;; '-			unknown
-;; 'a 			unknown
-;; (j			unknown
-;; )o			unknown
-;; - 			unknown
-;; -0			unknown
-;; ->			unknown
-;; -M			unknown
-;; -N			unknown
-;; -O			unknown
-;; -s			unknown
-;; ;(			unknown
-;; <'			unknown
-;; <A			unknown
-;; =S			unknown
-;; >'			unknown
-;; B 			unknown
-;; G<			unknown
-;; G>			unknown
-;; I'			unknown
-;; O'			unknown
-;; S			unknown
-;; c|			unknown
-;; e@			unknown
-;; eg			unknown
-;; en			unknown
-;; er			unknown
-;; et			unknown
-;; i"			unknown
-;; l-			unknown
-;; m-			unknown
-;; n,			unknown
-;; nB			unknown
-;; o@			unknown
-;; os			unknown
-;; ot			unknown
-;; s,			unknown			chouse
-;; u@			unknown
-;; | 			unknown
-
-;; /a			unknown			alpha
-;; /b			unknown
-;; /c			unknown
-;; /d			unknown
-;; /e			unknown
-;; /g			unknown
-;; /h			unknown
-;; /i			unknown
-;; /k			unknown
-;; /l			unknown
-;; /m			unknown
-;; /n			unknown
-;; /p			unknown
-;; /r			unknown
-;; /s			unknown
-;; /t			unknown
-;; /u			unknown
-;; /v			unknown
-;; /w			unknown
-;; /x			unknown
-;; /z			unknown
-
-;; /C			unknown
-;; /D			unknown
-;; /F			unknown
-;; /G			unknown
-;; /I			unknown
-;; /L			unknown
-;; /N			unknown
-;; /O			unknown
-;; /P			unknown
-;; /S			unknown
-;; /U			unknown
-;; /V			unknown
-;; /W			unknown
-;; /X			unknown
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/packages/webster-www.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,50 @@
+;;; webster-www.el --- Look up a word in WWW Merriam-Webster dictionary
+
+;; Copyright (c) 1997 by Tomasz J. Cholewo <t.cholewo@ieee.org>
+
+;; Created: 1997/03/10 
+;; Version: 1.0
+;; Keywords: comm, hypermedia
+
+;; This file is part of XEmacs.
+
+;; XEmacs is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; XEmacs is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with XEmacs; see the file COPYING.  If not, write to the Free
+;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+;; 02111-1307, USA.
+
+;;; Synched up with: not in FSF.
+
+;;; Code:
+
+(defvar webster-url "http://www.m-w.com/cgi-bin/mweb?book=Dictionary&va="
+  "URL to reference for Webster's dictionary.")
+
+;;;###autoload
+(defun webster-www (arg)
+"Look up a word in the Webster's dictionary at http://www.m-w.com using WWW."
+  (interactive (list
+		(let ((prompt (concat "Look up word in webster ("
+				      (current-word) "): ")))
+		     (read-string prompt))))
+  (require 'url)
+  (require 'w3-forms)
+  (if (equal "" arg) (setq arg (current-word)))
+  (funcall browse-url-browser-function
+	   (concat
+	     webster-url
+	    (w3-form-encode-xwfu arg))))
+
+(provide 'webster-www)
+
+;;; webster-www.el ends here
--- a/lisp/packages/webster.el	Mon Aug 13 09:23:08 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,511 +0,0 @@
-;; Copyright (C) 1989 Free Software Foundation
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY.  No author or distributor
-;; accepts responsibility to anyone for the consequences of using it
-;; or for whether it serves any particular purpose or works at all,
-;; unless he says so in writing.  Refer to the GNU Emacs General Public
-;; License for full details.
-
-;; Everyone is granted permission to copy, modify and redistribute
-;; GNU Emacs, but only under the conditions described in the
-;; GNU Emacs General Public License.   A copy of this license is
-;; supposed to have been given to you along with GNU Emacs so you
-;; can know your rights and responsibilities.  It should be in a
-;; file named COPYING.  Among other things, the copyright notice
-;; and this notice must be preserved on all copies.
-;;
-;;; Synched up with: Not in FSF.
-
-;; Author Jason R. Glasgow (glasgow@cs.yale.edu)
-;; Modified from telnet.el by William F. Schelter
-;; But almost entirely different.
-;;
-;; Modified by Dirk Grunwald to maintain an open connection.
-;;
-;; 3/18/89 Ashwin Ram <Ram-Ashwin@yale.edu>
-;; Added webster-mode.
-;; Fixed documentation.
-;;
-;; 3/20/89 Dirk Grunwald <grunwald@flute.cs.uiuc.edu>
-;; Merged Rams changes with new additions: smarter window placement,
-;; correctly handles un-exposed webster windows, minor cleanups.
-;; Also, ``webster-word'', akin to ``spell-word''.
-;;
-;; To use this, you might want to add this line to your .emacs file:
-;;
-;;  (autoload 'webster "webster" "look up a word in Webster's 7th edition" t)
-;;
-;; Then just hit M-x webster to look up a word.
-;;
-;; 3/21/89 Dave Sill <dsill@relay.nswc.navy.mil>
-;; Removed webster-word and webster-define, adding default of current word to 
-;; webster, webster-spell, and webster-endings instead.
-;;
-;; 1/21/91 Jamie Zawinski <jwz@lucid.com>
-;; Added webster-reformat to produce better looking output.  Made it notice
-;; references to other words in the definitions (all upper-case) and do
-;; completion on them in the string read by meta-x webster.
-;;
-;; 9/14/91 Jamie Zawinski <jwz@lucid.com>
-;; Improved the above.
-;;
-;; 4/15/92 Jamie Zawinski <jwz@lucid.com>
-;; Improved formatting some more, and added Lucid GNU Emacs font and mouse
-;; support (mostly cannibalized from webster-ucb.el.)
-
-(defvar webster-host "agate.berkeley.edu" ;"129.79.254.192"
-  "The host to use as a webster server.")
-
-(defvar webster-port "2627"
-  "The port to connect to. Either 103 or 2627")
-
-(defvar webster-process nil
-  "The current webster process")
-
-(defvar webster-process-name "webster"
-  "The current webster process")
-
-(defvar webster-buffer nil
-  "The current webster process")
-
-(defvar webster-running nil
-  "Used to determine when connection is established")
-
-;;;
-;;; Initial filter for ignoring information until successfully connected
-;;;
-(defun webster-initial-filter (proc string)
-  (let ((this-buffer (current-buffer)))
-    (set-buffer webster-buffer)
-    (goto-char (point-max))
-    (cond ((not (eq (process-status webster-process) 'run))
-	   (setq webster-running t)
-	   (message "Webster died"))
-	  ((string-match "No such host" string)
-	   (setq webster-running t)
-	   (kill-buffer (process-buffer proc))
-	   (error "No such host."))
-	  ((string-match "]" string)
-	   (setq webster-running t)
-	   (set-process-filter proc 'webster-filter)))
-    (set-buffer this-buffer)))
-
-(defvar webster-reformat t
-  "*Set this to t if you want the webster output to be prettied up, and
-for the \\[webster] prompt to do completion across the set of words known
-to be in the dictionary (words you've looked up, or which appeared in 
-definitions as crossreferences.)")
-
-(defun webster-filter (proc string)
-  (let ((this-buffer (current-buffer))
-	(endp nil))
-    (set-buffer webster-buffer)
-    (cond ((not (eq (process-status webster-process) 'run))
-	   (message "Webster died"))
-	  ((string-match "Connection closed" string)
-	   (message "Closing webster connection...")
-	   (kill-process proc)
-	   (replace-regexp "Process webster killed" "" nil)
-	   (goto-char 1)
-	   (message "Closing webster connection...Done."))
-	  ((string-match "SPELLING 0" string)
-	   (insert "...Word not found in webster\n"))
-	  ((string-match "SPELLING 1" string)
-	   (insert "...Spelled correctly\n"))
-	  ((let ((end-def-message (or (string-match "\200" string)
-				      (string-match "\0" string))))
-	     (if end-def-message
-		 (progn
-		   (webster-filter
-		    proc
-		    (concat (substring string 0 (- end-def-message 1)) "\n\n"))
-		   (setq endp t)
-		   (goto-char (point-max))
-		   t))))
-	  (t
-	   (goto-char (point-max))
-	   (let ((now (point)))
-	     (insert string)
-	     (delete-char-in-region now (point) "\^M" " "))
-	   (if (process-mark proc)
-	       (set-marker (process-mark proc) (point)))))
-    (if endp
-	;; if the webster window is visible, move the last line to the
-	;; bottom of that window
-	(let ((webster-window (get-buffer-window webster-buffer))
-	      (window (selected-window)))
-	  (if webster-reformat (webster-reformat (process-mark proc)))
-	  (if webster-window
-	      (progn
-		(select-window webster-window)
-		(goto-char (point-max))
-		(recenter (1- (window-height webster-window)))
-		(select-window window)))))))
-
-(defconst webster-completion-table (make-vector 511 0))
-
-(defun webster-intern (string)
-  (while (string-match "\\." string)
-    (setq string (concat (substring string 0 (match-beginning 0))
-			 (substring string (match-end 0)))))
-  (intern (downcase string) webster-completion-table))
-
-(defvar webster-fontify (string-match "XEmacs" emacs-version)
-  "*Set to t to use the XEmacs/Lucid Emacs font-change mechanism.")
-
-(cond ((fboundp 'make-face)
-       (or (find-face 'webster)
-	   (face-differs-from-default-p (make-face 'webster))
-	   (copy-face 'default 'webster))
-       (or (find-face 'webster-bold)
-	   (face-differs-from-default-p (make-face 'webster-bold))
-	   (copy-face 'bold 'webster-bold))
-       (or (find-face 'webster-italic)
-	   (face-differs-from-default-p (make-face 'webster-italic))
-	   (copy-face 'italic 'webster-italic))
-       (or (find-face 'webster-bold-italic)
-	   (face-differs-from-default-p (make-face 'webster-bold-italic))
-	   (copy-face 'bold-italic 'webster-bold-italic))
-       (or (find-face 'webster-small)
-	   (face-differs-from-default-p (make-face 'webster-small))
-	   (copy-face 'webster-bold 'webster-small))
-       ))
-
-(defun webster-fontify (start end face &optional highlight)
-  (let ((e (make-extent start end (current-buffer))))
-    (set-extent-face e face)
-    (if highlight (set-extent-property e 'highlight t))))
-
-
-(defun webster-reformat (end)
-  "Clean up the output of the webster server, and gather words for the 
-completion table."
-  (if (not webster-reformat) nil
-    (goto-char end)
-    (let ((case-fold-search nil))
-      (re-search-backward "^[A-Z]+" nil t)
-      (if webster-fontify
-	  (save-excursion
-	    (previous-line 1)
-	    (if (looking-at "^DEFINE \\([^ \n]+\\)")
-		(webster-fontify (match-beginning 1) (match-end 1)
-				 'webster-bold t))))
-      (cond
-       ((or (looking-at "^DEFINITION [0-9]")
-	    (looking-at "^SPELLING"))
-	(forward-line 1)
-	(let ((p (point))
-	      (indent 2))
-	  (search-forward "\n\n" nil 0)
-	  (narrow-to-region p (point))
-	  (goto-char p)
-	  (while (search-forward "\n" nil t)
-	    (delete-char -1)
-	    (just-one-space))
-	  (goto-char p)
-	  (while (not (eobp))
-	    (if (looking-at " *\n")
-		(delete-region (match-beginning 0) (match-end 0)))
-	    (cond ((looking-at "^[0-9]+ ")
-		   (if webster-fontify
-		       (webster-fontify (point) (match-end 0)
-					'webster-bold-italic))
-		   (goto-char (match-end 0))
-		   (if (looking-at "[^\n0-9]+ [0-9]")
-		       (save-excursion
-			 (goto-char (1- (match-end 0)))
-			 (insert "\n")))
-		   (if (looking-at "[a-z]+\\( [a-z]+\\)*[ \n]")
-		       (webster-intern
-			(buffer-substring (point) (1- (match-end 0)))))
-		   (if webster-fontify
-		       (webster-fontify (point) (1- (match-end 0))
-					'webster-bold t))
-		   (goto-char (1- (match-end 0)))
-		   (if (looking-at " *\n") (forward-line 1)))
-		  ((looking-at " *[0-9]+\\. ")
-		   (setq indent 5)
-		   (delete-horizontal-space)
-		   (insert (if (= (preceding-char) ?\n) "  " "\n  "))
-		   (skip-chars-forward "0-9. ")
-		   (if webster-fontify
-		       (webster-fontify
-			(save-excursion (beginning-of-line) (point))
-			(point)
-			'webster-bold-italic)))
-		  ((looking-at " *\\([0-9]+\\): *")
-		   (let ((n (buffer-substring (match-beginning 1)
-					      (match-end 1))))
-		     (delete-region (match-beginning 0) (match-end 0))
-		     (insert "\n")
-		     (indent-to (- 6 (length n)))
-		     (insert n " : ")
-		     (setq indent 9)
-		     (if webster-fontify
-			 (webster-fontify
-			  (save-excursion (beginning-of-line) (point))
-			  (point)
-			  'webster-bold-italic))))
-		  ((looking-at " *\\([0-9]+\\)\\([a-z]+\\): *")
-		   (let ((n (buffer-substring (match-beginning 1)
-					      (match-end 1)))
-			 (m (buffer-substring (match-beginning 2)
-					      (match-end 2))))
-		     (if (not (equal m "a")) (setq n " "))
-		     (delete-region (match-beginning 0) (match-end 0))
-		     (insert "\n")
-		     (indent-to (- 6 (length n)))
-		     (insert n "  ")
-		     (insert m " : ")
-		     (setq indent 12)
-		     (if webster-fontify
-			 (webster-fontify
-			  (save-excursion (beginning-of-line) (point))
-			  (point)
-			  'webster-bold-italic))))
-		  ((looking-at " *\\([0-9]+\\)\\([a-z]+\\)\\([0-9]+\\): *")
-		   (let ((n (buffer-substring (match-beginning 1)
-					      (match-end 1)))
-			 (m (buffer-substring (match-beginning 2)
-					      (match-end 2)))
-			 (o (buffer-substring (match-beginning 3)
-					      (match-end 3))))
-		     (if (not (equal o "1")) (setq m " "))
-		     (if (not (equal m "a")) (setq n " "))
-		     (delete-region (match-beginning 0) (match-end 0))
-		     (insert "\n")
-		     (indent-to (- 6 (length n)))
-		     (insert n "  ")
-		     (insert m "  ")
-		     (insert "(" o ") : ")
-		     (setq indent 17)
-		     (if webster-fontify
-			 (webster-fontify
-			  (save-excursion (beginning-of-line) (point))
-			  (point)
-			  'webster-bold-italic))))
-		  ((looking-at " *\\\\")
-		   (setq indent 5)
-		   (setq p (point))
-		   (goto-char (match-end 0))
-		   (search-forward "\\")
-		   (if (> (current-column) fill-column)
-		       (progn
-			 (goto-char p)
-			 (insert "\n")
-			 (indent-to 18)
-			 (search-forward "\\")))
-		   (if webster-fontify
-		       (webster-fontify p (point) 'webster-italic)))
-		  ((looking-at " *\\[")
-		   (setq indent 6)
-		   (delete-horizontal-space)
-		   (insert "\n")
-		   (indent-to 5)
-		   (forward-char 1))
-		  ((and (= (preceding-char) ?\])
-			(looking-at " *:"))
-		   (delete-horizontal-space)
-		   (setq indent 5)
-		   (insert "\n "))
-		  ((looking-at " *SYN *")
-		   (delete-region (point) (match-end 0))
-		   (insert "\n")
-		   (delete-horizontal-space)
-		   (insert "  ")
-		   (setq indent 6)
-		   (if (looking-at "syn ")
-		       (progn
-			 (if webster-fontify
-			     (webster-fontify (point) (+ (point) 3)
-					      'webster-bold))
-			 (goto-char (match-end 0))
-			 (insert "see "))))
-		  (t
-		   (setq p (point))
-		   (skip-chars-forward " ,:;-")
-		   (if (or (looking-at
-			  "\\([A-Z][-A-Z]+[A-Z]\\)\\( [A-Z][-A-Z]*[A-Z]\\)*")
-			   (looking-at "[a-z][-a-z]*\\(\\.[a-z][-a-z]*\\)+"))
-		       (let ((s (buffer-substring (point) (match-end 0))))
-			 (if webster-fontify
-			     (webster-fontify (point) (match-end 0)
-					      'webster-bold t))
-			 (while (string-match "\\." s)
-			   (setq s (concat (substring s 0 (match-beginning 0))
-					   (substring s (match-end 0)))))
-			 (webster-intern s)))
-		   (skip-chars-forward "^ \\")
-		   (if (> (current-column) fill-column)
-		       (progn
-			 (goto-char p)
-			 (insert "\n")
-			 (delete-horizontal-space)
-			 (indent-to indent)
-			 (skip-chars-forward " ")
-			 (skip-chars-forward "^ \\")
-			 )))
-		  )))
-	(goto-char (point-min))
-	(while (looking-at "\n") (delete-char 1))
-	(goto-char (point-max))
-	(insert "\n\n")
-	(widen))))))
-
-;; " \\(\\(slang\\|cap\\|pl\\|aj\\|av\\|n\\|v\\|vt\\|vi\\)\\(,[ \n]+\\)?\\)+\n"
-
-;;;
-;;; delete char1 and char2 if it precedes char1
-;;; used to get rid of <space><return>
-(defun delete-char-in-region (start end char1 char2)
-  (goto-char start)
-  (setq char2 (aref char2 0))
-  (while (search-forward char1 end t)
-    (delete-char -1)
-    (if (= (char-after (- (point) 1)) char2)
-	(delete-char -1))))
-
-;;;###autoload
-(defun webster (arg)
-"Look up a word in the Webster's dictionary.
-Open a network login connection to a webster host if necessary.
-Communication with host is recorded in a buffer *webster*."
-  (interactive (list
-		(let ((prompt (concat "Look up word in webster ("
-				      (current-word) "): "))
-		      (completion-ignore-case t))
-		  (downcase
-		   (if webster-reformat
-		       (completing-read prompt webster-completion-table
-					nil nil)
-		     (read-string prompt))))))
-  (if (equal "" arg) (setq arg (current-word)))
-  (webster-send-request "DEFINE" arg))
-
-;;;###autoload
-(defun webster-endings (arg)
-"Look up endings for a word in the Webster's dictionary.
-Open a network login connection to a webster host if necessary.
-Communication with host is recorded in a buffer *webster*."
-  (interactive (list
-		(read-string
-		 (concat
-		  "Find endings for word in webster (" (current-word) "): "))))
-  (if (equal "" arg) (setq arg (current-word)))
-  (webster-send-request "ENDINGS" arg))
-
-;;;###autoload
-(defun webster-spell (arg)
-"Look spelling for a word in the Webster's dictionary.
-Open a network login connection to a webster host if necessary.
-Communication with host is recorded in a buffer *webster*."
-  (interactive (list
-		(read-string
-		 (concat
-		  "Try to spell word in webster (" (current-word) "): "))))
-  (if (equal "" arg) (setq arg (current-word)))
-  (webster-send-request "SPELL" arg))
-
-(defun webster-send-request (kind word)
-  (require 'shell)
-  (let
-      ((webster-command (concat "open " webster-host " " webster-port "\n")))
-    
-    (if (or 
-	 (not webster-buffer)
-	 (not webster-process)
-	 (not (eq (process-status webster-process) 'run)))
-	(progn
-	  (message
-	   (concat "Attempting to connect to server " webster-host "..."))
-	  (setq webster-buffer
-		(if (not (fboundp 'make-shell)) ;emacs19
-		    (make-comint webster-process-name "telnet")
-		  (make-shell webster-process-name "telnet")))
-	  (let
-	      ((this-buffer (current-buffer)))
-	    (set-buffer webster-buffer)
-	    (webster-mode)
-	    (set-buffer this-buffer))
-
-	  (setq webster-process (get-process webster-process-name))
-	  (set-process-filter webster-process 'webster-initial-filter)
-	  (process-send-string  webster-process webster-command)
-	  (setq webster-running nil);
-	  (while (not webster-running)	; wait for feedback
-	    (accept-process-output))))	;
-    (display-buffer webster-buffer nil)
-    (process-send-string webster-process (concat kind " " word "\n"))))
-
-(defun webster-quit ()
-   "Close connection and quit webster-mode.  Buffer is not deleted."
-   (interactive)
-   (message "Closing connection to %s..." webster-host)
-   (kill-process webster-process)
-   (message "Closing connection to %s...done" webster-host)
-   (bury-buffer))
-
-(defvar webster-mode-map nil)
-
-(defun webster-mode ()
-  "Major mode for interacting with on-line Webster's dictionary.
-\\{webster-mode-map}
-Use webster-mode-hook for customization."
-  (interactive)
-  (kill-all-local-variables)
-  (setq major-mode 'webster-mode)
-  (setq mode-name "Webster")
-  (use-local-map webster-mode-map)
-  (run-hooks 'webster-mode-hook))
-
-(if webster-mode-map
-    nil
-  (setq webster-mode-map (make-sparse-keymap))
-  (define-key webster-mode-map "?" 'describe-mode)
-  (define-key webster-mode-map "d" 'webster)
-  (define-key webster-mode-map "e" 'webster-endings)
-  (define-key webster-mode-map "q" 'webster-quit)
-  (define-key webster-mode-map "s" 'webster-spell)
-  (if (string-match "XEmacs" emacs-version)
-      (define-key webster-mode-map 'button2 'webster-xref-word)))
-
-;; now in simple.el
-;(defun current-word ()
-;   "Word cursor is over, as a string."
-;   (save-excursion
-;      (let (beg end)
-;	 (re-search-backward "\\w" nil 2)
-;	 (re-search-backward "\\b" nil 2)
-;	 (setq beg (point))
-;	 (re-search-forward "\\w*\\b" nil 2)
-;	 (setq end (point))
-;	 (buffer-substring beg end))))
-
-(defun webster-xref-word (event)
-  "Define the highlighted word under the mouse.
-Words which are known to have definitions are highlighted when the mouse
-moves over them.  You may define any word by selecting it with the left
-mouse button and then clicking middle."
-  (interactive "e")
-  (let* ((buffer (event-buffer event))
-	 (extent (extent-at (event-point event) buffer 'highlight))
-	 text)
-    (cond (extent
-	   (setq text (save-excursion
-			(set-buffer buffer)
-			(buffer-substring
-			 (extent-start-position extent)
-			 (extent-end-position extent)))))
-	  ((x-selection-owner-p) ; the selection is in this emacs process.
-	   (setq text (x-get-selection)))
-	  (t
-	   (error "click on a highlighted word to define")))
-    (while (string-match "\\." text)
-      (setq text (concat (substring text 0 (match-beginning 0))
-			 (substring text (match-end 0)))))
-    (message "looking up %s..." (upcase text))
-    (goto-char (point-max))
-    (webster text)))
--- a/lisp/prim/about.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/prim/about.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1049,6 +1049,7 @@
 	  Philip Johnson <johnson@uhics.ics.Hawaii.Edu>
 	  J. Kean Johnston <jkj@paradigm-sa.com>
 	  Andreas Kaempf <andreas@sccon.com>
+	  Amir Katz <amir@ndsoft.com>
 	  Doug Keller <dkeller@vnet.ibm.com>
 	  Hunter Kelly <retnuh@corona>
 	  Gregor Kennedy <gregork@dadd.ti.com>
--- a/lisp/prim/auto-autoloads.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/prim/auto-autoloads.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1062,7 +1062,11 @@
 
 ;;;***
 
-;;;### (autoloads (widget-delete widget-create) "wid-edit" "custom/wid-edit.el")
+;;;### (autoloads (widget-delete widget-create widget-apply) "wid-edit" "custom/wid-edit.el")
+
+(autoload 'widget-apply "wid-edit" "\
+Apply the value of WIDGET's PROPERTY to the widget itself.
+ARGS are passed as extra arguments to the function." nil nil)
 
 (autoload 'widget-create "wid-edit" "\
 Create widget of TYPE.  
@@ -1414,6 +1418,9 @@
 *Mail reader used by dired for dired-read-mail (\\[dired-read-mail]).
 The symbols 'rmail and 'vm are the only two allowed values.")
 
+(defvar dired-refresh-automatically t "\
+*If non-nil, refresh dired buffers automatically after file operations.")
+
 (define-key ctl-x-map "d" 'dired)
 
 (autoload 'dired "dired" "\
@@ -1478,10 +1485,6 @@
 
 ;;;### (autoloads (remote-path-file-handler-function) "efs-dump" "efs/efs-dump.el")
 
-(defvar allow-remote-paths t "\
-*Set this to nil if you don't want remote paths to access
-remote files.")
-
 (or (assoc efs-path-root-regexp file-name-handler-alist) (setq file-name-handler-alist (cons (cons efs-path-root-regexp 'remote-path-file-handler-function) file-name-handler-alist)))
 
 (autoload 'remote-path-file-handler-function "efs-dump" "\
@@ -1489,6 +1492,14 @@
 
 ;;;***
 
+;;;### (autoloads nil "efs-fnh" "efs/efs-fnh.el")
+
+(defvar allow-remote-paths t "\
+*Set this to nil if you don't want remote paths to access
+remote files.")
+
+;;;***
+
 ;;;### (autoloads (efs-root-file-name-completion efs-root-file-name-all-completions efs-set-passwd) "efs-netrc" "efs/efs-netrc.el")
 
 (autoload 'efs-set-passwd "efs-netrc" "\
@@ -3380,7 +3391,7 @@
 
 ;;;***
 
-;;;### (autoloads (c-set-style java-mode objc-mode c++-mode c-mode) "cc-mode" "modes/cc-mode.el")
+;;;### (autoloads (c-add-style c-set-style java-mode objc-mode c++-mode c-mode) "cc-mode" "modes/cc-mode.el")
 
 (autoload 'c-mode "cc-mode" "\
 Major mode for editing K&R and ANSI C code.
@@ -3460,6 +3471,17 @@
 The variable `c-indentation-style' always contains the buffer's current
 style name." t nil)
 
+(autoload 'c-add-style "cc-mode" "\
+Adds a style to `c-style-alist', or updates an existing one.
+STYLE is a string identifying the style to add or update.  DESCRIP is
+an association list describing the style and must be of the form:
+
+  ((VARIABLE . VALUE) [(VARIABLE . VALUE) ...])
+
+See the variable `c-style-alist' for the semantics of VARIABLE and
+VALUE.  This function also sets the current style to STYLE using
+`c-set-style' if the optional SET-P flag is non-nil." t nil)
+
 (fset 'set-c-style           'c-set-style)
 
 ;;;***
@@ -3902,7 +3924,7 @@
 ;;;### (autoloads (ksh-mode) "ksh-mode" "modes/ksh-mode.el")
 
 (autoload 'ksh-mode "ksh-mode" "\
-ksh-mode $Revision: 1.18 $ - Major mode for editing (Bourne, Korn or Bourne again)
+ksh-mode $Revision: 1.19 $ - Major mode for editing (Bourne, Korn or Bourne again)
 shell scripts.
 Special key bindings and commands:
 \\{ksh-mode-map}
@@ -5257,7 +5279,7 @@
 
 (autoload 'vhdl-mode "vhdl-mode" "\
 Major mode for editing VHDL code.
-vhdl-mode $Revision: 1.18 $
+vhdl-mode $Revision: 1.19 $
 To submit a problem report, enter `\\[vhdl-submit-bug-report]' from a
 vhdl-mode buffer.  This automatically sets up a mail buffer with version
 information already added.  You just need to add a description of the
@@ -7910,22 +7932,10 @@
 
 ;;;***
 
-;;;### (autoloads (webster-spell webster-endings webster) "webster" "packages/webster.el")
-
-(autoload 'webster "webster" "\
-Look up a word in the Webster's dictionary.
-Open a network login connection to a webster host if necessary.
-Communication with host is recorded in a buffer *webster*." t nil)
-
-(autoload 'webster-endings "webster" "\
-Look up endings for a word in the Webster's dictionary.
-Open a network login connection to a webster host if necessary.
-Communication with host is recorded in a buffer *webster*." t nil)
-
-(autoload 'webster-spell "webster" "\
-Look spelling for a word in the Webster's dictionary.
-Open a network login connection to a webster host if necessary.
-Communication with host is recorded in a buffer *webster*." t nil)
+;;;### (autoloads (webster-www) "webster-www" "packages/webster-www.el")
+
+(autoload 'webster-www "webster-www" "\
+Look up a word in the Webster's dictionary at http://www.m-w.com using WWW." t nil)
 
 ;;;***
 
@@ -9093,7 +9103,7 @@
 
 ;;;***
 
-;;;### (autoloads (insert-kbd-macro format-kbd-macro read-kbd-macro edit-named-kbd-macro edit-last-kbd-macro edit-kbd-macro) "edmacro" "utils/edmacro.el")
+;;;### (autoloads (insert-kbd-macro format-kbd-macro kbd read-kbd-macro edit-named-kbd-macro edit-last-kbd-macro edit-kbd-macro) "edmacro" "utils/edmacro.el")
 
 (define-key ctl-x-map "\C-k" 'edit-kbd-macro)
 
@@ -9127,6 +9137,9 @@
 The result will be a string if possible, otherwise an event vector.
 Second argument NEED-VECTOR means to return an event vector always." t nil)
 
+(autoload 'kbd "edmacro" "\
+Convert KEYS to the internal Emacs key representation." nil 'macro)
+
 (autoload 'format-kbd-macro "edmacro" "\
 Return the keyboard macro MACRO as a human-readable string.
 This string is suitable for passing to `read-kbd-macro'.
@@ -9903,7 +9916,7 @@
 
 ;;;***
 
-;;;### (autoloads (x-font-build-cache font-default-size-for-device font-default-family-for-device font-default-object-for-device font-default-font-for-device font-create-object) "font" "w3/font.el")
+;;;### (autoloads (x-font-build-cache font-default-size-for-device font-default-encoding-for-device font-default-registry-for-device font-default-family-for-device font-default-object-for-device font-default-font-for-device font-create-object) "font" "w3/font.el")
 
 (autoload 'font-create-object "font" nil nil nil)
 
@@ -9913,6 +9926,10 @@
 
 (autoload 'font-default-family-for-device "font" nil nil nil)
 
+(autoload 'font-default-registry-for-device "font" nil nil nil)
+
+(autoload 'font-default-encoding-for-device "font" nil nil nil)
+
 (autoload 'font-default-size-for-device "font" nil nil nil)
 
 (autoload 'x-font-build-cache "font" nil nil nil)
@@ -9935,6 +9952,13 @@
 
 ;;;***
 
+;;;### (autoloads (url-gateway-nslookup-host) "url-gw" "w3/url-gw.el")
+
+(autoload 'url-gateway-nslookup-host "url-gw" "\
+Attempt to resolve the given HOSTNAME using nslookup if possible." t nil)
+
+;;;***
+
 ;;;### (autoloads (url-retrieve url-popup-info url-get-url-at-point url-buffer-visiting url-normalize-url url-file-attributes) "url" "w3/url.el")
 
 (autoload 'url-file-attributes "url" "\
--- a/lisp/prim/cmdloop.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/prim/cmdloop.el	Mon Aug 13 09:24:17 2007 +0200
@@ -341,9 +341,11 @@
                   (inhibit-quit t))
               (message "%s%s%s" pre prompt yn)
               (setq event (next-command-event event))
-              (prog1
-		  (or quit-flag (eq 'keyboard-quit (key-binding event)))
-		(setq quit-flag nil)))
+	      (condition-case nil
+		  (prog1
+		      (or quit-flag (eq 'keyboard-quit (key-binding event)))
+		    (setq quit-flag nil))
+		(wrong-type-argument t)))
             (progn
               (message "%s%s%s%s" pre prompt yn (single-key-description event))
               (setq quit-flag nil)
--- a/lisp/prim/custom-load.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/prim/custom-load.el	Mon Aug 13 09:24:17 2007 +0200
@@ -28,6 +28,7 @@
 (put 'gnus-summary 'custom-loads '("gnus-sum" "gnus"))
 (put 'message-headers 'custom-loads '("message"))
 (put 'gnus-group-select 'custom-loads '("gnus-sum"))
+(put 'display-time-balloon 'custom-loads '("time"))
 (put 'display-time 'custom-loads '("time"))
 (put 'hypermedia 'custom-loads '("wid-edit" "w3-cus"))
 (put 'w3-advanced 'custom-loads '("w3-cus"))
@@ -48,6 +49,7 @@
 (put 'w3-files 'custom-loads '("w3-cus"))
 (put 'widget-browse 'custom-loads '("wid-browse"))
 (put 'gnus-article 'custom-loads '("gnus-art" "gnus-cite"))
+(put 'comm 'custom-loads '("ssl"))
 (put 'gnus 'custom-loads '("gnus-art" "gnus-async" "gnus-cache" "gnus-demon" "gnus-dup" "gnus-eform" "gnus-uu" "gnus-win" "gnus" "nnmail"))
 (put 'gnus-treading 'custom-loads '("gnus-sum"))
 (put 'nnmail 'custom-loads '("nnmail"))
@@ -72,6 +74,7 @@
 (put 'gnus-visual 'custom-loads '("earcon" "gnus-art" "gnus-picon" "gnus" "smiley"))
 (put 'message-forwarding 'custom-loads '("message"))
 (put 'message-news 'custom-loads '("message"))
+(put 'games 'custom-loads '("xmine"))
 (put 'gnus-edit-form 'custom-loads '("gnus-eform"))
 (put 'external 'custom-loads '("cus-edit"))
 (put 'gnus-files 'custom-loads '("gnus" "nnmail"))
@@ -89,8 +92,9 @@
 (put 'gnus-extract-post 'custom-loads '("gnus-uu"))
 (put 'faces 'custom-loads '("cus-edit" "wid-edit" "gnus" "message" "highlight-headers"))
 (put 'gnus-various 'custom-loads '("gnus-sum"))
+(put 'xmine 'custom-loads '("xmine"))
 (put 'gnus-article-highlight 'custom-loads '("gnus-art"))
-(put 'emacs 'custom-loads '("cus-edit" "dired-faces" "ssl"))
+(put 'emacs 'custom-loads '("cus-edit" "dired-faces"))
 (put 'processes 'custom-loads '("comint-xemacs"))
 (put 'news 'custom-loads '("gnus" "message" "highlight-headers"))
 (put 'w3-hooks 'custom-loads '("w3-cus"))
--- a/lisp/prim/faces.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/prim/faces.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1391,6 +1391,39 @@
 		   nil nil 'append)
   )
 
+;; New function with 20.1, suggested by Per Abrahamsen, coded by Kyle Jones.
+(defun set-face-stipple (face pixmap &optional frame)
+  "Change the stipple pixmap of face FACE to PIXMAP.
+This is an Emacs compatibility function; consider using
+set-face-background-pixmap instead.
+
+PIXMAP should be a string, the name of a file of pixmap data.
+The directories listed in the `x-bitmap-file-path' variable are searched.
+Any kind of image file for which XEmacs has builtin support can be used.
+
+Alternatively, PIXMAP may be a list of the form (WIDTH HEIGHT
+DATA) where WIDTH and HEIGHT are the size in pixels, and DATA is
+a string, containing the raw bits of the bitmap.  XBM data is
+expected in this case, other types of image data will not work.
+
+If the optional FRAME argument is provided, change only
+in that frame; otherwise change each frame."
+  (while (not (find-face face))
+    (setq face (signal 'wrong-type-argument (list 'facep face))))
+  (while (cond ((stringp pixmap)
+		(unless (file-readable-p pixmap)
+		  (setq pixmap (vector 'xbm ':file pixmap)))
+		nil)
+	       ((and (consp pixmap) (= (length pixmap) 3))
+		(setq pixmap (vector 'xbm ':data pixmap))
+		nil)
+	       (t t))
+    (setq pixmap (signal 'wrong-type-argument
+			 (list 'stipple-pixmap-p pixmap))))
+  (while (and frame (not (framep frame)))
+    (setq frame (signal 'wrong-type-argument (list 'framep frame))))
+  (set-face-background-pixmap face pixmap frame))
+
 
 ;; Create the remaining standard faces now.  This way, packages that we dump
 ;; can reference these faces as parents.
@@ -1436,3 +1469,5 @@
   (set-face-reverse-p   'list-mode-item-selected t 'global 'tty)
   (set-face-reverse-p   'isearch                 t 'global 'tty)
   )
+
+;;; faces.el ends here
--- a/lisp/prim/help.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/prim/help.el	Mon Aug 13 09:24:17 2007 +0200
@@ -938,7 +938,8 @@
 	     (if (not (and obsolete aliases))
 		 (progn
 		   (princ doc stream)
-		   (or (eq ?\n (aref doc (1- (length doc))))
+		   (or (equal doc "")
+		       (eq ?\n (aref doc (1- (length doc))))
 		       (terpri stream)))))))))
 
 
--- a/lisp/prim/process.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/prim/process.el	Mon Aug 13 09:24:17 2007 +0200
@@ -160,7 +160,7 @@
 	  (progn
 	    (require 'background) ; whizzy comint background code
 	    (background (substring command 0 (match-beginning 0))))
-	(shell-command-on-region (point) (point) command nil)))))
+	(shell-command-on-region (point) (point) command output-buffer)))))
 
 ;; We have a sentinel to prevent insertion of a termination message
 ;; in the buffer itself.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/prim/winnt.el	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,206 @@
+;;; winnt.el --- Lisp routines for Windows NT.
+
+;; Copyright (C) 1994 Free Software Foundation, Inc.
+
+;; Author: Geoff Voelker (voelker@cs.washington.edu)
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; (August 12, 1993)
+;; Created.
+
+;; (November 21, 1994)
+;; [C-M-backspace] defined.
+;; mode-line-format defined to show buffer file type.
+;; audio bell initialized.
+;;
+;; (March 18, 1997)
+;; Ported to XEmacs by Marc Paquette <marcpa@cam.org>
+;; 
+
+;;; Code:
+
+;; Map delete and backspace
+;; Not sure this is really needed in XEmacs... --marcpa
+(define-key global-map [(backspace)] 'backward-delete-char)
+(define-key global-map [(delete)] 'delete-char)
+(define-key global-map [(meta backspace)] 'backward-kill-word)
+(define-key global-map [(control meta backspace)] 'backward-kill-sexp)
+
+;; Show file type (text or binary) on modeline
+(setq-default mode-line-format
+  (list (purecopy "")
+   'mode-line-modified
+   'mode-line-buffer-identification
+   (purecopy "   ")
+   'global-mode-string
+   (purecopy "   %[(")
+   (purecopy "%t:")
+   'mode-name 'mode-line-process 'minor-mode-alist
+   (purecopy "%n")
+   (purecopy ")%]--")
+   (purecopy '(line-number-mode "L%l--"))
+   (purecopy '(column-number-mode "C%c--"))
+   (purecopy '(-3 . "%p"))
+   (purecopy "-%-")))
+
+;; Ignore case on file-name completion
+(setq completion-ignore-case t)
+
+;; The cmd.exe shell uses the "/c" switch instead of the "-c" switch
+;; for executing its command line argument (from simple.el).
+(setq shell-command-switch "/c")
+
+;; For appending suffixes to directories and files in shell completions.
+(add-hook 'shell-mode-hook 
+	  '(lambda () (setq comint-completion-addsuffix '("\\" . " "))))
+
+;; Use ";" instead of ":" as a path separator (from files.el).
+(setq path-separator ";")
+
+;; Set the null device (for compile.el).
+(setq grep-null-device "NUL")
+
+;; Set the grep regexp to match entries with drive letters.
+(setq grep-regexp-alist
+  '(("^\\(\\([a-zA-Z]:\\)?[^:( \t\n]+\\)[:( \t]+\\([0-9]+\\)[:) \t]" 1 3)))
+
+;; Taken from dos-fn.el ... don't want all that's in the file, maybe
+;; separate it out someday.
+
+(defvar file-name-buffer-file-type-alist
+  '(
+    ("[:/].*config.sys$" . nil)		; config.sys text
+    ("\\.elc$" . t)			; emacs stuff
+    ("\\.\\(obj\\|exe\\|com\\|lib\\|sys\\|chk\\|out\\|bin\\|ico\\|pif\\)$" . t)
+					; MS-Dos stuff
+    ("\\.\\(arc\\|zip\\|pak\\|lzh\\|zoo\\)$" . t)
+					; Packers
+    ("\\.\\(a\\|o\\|tar\\|z\\|gz\\|taz\\)$" . t)
+					; Unix stuff
+    ("\\.tp[ulpw]$" . t)
+					; Borland Pascal stuff
+    )
+  "*Alist for distinguishing text files from binary files.
+Each element has the form (REGEXP . TYPE), where REGEXP is matched
+against the file name, and TYPE is nil for text, t for binary.")
+
+(defun find-buffer-file-type (filename)
+  (let ((alist file-name-buffer-file-type-alist)
+	(found nil)
+	(code nil))
+    (let ((case-fold-search t))
+      (setq filename (file-name-sans-versions filename))
+      (while (and (not found) alist)
+	(if (string-match (car (car alist)) filename)
+	    (setq code (cdr (car alist))
+		  found t))
+	(setq alist (cdr alist))))
+    (if found
+	(cond((memq code '(nil t)) code)
+	     ((and (symbolp code) (fboundp code))
+	      (funcall code filename)))
+      default-buffer-file-type)))
+
+(defun find-file-binary (filename) 
+  "Visit file FILENAME and treat it as binary."
+  (interactive "FFind file binary: ")
+  (let ((file-name-buffer-file-type-alist '(("" . t))))
+    (find-file filename)))
+
+(defun find-file-text (filename) 
+  "Visit file FILENAME and treat it as a text file."
+  (interactive "FFind file text: ")
+  (let ((file-name-buffer-file-type-alist '(("" . nil))))
+    (find-file filename)))
+
+(defun find-file-not-found-set-buffer-file-type ()
+  (save-excursion
+    (set-buffer (current-buffer))
+    (setq buffer-file-type (find-buffer-file-type (buffer-file-name))))
+  nil)
+
+;;; To set the default file type on new files.
+(add-hook 'find-file-not-found-hooks 'find-file-not-found-set-buffer-file-type)
+
+;;; For using attached Unix filesystems.
+(defun save-to-unix-hook ()
+  (save-excursion
+    (setq buffer-file-type t))
+  nil)
+
+(defun revert-from-unix-hook ()
+  (save-excursion
+    (setq buffer-file-type (find-buffer-file-type (buffer-file-name))))
+  nil)
+
+;; Really should provide this capability at the drive letter granularity.
+(defun using-unix-filesystems (flag)
+  "Read and write files without CR/LF translation, if FLAG is non-nil.
+This is in effect assuming the files are on a remote Unix file system.
+If FLAG is nil, resume using CR/LF translation as usual."
+  (if flag
+      (progn
+	(add-hook 'write-file-hooks 'save-to-unix-hook)
+	(add-hook 'after-save-hook 'revert-from-unix-hook))
+    (progn
+      (remove-hook 'write-file-hooks 'save-to-unix-hook)
+      (remove-hook 'after-save-hook 'revert-from-unix-hook))))
+
+;;; Avoid creating auto-save file names containing invalid characters
+;;; (primarily "*", eg. for the *mail* buffer).
+(fset 'original-make-auto-save-file-name
+      (symbol-function 'make-auto-save-file-name))
+
+(defun make-auto-save-file-name ()
+  "Return file name to use for auto-saves of current buffer.
+Does not consider `auto-save-visited-file-name' as that variable is checked
+before calling this function.  You can redefine this for customization.
+See also `auto-save-file-name-p'."
+  (let ((name (original-make-auto-save-file-name))
+	(start 0))
+    ;; destructively replace occurences of * or ? with $
+    (while (string-match "[?*]" name start)
+      (aset name (match-beginning 0) ?$)
+      (setq start (1+ (match-end 0))))
+    name))
+
+;; ### FIX ME: need to look at XEmacs xmouse.el versus FSF mouse.el
+;; and adjust accordingly: I think 'x-selections is an FSFism.
+;; --marcpa 
+;;; Fix interface to (X-specific) mouse.el
+(defun x-set-selection (type data)
+  (or type (setq type 'PRIMARY))
+  (put 'x-selections type data))
+
+(defun x-get-selection (&optional type data-type)
+  (or type (setq type 'PRIMARY))
+  (get 'x-selections type))
+
+;; FSFisms
+;(fmakunbound 'font-menu-add-default)
+;(global-unset-key [C-down-mouse-1])
+;(global-unset-key [C-down-mouse-2])
+;(global-unset-key [C-down-mouse-3])
+
+;;; Set to a system sound if you want a fancy bell.
+;(set-message-beep nil)
+
+;;; winnt.el ends here
--- a/lisp/tl/tl-num.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/tl/tl-num.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,5 +1,5 @@
 ;;;
-;;; $Id: tl-num.el,v 1.2 1996/12/28 21:03:10 steve Exp $
+;;; $Id: tl-num.el,v 1.3 1997/04/05 19:32:20 steve Exp $
 ;;;
 ;;; by MORIOKA Tomohiko <morioka@jaist.ac.jp>, 1993/10/4
 ;;;
@@ -11,14 +11,14 @@
 ;;; @ n base
 ;;;
 
-(defun char-to-int (chr)
+(defun n-char-to-int (chr)
   "Convert n base character CHR to integer (n <= 36). [tl-num]"
   (cond ((and (<= ?0 chr)(<= chr ?9)) (- chr ?0))
 	((and (<= ?A chr)(<= chr ?Z)) (+ (- chr ?A) 10))
 	((and (<= ?a chr)(<= chr ?z)) (+ (- chr ?a) 10))
 	))
 
-(defun int-to-char (n)
+(defun int-to-n-char (n)
   "Convert integer N to n base character (n <= 36). [tl-num]"
   (if (< n 10)
       (+ ?0 n)
@@ -37,7 +37,7 @@
   "Convert n base char sequence SEQ to number. [tl-num]"
   (foldl (function
 	  (lambda (n chr)
-	    (+ (* n base)(char-to-int chr))
+	    (+ (* n base)(n-char-to-int chr))
 	    ))
 	 0 seq))
 
@@ -52,7 +52,7 @@
 	((and (<= ?a chr)(<= chr ?f)) (+ (- chr ?a) 10))
 	))
 
-(defalias 'number-to-hex-char 'int-to-char)
+(defalias 'number-to-hex-char 'int-to-n-char)
 
 (defun hex-seq-to-int (seq)
   "Convert hex number sequence SEQ to integer. [tl-num]"
--- a/lisp/utils/edmacro.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/utils/edmacro.el	Mon Aug 13 09:24:17 2007 +0200
@@ -5,7 +5,7 @@
 ;; Author: Dave Gillespie <daveg@synaptics.com>
 ;;         Hrvoje Niksic <hniksic@srce.hr>  -- XEmacs port
 ;; Maintainer: Hrvoje Niksic <hniksic@srce.hr>
-;; Version: 3.05
+;; Version: 3.07
 ;; Keywords: abbrev
 
 ;; This file is part of XEmacs.
@@ -54,6 +54,15 @@
 ;; This and `format-kbd-macro' can also be called directly as
 ;; Lisp functions.
 
+;; The `kbd' macro calls `read-kbd-macro', but it is evaluated at
+;; compile-time.  It is good to use in your programs and
+;; initializations, as you needn't know the internal keysym
+;; representation.  For example:
+;;
+;; (define-key foo-mode-map (kbd "C-c <up>") 'foo-up)
+;; is the equivalent of
+;; (define-key foo-mode-map [(control ?c) up] 'foo-up)
+
 ;; Type `C-h m', or see the documentation for `edmacro-mode' below,
 ;; for information about the format of written keyboard macros.
 
@@ -208,6 +217,12 @@
     (setq last-kbd-macro (edmacro-parse-keys (buffer-substring start end)))))
 
 ;;;###autoload
+(defmacro kbd (keys)
+  "Convert KEYS to the internal Emacs key representation."
+  `(eval-when-compile
+     (read-kbd-macro ,keys)))
+
+;;;###autoload
 (defun format-kbd-macro (&optional macro verbose)
   "Return the keyboard macro MACRO as a human-readable string.
 This string is suitable for passing to `read-kbd-macro'.
@@ -423,6 +438,13 @@
 			(?\e . "ESC")
 			(?\  . "SPC")
 			(?\C-? . "DEL")))
+	(modifier-prefix-alist '(("C" . control)
+				 ("M" . meta)
+				 ("S" . shift)
+				 ("Sh" . shift)
+				 ("A" . alt)
+				 ("H" . hyper)
+				 ("s" . super)))
 	;; string-to-symbol-or-char converter
 	(conv #'(lambda (arg)
 		  (if (= (length arg) 1)
@@ -484,26 +506,21 @@
 	       (if (/= (length word) 2)
 		   (error "^ must be followed by one character"))
 	       (setq add (list 'control (aref word 0))))
-	      ((string-match "^[MCSsAH]-" word)
-	       ;; Parse C-*
+	      ((string-match "^\\([MCSsAH]\\|Sh\\)-" word)
+	       ;; Parse C-* and stuff
 	       (setq
 		add
 		(list
 		 (let ((pos1 0)
 		       (r1 nil)
-		       follow)
-		   (while (string-match "^[MCSsAH]-" (substring word pos1))
-		     (setq r1 (nconc
-			       r1
-			       (list
-				(cdr (assq (aref word pos1)
-					   '((?C . control)
-					     (?M . meta)
-					     (?S . shift)
-					     (?A . alt)
-					     (?H . hyper)
-					     (?s . super)))))))
-		     (setq pos1 (+ pos1 2)))
+		       follow curpart prefix)
+		   (while (progn (setq curpart (substring word pos1))
+				 (string-match "^\\([MCSsAH]\\|Sh\\)-"
+					       curpart))
+		     (setq prefix (assoc (match-string 1 curpart)
+					 modifier-prefix-alist))
+		     (setq r1 (nconc r1 (list (cdr prefix))))
+		     (callf + pos1 (1+ (length (car prefix)))))
 		   (setq follow (substring word pos1))
 		   (if (equal follow "")
 		       (error "%s must precede a string"
--- a/lisp/utils/finder-inf.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/utils/finder-inf.el	Mon Aug 13 09:24:17 2007 +0200
@@ -10,6 +10,34 @@
         "define pathnames for use by various Emacs commands."
         (internal)
         "lisp/")
+    ("site-load.el"
+        "Template file for site-wide XEmacs customization"
+        (internal)
+        "lisp/")
+    ("font-latex.el"
+        "LaTeX fontification for Font Lock mode."
+        (latex faces)
+        "lisp/auctex/")
+    ("latex.el"
+        "Support for LaTeX documents."
+        (wp)
+        "lisp/auctex/")
+    ("multi-prompt.el"
+        "completing read of multiple strings."
+        (extensions)
+        "lisp/auctex/")
+    ("tex.el"
+        "Support for TeX documents."
+        (wp)
+        "lisp/auctex/")
+    ("byte-optimize.el"
+        "the optimization passes of the emacs-lisp byte compiler."
+        (internal)
+        "lisp/bytecomp/")
+    ("bytecomp-runtime.el"
+        "byte-compiler support for inlining"
+        (internal)
+        "lisp/bytecomp/")
     ("bytecomp.el"
         "compilation of Lisp code into byte code."
         (internal)
@@ -43,7 +71,7 @@
         (calendar)
         "lisp/calendar/")
     ("calendar.el"
-        "Calendar functions."
+        "Calendar functions.  -*-byte-compile-dynamic: t;-*-"
         (calendar)
         "lisp/calendar/")
     ("diary-ins.el"
@@ -66,10 +94,38 @@
         "calendar functions for solar events."
         (calendar)
         "lisp/calendar/")
+    ("cl-autoload.el"
+        "Generate the autoload file cl-defs.el."
+        (extensions  lisp)
+        "lisp/cl/")
+    ("cl-compat.el"
+        "Common Lisp extensions for GNU Emacs Lisp (compatibility)"
+        (extensions)
+        "lisp/cl/")
+    ("cl-extra.el"
+        "Common Lisp extensions for GNU Emacs Lisp (part two)"
+        (extensions)
+        "lisp/cl/")
+    ("cl-macs.el"
+        "Common Lisp extensions for GNU Emacs Lisp (part four)"
+        (extensions)
+        "lisp/cl/")
+    ("cl-seq.el"
+        "Common Lisp extensions for GNU Emacs Lisp (part three)"
+        (extensions)
+        "lisp/cl/")
+    ("cl.el"
+        "Common Lisp extensions for GNU Emacs Lisp"
+        (extensions  lisp)
+        "lisp/cl/")
     ("background.el"
         "fun with background jobs"
         (processes)
         "lisp/comint/")
+    ("comint-xemacs.el"
+        "Face customizations for comint"
+        (help  faces)
+        "lisp/comint/")
     ("comint.el"
         "general command interpreter in a window stuff"
         (processes)
@@ -82,17 +138,25 @@
         "run gdb under Emacs"
         (c  unix  tools  debugging)
         "lisp/comint/")
+    ("gdbsrc.el"
+        "Source-based (as opposed to comint-based) debugger"
+        (c  unix  tools  debugging)
+        "lisp/comint/")
     ("gud.el"
         "Grand Unified Debugger mode for gdb, sdb, dbx, or xdb"
         (c  unix  tools  debugging)
         "lisp/comint/")
+    ("history.el"
+        "Generic history stuff"
+        nil
+        "lisp/comint/")
     ("inf-lisp.el"
         "an inferior-lisp mode"
         (processes  lisp)
         "lisp/comint/")
     ("kermit.el"
         "additions to shell mode for use with kermit, etc."
-        (comm  processes)
+        (comm)
         "lisp/comint/")
     ("rlogin.el"
         "remote login interface"
@@ -106,34 +170,62 @@
         "run a telnet session from within an Emacs buffer"
         (comm  unix)
         "lisp/comint/")
-    ("ange-ftp.el"
-        "transparent FTP support for GNU Emacs"
-        (comm)
-        "lisp/dired/")
-    ("dired-link.el"
-        "Properly resolves UNIX (and Apollo variant) links under dired."
-        nil
-        "lisp/dired/")
-    ("dired-x.el"
-        "Sebastian Kremer's Extra DIRED hacked up for GNU Emacs19"
-        (dired extensions)
-        "lisp/dired/")
-    ("dired.el"
-        "directory-browsing commands"
-        (dired extensions)
-        "lisp/dired/")
+    ("cus-edit.el"
+        "Tools for customization Emacs."
+        (help  faces)
+        "lisp/custom/")
+    ("cus-face.el"
+        "XEmacs specific custom support."
+        (help  faces)
+        "lisp/custom/")
+    ("custom.el"
+        "Tools for declaring and initializing options."
+        (help  faces)
+        "lisp/custom/")
+    ("wid-browse.el"
+        "Functions for browsing widgets."
+        (extensions)
+        "lisp/custom/")
+    ("wid-edit.el"
+        "Functions for creating and using widgets."
+        (extensions)
+        "lisp/custom/")
+    ("widget-example.el"
+        "example of using the widget library"
+        (help  extensions  faces  hypermedia)
+        "lisp/custom/")
+    ("widget.el"
+        "a library of user interface components."
+        (help  extensions  faces  hypermedia)
+        "lisp/custom/")
+    ("advise-eval-region.el"
+        "Wrap advice around eval-region"
+        (extensions lisp)
+        "lisp/edebug/")
     ("cust-print.el"
         "handles print-level and print-circle."
         (extensions)
         "lisp/edebug/")
+    ("edebug-cl-read.el"
+        "Edebug reader macros for use with cl-read."
+        (lisp  tools  maint)
+        "lisp/edebug/")
     ("edebug.el"
         "a source-level debugger for Emacs Lisp"
-        (lisp  tools  debugging)
+        (lisp  tools  maint)
+        "lisp/edebug/")
+    ("eval-reg.el"
+        "Redefine eval-region, and subrs that use it, in Lisp"
+        (lisp)
         "lisp/edebug/")
     ("ediff-diff.el"
         "diff-related utilities"
         nil
         "lisp/ediff/")
+    ("ediff-help.el"
+        "Code related to the contents of Ediff help buffers"
+        nil
+        "lisp/ediff/")
     ("ediff-hook.el"
         "setup for Ediff's menus and autoloads"
         nil
@@ -146,14 +238,26 @@
         "merging utilities"
         nil
         "lisp/ediff/")
-    ("ediff-meta.el"
+    ("ediff-mult.el"
         "support for multi-file/multi-buffer processing in Ediff"
         nil
         "lisp/ediff/")
+    ("ediff-ptch.el"
+        "Ediff's  patch support"
+        nil
+        "lisp/ediff/")
+    ("ediff-tbar.el"
+        "A toolbar for Ediff control buffer"
+        nil
+        "lisp/ediff/")
     ("ediff-util.el"
         "the core commands and utilities of ediff"
         nil
         "lisp/ediff/")
+    ("ediff-vers.el"
+        "version control interface to Ediff"
+        nil
+        "lisp/ediff/")
     ("ediff-wind.el"
         "window manipulation utilities"
         nil
@@ -162,13 +266,17 @@
         "a comprehensive visual interface to diff & patch"
         (comparing  merging  patching  version control.)
         "lisp/ediff/")
+    ("egg-wnn.el"
+        "a inputting method communicating with [jck]server"
+        (inputting method)
+        "lisp/egg/")
     ("ebuff-menu.el"
         "electric-buffer-list mode"
-        nil
+        (frames)
         "lisp/electric/")
     ("echistory.el"
         "Electric Command History Mode"
-        nil
+        (extensions)
         "lisp/electric/")
     ("ehelp.el"
         "bindings for electric-help mode"
@@ -182,12 +290,28 @@
         "utility help package supporting help in electric modes"
         (help)
         "lisp/electric/")
-    ("edt.el"
-        "EDT emulation in Emacs"
+    ("crisp.el"
+        "Crisp/Brief Emacs emulator"
+        (emulations brief crisp)
+        "lisp/emulators/")
+    ("edt-lk201.el"
+        "Enhanced EDT Keypad Mode Emulation for LK-201 Keyboards"
         (emulations)
         "lisp/emulators/")
-    ("gosmacs.el"
-        "rebindings to imitate Gosmacs."
+    ("edt-mapper.el"
+        "Create an EDT LK-201 Map File for X-Windows Emacs"
+        (emulations)
+        "lisp/emulators/")
+    ("edt-pc.el"
+        "Enhanced EDT Keypad Mode Emulation for PC 101 Keyboards"
+        (emulations)
+        "lisp/emulators/")
+    ("edt-vt100.el"
+        "Enhanced EDT Keypad Mode Emulation for VT Series Terminals"
+        (emulations)
+        "lisp/emulators/")
+    ("edt.el"
+        "Enhanced EDT Keypad Mode Emulation for GNU Emacs 19"
         (emulations)
         "lisp/emulators/")
     ("mlconvert.el"
@@ -198,9 +322,13 @@
         "run-time support for mocklisp code."
         (extensions)
         "lisp/emulators/")
+    ("scroll-lock.el"
+        "scroll-locking minor mode"
+        (scroll crisp brief lock)
+        "lisp/emulators/")
     ("teco.el"
         "Teco interpreter for Gnu Emacs, version 1."
-        nil
+        (emulators)
         "lisp/emulators/")
     ("tpu-doc.el"
         "Documentation for TPU-edt"
@@ -214,9 +342,13 @@
         "Scroll margins and free cursor mode for TPU-edt"
         (emulations)
         "lisp/emulators/")
+    ("tpu-mapper.el"
+        "Create a TPU-edt X-windows keymap file"
+        (emulations)
+        "lisp/emulators/")
     ("ws-mode.el"
         "WordStar emulation mode for GNU Emacs"
-        nil
+        (emulations)
         "lisp/emulators/")
     ("eos.el"
         "Intereactively loads the XEmacs/SPARCworks interface"
@@ -262,18 +394,34 @@
         "Intereactively loads the XEmacs/SPARCworks interface"
         (sparcworks eos era on sparcworks load)
         "lisp/eos/")
+    ("term.el"
+        "general command interpreter in a window stuff"
+        nil
+        "lisp/eterm/")
     ("tshell.el"
         "specialized term.el for running the shell."
         (processes)
         "lisp/eterm/")
+    ("NeXTify.el"
+        "Character insertion variation"
+        (games)
+        "lisp/games/")
     ("blackbox.el"
         "blackbox game in Emacs Lisp"
         (games)
         "lisp/games/")
+    ("conx.el"
+        "Yet another dissociater"
+        (games)
+        "lisp/games/")
     ("cookie1.el"
         "retrieve random phrases from fortune cookie files"
         (games)
         "lisp/games/")
+    ("decipher.el"
+        "Cryptanalyze monoalphabetic substitution ciphers"
+        (games)
+        "lisp/games/")
     ("dissociate.el"
         "scramble text amusingly for Emacs."
         (games)
@@ -286,6 +434,10 @@
         "Text adventure for Emacs"
         (games)
         "lisp/games/")
+    ("flame.el"
+        "Automated insults"
+        (games)
+        "lisp/games/")
     ("gomoku.el"
         "Gomoku game between you and Emacs"
         (games)
@@ -298,8 +450,12 @@
         "John Horton Conway's `Life' game for GNU Emacs"
         (games)
         "lisp/games/")
+    ("mine.el"
+        "Mine game for GNU Emacs"
+        (games)
+        "lisp/games/")
     ("mpuz.el"
-        "multiplication puzzle for GNU Emacs"
+        "multiplication puzzle for XEmacs"
         (games)
         "lisp/games/")
     ("spook.el"
@@ -310,322 +466,326 @@
         "StudlyCaps (tm)(r)(c)(xxx)"
         (games)
         "lisp/games/")
+    ("xmine.el"
+        "Mine game for XEmacs"
+        (games)
+        "lisp/games/")
     ("yow.el"
         "quote random zippyisms"
         (games)
         "lisp/games/")
-    ("chat.el"
-        "a method for talking to asynchronous processes."
+    ("dgnushack.el"
+        "a hack to set the load path for byte-compiling"
+        (news  path)
+        "lisp/gnus/")
+    ("earcon.el"
+        "Sound effects for messages"
+        (news fun sound)
+        "lisp/gnus/")
+    ("gnus-art.el"
+        "article mode commands for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-async.el"
+        "asynchronous support for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-audio.el"
+        "Sound effects for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-bcklg.el"
+        "backlog functions for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-cache.el"
+        "cache interface for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-cite.el"
+        "parse citations in articles for Gnus"
+        (news  mail)
+        "lisp/gnus/")
+    ("gnus-cus.el"
+        "customization commands for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-demon.el"
+        "daemonic Gnus behaviour"
+        (news)
+        "lisp/gnus/")
+    ("gnus-dup.el"
+        "suppression of duplicate articles in Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-eform.el"
+        "a mode for editing forms for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-ems.el"
+        "functions for making Gnus work under different Emacsen"
+        (news)
+        "lisp/gnus/")
+    ("gnus-gl.el"
+        "an interface to GroupLens for Gnus"
+        (news  score)
+        "lisp/gnus/")
+    ("gnus-group.el"
+        "group mode commands for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-int.el"
+        "backend interface functions for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-kill.el"
+        "kill commands for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-load.el"
+        "automatically extracted custom dependencies"
         nil
         "lisp/gnus/")
-    ("gnus-virt.el"
-        "framework for \"virtual\" newsgroups"
+    ("gnus-logic.el"
+        "advanced scoring code for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-mh.el"
+        "mh-e interface for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-move.el"
+        "commands for moving Gnus from one server to another"
+        (news)
+        "lisp/gnus/")
+    ("gnus-msg.el"
+        "mail and post interface for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-nocem.el"
+        "NoCeM pseudo-cancellation treatment"
+        (news)
+        "lisp/gnus/")
+    ("gnus-picon.el"
+        "displaying pretty icons in Gnus"
+        (news xpm annotation glyph faces)
+        "lisp/gnus/")
+    ("gnus-range.el"
+        "range and sequence functions for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-salt.el"
+        "alternate summary mode interfaces for Gnus"
         nil
         "lisp/gnus/")
-    ("gnusmail.el"
-        "mail reply commands for GNUS newsreader"
+    ("gnus-score.el"
+        "scoring code for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-setup.el"
+        "Initialization & Setup for Gnus 5"
+        (news)
+        "lisp/gnus/")
+    ("gnus-soup.el"
+        "SOUP packet writing support for Gnus"
+        (news  mail)
+        "lisp/gnus/")
+    ("gnus-spec.el"
+        "format spec functions for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-srvr.el"
+        "virtual server support for Gnus"
         (news)
         "lisp/gnus/")
-    ("gnusmisc.el"
-        "miscellaneous commands for GNUS newsreader"
+    ("gnus-start.el"
+        "startup functions for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-sum.el"
+        "summary mode commands for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-topic.el"
+        "a folding minor mode for Gnus group buffers"
+        (news)
+        "lisp/gnus/")
+    ("gnus-undo.el"
+        "minor mode for undoing in Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-util.el"
+        "utility functions for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-uu.el"
+        "extract (uu)encoded files in Gnus"
+        nil
+        "lisp/gnus/")
+    ("gnus-vm.el"
+        "vm interface for Gnus"
+        (news  mail)
+        "lisp/gnus/")
+    ("gnus-win.el"
+        "window configuration functions for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("gnus-xmas.el"
+        "Gnus functions for XEmacs"
         (news)
         "lisp/gnus/")
-    ("gnuspost.el"
-        "post news commands for GNUS newsreader"
+    ("gnus.el"
+        "a newsreader for GNU Emacs"
+        (news  mail)
+        "lisp/gnus/")
+    ("mailheader.el"
+        "Mail header parsing, merging, formatting"
+        (tools  mail  news)
+        "lisp/gnus/")
+    ("md5.el"
+        "MD5 Message Digest Algorithm"
+        nil
+        "lisp/gnus/")
+    ("message.el"
+        "composing mail and news messages"
+        (mail  news)
+        "lisp/gnus/")
+    ("messagexmas.el"
+        "XEmacs extensions to message"
+        (mail  news)
+        "lisp/gnus/")
+    ("messcompat.el"
+        "making message mode compatible with mail mode"
+        (mail  news)
+        "lisp/gnus/")
+    ("nnbabyl.el"
+        "rmail mbox access for Gnus"
+        (news  mail)
+        "lisp/gnus/")
+    ("nndb.el"
+        "nndb access for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("nndir.el"
+        "single directory newsgroup access for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("nndoc.el"
+        "single file access for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("nndraft.el"
+        "draft article access for Gnus"
         (news)
         "lisp/gnus/")
-    ("mhspool.el"
-        "MH folder access using NNTP for GNU Emacs"
-        (mail  news)
+    ("nneething.el"
+        "random file access for Gnus"
+        (news  mail)
+        "lisp/gnus/")
+    ("nnfolder.el"
+        "mail folder access for Gnus"
+        (mail)
+        "lisp/gnus/")
+    ("nngateway.el"
+        "posting news via mail gateways"
+        (news  mail)
+        "lisp/gnus/")
+    ("nnheader.el"
+        "header access macros for Gnus and its backends"
+        (news)
+        "lisp/gnus/")
+    ("nnheaderxm.el"
+        "making Gnus backends work under XEmacs"
+        (news)
+        "lisp/gnus/")
+    ("nnkiboze.el"
+        "select virtual news access for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("nnmail.el"
+        "mail support functions for the Gnus mail backends"
+        (news  mail)
+        "lisp/gnus/")
+    ("nnmbox.el"
+        "mail mbox access for Gnus"
+        (news  mail)
+        "lisp/gnus/")
+    ("nnmh.el"
+        "mhspool access for Gnus"
+        (news  mail)
+        "lisp/gnus/")
+    ("nnml.el"
+        "mail spool access for Gnus"
+        (news  mail)
+        "lisp/gnus/")
+    ("nnoo.el"
+        "OO Gnus Backends"
+        (news)
+        "lisp/gnus/")
+    ("nnsoup.el"
+        "SOUP access for Gnus"
+        (news  mail)
         "lisp/gnus/")
     ("nnspool.el"
-        "spool access using NNTP for GNU Emacs"
+        "spool access for GNU Emacs"
         (news)
         "lisp/gnus/")
     ("nntp.el"
-        "GNUS interface to NNTP servers"
-        nil
+        "nntp access for Gnus"
+        (news)
         "lisp/gnus/")
-    ("old-nntp.el"
-        "NNTP (RFC977) Interface for GNU Emacs"
+    ("nnvirtual.el"
+        "virtual newsgroups access for Gnus"
+        (news)
+        "lisp/gnus/")
+    ("nnweb.el"
+        "retrieving articles via web search engines"
         (news)
         "lisp/gnus/")
-    ("html-mode.el"
-        "Major mode for editing HTML hypertext documents for the WWW"
+    ("parse-time.el"
+        "Parsing time strings"
+        (util)
+        "lisp/gnus/")
+    ("pop3.el"
+        "Post Office Protocol (RFC 1460) interface"
+        (mail  pop3)
+        "lisp/gnus/")
+    ("score-mode.el"
+        "mode for editing Gnus score files"
+        (news  mail)
+        "lisp/gnus/")
+    ("smiley.el"
+        "displaying smiley faces"
+        (fun)
+        "lisp/gnus/")
+    ("hm--html-menu.el"
+        "A menu for the hm--html-mode."
+        nil
+        "lisp/hm--html-menus/")
+    ("hm--html-mode.el"
+        "Major mode for editing HTML documents for the WWW"
         (hypermedia languages help docs wp)
         "lisp/hm--html-menus/")
     ("html-view.el"
         "routines for communicating with a NCSA Mosaic process"
-        nil
+        (comm unix wp help)
         "lisp/hm--html-menus/")
     ("tmpl-minor-mode.el"
         "Template Minor Mode"
-        nil
+        (data tools)
         "lisp/hm--html-menus/")
-    ("hact.el"
-        "Hyperbole button action handling."
-        (hypermedia)
-        "lisp/hyperbole/")
-    ("hactypes.el"
-        "Default action types for Hyperbole."
-        (extensions  hypermedia)
-        "lisp/hyperbole/")
-    ("hargs.el"
-        "Obtains user input through Emacs for Hyperbole"
-        (extensions  hypermedia)
-        "lisp/hyperbole/")
-    ("hbdata.el"
-        "Hyperbole button attribute accessor methods."
-        (hypermedia)
-        "lisp/hyperbole/")
-    ("hbmap.el"
-        "Hyperbole button map maintenance for queries and lookups."
-        (hypermedia  matching)
-        "lisp/hyperbole/")
-    ("hbut.el"
-        "Hyperbole button constructs."
-        (extensions  hypermedia)
-        "lisp/hyperbole/")
-    ("hgnus.el"
-        "Support Hyperbole buttons in news reader/poster: GNUS."
-        (hypermedia  news)
-        "lisp/hyperbole/")
-    ("hhist.el"
-        "Maintains history of Hyperbole buttons selected."
-        (hypermedia)
-        "lisp/hyperbole/")
-    ("hib-doc-id.el"
-        "Implicit button type for document id index entries."
-        (docs  extensions  hypermedia)
-        "lisp/hyperbole/")
-    ("hib-kbd.el"
-        "Implicit button type for key sequences delimited with {}."
-        (extensions  hypermedia)
-        "lisp/hyperbole/")
-    ("hibtypes.el"
-        "Hyperbole System Implicit Button Types."
-        (extensions  hypermedia)
-        "lisp/hyperbole/")
-    ("hinit.el"
-        "Standard initializations for Hyperbole hypertext system."
-        (hypermedia)
-        "lisp/hyperbole/")
-    ("hlvar.el"
-        "Permits use of Hyperbole variables in local variable lists."
-        (extensions  hypermedia)
-        "lisp/hyperbole/")
-    ("hmail.el"
-        "Support for Hyperbole buttons embedded in e-mail messages."
-        (hypermedia  mail)
-        "lisp/hyperbole/")
-    ("hmh.el"
-        "Support for Hyperbole buttons in mail reader: Mh."
-        (hypermedia  mail)
-        "lisp/hyperbole/")
-    ("hmoccur.el"
-        "Multi-buffer or multi-file regexp occurrence location."
-        (hypermedia  matching)
-        "lisp/hyperbole/")
-    ("hmous-info.el"
-        "Walks through Info networks using one key."
-        (docs  help  hypermedia  mouse)
-        "lisp/hyperbole/")
-    ("hmouse-drv.el"
-        "Smart Key/Mouse driver functions."
-        (hypermedia  mouse)
-        "lisp/hyperbole/")
-    ("hmouse-key.el"
-        "Load \"hmouse-sh.el\" or \"hmouse-reg.el\" for Smart Key bindings."
-        (hypermedia  mouse)
-        "lisp/hyperbole/")
-    ("hmouse-mod.el"
-        "Action Key acts as CONTROL modifier and Assist Key as META modifier."
-        (hypermedia  mouse)
-        "lisp/hyperbole/")
-    ("hmouse-reg.el"
-        "System-dependent Smart Mouse Key bindings (no shift key)."
-        (hypermedia  mouse)
-        "lisp/hyperbole/")
-    ("hmouse-sh.el"
-        "System-dependent Smart Mouse Key bindings (using shift key)."
-        (hypermedia  mouse)
-        "lisp/hyperbole/")
-    ("hmouse-tag.el"
-        "Smart Key support of programming language tags location."
-        (c  hypermedia  mouse  oop  tools)
-        "lisp/hyperbole/")
-    ("hpath.el"
-        "Hyperbole support routines for handling UNIX paths.  "
-        (comm  hypermedia  unix)
-        "lisp/hyperbole/")
-    ("hrmail.el"
-        "Support for Hyperbole buttons in mail reader: Rmail."
-        (hypermedia  mail)
-        "lisp/hyperbole/")
-    ("hsite-ex.el"
-        "Site-specific setup for Hyperbole"
-        (hypermedia  local)
-        "lisp/hyperbole/")
-    ("hsite.el"
-        "Site-specific setup for Hyperbole"
-        (hypermedia  local)
-        "lisp/hyperbole/")
-    ("hsmail.el"
-        "Support for Hyperbole buttons in mail composer: mail and mh-letter."
-        (hypermedia  mail)
-        "lisp/hyperbole/")
-    ("hsys-hbase.el"
-        "Hyperbole support for the Hyperbase system."
-        (comm  hypermedia)
-        "lisp/hyperbole/")
-    ("hsys-w3.el"
-        "Hyperbole support for Emacs W3 World-Wide Web (WWW) browsing."
-        (comm  help  hypermedia)
-        "lisp/hyperbole/")
-    ("hsys-wais.el"
-        "Hyperbole support for WAIS browsing."
-        (comm  help  hypermedia)
-        "lisp/hyperbole/")
-    ("hsys-www.el"
-        "Hyperbole support for old CERN command line WWW browsing."
-        (comm  help  hypermedia)
-        "lisp/hyperbole/")
-    ("htz.el"
-        "Timezone-based time and date support for Hyperbole."
-        (calendar  hypermedia)
-        "lisp/hyperbole/")
-    ("hui-em19-b.el"
-        "GNU Emacs V19 button highlighting and flashing support."
-        (faces  hypermedia)
-        "lisp/hyperbole/")
-    ("hui-ep-but.el"
-        "Support for highlighting/flashing buttons under Epoch."
-        (faces  hypermedia)
-        "lisp/hyperbole/")
-    ("hui-epV4-b.el"
-        "Support color and flashing of hyper-buttons under Epoch V4"
-        (faces  hypermedia)
-        "lisp/hyperbole/")
-    ("hui-menu.el"
-        "InfoDock/Emacs menubar menu of Hyperbole commands."
-        (hypermedia  mouse)
-        "lisp/hyperbole/")
-    ("hui-menus.el"
-        "One line command menus for Hyperbole"
-        (hypermedia  mouse)
-        "lisp/hyperbole/")
-    ("hui-mouse.el"
-        "Use key or mouse key for many functions, e.g. Hypb menus."
-        (hypermedia  mouse)
-        "lisp/hyperbole/")
-    ("hui-window.el"
-        "Smart Mouse Key window and modeline depress/release actions."
-        (hypermedia  mouse)
-        "lisp/hyperbole/")
-    ("hui-xe-but.el"
-        "XEmacs button highlighting and flashing support."
-        (faces  hypermedia)
-        "lisp/hyperbole/")
-    ("hui.el"
-        "GNU Emacs User Interface to Hyperbole"
-        (hypermedia)
-        "lisp/hyperbole/")
-    ("hvar.el"
-        "Variable manipulation routines for Hyperbole."
-        (extensions  hypermedia)
-        "lisp/hyperbole/")
-    ("hversion.el"
-        "Hyperbole version, system and load path information."
-        (hypermedia)
-        "lisp/hyperbole/")
-    ("hvm.el"
-        "Support Hyperbole buttons in mail reader: Vm."
-        (hypermedia  mail)
-        "lisp/hyperbole/")
-    ("hypb.el"
-        "Miscellaneous Hyperbole support features."
-        (extensions  hypermedia)
-        "lisp/hyperbole/")
-    ("hyperbole.el"
-        "Sets up Hyperbole for autoloading and use."
-        (hypermedia)
-        "lisp/hyperbole/")
-    ("set.el"
-        "Provide general mathematical operators on unordered sets."
-        (extensions  tools)
-        "lisp/hyperbole/")
-    ("wconfig.el"
-        "Saves and yanks from save ring of window configurations."
-        (frames  hypermedia)
-        "lisp/hyperbole/")
-    ("wrolo-logic.el"
-        "Performs logical retrievals on rolodex files"
-        (hypermedia  matching)
-        "lisp/hyperbole/")
-    ("wrolo-menu.el"
-        "Pulldown and popup menus of Hyperbole rolodex commands."
-        (hypermedia  matching  mouse)
-        "lisp/hyperbole/")
-    ("wrolo.el"
-        "Hierarchical, multi-file, easy to use rolodex system"
-        (hypermedia  matching)
-        "lisp/hyperbole/")
-    ("kfile.el"
-        "Save and restore kotls from files."
-        (outlines  wp)
-        "lisp/hyperbole/kotl/")
-    ("kfill.el"
-        "Fill and justify koutline cells (adapted from Kyle Jones' filladapt)."
-        (outlines  wp)
-        "lisp/hyperbole/kotl/")
-    ("kimport.el"
-        "Convert and insert other outline file formats into koutlines."
-        (data  outlines  wp)
-        "lisp/hyperbole/kotl/")
-    ("klabel.el"
-        "Display label handling for koutlines."
-        (outlines  wp)
-        "lisp/hyperbole/kotl/")
-    ("klink.el"
-        "Implicit reference to a kcell action type, for use in koutlines."
-        (extensions  hypermedia  outlines  wp)
-        "lisp/hyperbole/kotl/")
-    ("kmenu.el"
-        "Pulldown and popup menus for kotl-mode, the Hyperbole Outliner."
-        (mouse  outlines  wp)
-        "lisp/hyperbole/kotl/")
-    ("knode.el"
-        "Generic nodes for use as elements in data structures."
-        (extensions  hypermedia  outlines)
-        "lisp/hyperbole/kotl/")
-    ("kotl-mode.el"
-        "Major mode for editing koutlines and associated commands."
-        (data  hypermedia  outlines  wp)
-        "lisp/hyperbole/kotl/")
-    ("kotl.el"
-        "Internal representation of outline kcells used by kviews."
-        (outlines  wp)
-        "lisp/hyperbole/kotl/")
-    ("kprop-em19.el"
-        "Koutline text property handling under Emacs 19."
-        (outlines  wp)
-        "lisp/hyperbole/kotl/")
-    ("kprop-xe.el"
-        "Koutline text property handling under XEmacs."
-        (outlines  wp)
-        "lisp/hyperbole/kotl/")
-    ("kproperty.el"
-        "Wrapper for koutline text property implementations."
-        (outlines  wp)
-        "lisp/hyperbole/kotl/")
-    ("kview.el"
-        "Display handling of koutlines."
-        (outlines  wp)
-        "lisp/hyperbole/kotl/")
+    ("iso-acc.el"
+        "minor mode providing electric accent keys"
+        (i18n)
+        "lisp/iso/")
     ("iso-ascii.el"
         "set up char tables for ISO 8859/1 on ASCII terminals."
         (i18n)
         "lisp/iso/")
+    ("iso-cvt.el"
+        "translate to ISO 8859-1 from/to net/TeX conventions"
+        (tex  iso  latin  i18n)
+        "lisp/iso/")
     ("iso-insert.el"
         "insert functions for ISO 8859/1."
         (i18n)
@@ -642,6 +802,10 @@
         "miscellaneous functions for dealing with Swedish."
         (i18n)
         "lisp/iso/")
+    ("mc-remail.el"
+        "Remailer support for Mailcrypt"
+        nil
+        "lisp/mailcrypt/")
     ("mh-comp.el"
         "mh-e functions for composing messages"
         nil
@@ -672,11 +836,11 @@
         "lisp/mh-e/")
     ("abbrev.el"
         "abbrev mode commands for Emacs"
-        (internal  abbrev)
+        (abbrev)
         "lisp/modes/")
-    ("ada.el"
-        "Ada editing support package in GNUlisp.  v1.0"
-        (languages)
+    ("ada-mode.el"
+        "An Emacs major-mode for editing Ada source."
+        nil
         "lisp/modes/")
     ("arc-mode.el"
         "simple editing of archives"
@@ -686,13 +850,17 @@
         "mode for editing assembler code"
         (tools  languages)
         "lisp/modes/")
+    ("auto-show.el"
+        "perform automatic horizontal scrolling as point moves"
+        (scroll display minor-mode)
+        "lisp/modes/")
     ("awk-mode.el"
         "AWK code editing commands for Emacs"
         (unix  languages)
         "lisp/modes/")
     ("bib-mode.el"
         "bib-mode, major mode for editing bib files."
-        (bib  wp)
+        (bib)
         "lisp/modes/")
     ("bibtex.el"
         "BibTeX mode for GNU Emacs"
@@ -702,6 +870,10 @@
         "edit C comments"
         (c)
         "lisp/modes/")
+    ("c-style.el"
+        "sets c-style control variables."
+        nil
+        "lisp/modes/")
     ("cc-compat.el"
         "cc-mode compatibility with c-mode.el confusion"
         (c languages oop)
@@ -715,13 +887,33 @@
         (c languages oop)
         "lisp/modes/")
     ("cc-mode.el"
-        "major mode for editing C, C++, and Objective-C code"
+        "major mode for editing C, C++, Objective-C, and Java code"
         (c languages oop)
         "lisp/modes/")
+    ("cl-indent.el"
+        "enhanced lisp-indent mode"
+        (lisp  tools)
+        "lisp/modes/")
     ("cmacexp.el"
         "expand C macros in a region"
         (c)
         "lisp/modes/")
+    ("enriched.el"
+        "read and save files in text/enriched format"
+        (wp  faces)
+        "lisp/modes/")
+    ("executable.el"
+        "base functionality for executable interpreter scripts"
+        (languages  unix)
+        "lisp/modes/")
+    ("f90.el"
+        "Fortran-90 mode (free format)"
+        (fortran  f90  languages)
+        "lisp/modes/")
+    ("follow.el"
+        "Minor mode, Synchronize windows showing the same buffer."
+        (display  window  minor-mode)
+        "lisp/modes/")
     ("fortran-misc.el"
         "Routines than can be used with fortran mode."
         (languages)
@@ -732,16 +924,24 @@
         "lisp/modes/")
     ("hideif.el"
         "hides selected code within ifdef."
-        (c)
+        (c  outlines)
         "lisp/modes/")
     ("hideshow.el"
         "minor mode cmds to selectively display blocks of code"
-        nil
+        (c c++ lisp tools editing)
         "lisp/modes/")
     ("icon.el"
         "mode for editing Icon code"
         (languages)
         "lisp/modes/")
+    ("imenu.el"
+        "Framework for mode-specific buffer indexes."
+        (tools)
+        "lisp/modes/")
+    ("ksh-mode.el"
+        "sh (ksh, bash) script editing mode for GNU Emacs."
+        (shell  korn  bourne  sh  ksh  bash)
+        "lisp/modes/")
     ("lisp-mnt.el"
         "minor mode for Emacs Lisp maintainers"
         (docs)
@@ -750,18 +950,14 @@
         "Lisp mode, and its idiosyncratic commands."
         (lisp  languages)
         "lisp/modes/")
-    ("makefile.el"
+    ("m4-mode.el"
+        "m4 code editing commands for Emacs"
+        (languages  faces)
+        "lisp/modes/")
+    ("make-mode.el"
         "makefile editing commands for Emacs"
         (unix  tools)
         "lisp/modes/")
-    ("mim-mode.el"
-        "Mim (MDL in MDL) mode."
-        (languages)
-        "lisp/modes/")
-    ("mim-syntax.el"
-        "syntax checker for Mim (MDL)."
-        (languages)
-        "lisp/modes/")
     ("modula2.el"
         "Modula-2 editing support package"
         (languages)
@@ -802,13 +998,17 @@
         "major mode for editing and running Prolog under Emacs"
         (languages)
         "lisp/modes/")
+    ("python-mode.el"
+        "Major mode for editing Python programs"
+        (python languages oop)
+        "lisp/modes/")
     ("rexx-mode.el"
         "major mode for editing REXX program files"
         (languages)
         "lisp/modes/")
     ("rsz-minibuf.el"
         "dynamically resize minibuffer to display entire contents"
-        nil
+        (minibuffer  window  frames  display)
         "lisp/modes/")
     ("scheme.el"
         "Scheme mode, and its idiosyncratic commands."
@@ -822,18 +1022,26 @@
         "mail sending commands for Emacs."
         (mail)
         "lisp/modes/")
-    ("sgml-mode.el"
-        "SGML-editing mode"
-        (wp)
+    ("sh-script.el"
+        "shell-script editing commands for Emacs"
+        (languages  unix)
         "lisp/modes/")
     ("simula.el"
         "SIMULA 87 code editing commands for Emacs"
         (languages)
         "lisp/modes/")
+    ("tcl.el"
+        "Tcl code editing commands for Emacs"
+        (languages tcl modes)
+        "lisp/modes/")
     ("tex-mode.el"
         "TeX, LaTeX, and SliTeX mode commands."
         nil
         "lisp/modes/")
+    ("texinfo.el"
+        "major mode for editing Texinfo files"
+        (tex wp)
+        "lisp/modes/")
     ("text-mode.el"
         "text mode, and its idiosyncratic commands."
         nil
@@ -842,170 +1050,214 @@
         "minor mode for editing of two-column text"
         nil
         "lisp/modes/")
+    ("verilog-mode.el"
+        "major mode for editing verilog source in Emacs"
+        (languages)
+        "lisp/modes/")
+    ("vhdl-mode.el"
+        "major mode for editing VHDL code"
+        (languages vhdl)
+        "lisp/modes/")
     ("view-less.el"
         "Minor mode for browsing files with keybindings like `less'"
-        nil
+        (wp unix)
         "lisp/modes/")
     ("view.el"
         "peruse file or buffer without editing."
         (wp unix)
         "lisp/modes/")
-    ("br-c++-ft.el"
-        "C++ OO-Browser class and member functions."
-        (c  oop  tools)
-        "lisp/oobr/")
-    ("br-c++.el"
-        "Support routines for C++ inheritance browsing."
-        (c  oop  tools)
-        "lisp/oobr/")
-    ("br-c-ft.el"
-        "OO-Browser C construct handling."
-        (c  tools)
-        "lisp/oobr/")
-    ("br-clos-ft.el"
-        "CLOS OO-Browser class and element functions."
-        (lisp  oop  tools)
-        "lisp/oobr/")
-    ("br-clos.el"
-        "Support routines for CLOS inheritance browsing."
-        (lisp  oop  tools)
-        "lisp/oobr/")
-    ("br-compl.el"
-        "Most functions for performing completion on OO constructs."
-        (matching  oop  tools)
-        "lisp/oobr/")
-    ("br-eif-ft.el"
-        "Eiffel OO-Browser class and feature functions."
-        (oop  tools)
-        "lisp/oobr/")
-    ("br-eif.el"
-        "Support routines for Eiffel inheritance browsing and error parsing."
-        (oop  tools)
-        "lisp/oobr/")
-    ("br-env.el"
-        "OO-Browser Environment support functions."
-        (oop  tools)
-        "lisp/oobr/")
-    ("br-ftr.el"
-        "OO-Browser feature browsing support."
-        (oop  tools)
-        "lisp/oobr/")
-    ("br-info.el"
-        "Support routines for Info file hierarchy browsing."
-        (docs  help  hypermedia)
-        "lisp/oobr/")
-    ("br-init.el"
-        "OO-Browser per Emacs session initialization."
-        (oop  tools)
-        "lisp/oobr/")
-    ("br-lib.el"
-        "OO-Browser support functions."
-        (oop  tools)
-        "lisp/oobr/")
-    ("br-menu.el"
-        "Pulldown and popup menus for the OO-Browser."
-        (mouse  oop  tools)
-        "lisp/oobr/")
-    ("br-objc-ft.el"
-        "Objective-C OO-Browser class and feature functions."
-        (c  oop  tools)
-        "lisp/oobr/")
-    ("br-objc.el"
-        "Support routines for Objective-C inheritance browsing."
-        (c  oop  tools)
-        "lisp/oobr/")
-    ("br-site.el"
-        "Site OO-Browser per Emacs session initialization."
-        (local  oop  tools)
-        "lisp/oobr/")
-    ("br-smt.el"
-        "Support routines for Smalltalk inheritance browsing and error parsing."
-        (oop  tools)
-        "lisp/oobr/")
-    ("br-start.el"
-        "Select language and invoke OO-Browser."
-        (oop  tools)
-        "lisp/oobr/")
-    ("br-tree.el"
-        "Interface between textual and graphical OO-Browsers."
-        (mouse  oop  tools)
-        "lisp/oobr/")
-    ("br-vers.el"
-        "OO-Browser revision number as 'br-version' variable."
-        (oop  tools)
-        "lisp/oobr/")
-    ("br.el"
-        "Browse object-oriented code."
-        (matching  oop  tools)
-        "lisp/oobr/")
-    ("c++-browse.el"
-        "C++ source code browser."
-        (c  oop  tools)
-        "lisp/oobr/")
-    ("clos-brows.el"
-        "Common Lisp/CLOS source code browser."
-        (lisp  oop  tools)
-        "lisp/oobr/")
-    ("eif-browse.el"
-        "Eiffel source code browser."
-        (oop  tools)
-        "lisp/oobr/")
-    ("eif-calls.el"
-        "Produce first level static call tree for Eiffel class."
-        (oop  tools)
-        "lisp/oobr/")
-    ("eif-ise-er.el"
-        "Parses ISE's Eiffel error messages; compiles Eiffel classes."
-        (oop  tools)
-        "lisp/oobr/")
-    ("hash-test.el"
-        "Interactively test functions from hasht.el."
-        (extensions  maint  tools)
-        "lisp/oobr/")
-    ("hasht.el"
-        "Create hash tables from lists and operate on them."
-        (extensions  tools)
-        "lisp/oobr/")
-    ("hmouse-br.el"
-        "Hyperbole Key control for the OO-Browser."
-        (mouse  oop  tools)
-        "lisp/oobr/")
-    ("info-brows.el"
-        "Support routines for Info inheritance browsing and error parsing."
-        (docs  help  hypermedia)
-        "lisp/oobr/")
-    ("objc-brows.el"
-        "Objective-C source code browser."
-        (c  oop  tools)
-        "lisp/oobr/")
-    ("smt-browse.el"
-        "Smalltalk source code browser."
-        (oop  tools)
-        "lisp/oobr/")
+    ("vrml-mode.el"
+        "major mode for editing VRML (.wrl) files"
+        (languages vrml modes)
+        "lisp/modes/")
+    ("whitespace-mode.el"
+        "minor mode for making whitespace visible"
+        (modes  extensions)
+        "lisp/modes/")
+    ("winmgr-mode.el"
+        "generic window manager mode"
+        (languages)
+        "lisp/modes/")
+    ("xpm-mode.el"
+        "minor mode for editing XPM files"
+        (data tools)
+        "lisp/modes/")
+    ("xrdb-mode.el"
+        "mode for editing X resource database files"
+        (data languages)
+        "lisp/modes/")
+    ("latex-math-symbol.el"
+        "LaTeX math symbol decoder"
+        (latex  math  mule)
+        "lisp/mu/")
+    ("mu-bbdb.el"
+        "`attribution' function for mu-cite with BBDB."
+        nil
+        "lisp/mu/")
+    ("mu-cite.el"
+        "yet another citation tool for GNU Emacs"
+        (mail  news  citation)
+        "lisp/mu/")
+    ("std11-parse.el"
+        "STD 11 parser for GNU Emacs"
+        (mail  news  rfc 822  std 11)
+        "lisp/mu/")
+    ("std11.el"
+        "STD 11 functions for GNU Emacs"
+        (mail  news  rfc 822  std 11)
+        "lisp/mu/")
+    ("arabic-hooks.el"
+        "pre-loaded support for Arabic."
+        nil
+        "lisp/mule/")
+    ("arabic.el"
+        "minor mode for editing Arabic."
+        nil
+        "lisp/mule/")
+    ("canna.el"
+        "Interface to the Canna input method."
+        nil
+        "lisp/mule/")
+    ("chinese-hooks.el"
+        "pre-loaded support for Chinese."
+        nil
+        "lisp/mule/")
+    ("chinese.el"
+        "Chinese specific setup for XEmacs/Mule (not pre-loaded)."
+        nil
+        "lisp/mule/")
+    ("cyrillic-hooks.el"
+        "pre-loaded support for Cyrillic."
+        nil
+        "lisp/mule/")
+    ("ethiopic-hooks.el"
+        "pre-loaded support for Ethiopic."
+        nil
+        "lisp/mule/")
+    ("european-hooks.el"
+        "pre-loaded support for European languages."
+        nil
+        "lisp/mule/")
+    ("greek-hooks.el"
+        "pre-loaded support for Greek."
+        nil
+        "lisp/mule/")
+    ("hebrew-hooks.el"
+        "pre-loaded support for Hebrew."
+        nil
+        "lisp/mule/")
+    ("ipa-hooks.el"
+        "pre-loaded support for other languages."
+        nil
+        "lisp/mule/")
+    ("isearch-mule.el"
+        "incremental search with front-end inputting method"
+        (search)
+        "lisp/mule/")
+    ("japanese-hooks.el"
+        "pre-loaded support for Japanese."
+        nil
+        "lisp/mule/")
+    ("kinsoku.el"
+        "Kinsoku (line wrap) processing for XEmacs/Mule"
+        nil
+        "lisp/mule/")
+    ("korean-hooks.el"
+        "pre-loaded support for Korean."
+        nil
+        "lisp/mule/")
+    ("mule-category.el"
+        "category functions for XEmacs/Mule."
+        nil
+        "lisp/mule/")
+    ("mule-ccl.el"
+        "Code Conversion Language functions."
+        nil
+        "lisp/mule/")
+    ("mule-charset.el"
+        "Charset functions for Mule."
+        nil
+        "lisp/mule/")
+    ("mule-cne.el"
+        "interface between input methods Canna and EGG."
+        nil
+        "lisp/mule/")
+    ("mule-coding.el"
+        "Coding-system functions for Mule."
+        nil
+        "lisp/mule/")
+    ("mule-debug.el"
+        "debugging functions for Mule."
+        nil
+        "lisp/mule/")
+    ("mule-files.el"
+        "File I/O functions for XEmacs/Mule."
+        nil
+        "lisp/mule/")
+    ("mule-keyboard.el"
+        "Direct input of multilingual chars from keyboard."
+        nil
+        "lisp/mule/")
+    ("mule-load.el"
+        "Load up all pre-loaded Mule Lisp files."
+        nil
+        "lisp/mule/")
+    ("mule-misc.el"
+        "Miscellaneous Mule functions."
+        nil
+        "lisp/mule/")
+    ("mule-process.el"
+        "Process functions for XEmacs/Mule."
+        nil
+        "lisp/mule/")
+    ("mule-x-init.el"
+        "initialization code for X Windows under MULE"
+        (mule x11)
+        "lisp/mule/")
+    ("thai-hooks.el"
+        "pre-loaded support for Thai."
+        nil
+        "lisp/mule/")
+    ("vietnamese-hooks-1.el"
+        "pre-loaded support for Vietnamese, part 1."
+        nil
+        "lisp/mule/")
+    ("vietnamese-hooks-2.el"
+        "pre-loaded support for Vietnamese, part 2."
+        nil
+        "lisp/mule/")
+    ("visual-mode.el"
+        "cursor motion, insertion, deletion, etc. in visual order"
+        nil
+        "lisp/mule/")
     ("add-log.el"
         "change log maintenance commands for Emacs"
         (maint)
         "lisp/packages/")
     ("apropos.el"
-        "faster apropos commands."
+        "apropos commands for users and programmers."
         (help)
         "lisp/packages/")
     ("array.el"
         "array editing commands for XEmacs"
         (extensions)
         "lisp/packages/")
-    ("auto-save.el"
-        "safer auto saving with support for ange-ftp and /tmp"
-        nil
-        "lisp/packages/")
     ("autoinsert.el"
         "automatic mode-dependent insertion of text into new files"
         nil
         "lisp/packages/")
     ("avoid.el"
-        "make mouse pointer stay out of the way of editing."
+        "make mouse pointer stay out of the way of editing"
         (mouse)
         "lisp/packages/")
+    ("big-menubar.el"
+        "an alternate menubar"
+        (mouse menubar)
+        "lisp/packages/")
+    ("blink-cursor.el"
+        "Blink the cursor on or off"
+        (display)
+        "lisp/packages/")
     ("blink-paren.el"
         "blink the matching paren, just like Zmacs"
         (faces)
@@ -1016,7 +1268,7 @@
         "lisp/packages/")
     ("buff-menu.el"
         "buffer menu main function and support functions."
-        nil
+        (extensions)
         "lisp/packages/")
     ("chistory.el"
         "list command history"
@@ -1026,10 +1278,6 @@
         "Scheme process in a buffer. Adapted from tea.el."
         (processes  lisp)
         "lisp/packages/")
-    ("column.el"
-        "display line and column in the mode line"
-        nil
-        "lisp/packages/")
     ("compare-w.el"
         "compare text between windows for Emacs."
         nil
@@ -1046,6 +1294,10 @@
         "code for handling all sorts of compressed and encrypted files"
         (extensions)
         "lisp/packages/")
+    ("cu-edit-faces.el"
+        "interactive face editing mode"
+        nil
+        "lisp/packages/")
     ("dabbrev.el"
         "dynamic abbreviation package"
         (abbrev expand completion)
@@ -1058,14 +1310,14 @@
         "remove Texinfo commands from a Texinfo source file"
         (tex  docs)
         "lisp/packages/")
-    ("diff.el"
-        "Run `diff' in compilation-mode."
-        (unix  tools)
-        "lisp/packages/")
     ("doctex.el"
         "grind GNU Emacs DOC file into LaTeX input"
         (tex  docs)
         "lisp/packages/")
+    ("edit-faces.el"
+        "interactive face editing mode"
+        nil
+        "lisp/packages/")
     ("emacsbug.el"
         "command to report Emacs bugs to appropriate mailing list."
         (maint)
@@ -1090,14 +1342,18 @@
         "treat a section of a buffer as a separate file"
         (extensions  tools)
         "lisp/packages/")
-    ("filladapt.el"
-        "adaptive fill; replacement for fill commands"
-        (wp)
-        "lisp/packages/")
     ("font-lock.el"
         "decorating source files with fonts/colors based on syntax"
         (languages  faces)
         "lisp/packages/")
+    ("fontl-hooks.el"
+        "pre-loaded stuff for font-lock."
+        nil
+        "lisp/packages/")
+    ("func-menu.el"
+        "Jump to a function within a buffer."
+        (tools  c  lisp)
+        "lisp/packages/")
     ("generic-sc.el"
         "generic interface to source control systems"
         (tools  unix)
@@ -1116,6 +1372,10 @@
         "lisp/packages/")
     ("icomplete.el"
         "minibuffer completion with incremental feedback"
+        (help  abbrev)
+        "lisp/packages/")
+    ("igrep.el"
+        "An improved interface to `grep`."
         nil
         "lisp/packages/")
     ("info.el"
@@ -1126,8 +1386,16 @@
         "info support functions package for Emacs"
         (help)
         "lisp/packages/")
+    ("ispell.el"
+        "spell checking using Ispell"
+        nil
+        "lisp/packages/")
+    ("jka-compr.el"
+        "reading/writing/loading compressed files"
+        (data)
+        "lisp/packages/")
     ("lazy-lock.el"
-        "Lazy demand-driven fontification for fast font-lock mode."
+        "Lazy demand-driven fontification for fast Font Lock mode."
         (faces files)
         "lisp/packages/")
     ("ledit.el"
@@ -1142,6 +1410,10 @@
         "print Emacs buffer on line printer."
         (unix)
         "lisp/packages/")
+    ("makeinfo.el"
+        "run makeinfo conveniently"
+        nil
+        "lisp/packages/")
     ("makesum.el"
         "generate key binding summary for Emacs"
         (help)
@@ -1150,14 +1422,14 @@
         "browse UNIX manual pages"
         (help)
         "lisp/packages/")
-    ("medit.el"
-        "front-end to the MEDIT package for editing MDL"
-        (languages)
-        "lisp/packages/")
     ("metamail.el"
         "Metamail interface for GNU Emacs"
         (mail  news  mime  multimedia)
         "lisp/packages/")
+    ("mic-paren.el"
+        "highlight matching parenthesises."
+        (languages  faces)
+        "lisp/packages/")
     ("mime-compose.el"
         "mime-compose.el ---"
         nil
@@ -1174,10 +1446,18 @@
         "highlight (un)matching parens and whole expressions"
         (languages  faces)
         "lisp/packages/")
+    ("pending-del.el"
+        "Making insertions replace any selected text."
+        nil
+        "lisp/packages/")
     ("ps-print.el"
         "Jim's Pretty-Good PostScript Generator for Emacs 19."
         (print  postscript)
         "lisp/packages/")
+    ("rcompile.el"
+        "run a compilation on a remote machine"
+        (tools  processes)
+        "lisp/packages/")
     ("recent-files.el"
         "Maintain menu of recently opened files."
         (menu  file)
@@ -1190,18 +1470,14 @@
         "process command line args from within a suspended Emacs job"
         (processes)
         "lisp/packages/")
-    ("rnews.el"
-        "USENET news reader for gnu emacs"
-        (news)
-        "lisp/packages/")
-    ("rnewspost.el"
-        "USENET news poster/mailer for GNU Emacs"
-        (mail  news)
-        "lisp/packages/")
     ("saveplace.el"
         "automatically save place in files."
         (bookmarks  placeholders)
         "lisp/packages/")
+    ("sccs.el"
+        "easy-to-use SCCS control from within Emacs"
+        nil
+        "lisp/packages/")
     ("server.el"
         "Lisp code for GNU Emacs running as server process."
         (processes)
@@ -1222,13 +1498,21 @@
         "terminal emulator for GNU Emacs."
         (comm  terminals)
         "lisp/packages/")
+    ("texinfmt.el"
+        "format Texinfo files into Info files."
+        nil
+        "lisp/packages/")
+    ("texnfo-upd.el"
+        "utilities for updating nodes and menus in Texinfo files"
+        (maint  tex  docs)
+        "lisp/packages/")
     ("time-stamp.el"
         "Maintain last change time stamps in files edited by Emacs"
         (tools)
         "lisp/packages/")
     ("time.el"
         "display time and load in mode line of Emacs."
-        (extensions)
+        nil
         "lisp/packages/")
     ("uncompress.el"
         "auto-decompression hook for visiting .Z files"
@@ -1250,26 +1534,54 @@
         "drive a version-control system from within Emacs"
         nil
         "lisp/packages/")
+    ("webjump.el"
+        "programmable Web hotlist"
+        (webjump web www browse-url)
+        "lisp/packages/")
+    ("webster-www.el"
+        "Look up a word in WWW Merriam-Webster dictionary"
+        (comm  hypermedia)
+        "lisp/packages/")
     ("xscheme.el"
         "run Scheme under Emacs"
         (languages  lisp)
         "lisp/packages/")
+    ("dll-debug.el"
+        "A slow implementation of dll for debugging."
+        (extensions  lisp)
+        "lisp/pcl-cvs/")
     ("about.el"
         "the About The Authors page (shameless self promotion)."
         nil
         "lisp/prim/")
+    ("advocacy.el"
+        "blatant XEmacs self promotion"
+        nil
+        "lisp/prim/")
     ("backquote.el"
         "Full backquote support for elisp.  Reverse compatible too."
         (extensions)
         "lisp/prim/")
+    ("buffer.el"
+        "buffer routines taken from C"
+        nil
+        "lisp/prim/")
     ("case-table.el"
         "code to extend the character set and support case tables."
         (i18n)
         "lisp/prim/")
+    ("cleantree.el"
+        "Remove out of date .elcs in lisp directories"
+        (internal)
+        "lisp/prim/")
     ("cmdloop.el"
         "support functions for the top-level command loop."
         nil
         "lisp/prim/")
+    ("console.el"
+        "miscellaneous console functions not written in C"
+        (internal)
+        "lisp/prim/")
     ("debug.el"
         "debuggers and related commands for XEmacs"
         nil
@@ -1286,6 +1598,10 @@
         "functions to manipulate environment variables."
         (processes  unix)
         "lisp/prim/")
+    ("events.el"
+        "event functions."
+        (internal)
+        "lisp/prim/")
     ("extents.el"
         "miscellaneous extent functions not written in C"
         (internal)
@@ -1294,6 +1610,10 @@
         "Lisp interface to the C \"face\" structure"
         (faces internal)
         "lisp/prim/")
+    ("files-nomule.el"
+        "file I/O stubs when not under Mule."
+        nil
+        "lisp/prim/")
     ("files.el"
         "file input and output commands for XEmacs."
         nil
@@ -1306,6 +1626,10 @@
         "detect absence of floating-point support in XEmacs runtime"
         (internal)
         "lisp/prim/")
+    ("format.el"
+        "read and save files in multiple formats"
+        (extensions)
+        "lisp/prim/")
     ("frame.el"
         "multi-frame management independent of window systems."
         (internal)
@@ -1314,9 +1638,13 @@
         "Lisp interface to C glyphs"
         (glyphs internal)
         "lisp/prim/")
+    ("gui.el"
+        "Basic GUI functions for XEmacs."
+        nil
+        "lisp/prim/")
     ("help.el"
         "help commands for XEmacs."
-        nil
+        (help  internal)
         "lisp/prim/")
     ("inc-vers.el"
         "load this to increment the recorded XEmacs version number."
@@ -1326,6 +1654,10 @@
         "indentation commands for XEmacs"
         (lisp languages tools)
         "lisp/prim/")
+    ("itimer-autosave.el"
+        "Autosave functions with itimers"
+        nil
+        "lisp/prim/")
     ("lisp.el"
         "Lisp editing commands for XEmacs"
         (lisp  languages)
@@ -1346,6 +1678,10 @@
         "miscellaneous functions for XEmacs"
         nil
         "lisp/prim/")
+    ("modeline.el"
+        "modeline hackery."
+        nil
+        "lisp/prim/")
     ("mouse.el"
         "window system-independent mouse support."
         (hardware)
@@ -1366,6 +1702,10 @@
         "edit Options command for XEmacs."
         nil
         "lisp/prim/")
+    ("overlay.el"
+        "overlay support."
+        (internal)
+        "lisp/prim/")
     ("page.el"
         "page motion commands for emacs."
         nil
@@ -1378,6 +1718,10 @@
         "commands for subprocesses; split out of simple.el"
         nil
         "lisp/prim/")
+    ("profile.el"
+        "basic profiling commands for XEmacs"
+        nil
+        "lisp/prim/")
     ("rect.el"
         "rectangle functions for XEmacs."
         (internal)
@@ -1418,10 +1762,18 @@
         "basic lisp subroutines for XEmacs"
         nil
         "lisp/prim/")
+    ("symbols.el"
+        "functions for working with symbols and symbol values"
+        nil
+        "lisp/prim/")
     ("tabify.el"
         "tab conversion commands for XEmacs"
         nil
         "lisp/prim/")
+    ("undo-stack.el"
+        "An \"undoable stack\" object."
+        (extensions)
+        "lisp/prim/")
     ("userlock.el"
         "handle file access contention between multiple users"
         (internal)
@@ -1430,6 +1782,74 @@
         "XEmacs window commands aside from those written in C."
         (extensions)
         "lisp/prim/")
+    ("winnt.el"
+        "Lisp routines for Windows NT."
+        nil
+        "lisp/prim/")
+    ("iso-sgml.el"
+        "display SGML entity references as ISO 8859-1 characters"
+        (sgml  html  iso  latin  i18n)
+        "lisp/psgml/")
+    ("psgml-api.el"
+        "Extra API functions for PSGML"
+        nil
+        "lisp/psgml/")
+    ("psgml-dtd.el"
+        "DTD parser for SGML-editing mode with parsing support"
+        nil
+        "lisp/psgml/")
+    ("psgml-edit.el"
+        "Editing commands for SGML-mode with parsing support"
+        nil
+        "lisp/psgml/")
+    ("psgml-fs.el"
+        "Format a SGML-file according to a style file"
+        nil
+        "lisp/psgml/")
+    ("psgml-html.el"
+        "HTML mode in conjunction with PSGML"
+        nil
+        "lisp/psgml/")
+    ("psgml-other.el"
+        "Part of SGML-editing mode with parsing support"
+        nil
+        "lisp/psgml/")
+    ("psgml-parse.el"
+        "Parser for SGML-editing mode with parsing support"
+        nil
+        "lisp/psgml/")
+    ("psgml-xemacs.el"
+        "Part of SGML-editing mode with parsing support"
+        nil
+        "lisp/psgml/")
+    ("psgml.el"
+        "SGML-editing mode with parsing support"
+        (languages)
+        "lisp/psgml/")
+    ("tempo.el"
+        "Flexible template insertion"
+        (extensions  languages  tools)
+        "lisp/psgml/")
+    ("quail-hanja-ksc.el"
+        "Quail-package for hanja (KSC5601) inputting"
+        nil
+        "lisp/quail/")
+    ("quail-ltn.el"
+        "European language input methods for quick typists"
+        nil
+        "lisp/quail/")
+    ("quail.el"
+        "Simple inputting method"
+        nil
+        "lisp/quail/")
+    ("rmail-kill.el"
+        "Mail filtering for rmail"
+        (mail)
+        "lisp/rmail/")
+    ("rmail-xemacs.el"
+        "Mouse and font support for RMAIL running on XEmacs"
+        (mail)
+        "lisp/rmail/")
     ("rmail.el"
         "main code of \"RMAIL\" mail reader for Emacs."
         (mail)
@@ -1478,33 +1898,61 @@
         "support SPARCworks manager ToolTalk messages"
         (sparcworks  tooltalk  messages)
         "lisp/sunpro/")
-    ("generic-win.el"
-        "generic window function initializtion"
+    ("AT386.el"
+        "terminal support package for IBM AT keyboards"
         (terminals)
         "lisp/term/")
-    ("ns-win.el"
-        "runtime initialization for the NeXTstep window system"
+    ("bg-mouse.el"
+        "GNU Emacs code for BBN Bitgraph mouse."
+        (hardware)
+        "lisp/term/")
+    ("internal.el"
+        "setup support for PC keyboards and screens, internal terminal"
+        nil
+        "lisp/term/")
+    ("keyswap.el"
+        "swap BS and DEL keys"
         (terminals)
         "lisp/term/")
-    ("post-tty-win.el"
-        "second phase of runtime initialization for tty's"
+    ("linux.el"
+        "define function key sequences for the Linux console"
+        (terminals)
+        "lisp/term/")
+    ("lk201.el"
+        "basic editing commands for XEmacs"
         nil
         "lisp/term/")
-    ("post-x-win.el"
-        "second phase of runtime initialization for X windows"
+    ("news.el"
+        "keypad and function key bindings for the Sony NEWS keyboard"
         (terminals)
         "lisp/term/")
-    ("pre-tty-win.el"
-        "first phase of runtime initialization for tty's"
+    ("pc-win.el"
+        "setup support for `PC windows' (whatever that is)."
+        nil
+        "lisp/term/")
+    ("scoansi.el"
+        "set up key names for SCO ansi console"
         nil
         "lisp/term/")
-    ("pre-x-win.el"
-        "first phase of runtime initialization for X windows"
+    ("sun-mouse.el"
+        "mouse handling for Sun windows"
+        (hardware)
+        "lisp/term/")
+    ("sun.el"
+        "keybinding for standard default sunterm keys"
         (terminals)
         "lisp/term/")
-    ("tty-win.el"
-        "runtime initialization for tty's if initial window system"
-        nil
+    ("sup-mouse.el"
+        "supdup mouse support for lisp machines"
+        (hardware)
+        "lisp/term/")
+    ("tty-init.el"
+        "initialization code for tty's"
+        (terminals)
+        "lisp/term/")
+    ("tvi970.el"
+        "terminal support for the Televideo 970"
+        (terminals)
         "lisp/term/")
     ("vt-control.el"
         "Common VTxxx control functions"
@@ -1514,18 +1962,210 @@
         "functions for LED control on VT-100 terminals & clones."
         (hardware)
         "lisp/term/")
-    ("x-win-sun.el"
-        "runtime initialization for Sun X servers and keyboards"
+    ("vt100.el"
+        "define VT100 function key sequences in function-key-map"
+        (terminals)
+        "lisp/term/")
+    ("win32-win.el"
+        "parse switches controlling interface with win32"
+        (terminals)
+        "lisp/term/")
+    ("wyse50.el"
+        "terminal support code for Wyse 50"
+        (terminals)
+        "lisp/term/")
+    ("xterm.el"
+        "define function key sequences for xterm"
         (terminals)
         "lisp/term/")
-    ("x-win-xfree86.el"
-        "runtime initialization for XFree86 servers"
-        (terminals)
-        "lisp/term/")
-    ("x-win.el"
-        "runtime initialization for X windows if initial window system"
-        (terminals)
-        "lisp/term/")
+    ("char-table.el"
+        "display table of charset"
+        (character  emacs/mule)
+        "lisp/tl/")
+    ("char-util.el"
+        "character utility"
+        (character  emacs/mule)
+        "lisp/tl/")
+    ("cless.el"
+        "Common lisp and Emacs Lisp source sharing"
+        (common lisp)
+        "lisp/tl/")
+    ("emu-e19.el"
+        "emu module for Emacs 19 and XEmacs 19"
+        (emulation  compatibility  mule  latin-1)
+        "lisp/tl/")
+    ("emu-x20.el"
+        "emu API implementation for XEmacs 20 with mule"
+        (emulation  compatibility  mule  xemacs)
+        "lisp/tl/")
+    ("emu-xemacs.el"
+        "emu API implementation for XEmacs"
+        (emulation  compatibility  xemacs)
+        "lisp/tl/")
+    ("emu.el"
+        "Emulation module for each Emacs variants"
+        (emulation  compatibility  nemacs  mule  emacs/mule  xemacs)
+        "lisp/tl/")
+    ("file-detect.el"
+        "Emacs Lisp file detection utility"
+        (install  module)
+        "lisp/tl/")
+    ("filename.el"
+        "file name filter"
+        (string  file name)
+        "lisp/tl/")
+    ("range.el"
+        "range functions"
+        (range)
+        "lisp/tl/")
+    ("richtext.el"
+        "read and save files in text/richtext format"
+        (wp  faces  mime  multimedia)
+        "lisp/tl/")
+    ("texi-util.el"
+        "Texinfo utility"
+        (texinfo)
+        "lisp/tl/")
+    ("tl-atype.el"
+        "atype functions"
+        (atype)
+        "lisp/tl/")
+    ("tl-list.el"
+        "utility functions about list"
+        (list)
+        "lisp/tl/")
+    ("tl-misc.el"
+        "miscellaneous utility of tl."
+        (load-path  module  structure)
+        "lisp/tl/")
+    ("tl-seq.el"
+        "sequence functions"
+        (sequence)
+        "lisp/tl/")
+    ("tl-str.el"
+        "Emacs Lisp Library module about string"
+        (string)
+        "lisp/tl/")
+    ("tu-comment.el"
+        "a comment out utility for Lisp programs."
+        (comment  lisp)
+        "lisp/tl/")
+    ("tu-replace.el"
+        "a replacing utility for GNU Emacs"
+        (replace)
+        "lisp/tl/")
+    ("gnus-art-mime.el"
+        "MIME extension for article mode of Gnus"
+        (news  mime  multimedia  multilingual  encoded-word)
+        "lisp/tm/")
+    ("gnus-charset.el"
+        "MIME charset extension for Gnus"
+        (news  mime  multimedia  multilingual  encoded-word)
+        "lisp/tm/")
+    ("gnus-mime-old.el"
+        "MIME extensions for Gnus 5.[01] and 5.[23]"
+        (news  mime  multimedia  multilingual  encoded-word)
+        "lisp/tm/")
+    ("gnus-mime.el"
+        "MIME extensions for Gnus"
+        (news  mime  multimedia  multilingual  encoded-word)
+        "lisp/tm/")
+    ("gnus-sum-mime.el"
+        "MIME extension for summary mode of Gnus"
+        (news  mime  multimedia  multilingual  encoded-word)
+        "lisp/tm/")
+    ("message-mime.el"
+        "MIME extensions for message.el"
+        (news  mime  multimedia  multilingual  encoded-word)
+        "lisp/tm/")
+    ("mime-setup.el"
+        "setup file for tm viewer and composer."
+        (mail  news  mime  multimedia  multilingual  encoded-word)
+        "lisp/tm/")
+    ("signature.el"
+        "a signature utility for GNU Emacs"
+        (mail  news  signature)
+        "lisp/tm/")
+    ("tm-bbdb.el"
+        "tm shared module for BBDB"
+        (mail  news  mime  multimedia  multilingual  bbdb)
+        "lisp/tm/")
+    ("tm-def.el"
+        "definition module for tm"
+        (mail  news  mime  multimedia  definition)
+        "lisp/tm/")
+    ("tm-edit-mc.el"
+        "Mailcrypt interface for tm-edit"
+        (mail  news  mime  multimedia  multilingual  security  pgp)
+        "lisp/tm/")
+    ("tm-edit.el"
+        "Simple MIME Composer for GNU Emacs"
+        (mail  news  mime  multimedia  multilingual)
+        "lisp/tm/")
+    ("tm-ew-d.el"
+        "RFC 2047 based encoded-word decoder for GNU Emacs"
+        (encoded-word  mime  multilingual  header  mail  news)
+        "lisp/tm/")
+    ("tm-ew-e.el"
+        "RFC 2047 based encoded-word encoder for GNU Emacs"
+        (encoded-word  mime  multilingual  header  mail  news)
+        "lisp/tm/")
+    ("tm-file.el"
+        "tm-view internal method for file extraction"
+        (mail  news  mime  multimedia  file  extract)
+        "lisp/tm/")
+    ("tm-ftp.el"
+        "tm-view internal method for anonymous ftp"
+        (anonymous ftp  mime  multimedia  mail  news)
+        "lisp/tm/")
+    ("tm-image.el"
+        "tm-view filter to display images in XEmacs or MULE buffers"
+        (image  picture  x-face  mime  multimedia  mail  news)
+        "lisp/tm/")
+    ("tm-mail.el"
+        "mail-mode extension."
+        (mail  mime  multimedia)
+        "lisp/tm/")
+    ("tm-mh-e.el"
+        "MIME extension for mh-e"
+        (mail  mh  mime  multimedia  encoded-word  multilingual)
+        "lisp/tm/")
+    ("tm-parse.el"
+        "MIME message parser"
+        (mail  news  mime  multimedia)
+        "lisp/tm/")
+    ("tm-partial.el"
+        "Grabbing all MIME \"message/partial\"s."
+        (mail  news  mime  multimedia  message/partial)
+        "lisp/tm/")
+    ("tm-pgp.el"
+        "tm-view internal methods for PGP."
+        (mail  news  mime  multimedia  pgp  security)
+        "lisp/tm/")
+    ("tm-play.el"
+        "decoder for tm-view.el"
+        (mail  news  mime  multimedia)
+        "lisp/tm/")
+    ("tm-rmail.el"
+        "MIME extension for RMAIL"
+        (mail  mime  multimedia  multilingual  encoded-word)
+        "lisp/tm/")
+    ("tm-setup.el"
+        "setup file for tm viewer."
+        (mail  news  mime  multimedia  multilingual  encoded-word)
+        "lisp/tm/")
+    ("tm-view.el"
+        "interactive MIME viewer for GNU Emacs"
+        (mail  news  mime  multimedia)
+        "lisp/tm/")
+    ("tm-vm.el"
+        "tm-MUA (MIME Extension module) for VM"
+        (mail  mime  multimedia  multilingual  encoded-word)
+        "lisp/tm/")
+    ("tmh-comp.el"
+        "tm-mh-e functions for composing messages"
+        (mail  mh  mime  multimedia  encoded-word  multilingual)
+        "lisp/tm/")
     ("abbrevlist.el"
         "list one abbrev table alphabetically ordered."
         (abbrev)
@@ -1550,29 +2190,17 @@
         "maintain autoloads in loaddefs.el."
         (maint)
         "lisp/utils/")
+    ("bench.el"
+        "benchmarking utility for emacsen"
+        (internal  maint)
+        "lisp/utils/")
     ("blessmail.el"
         "Decide whether movemail needs special privileges."
         (internal)
         "lisp/utils/")
-    ("cl-compat.el"
-        "Common Lisp extensions for GNU Emacs Lisp (compatibility)"
-        (extensions)
-        "lisp/utils/")
-    ("cl-extra.el"
-        "Common Lisp extensions for GNU Emacs Lisp (part two)"
-        (extensions)
-        "lisp/utils/")
-    ("cl-macs.el"
-        "Common Lisp extensions for GNU Emacs Lisp (part four)"
-        (extensions)
-        "lisp/utils/")
-    ("cl-seq.el"
-        "Common Lisp extensions for GNU Emacs Lisp (part three)"
-        (extensions)
-        "lisp/utils/")
-    ("cl.el"
-        "Common Lisp extensions for GNU Emacs Lisp"
-        (extensions  lisp)
+    ("browse-url.el"
+        "ask a WWW browser to load a URL"
+        (hypertext)
         "lisp/utils/")
     ("delbackspace.el"
         "rebind backspace and delete to be correct"
@@ -1580,12 +2208,32 @@
         "lisp/utils/")
     ("derived.el"
         "allow inheritance of major modes."
+        nil
+        "lisp/utils/")
+    ("detached-minibuf.el"
+        "Support a detached minibuffer for XEmacs."
+        (extensions)
+        "lisp/utils/")
+    ("docref.el"
+        "Simple cross references for Elisp documentation strings"
+        (docs  help  lisp)
+        "lisp/utils/")
+    ("edmacro.el"
+        "keyboard macro editor"
+        (abbrev)
+        "lisp/utils/")
+    ("eldoc.el"
+        "show function arglist or variable docstring in echo area"
         (extensions)
         "lisp/utils/")
     ("elp.el"
         "Emacs Lisp Profiler"
         (debugging lisp tools)
         "lisp/utils/")
+    ("facemenu.el"
+        "create a face menu for interactively adding fonts to text"
+        (faces)
+        "lisp/utils/")
     ("find-gc.el"
         "detect functions that call the garbage collector"
         (maint)
@@ -1598,30 +2246,38 @@
         "topic & keyword-based code finder"
         (help)
         "lisp/utils/")
+    ("floating-toolbar.el"
+        "popup toolbar support for XEmacs."
+        (lisp)
+        "lisp/utils/")
     ("flow-ctrl.el"
         "help for lusers on cu(1) or ttys with wired-in ^S/^Q flow control"
         (hardware)
         "lisp/utils/")
     ("foldout.el"
         "Folding extensions for outline-mode and outline-minor-mode."
-        (outlining)
+        (folding  outline)
         "lisp/utils/")
     ("forms-d2.el"
         "demo forms-mode"
-        (extensions)
+        nil
         "lisp/utils/")
     ("forms-pass.el"
-        "demo for forms-mode"
-        (extensions)
+        "passwd file demo for forms-mode"
+        nil
         "lisp/utils/")
     ("forms.el"
-        "Forms mode: edit a file as a form to fill in."
+        "Forms mode: edit a file as a form to fill in"
         (extensions)
         "lisp/utils/")
     ("highlight-headers.el"
         "highlighting message headers."
         (mail  news)
         "lisp/utils/")
+    ("live-icon.el"
+        "make frame icons represent the current frame contents"
+        nil
+        "lisp/utils/")
     ("loadhist.el"
         "lisp functions for working with feature groups"
         (internal)
@@ -1631,8 +2287,8 @@
         (mail)
         "lisp/utils/")
     ("mail-utils.el"
-        "Utility functions used both by rmail and rnews"
-        (mail  news  internal)
+        "utility functions used both by rmail and rnews"
+        (mail  news)
         "lisp/utils/")
     ("mailpost.el"
         "RMAIL coupler to /usr/uci/post mailer"
@@ -1640,7 +2296,7 @@
         "lisp/utils/")
     ("map-ynp.el"
         "General-purpose boolean question-asker"
-        (extensions)
+        (lisp  extensions)
         "lisp/utils/")
     ("meese.el"
         "protect the impressionable young minds of America"
@@ -1650,13 +2306,21 @@
         "Prompting for passwords semi-securely"
         (comm  extensions)
         "lisp/utils/")
+    ("pp.el"
+        "pretty printer for Emacs Lisp"
+        (lisp  tools  language  extensions)
+        "lisp/utils/")
+    ("redo.el"
+        "Redo/undo system for XEmacs"
+        (lisp  extensions)
+        "lisp/utils/")
     ("regi.el"
         "REGular expression Interpreting engine"
-        (extensions  matching  wp)
+        (extensions  matching)
         "lisp/utils/")
     ("reporter.el"
         "customizable bug reporting of lisp programs"
-        (mail  lisp)
+        (maint mail tools)
         "lisp/utils/")
     ("rfc822.el"
         "hairy rfc822 parser for mail and news and suchlike"
@@ -1666,6 +2330,18 @@
         "handle rings of items"
         (extensions)
         "lisp/utils/")
+    ("shadowfile.el"
+        "automatic file copying for Emacs 19"
+        (comm)
+        "lisp/utils/")
+    ("skeleton.el"
+        "Lisp language extension for writing statement skeletons"
+        (extensions  abbrev  languages  tools)
+        "lisp/utils/")
+    ("soundex.el"
+        "implement Soundex algorithm"
+        (matching)
+        "lisp/utils/")
     ("symbol-syntax.el"
         "find chars with symbol syntax"
         (matching)
@@ -1683,8 +2359,8 @@
         (extensions  languages)
         "lisp/utils/")
     ("timezone.el"
-        "timezone package for GNU Emacs"
-        (internal extensions news)
+        "time zone package for GNU Emacs"
+        (news)
         "lisp/utils/")
     ("tq.el"
         "utility to maintain a transaction queue"
@@ -1692,111 +2368,215 @@
         "lisp/utils/")
     ("trace.el"
         "tracing facility for Emacs Lisp functions"
-        (lisp  tools  debugging)
+        (tools  lisp)
+        "lisp/utils/")
+    ("uniquify.el"
+        "unique buffer names dependent on file name"
+        nil
         "lisp/utils/")
-    ("with-timeout.el"
-        "timeout hackery"
-        (extensions)
-        "lisp/utils/")
+    ("viper-ex.el"
+        "functions implementing the Ex commands for Viper"
+        nil
+        "lisp/viper/")
+    ("viper-init.el"
+        "some common definitions for Viper"
+        nil
+        "lisp/viper/")
+    ("viper-keym.el"
+        "Viper keymaps"
+        nil
+        "lisp/viper/")
+    ("viper-macs.el"
+        "functions implementing keyboard macros for Viper"
+        nil
+        "lisp/viper/")
+    ("viper-mous.el"
+        "mouse support for Viper"
+        nil
+        "lisp/viper/")
     ("viper-util.el"
         "Utilities used by viper.el"
         nil
         "lisp/viper/")
     ("viper.el"
         "A full-featured Vi emulator for GNU Emacs 19 and XEmacs 19,"
-        nil
+        (emulations)
         "lisp/viper/")
     ("vm-easymenu.el"
         "support the easymenu interface for defining a menu."
         (emulations)
         "lisp/vm/")
-    ("vms-patch.el"
-        "override parts of files.el for VMS."
-        (vms)
-        "lisp/vms/")
-    ("vmsproc.el"
-        "run asynchronous VMS subprocesses under Emacs"
-        (vms)
-        "lisp/vms/")
-    ("vmsx.el"
-        "run asynchronous VMS subprocesses under Emacs"
-        (vms)
-        "lisp/vms/")
     ("base64.el"
         "Base64 encoding functions"
         (extensions)
         "lisp/w3/")
-    ("md5.el"
-        "MD5 functionality for emacsen without it builtin"
-        (mail  news  tools  hypermedia)
+    ("css.el"
+        "Cascading Style Sheet parser"
+        nil
+        "lisp/w3/")
+    ("dsssl.el"
+        "DSSSL parser"
+        nil
+        "lisp/w3/")
+    ("font.el"
+        "New font model"
+        (faces)
+        "lisp/w3/")
+    ("images.el"
+        "Automatic image converters"
+        (images)
         "lisp/w3/")
     ("mm.el"
         "Mailcap parsing routines, and MIME handling"
         (mail  news  hypermedia)
         "lisp/w3/")
+    ("mule-sysdp.el"
+        "consolidate MULE-version dependencies in one file."
+        (lisp  tools)
+        "lisp/w3/")
+    ("socks.el"
+        "A Socks v5 Client for Emacs"
+        (comm  firewalls)
+        "lisp/w3/")
     ("ssl.el"
         "ssl functions for emacsen without them builtin"
         (comm)
         "lisp/w3/")
+    ("url-auth.el"
+        "Uniform Resource Locator authorization modules"
+        (comm  data  processes  hypermedia)
+        "lisp/w3/")
+    ("url-cache.el"
+        "Uniform Resource Locator retrieval tool"
+        (comm  data  processes  hypermedia)
+        "lisp/w3/")
+    ("url-cookie.el"
+        "Netscape Cookie support"
+        (comm  data  processes  hypermedia)
+        "lisp/w3/")
+    ("url-file.el"
+        "File retrieval code"
+        (comm  data  processes)
+        "lisp/w3/")
+    ("url-gopher.el"
+        "Gopher Uniform Resource Locator retrieval code"
+        (comm  data  processes)
+        "lisp/w3/")
+    ("url-gw.el"
+        "Gateway munging for URL loading"
+        (comm  data  processes)
+        "lisp/w3/")
+    ("url-http.el"
+        "HTTP Uniform Resource Locator retrieval code"
+        (comm  data  processes)
+        "lisp/w3/")
+    ("url-irc.el"
+        "IRC URL interface"
+        (comm  data  processes)
+        "lisp/w3/")
+    ("url-mail.el"
+        "Mail Uniform Resource Locator retrieval code"
+        (comm  data  processes)
+        "lisp/w3/")
+    ("url-misc.el"
+        "Misc Uniform Resource Locator retrieval code"
+        (comm  data  processes)
+        "lisp/w3/")
+    ("url-news.el"
+        "News Uniform Resource Locator retrieval code"
+        (comm  data  processes)
+        "lisp/w3/")
+    ("url-nfs.el"
+        "NFS URL interface"
+        (comm  data  processes)
+        "lisp/w3/")
+    ("url-ns.el"
+        "Various netscape-ish functions for proxy definitions"
+        (comm  data  processes  hypermedia)
+        "lisp/w3/")
+    ("url-parse.el"
+        "Uniform Resource Locator parser"
+        (comm  data  processes)
+        "lisp/w3/")
+    ("url-vars.el"
+        "Variables for Uniform Resource Locator tool"
+        (comm  data  processes  hypermedia)
+        "lisp/w3/")
     ("url.el"
         "Uniform Resource Locator retrieval tool"
         (comm  data  processes  hypermedia)
         "lisp/w3/")
-    ("urlauth.el"
-        "Uniform Resource Locator authorization modules"
-        (comm  data  processes  hypermedia)
-        "lisp/w3/")
-    ("w3-10646.el"
-        "ISO 10646 Entities for Emacs-w3"
-        (i18n)
-        "lisp/w3/")
     ("w3-about.el"
         "About pages for emacs-w3"
         (hypermedia)
         "lisp/w3/")
-    ("w3-beta.el"
-        "Misc functions for emacs-w3's new display engine"
-        (help  hypermedia  comm)
+    ("w3-cus.el"
+        "Customization support for Emacs-W3"
+        (comm  help  hypermedia)
         "lisp/w3/")
-    ("w3-draw.el"
-        "Emacs-W3 drawing functions for new display engine"
+    ("w3-display.el"
+        "display engine v99999"
         (faces  help  hypermedia)
         "lisp/w3/")
     ("w3-e19.el"
         "Emacs 19.xx specific functions for emacs-w3"
         (faces  help  mouse  hypermedia)
         "lisp/w3/")
-    ("w3-emacs.el"
-        "Emacs 18.xx specific functions for emacs-w3"
-        (faces  help  mouse  hypermedia)
+    ("w3-elisp.el"
+        "Scripting support for emacs-lisp"
+        (hypermedia  scripting)
+        "lisp/w3/")
+    ("w3-emulate.el"
+        "All variable definitions for emacs-w3"
+        (comm  help  hypermedia)
         "lisp/w3/")
-    ("w3-epoch.el"
-        "Epoch 4.x specific functions for emacs-w3"
-        (faces  help  mouse  hypermedia)
+    ("w3-forms.el"
+        "Emacs-w3 forms parsing code for new display engine"
+        (faces  help  comm  data  languages)
         "lisp/w3/")
-    ("w3-mac.el"
-        "Macintosh specific functions for emacs-w3"
-        (faces  help  mouse  hypermedia)
+    ("w3-hot.el"
+        "Main functions for emacs-w3 on all platforms/versions"
+        (faces  help  comm  news  mail  processes  mouse  hypermedia)
+        "lisp/w3/")
+    ("w3-imap.el"
+        "Imagemap functions"
+        (hypermedia)
         "lisp/w3/")
-    ("w3-mule.el"
-        "MULE 18/19 specific functions for emacs-w3"
-        (faces  help  i18n  mouse  hypermedia)
+    ("w3-jscript.el"
+        "Scripting support for javascript"
+        (hypermedia  scripting)
+        "lisp/w3/")
+    ("w3-keyword.el"
+        "Emacs-W3 binding style sheet mechanism"
+        (hypermedia)
+        "lisp/w3/")
+    ("w3-latex.el"
+        "Emacs-W3 printing via LaTeX"
+        (hypermedia  printing  typesetting)
         "lisp/w3/")
-    ("w3-next.el"
-        "NeXTStep specific functions for emacs-w3"
-        (faces  help  mouse  hypermedia)
+    ("w3-menu.el"
+        "Menu functions for emacs-w3"
+        (menu  hypermedia)
         "lisp/w3/")
-    ("w3-parse.el"
-        "Generalized html/sgml parsing support for emacs-w3"
-        (faces  help  hypermedia)
+    ("w3-mouse.el"
+        "Mouse specific functions for emacs-w3"
+        (mouse  hypermedia)
+        "lisp/w3/")
+    ("w3-prefs.el"
+        "Preferences panels for Emacs-W3"
+        (hypermedia  preferences)
         "lisp/w3/")
     ("w3-print.el"
         "Printing support for emacs-w3"
         (faces  help  printing  hypermedia)
         "lisp/w3/")
-    ("w3-srch.el"
-        "Searching functions for emacs-w3"
-        (matching  help  comm  hypermedia)
+    ("w3-script.el"
+        "Scripting support"
+        (hypermedia  scripting)
+        "lisp/w3/")
+    ("w3-speak.el"
+        "Emacs-W3 speech interface"
+        (hypermedia  speech)
         "lisp/w3/")
     ("w3-style.el"
         "Emacs-W3 binding style sheet mechanism"
@@ -1806,13 +2586,17 @@
         "consolidate Emacs-version dependencies in one file."
         (lisp  tools)
         "lisp/w3/")
+    ("w3-toolbar.el"
+        "Toolbar functions for emacs-w3"
+        (mouse  toolbar)
+        "lisp/w3/")
     ("w3-vars.el"
         "All variable definitions for emacs-w3"
         (comm  help  hypermedia)
         "lisp/w3/")
-    ("w3-wemac.el"
-        "WinEmacs specific functions for emacs-w3"
-        (faces  help  hypermedia  mouse)
+    ("w3-widget.el"
+        "An image widget"
+        (faces  images)
         "lisp/w3/")
     ("w3-xemac.el"
         "XEmacs specific functions for emacs-w3"
@@ -1822,10 +2606,22 @@
         "Main functions for emacs-w3 on all platforms/versions"
         (faces  help  comm  news  mail  processes  mouse  hypermedia)
         "lisp/w3/")
+    ("x-overlay.el"
+        "overlay support."
+        (internal)
+        "lisp/w3/")
     ("x-faces.el"
         "X-specific face frobnication, aka black magic."
         nil
         "lisp/x11/")
+    ("x-font-menu.el"
+        "Managing menus of X fonts."
+        nil
+        "lisp/x11/")
+    ("x-init.el"
+        "initialization code for X windows"
+        (terminals)
+        "lisp/x11/")
     ("x-menubar.el"
         "Menubar and popup-menu support for X."
         nil
@@ -1838,6 +2634,18 @@
         "scrollbar resourcing and such."
         nil
         "lisp/x11/")
+    ("x-select.el"
+        "Elisp interface to X Selections."
+        nil
+        "lisp/x11/")
+    ("x-win-sun.el"
+        "runtime initialization for Sun X servers and keyboards"
+        (terminals)
+        "lisp/x11/")
+    ("x-win-xfree86.el"
+        "runtime initialization for XFree86 servers"
+        (terminals)
+        "lisp/x11/")
 ))
 
 (provide 'finder-inf)
--- a/lisp/utils/finder.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/utils/finder.el	Mon Aug 13 09:24:17 2007 +0200
@@ -98,6 +98,7 @@
     (mail	. "modes for electronic-mail handling")
     (matching	. "various sorts of searching and matching")
     (mouse	. "mouse support")
+    (mule	. "multi-language extensions")
     (news	. "support for netnews reading and posting")
     (oop	. "support for object-oriented programming")
     (outlines	. "support for hierarchical outlining")
--- a/lisp/version.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/version.el	Mon Aug 13 09:24:17 2007 +0200
@@ -25,7 +25,7 @@
 (defconst emacs-version "20.1"
   "Version numbers of this version of Emacs.")
 
-(setq emacs-version (purecopy (concat emacs-version " XEmacs Lucid (beta10)")))
+(setq emacs-version (purecopy (concat emacs-version " XEmacs Lucid (beta11)")))
 
 (defconst emacs-major-version
   (progn (or (string-match "^[0-9]+" emacs-version)
--- a/lisp/vm/Makefile	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/vm/Makefile	Mon Aug 13 09:24:17 2007 +0200
@@ -72,7 +72,7 @@
 
 vm:	vm.elc
 
-vm.elc:	noautoload
+vm.elc:	autoload
 
 noautoload:	$(OBJECTS) tapestry.elc
 	@echo "building vm.elc (with all modules included)..."
--- a/lisp/vm/vm-autoload.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/vm/vm-autoload.el	Mon Aug 13 09:24:17 2007 +0200
@@ -597,6 +597,8 @@
 
 (autoload (quote vm-start-itimers-if-needed) "vm-folder" nil nil nil)
 
+(autoload (quote vm-timer-using) "vm-folder" nil nil nil)
+
 (autoload (quote vm-check-mail-itimer-function) "vm-folder" nil nil nil)
 
 (autoload (quote vm-get-mail-itimer-function) "vm-folder" nil nil nil)
@@ -803,6 +805,8 @@
 
 (autoload (quote vm-menu-popup-url-browser-menu) "vm-menu" nil t nil)
 
+(autoload (quote vm-menu-popup-mailto-url-browser-menu) "vm-menu" nil t nil)
+
 (autoload (quote vm-menu-popup-mime-dispose-menu) "vm-menu" nil t nil)
 
 (autoload (quote vm-menu-popup-content-disposition-menu) "vm-menu" nil t nil)
@@ -1179,8 +1183,6 @@
 
 (autoload (quote vm-reencode-mime-encoded-words-in-string) "vm-mime" nil nil nil)
 
-(autoload (quote vm-mime-parse-content-header) "vm-mime" nil nil nil)
-
 (autoload (quote vm-mime-get-header-contents) "vm-mime" nil nil nil)
 
 (autoload (quote vm-mime-parse-entity) "vm-mime" nil nil nil)
@@ -1273,6 +1275,8 @@
 
 (autoload (quote vm-mime-display-internal-multipart/digest) "vm-mime" nil nil nil)
 
+(autoload (quote vm-mime-display-button-message/rfc822) "vm-mime" nil nil nil)
+
 (autoload (quote vm-mime-display-internal-message/rfc822) "vm-mime" nil nil nil)
 
 (autoload (quote vm-mime-display-internal-message/partial) "vm-mime" nil nil nil)
@@ -1394,10 +1398,14 @@
 
 (autoload (quote vm-mime-transfer-encode-layout) "vm-mime" nil nil nil)
 
-(autoload (quote vm-mime-encode-composition) "vm-mime" "MIME encode the current buffer.
+(autoload (quote vm-mime-encode-composition) "vm-mime" "MIME encode the current mail composition buffer.
 Attachment tags added to the buffer with vm-mime-attach-file are expanded
 and the approriate content-type and boundary markup information is added." t nil)
 
+(autoload (quote vm-mime-xemacs-encode-composition) "vm-mime" nil nil nil)
+
+(autoload (quote vm-mime-fsfemacs-encode-composition) "vm-mime" nil nil nil)
+
 (autoload (quote vm-mime-fragment-composition) "vm-mime" nil nil nil)
 
 (autoload (quote vm-mime-preview-composition) "vm-mime" "Show how the current composition buffer might be displayed
@@ -1473,6 +1481,8 @@
 
 (autoload (quote vm-parse-addresses) "vm-misc" nil nil nil)
 
+(autoload (quote vm-parse-structured-header) "vm-misc" nil nil nil)
+
 (autoload (quote vm-write-string) "vm-misc" nil nil nil)
 
 (autoload (quote vm-marker) "vm-misc" nil nil t)
@@ -2192,7 +2202,7 @@
 
 (autoload (quote vm-mode) "vm-startup" "Major mode for reading mail.
 
-This is VM 6.22.
+This is VM 6.23.
 
 Commands:
    h - summarize folder contents
--- a/lisp/vm/vm-digest.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/vm/vm-digest.el	Mon Aug 13 09:24:17 2007 +0200
@@ -411,12 +411,7 @@
 			     folder-type
 			     after-prev-sep
 			     (match-beginning 0))
-			  (store-match-data md)))
-		      ;; eat preceding newlines
-		      (while (= (preceding-char) ?\n)
-			(delete-char -1))
-		      ;; put one back
-		      (insert ?\n)))
+			  (store-match-data md)))))
 	       ;; there should be at least one valid header at
 	       ;; the beginning of an encapsulated message.  If
 	       ;; there isn't a valid header, then assume that
@@ -432,12 +427,17 @@
 						    nil t))))))
 		   (setq prev-sep (point)
 			 after-prev-sep (point))
+		 ;; eat preceding newlines
+		 (while (= (preceding-char) ?\n)
+		   (delete-char -1))
+		 ;; put one back
+		 (insert ?\n)
+		 ;; delete the digest separator
 		 ;; insert a trailing message separator
-		 ;; delete the digest separator
 		 ;; insert the leading separator
 		 (if prev-sep
 		     (progn
-		       (delete-region (match-beginning 0) (match-end 0))
+		       (delete-region (match-beginning 0) (point))
 		       (insert (vm-trailing-message-separator folder-type))))
 		 (setq prev-sep (point))
 		 (insert (vm-leading-message-separator folder-type))
--- a/lisp/vm/vm-folder.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/vm/vm-folder.el	Mon Aug 13 09:24:17 2007 +0200
@@ -2173,17 +2173,20 @@
 	   (error nil))
 	 (let (timer)
 	   (and (natnump vm-flush-interval) 
+		(not (vm-timer-using 'vm-flush-itimer-function))
 		(setq timer (run-at-time vm-flush-interval vm-flush-interval
 					 'vm-flush-itimer-function nil))
 		(timer-set-function timer 'vm-flush-itimer-function
 				    (list timer)))
 	   (and (natnump vm-mail-check-interval) 
+		(not (vm-timer-using 'vm-check-mail-itimer-function))
 		(setq timer (run-at-time vm-mail-check-interval
 					 vm-mail-check-interval
 					 'vm-check-mail-itimer-function nil))
 		(timer-set-function timer 'vm-check-mail-itimer-function
 				    (list timer)))
 	   (and (natnump vm-auto-get-new-mail)
+		(not (vm-timer-using 'vm-get-mail-itimer-function))
 		(setq timer (run-at-time vm-auto-get-new-mail
 					 vm-auto-get-new-mail
 					 'vm-get-mail-itimer-function nil))
@@ -2193,6 +2196,15 @@
 	 (setq vm-flush-interval t
 	       vm-auto-get-new-mail t))))
 
+(defun vm-timer-using (fun)
+  (let ((p timer-list)
+	(done nil))
+    (while (and p (not done))
+      (if (eq (aref (car p) 5) fun)
+	  (setq done t)
+	(setq p (cdr p))))
+    p ))
+
 ;; support for vm-mail-check-interval
 ;; if timer argument is present, this means we're using the Emacs
 ;; 'timer package rather than the 'itimer package.
--- a/lisp/vm/vm-menu.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/vm/vm-menu.el	Mon Aug 13 09:24:17 2007 +0200
@@ -431,6 +431,17 @@
 					   'vm-mouse-send-url-to-netscape)
 	    t]))))
 
+(defconst vm-menu-mailto-url-browser-menu
+  (let ((title (if (vm-menu-fsfemacs-menus-p)
+		   (list "Send Mail using ..."
+			 "Send Mail using ..."
+			 "---"
+			 "---")
+		 (list "Send Mail using ..."))))
+    (append
+     title
+     (list ["VM" (vm-mouse-send-url-at-position (point) 'ignore) t]))))
+
 (defconst vm-menu-subject-menu
   (let ((title (if (vm-menu-fsfemacs-menus-p)
 		   (list "Take Action on Subject..."
@@ -665,6 +676,10 @@
 	;; url browser menu
 	(vm-easy-menu-define vm-menu-fsfemacs-url-browser-menu (list dummy) nil
 			     vm-menu-url-browser-menu)
+	;; mailto url browser menu
+	(vm-easy-menu-define vm-menu-fsfemacs-mailto-url-browser-menu
+			     (list dummy) nil
+			     vm-menu-url-browser-menu)
 	;; mime dispose menu
 	(vm-easy-menu-define vm-menu-fsfemacs-mime-dispose-menu
 			     (list dummy) nil
@@ -802,6 +817,7 @@
 
 ;; to quiet the byte-compiler
 (defvar vm-menu-fsfemacs-url-browser-menu)
+(defvar vm-menu-fsfemacs-mailto-url-browser-menu)
 (defvar vm-menu-fsfemacs-mime-dispose-menu)
 
 (defun vm-menu-goto-event (event)
@@ -825,6 +841,15 @@
 	 (vm-menu-popup-fsfemacs-menu
 	  event vm-menu-fsfemacs-url-browser-menu))))
 
+(defun vm-menu-popup-mailto-url-browser-menu (event)
+  (interactive "e")
+  (vm-menu-goto-event event)
+  (cond ((and (vm-menu-xemacs-menus-p) vm-use-menus)
+	 (popup-menu vm-menu-mailto-url-browser-menu))
+	((and (vm-menu-fsfemacs-menus-p) vm-use-menus)
+	 (vm-menu-popup-fsfemacs-menu
+	  event vm-menu-fsfemacs-mailto-url-browser-menu))))
+
 (defun vm-menu-popup-mime-dispose-menu (event)
   (interactive "e")
   (vm-menu-goto-event event)
--- a/lisp/vm/vm-mime.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/vm/vm-mime.el	Mon Aug 13 09:24:17 2007 +0200
@@ -344,7 +344,7 @@
 			 ((looking-at "\n") ; soft line break
 			  (forward-char))
 			 ((looking-at "\r")
-			  ;; assume the user's goatfucking
+			  ;; assume the user's goatloving
 			  ;; delivery software didn't convert
 			  ;; from Internet's CRLF newline
 			  ;; convention to the local LF
@@ -526,85 +526,7 @@
       (vm-with-string-as-temp-buffer string 'vm-reencode-mime-encoded-words)
     string ))
 
-(defun vm-mime-parse-content-header (string &optional sepchar keep-quotes)
-  (if (null string)
-      ()
-    (let ((work-buffer nil))
-      (save-excursion
-       (unwind-protect
-	   (let ((list nil)
-		 (nonspecials "^\"\\( \t\n\r\f")
-		 start s char sp+sepchar)
-	     (if sepchar
-		 (setq nonspecials (concat nonspecials (list sepchar))
-		       sp+sepchar (concat "\t\f\n\r " (list sepchar))))
-	     (setq work-buffer (generate-new-buffer "*vm-work*"))
-	     (buffer-disable-undo work-buffer)
-	     (set-buffer work-buffer)
-	     (insert string)
-	     (goto-char (point-min))
-	     (skip-chars-forward "\t\f\n\r ")
-	     (setq start (point))
-	     (while (not (eobp))
-	       (skip-chars-forward nonspecials)
-	       (setq char (following-char))
-	       (cond ((looking-at "[ \t\n\r\f]")
-		      (delete-char 1))
-		     ((= char ?\\)
-		      (forward-char 1)
-		      (if (not (eobp))
-			  (forward-char 1)))
-		     ((and sepchar (= char sepchar))
-		      (setq s (buffer-substring start (point)))
-		      (if (or (null (string-match "^[\t\f\n\r ]+$" s))
-			      (not (string= s "")))
-			  (setq list (cons s list)))
-		      (skip-chars-forward sp+sepchar)
-		      (setq start (point)))
-		     ((looking-at " \t\n\r\f")
-		      (skip-chars-forward " \t\n\r\f"))
-		     ((= char ?\")
-		      (let ((done nil))
-			(if keep-quotes
-			    (forward-char 1)
-			  (delete-char 1))
-			(while (not done)
-			  (if (null (re-search-forward "[\\\"]" nil t))
-			      (setq done t)
-			    (setq char (char-after (1- (point))))
-			    (cond ((char-equal char ?\\)
-				   (delete-char -1)
-				   (if (eobp)
-				       (setq done t)
-				     (forward-char 1)))
-				  (t (if (not keep-quotes)
-					 (delete-char -1))
-				     (setq done t)))))))
-		     ((= char ?\()
-		      (let ((done nil)
-			    (pos (point))
-			    (parens 1))
-			(forward-char 1)
-			(while (not done)
-			  (if (null (re-search-forward "[\\()]" nil t))
-			      (setq done t)
-			    (setq char (char-after (1- (point))))
-			    (cond ((char-equal char ?\\)
-				   (if (eobp)
-				       (setq done t)
-				     (forward-char 1)))
-				  ((char-equal char ?\()
-				   (setq parens (1+ parens)))
-				  (t
-				   (setq parens (1- parens)
-					 done (zerop parens))))))
-			(delete-region pos (point))))))
-	     (setq s (buffer-substring start (point)))
-	     (if (and (null (string-match "^[\t\f\n\r ]+$" s))
-		      (not (string= s "")))
-		 (setq list (cons s list)))
-	     (nreverse list))
-	(and work-buffer (kill-buffer work-buffer)))))))
+(fset 'vm-mime-parse-content-header 'vm-parse-structured-header)
 
 (defun vm-mime-get-header-contents (header-name-regexp)
   (let ((contents nil)
@@ -1587,20 +1509,25 @@
 (fset 'vm-mime-display-button-multipart/digest
       'vm-mime-display-internal-multipart/digest)
 
+(defun vm-mime-display-button-message/rfc822 (layout)
+  (let ((buffer-read-only nil))
+    (vm-mime-insert-button
+     (format "%-35.35s [%s to display]"
+	     (vm-mime-layout-description layout)
+	     (if (vm-mouse-support-possible-p)
+		 "Click mouse-2"
+	       "Press RETURN"))
+     (function
+      (lambda (layout)
+	(save-excursion
+	  (vm-mime-display-internal-message/rfc822 layout))))
+     layout nil)))
+(fset 'vm-mime-display-button-message/news
+      'vm-mime-display-button-message/rfc822)
+
 (defun vm-mime-display-internal-message/rfc822 (layout)
   (if (vectorp layout)
-      (let ((buffer-read-only nil))
-	(vm-mime-insert-button
-	 (format "%-35.35s [%s to display]"
-		 (vm-mime-layout-description layout)
-		 (if (vm-mouse-support-possible-p)
-		     "Click mouse-2"
-		   "Press RETURN"))
-	 (function
-	  (lambda (layout)
-	    (save-excursion
-	      (vm-mime-display-internal-message/rfc822 layout))))
-	 layout nil))
+      (vm-mime-display-internal-text/plain layout)
     (goto-char (vm-extent-start-position layout))
     (setq layout (vm-extent-property layout 'vm-mime-layout))
     (set-buffer (generate-new-buffer
@@ -1619,8 +1546,6 @@
     (vm-display (or vm-presentation-buffer (current-buffer)) t
 		(list this-command) '(vm-mode startup)))
   t )
-(fset 'vm-mime-display-button-message/rfc822
-      'vm-mime-display-internal-message/rfc822)
 (fset 'vm-mime-display-internal-message/news
       'vm-mime-display-internal-message/rfc822)
 
@@ -1877,40 +1802,34 @@
 
 (defun vm-mime-set-extent-glyph-for-layout (e layout)
   (if (and (vm-xemacs-p) (fboundp 'make-glyph)
-	   (eq (device-type) 'x) (> (device-bitplanes) 15))
+	   (eq (device-type) 'x) (> (device-bitplanes) 7))
       (let ((type (car (vm-mm-layout-type layout)))
 	    (dir vm-image-directory)
-	    glyph)
-	(setq glyph
-	      (cond ((vm-mime-types-match "text" type)
-		     (make-glyph (vector
-				  'xpm ':file
-				  (expand-file-name "document.xpm" dir))))
-		    ((vm-mime-types-match "image" type)
-		     (make-glyph (vector
-				  'gif ':file
-				  (expand-file-name "mona_stamp.gif" dir))))
-		    ((vm-mime-types-match "audio" type)
-		     (make-glyph (vector
-				  'xpm ':file
-				  (expand-file-name "audio_stamp.xpm" dir))))
-		    ((vm-mime-types-match "video" type)
-		     (make-glyph (vector
-				  'xpm ':file
-				  (expand-file-name "film.xpm" dir))))
-		    ((vm-mime-types-match "message" type)
-		     (make-glyph (vector
-				  'xpm ':file
-				  (expand-file-name "message.xpm" dir))))
-		    ((vm-mime-types-match "application" type)
-		     (make-glyph (vector
-				  'xpm ':file
-				  (expand-file-name "gear.xpm" dir))))
-		    ((vm-mime-types-match "multipart" type)
-		     (make-glyph (vector
-				  'xpm ':file
-				  (expand-file-name "stuffed_box.xpm" dir))))
-		    (t nil)))
+	    (colorful (> (device-bitplanes) 15))
+	    (tuples
+	     '(("text" "document-simple.xpm" "document-colorful.xpm")
+	       ("image" "mona_stamp-simple.xpm" "mona_stamp-colorful.xpm")
+	       ("audio" "audio_stamp-simple.xpm" "audio_stamp-colorful.xpm")
+	       ("video" "film-simple.xpm" "film-colorful.xpm")
+	       ("message" "message-simple.xpm" "message-colorful.xpm")
+	       ("application" "gear-simple.xpm" "gear-colorful.xpm")
+	       ("multipart" "stuffed_box-simple.xpm"
+		"stuffed_box-colorful.xpm")))
+	    glyph file sym p)
+	(setq file (catch 'done
+		     (while tuples
+		       (if (vm-mime-types-match (car (car tuples)) type)
+			   (throw 'done (car tuples))
+			 (setq tuples (cdr tuples))))
+		     nil)
+	      file (and file (if colorful (nth 1 file) (nth 2 file)))
+	      sym (and file (intern file vm-image-obarray))
+	      glyph (and sym (boundp sym) (symbol-value sym))
+	      glyph (or glyph (not file)
+			(make-glyph
+			 (vector 'autodetect
+				 ':data (expand-file-name file dir)))))
+	(and sym (not (boundp sym)) (set sym glyph))
 	(and glyph (set-extent-begin-glyph e glyph)))))
 
 (defun vm-mime-insert-button (caption action layout disposable)
@@ -2350,19 +2269,19 @@
 	   (setq e (make-extent start end))
 	   (set-extent-property e 'start-open t)
 	   (set-extent-property e 'face vm-mime-button-face)
-	   (vm-set-extent-property e 'duplicable t)
+	   (set-extent-property e 'duplicable t)
 	   (let ((keymap (make-sparse-keymap)))
 	     (if vm-popup-menu-on-mouse-3
 		 (define-key keymap 'button3
 		   'vm-menu-popup-content-disposition-menu))
-	     (vm-set-extent-property e 'keymap keymap)
+	     (set-extent-property e 'keymap keymap)
 	     (set-extent-property e 'balloon-help 'vm-mouse-3-help))
-	   (vm-set-extent-property e 'vm-mime-type type)
-	   (vm-set-extent-property e 'vm-mime-object object)
-	   (vm-set-extent-property e 'vm-mime-parameters params)
-	   (vm-set-extent-property e 'vm-mime-description description)
-	   (vm-set-extent-property e 'vm-mime-disposition disposition)
-	   (vm-set-extent-property e 'vm-mime-encoded mimed)))))
+	   (set-extent-property e 'vm-mime-type type)
+	   (set-extent-property e 'vm-mime-object object)
+	   (set-extent-property e 'vm-mime-parameters params)
+	   (set-extent-property e 'vm-mime-description description)
+	   (set-extent-property e 'vm-mime-disposition disposition)
+	   (set-extent-property e 'vm-mime-encoded mimed)))))
 
 (defun vm-mime-attachment-disposition-at-point ()
   (cond ((vm-fsfemacs-19-p)
@@ -2477,10 +2396,21 @@
 				    nil)))
 
 (defun vm-mime-encode-composition ()
- "MIME encode the current buffer.
+ "MIME encode the current mail composition buffer.
 Attachment tags added to the buffer with vm-mime-attach-file are expanded
 and the approriate content-type and boundary markup information is added."
   (interactive)
+  (cond ((vm-xemacs-mule-p)
+	 (vm-mime-xemacs-encode-composition))
+	((vm-xemacs-p)
+	 (vm-mime-xemacs-encode-composition))
+	((vm-fsfemacs-19-p)
+	 (vm-mime-fsfemacs-encode-composition))
+	(t
+	 (error "don't know how to MIME encode composition for %s"
+		(emacs-version)))))
+
+(defun vm-mime-xemacs-encode-composition ()
   (save-restriction
     (widen)
     (if (not (eq major-mode 'mail-mode))
@@ -2494,17 +2424,15 @@
 	  type encoding charset params description disposition object
 	  opoint-min)
       (mail-text)
-      (setq e-list (if (fboundp 'extent-list)
-		       (extent-list nil (point) (point-max))
-		     (vm-mime-fake-attachment-overlays (point) (point-max)))
+      (setq e-list (extent-list nil (point) (point-max))
 	    e-list (vm-delete (function
 			       (lambda (e)
-				 (vm-extent-property e 'vm-mime-object)))
+				 (extent-property e 'vm-mime-object)))
 			      e-list t)
 	    e-list (sort e-list (function
 				 (lambda (e1 e2)
-				   (< (vm-extent-end-position e1)
-				      (vm-extent-end-position e2))))))
+				   (< (extent-end-position e1)
+				      (extent-end-position e2))))))
       ;; If there's just one attachment and no other readable
       ;; text in the buffer then make the message type just be
       ;; the attachment type rather than sending a multipart
@@ -2512,9 +2440,9 @@
       (setq just-one (and (= (length e-list) 1)
 			  (looking-at "[ \t\n]*")
 			  (= (match-end 0)
-			     (vm-extent-start-position (car e-list)))
+			     (extent-start-position (car e-list)))
 			  (save-excursion
-			    (goto-char (vm-extent-end-position (car e-list)))
+			    (goto-char (extent-end-position (car e-list)))
 			    (looking-at "[ \t\n]*\\'"))))
       (if (null e-list)
 	  (progn
@@ -2542,9 +2470,9 @@
 	    (vm-add-mail-mode-header-separator))
 	(while e-list
 	  (setq e (car e-list))
-	  (if (or just-one (= (point) (vm-extent-start-position e)))
+	  (if (or just-one (= (point) (extent-start-position e)))
 	      nil
-	    (narrow-to-region (point) (vm-extent-start-position e))
+	    (narrow-to-region (point) (extent-start-position e))
 	    (setq charset (vm-determine-proper-charset (point-min)
 						       (point-max)))
 	    (setq encoding (vm-determine-proper-content-transfer-encoding
@@ -2558,58 +2486,40 @@
 	    (insert "Content-Type: text/plain; charset=" charset "\n")
 	    (insert "Content-Transfer-Encoding: " encoding "\n\n")
 	    (widen))
-	  (goto-char (vm-extent-start-position e))
+	  (goto-char (extent-start-position e))
 	  (narrow-to-region (point) (point))
-	  (setq object (vm-extent-property e 'vm-mime-object))
+	  (setq object (extent-property e 'vm-mime-object))
 	  ;; insert the object
 	  (cond ((bufferp object)
-		 (if (vm-xemacs-p)
-		     (insert-buffer-substring object)
-		   ;; as of FSF Emacs 19.34, even with the hooks
-		   ;; we've attached to the attachment overlays,
-		   ;; text STILL can be inserted into them when
-		   ;; font-lock is enabled.  Explaining why is
-		   ;; beyond the scope of this comment and I
-		   ;; don't know the answer anyway.  This works
-		   ;; to prevent it.
-		   (insert-before-markers " ")
-		   (forward-char -1)
-		   (insert-buffer-substring object)
-		   (delete-char 1)))
+		 (insert-buffer-substring object))
 		((stringp object)
 		 (let ((coding-system-for-read 'no-conversion))
-		   (if (vm-xemacs-p)
-		       (insert-file-contents-literally object)
-		     (insert-before-markers " ")
-		     (forward-char -1)
-		     (insert-file-contents-literally object)
-		     (goto-char (point-max))
-		     (delete-char -1)))))
+		   (insert-file-contents-literally object))))
 	  ;; gather information about the object from the extent.
-	  (if (setq already-mimed (vm-extent-property e 'vm-mime-encoded))
+	  (if (setq already-mimed (extent-property e 'vm-mime-encoded))
 	      (setq layout (vm-mime-parse-entity
 			    nil (list "text/plain" "charset=us-ascii")
 			    "7bit")
-		    type (or (vm-extent-property e 'vm-mime-type)
+		    type (or (extent-property e 'vm-mime-type)
 			     (car (vm-mm-layout-type layout)))
-		    params (or (vm-extent-property e 'vm-mime-parameters)
+		    params (or (extent-property e 'vm-mime-parameters)
 			       (cdr (vm-mm-layout-qtype layout)))
-		    description (vm-extent-property e 'vm-mime-description)
+		    description (extent-property e 'vm-mime-description)
 		    disposition
 		      (if (not
 			   (equal
-			    (car (vm-extent-property e 'vm-mime-disposition))
+			    (car (extent-property e 'vm-mime-disposition))
 			    "unspecified"))
-			  (vm-extent-property e 'vm-mime-disposition)
+			  (extent-property e 'vm-mime-disposition)
 			(vm-mm-layout-qdisposition layout)))
-	    (setq type (vm-extent-property e 'vm-mime-type)
-		  params (vm-extent-property e 'vm-mime-parameters)
-		  description (vm-extent-property e 'vm-mime-description)
+	    (setq type (extent-property e 'vm-mime-type)
+		  params (extent-property e 'vm-mime-parameters)
+		  description (extent-property e 'vm-mime-description)
 		  disposition
 		    (if (not (equal
-			      (car (vm-extent-property e 'vm-mime-disposition))
+			      (car (extent-property e 'vm-mime-disposition))
 			      "unspecified"))
-			(vm-extent-property e 'vm-mime-disposition)
+			(extent-property e 'vm-mime-disposition)
 		      nil)))
 	  (cond ((vm-mime-types-match "text" type)
 		 (setq encoding
@@ -2709,11 +2619,11 @@
 	  (goto-char (point-max))
 	  (widen)
 	  (save-excursion
-	    (goto-char (vm-extent-start-position e))
+	    (goto-char (extent-start-position e))
 	    (vm-assert (looking-at "\\[ATTACHMENT")))
-	  (delete-region (vm-extent-start-position e)
-			 (vm-extent-end-position e))
-	  (vm-detach-extent e)
+	  (delete-region (extent-start-position e)
+			 (extent-end-position e))
+	  (detach-extent e)
 	  (if (looking-at "\n")
 	      (delete-char 1))
 	  (setq e-list (cdr e-list)))
@@ -2802,6 +2712,321 @@
 	      (insert "Content-Transfer-Encoding: 8bit\n")
 	    (insert "Content-Transfer-Encoding: 7bit\n")))))))
 
+(defun vm-mime-fsfemacs-encode-composition ()
+  (save-restriction
+    (widen)
+    (if (not (eq major-mode 'mail-mode))
+	(error "Command must be used in a VM Mail mode buffer."))
+    (or (null (vm-mail-mode-get-header-contents "MIME-Version:"))
+	(error "Message is already MIME encoded."))
+    (let ((8bit nil)
+	  (just-one nil)
+	  (boundary-positions nil)
+	  already-mimed layout o o-list boundary
+	  type encoding charset params description disposition object
+	  opoint-min)
+      (mail-text)
+      (setq o-list (vm-mime-fake-attachment-overlays (point) (point-max))
+	    o-list (vm-delete (function
+			       (lambda (o)
+				 (overlay-get o 'vm-mime-object)))
+			      o-list t)
+	    o-list (sort o-list (function
+				 (lambda (e1 e2)
+				   (< (overlay-end e1)
+				      (overlay-end e2))))))
+      ;; If there's just one attachment and no other readable
+      ;; text in the buffer then make the message type just be
+      ;; the attachment type rather than sending a multipart
+      ;; message with one attachment
+      (setq just-one (and (= (length o-list) 1)
+			  (looking-at "[ \t\n]*")
+			  (= (match-end 0)
+			     (overlay-start (car o-list)))
+			  (save-excursion
+			    (goto-char (overlay-end (car o-list)))
+			    (looking-at "[ \t\n]*\\'"))))
+      (if (null o-list)
+	  (progn
+	    (narrow-to-region (point) (point-max))
+	    (setq charset (vm-determine-proper-charset (point-min)
+						       (point-max)))
+	    (if (vm-xemacs-mule-p)
+		(encode-coding-region (point-min) (point-max)
+				      file-coding-system))
+	    (setq encoding (vm-determine-proper-content-transfer-encoding
+			    (point-min)
+			    (point-max))
+		  encoding (vm-mime-transfer-encode-region encoding
+							   (point-min)
+							   (point-max)
+							   t))
+	    (widen)
+	    (vm-remove-mail-mode-header-separator)
+	    (goto-char (point-min))
+	    (vm-reorder-message-headers
+	     nil nil "\\(Content-Type:\\|Content-Transfer-Encoding\\|MIME-Version:\\)")
+	    (insert "MIME-Version: 1.0\n")
+	    (insert "Content-Type: text/plain; charset=" charset "\n")
+	    (insert "Content-Transfer-Encoding: " encoding "\n")
+	    (vm-add-mail-mode-header-separator))
+	(while o-list
+	  (setq o (car o-list))
+	  (if (or just-one (= (point) (overlay-start o)))
+	      nil
+	    (narrow-to-region (point) (overlay-start o))
+	    (setq charset (vm-determine-proper-charset (point-min)
+						       (point-max)))
+	    (setq encoding (vm-determine-proper-content-transfer-encoding
+			    (point-min)
+			    (point-max))
+		  encoding (vm-mime-transfer-encode-region encoding
+							   (point-min)
+							   (point-max)
+							   t))
+	    (setq boundary-positions (cons (point-marker) boundary-positions))
+	    (insert "Content-Type: text/plain; charset=" charset "\n")
+	    (insert "Content-Transfer-Encoding: " encoding "\n\n")
+	    (widen))
+	  (goto-char (overlay-start o))
+	  (narrow-to-region (point) (point))
+	  (setq object (overlay-get o 'vm-mime-object))
+	  ;; insert the object
+	  (cond ((bufferp object)
+		 ;; as of FSF Emacs 19.34, even with the hooks
+		 ;; we've attached to the attachment overlays,
+		 ;; text STILL can be inserted into them when
+		 ;; font-lock is enabled.  Explaining why is
+		 ;; beyond the scope of this comment and I
+		 ;; don't know the answer anyway.  This works
+		 ;; to prevent it.
+		 (insert-before-markers " ")
+		 (forward-char -1)
+		 (insert-buffer-substring object)
+		 (delete-char 1))
+		((stringp object)
+		 (insert-before-markers " ")
+		 (forward-char -1)
+		 (insert-file-contents object)
+		 (goto-char (point-max))
+		 (delete-char -1)))
+	  ;; gather information about the object from the extent.
+	  (if (setq already-mimed (overlay-get o 'vm-mime-encoded))
+	      (setq layout (vm-mime-parse-entity
+			    nil (list "text/plain" "charset=us-ascii")
+			    "7bit")
+		    type (or (overlay-get o 'vm-mime-type)
+			     (car (vm-mm-layout-type layout)))
+		    params (or (overlay-get o 'vm-mime-parameters)
+			       (cdr (vm-mm-layout-qtype layout)))
+		    description (overlay-get o 'vm-mime-description)
+		    disposition
+		      (if (not
+			   (equal
+			    (car (overlay-get o 'vm-mime-disposition))
+			    "unspecified"))
+			  (overlay-get o 'vm-mime-disposition)
+			(vm-mm-layout-qdisposition layout)))
+	    (setq type (overlay-get o 'vm-mime-type)
+		  params (overlay-get o 'vm-mime-parameters)
+		  description (overlay-get o 'vm-mime-description)
+		  disposition
+		    (if (not (equal
+			      (car (overlay-get o 'vm-mime-disposition))
+			      "unspecified"))
+			(overlay-get o 'vm-mime-disposition)
+		      nil)))
+	  (cond ((vm-mime-types-match "text" type)
+		 (setq encoding
+		       (vm-determine-proper-content-transfer-encoding
+			(if already-mimed
+			    (vm-mm-layout-body-start layout)
+			  (point-min))
+			(point-max))
+		       encoding (vm-mime-transfer-encode-region
+				 encoding
+				 (if already-mimed
+				     (vm-mm-layout-body-start layout)
+				   (point-min))
+				 (point-max)
+				 t))
+		 (setq 8bit (or 8bit (equal encoding "8bit"))))
+		((or (vm-mime-types-match "message/rfc822" type)
+		     (vm-mime-types-match "message/news" type)
+		     (vm-mime-types-match "multipart" type))
+		 (setq opoint-min (point-min))
+		 (if (not already-mimed)
+		     (setq layout (vm-mime-parse-entity
+				   nil (list "text/plain" "charset=us-ascii")
+				   "7bit")))
+		 ;; MIME messages of type "message" and
+		 ;; "multipart" are required to have a non-opaque
+		 ;; content transfer encoding.  This means that
+		 ;; if the user only wants to send out 7bit data,
+		 ;; then any subpart that contains 8bit data must
+		 ;; have an opaque (qp or base64) 8->7bit
+		 ;; conversion performed on it so that the
+		 ;; enclosing entity can use an non-opqaue
+		 ;; encoding.
+		 ;;
+		 ;; message/partial requires a "7bit" encoding so
+		 ;; force 8->7 conversion in that case.
+		 (let ((vm-mime-8bit-text-transfer-encoding
+			(if (vm-mime-types-match "message/partial" type)
+			    'quoted-printable
+			  vm-mime-8bit-text-transfer-encoding)))
+		   (vm-mime-map-atomic-layouts 'vm-mime-transfer-encode-layout
+					       (vm-mm-layout-parts layout)))
+		 ;; now figure out a proper content trasnfer
+		 ;; encoding value for the enclosing entity.
+		 (re-search-forward "^\n" nil t)
+		 (save-restriction
+		   (narrow-to-region (point) (point-max))
+		   (setq encoding
+			 (vm-determine-proper-content-transfer-encoding
+			  (point-min)
+			  (point-max))))
+		 (setq 8bit (or 8bit (equal encoding "8bit")))
+		 (goto-char (point-max))
+		 (widen)
+		 (narrow-to-region opoint-min (point)))
+		(t
+		 (vm-mime-base64-encode-region
+		  (if already-mimed
+		      (vm-mm-layout-body-start layout)
+		    (point-min))
+		  (point-max))
+		 (setq encoding "base64")))
+	  (if just-one
+	      nil
+	    (goto-char (point-min))
+	    (setq boundary-positions (cons (point-marker) boundary-positions))
+	    (if (not already-mimed)
+		nil
+	      ;; trim headers
+	      (vm-reorder-message-headers
+	       nil (nconc (list "Content-Disposition:" "Content-ID:")
+			  (if description
+			      (list "Content-Description:")
+			    nil))
+	       nil)
+	      ;; remove header/text separator
+	      (goto-char (1- (vm-mm-layout-body-start layout)))
+	      (if (looking-at "\n")
+		  (delete-char 1)))
+	    (insert "Content-Type: " type)
+	    (if params
+		(if vm-mime-avoid-folding-content-type
+		    (insert "; " (mapconcat 'identity params "; ") "\n")
+		  (insert ";\n\t" (mapconcat 'identity params ";\n\t") "\n"))
+	      (insert "\n"))
+	    (and description
+		 (insert "Content-Description: " description "\n"))
+	    (if disposition
+		(progn
+		  (insert "Content-Disposition: " (car disposition))
+		  (if (cdr disposition)
+		      (insert ";\n\t" (mapconcat 'identity
+						 (cdr disposition)
+						 ";\n\t")))
+		  (insert "\n")))
+	    (insert "Content-Transfer-Encoding: " encoding "\n\n"))
+	  (goto-char (point-max))
+	  (widen)
+	  (save-excursion
+	    (goto-char (overlay-start o))
+	    (vm-assert (looking-at "\\[ATTACHMENT")))
+	  (delete-region (overlay-start o)
+			 (overlay-end o))
+	  (delete-overlay o)
+	  (if (looking-at "\n")
+	      (delete-char 1))
+	  (setq o-list (cdr o-list)))
+	;; handle the remaining chunk of text after the last
+	;; extent, if any.
+	(if (or just-one (= (point) (point-max)))
+	    nil
+	  (setq charset (vm-determine-proper-charset (point)
+						     (point-max)))
+	  (if (vm-xemacs-mule-p)
+	      (encode-coding-region (point-min) (point-max)
+				    file-coding-system))
+	  (setq encoding (vm-determine-proper-content-transfer-encoding
+			  (point)
+			  (point-max))
+		encoding (vm-mime-transfer-encode-region encoding
+							 (point)
+							 (point-max)
+							 t))
+	  (setq 8bit (or 8bit (equal encoding "8bit")))
+	  (setq boundary-positions (cons (point-marker) boundary-positions))
+	  (insert "Content-Type: text/plain; charset=" charset "\n")
+	  (insert "Content-Transfer-Encoding: " encoding "\n\n")
+	  (goto-char (point-max)))
+	(setq boundary (vm-mime-make-multipart-boundary))
+	(mail-text)
+	(while (re-search-forward (concat "^--"
+					  (regexp-quote boundary)
+					  "\\(--\\)?$")
+				  nil t)
+	  (setq boundary (vm-mime-make-multipart-boundary))
+	  (mail-text))
+	(goto-char (point-max))
+	(or just-one (insert "\n--" boundary "--\n"))
+	(while boundary-positions
+	  (goto-char (car boundary-positions))
+	  (insert "\n--" boundary "\n")
+	  (setq boundary-positions (cdr boundary-positions)))
+	(if (and just-one already-mimed)
+	    (progn
+	      (goto-char (vm-mm-layout-header-start layout))
+	      ;; trim headers
+	      (vm-reorder-message-headers
+	       nil '("Content-Description:" "Content-ID:") nil)
+	      ;; remove header/text separator
+	      (goto-char (1- (vm-mm-layout-body-start layout)))
+	      (if (looking-at "\n")
+		  (delete-char 1))
+	      ;; copy remainder to enclosing entity's header section
+	      (insert-buffer-substring (current-buffer)
+				       (vm-mm-layout-header-start layout)
+				       (vm-mm-layout-body-start layout))
+	      (delete-region (vm-mm-layout-header-start layout)
+			     (vm-mm-layout-body-start layout))))
+	(goto-char (point-min))
+	(vm-remove-mail-mode-header-separator)
+	(vm-reorder-message-headers
+	 nil nil "\\(Content-Type:\\|MIME-Version:\\|Content-Transfer-Encoding\\)")
+	(vm-add-mail-mode-header-separator)
+	(insert "MIME-Version: 1.0\n")
+	(if (not just-one)
+	    (insert (if vm-mime-avoid-folding-content-type
+			"Content-Type: multipart/mixed; boundary=\""
+		      "Content-Type: multipart/mixed;\n\tboundary=\"")
+		    boundary "\"\n")
+	  (insert "Content-Type: " type)
+	  (if params
+	      (if vm-mime-avoid-folding-content-type
+		  (insert "; " (mapconcat 'identity params "; ") "\n")
+		(insert ";\n\t" (mapconcat 'identity params ";\n\t"))))
+	  (insert "\n"))
+	(if just-one
+	    (and description
+		 (insert "Content-Description: " description "\n")))
+	(if (and just-one disposition)
+	    (progn
+	      (insert "Content-Disposition: " (car disposition))
+	      (if (cdr disposition)
+		  (insert ";\n\t" (mapconcat 'identity
+					     (cdr disposition)
+					     ";\n\t")))
+	      (insert "\n")))
+	(if just-one
+	    (insert "Content-Transfer-Encoding: " encoding "\n")
+	  (if 8bit
+	      (insert "Content-Transfer-Encoding: 8bit\n")
+	    (insert "Content-Transfer-Encoding: 7bit\n")))))))
+
 (defun vm-mime-fragment-composition (size)
   (save-restriction
     (widen)
@@ -2816,7 +3041,7 @@
       ;; encoding, so verify that everything has been encoded for
       ;; 7bit transmission.
       (let ((vm-mime-8bit-text-transfer-encoding
-	     (if (eq vm-mime-8bit-text-transfer-encoding 'send)
+	     (if (eq vm-mime-8bit-text-transfer-encoding '8bit)
 		 'quoted-printable
 	       vm-mime-8bit-text-transfer-encoding)))
 	(vm-mime-map-atomic-layouts
@@ -2865,6 +3090,7 @@
 	(vm-increment n)
 	(set-buffer master-buffer)
 	(setq start (point)))
+      (vm-add-mail-mode-header-separator)
       (message "Fragmenting message... done")
       (nreverse buffers))))
 
@@ -2887,6 +3113,7 @@
 	  ;; so vm-mime-encode-composition won't complain
 	  (setq major-mode 'mail-mode)
 	  (vm-insert-region-from-buffer mail-buffer)
+	  (vm-remove-mail-mode-header-separator)
 	  (goto-char (point-min))
 	  (or (vm-mail-mode-get-header-contents "From")
 	      (insert "From: " (user-login-name) "\n"))
--- a/lisp/vm/vm-misc.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/vm/vm-misc.el	Mon Aug 13 09:24:17 2007 +0200
@@ -92,6 +92,86 @@
 	     (nreverse list)) ; jwz: fixed order
 	(and work-buffer (kill-buffer work-buffer)))))))
 
+(defun vm-parse-structured-header (string &optional sepchar keep-quotes)
+  (if (null string)
+      ()
+    (let ((work-buffer nil))
+      (save-excursion
+       (unwind-protect
+	   (let ((list nil)
+		 (nonspecials "^\"\\( \t\n\r\f")
+		 start s char sp+sepchar)
+	     (if sepchar
+		 (setq nonspecials (concat nonspecials (list sepchar))
+		       sp+sepchar (concat "\t\f\n\r " (list sepchar))))
+	     (setq work-buffer (generate-new-buffer "*vm-work*"))
+	     (buffer-disable-undo work-buffer)
+	     (set-buffer work-buffer)
+	     (insert string)
+	     (goto-char (point-min))
+	     (skip-chars-forward "\t\f\n\r ")
+	     (setq start (point))
+	     (while (not (eobp))
+	       (skip-chars-forward nonspecials)
+	       (setq char (following-char))
+	       (cond ((looking-at "[ \t\n\r\f]")
+		      (delete-char 1))
+		     ((= char ?\\)
+		      (forward-char 1)
+		      (if (not (eobp))
+			  (forward-char 1)))
+		     ((and sepchar (= char sepchar))
+		      (setq s (buffer-substring start (point)))
+		      (if (or (null (string-match "^[\t\f\n\r ]+$" s))
+			      (not (string= s "")))
+			  (setq list (cons s list)))
+		      (skip-chars-forward sp+sepchar)
+		      (setq start (point)))
+		     ((looking-at " \t\n\r\f")
+		      (skip-chars-forward " \t\n\r\f"))
+		     ((= char ?\")
+		      (let ((done nil))
+			(if keep-quotes
+			    (forward-char 1)
+			  (delete-char 1))
+			(while (not done)
+			  (if (null (re-search-forward "[\\\"]" nil t))
+			      (setq done t)
+			    (setq char (char-after (1- (point))))
+			    (cond ((char-equal char ?\\)
+				   (delete-char -1)
+				   (if (eobp)
+				       (setq done t)
+				     (forward-char 1)))
+				  (t (if (not keep-quotes)
+					 (delete-char -1))
+				     (setq done t)))))))
+		     ((= char ?\()
+		      (let ((done nil)
+			    (pos (point))
+			    (parens 1))
+			(forward-char 1)
+			(while (not done)
+			  (if (null (re-search-forward "[\\()]" nil t))
+			      (setq done t)
+			    (setq char (char-after (1- (point))))
+			    (cond ((char-equal char ?\\)
+				   (if (eobp)
+				       (setq done t)
+				     (forward-char 1)))
+				  ((char-equal char ?\()
+				   (setq parens (1+ parens)))
+				  (t
+				   (setq parens (1- parens)
+					 done (zerop parens))))))
+			(delete-region pos (point))))))
+	     (setq s (buffer-substring start (point)))
+	     (if (and (null (string-match "^[\t\f\n\r ]+$" s))
+		      (not (string= s "")))
+		 (setq list (cons s list)))
+	     (nreverse list))
+	(and work-buffer (kill-buffer work-buffer)))))))
+
 (defun vm-write-string (where string)
   (if (bufferp where)
       (vm-save-buffer-excursion
@@ -435,13 +515,15 @@
 	;; save this work so we won't have to do it again
 	(setq vm-sortable-date-alist
 	      (cons (cons string
-			  (timezone-make-date-sortable
-			   (format "%s %s %s %s %s"
-				   (aref vect 1)
-				   (aref vect 2)
-				   (aref vect 3)
-				   (aref vect 4)
-				   (aref vect 5))))
+			  (condition-case nil
+			      (timezone-make-date-sortable
+			       (format "%s %s %s %s %s"
+				       (aref vect 1)
+				       (aref vect 2)
+				       (aref vect 3)
+				       (aref vect 4)
+				       (aref vect 5)))
+			    (error "1970010100:00:00")))
 		    vm-sortable-date-alist))
 	;; return result
 	(cdr (car vm-sortable-date-alist)))))
--- a/lisp/vm/vm-page.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/vm/vm-page.el	Mon Aug 13 09:24:17 2007 +0200
@@ -282,10 +282,16 @@
 	    (if vm-highlight-url-face
 		(set-extent-property e 'face vm-highlight-url-face))
 	    (if vm-url-browser
-		(let ((keymap (make-sparse-keymap)))
+		(let ((keymap (make-sparse-keymap))
+		      (popup-function
+		       (if (save-excursion
+			     (goto-char (match-beginning n))
+			     (looking-at "mailto:"))
+			   'vm-menu-popup-mailto-url-browser-menu
+			 'vm-menu-popup-url-browser-menu)))
 		  (define-key keymap 'button2 'vm-mouse-send-url-at-event)
 		  (if vm-popup-menu-on-mouse-3
-		      (define-key keymap 'button3 'vm-menu-popup-url-browser-menu))
+		      (define-key keymap 'button3 popup-function))
 		  (define-key keymap "\r"
 		    (function (lambda () (interactive)
 				(vm-mouse-send-url-at-position (point)))))
@@ -318,9 +324,17 @@
 	    (if vm-highlight-url-face
 		(overlay-put o 'face vm-highlight-url-face))
 	    (if vm-url-browser
-		(let ((keymap (make-sparse-keymap)))
+		(let ((keymap (make-sparse-keymap))
+		      (popup-function
+		       (if (save-excursion
+			     (goto-char (match-beginning n))
+			     (looking-at "mailto:"))
+			   'vm-menu-popup-mailto-url-browser-menu
+			 'vm-menu-popup-url-browser-menu)))
 		  (overlay-put o 'mouse-face 'highlight)
 		  (setq keymap (nconc keymap (current-local-map)))
+		  (if vm-popup-menu-on-mouse-3
+		      (define-key keymap [mouse-3] popup-function))
 		  (define-key keymap "\r"
 		    (function (lambda () (interactive)
 				(vm-mouse-send-url-at-position (point)))))
--- a/lisp/vm/vm-sort.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/vm/vm-sort.el	Mon Aug 13 09:24:17 2007 +0200
@@ -212,11 +212,13 @@
       (progn
 	(vm-set-sortable-datestring-of
 	 m
-	 (timezone-make-date-sortable
-	  (or (vm-get-header-contents m "Date:")
-	      (vm-grok-From_-date m)
-	      "Thu, 1 Jan 1970 00:00:00 GMT")
-	  "GMT" "GMT"))
+	 (condition-case nil
+	     (timezone-make-date-sortable
+	      (or (vm-get-header-contents m "Date:")
+		  (vm-grok-From_-date m)
+		  "Thu, 1 Jan 1970 00:00:00 GMT")
+	      "GMT" "GMT")
+	   (error "1970010100:00:00")))
 	(vm-sortable-datestring-of m))))
 
 (defun vm-so-sortable-subject (m)
--- a/lisp/vm/vm-startup.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/vm/vm-startup.el	Mon Aug 13 09:24:17 2007 +0200
@@ -275,7 +275,7 @@
 (defun vm-mode (&optional read-only)
   "Major mode for reading mail.
 
-This is VM 6.22.
+This is VM 6.23.
 
 Commands:
    h - summarize folder contents
--- a/lisp/vm/vm-summary.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/vm/vm-summary.el	Mon Aug 13 09:24:17 2007 +0200
@@ -930,7 +930,8 @@
   (or (vm-message-id-of m)
       (vm-set-message-id-of
        m
-       (or (vm-get-header-contents m "Message-Id:")
+       (or (let ((id (vm-get-header-contents m "Message-Id:")))
+	     (and id (car (vm-parse id "[^<]*\\(<[^>]+>\\)"))))
 	   ;; try running md5 on the message body to produce an ID
 	   ;; better than nothing.
 	   (save-excursion
--- a/lisp/vm/vm-toolbar.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/vm/vm-toolbar.el	Mon Aug 13 09:24:17 2007 +0200
@@ -25,7 +25,7 @@
    (vm-toolbar-any-messages-p)
    "Go to the next message.\n
 The command `vm-toolbar-next-command' is run, which is normally
-bound to `vm-next-message'.
+fbound to `vm-next-message'.
 You can make this button run some other command by using a Lisp
 s-expression like this one in your .vm file:
    (fset 'vm-toolbar-next-command 'some-other-command)"])
@@ -39,7 +39,7 @@
    (vm-toolbar-any-messages-p)
    "Go to the previous message.\n
 The command `vm-toolbar-previous-command' is run, which is normally
-bound to `vm-previous-message'.
+fbound to `vm-previous-message'.
 You can make this button run some other command by using a Lisp
 s-expression like this one in your .vm file:
    (fset 'vm-toolbar-previous-command 'some-other-command)"])
@@ -58,7 +58,7 @@
   [vm-toolbar-file-icon vm-toolbar-file-command (vm-toolbar-any-messages-p)
    "Save the current message to a folder.\n
 The command `vm-toolbar-file-command' is run, which is normally
-bound to `vm-save-message'.
+fbound to `vm-save-message'.
 You can make this button run some other command by using a Lisp
 s-expression like this one in your .vm file:
    (fset 'vm-toolbar-file-command 'some-other-command)"])
@@ -71,7 +71,7 @@
    (vm-toolbar-mail-waiting-p)
    "Retrieve spooled mail for the current folder.\n
 The command `vm-toolbar-getmail-command' is run, which is normally
-bound to `vm-get-new-mail'.
+fbound to `vm-get-new-mail'.
 You can make this button run some other command by using a Lisp
 s-expression like this one in your .vm file:
    (fset 'vm-toolbar-getmail-command 'some-other-command)"])
@@ -85,7 +85,7 @@
    (vm-toolbar-any-messages-p)
    "Print the current message.\n
 The command `vm-toolbar-print-command' is run, which is normally
-bound to `vm-print-message'.
+fbound to `vm-print-message'.
 You can make this button run some other command by using a Lisp
 s-expression like this one in your .vm file:
    (fset 'vm-toolbar-print-command 'some-other-command)"])
@@ -97,7 +97,7 @@
   [vm-toolbar-visit-icon vm-toolbar-visit-command t
    "Visit a different folder.\n
 The command `vm-toolbar-visit-command' is run, which is normally
-bound to `vm-visit-folder'.
+fbound to `vm-visit-folder'.
 You can make this button run some other command by using a Lisp
 s-expression like this one in your .vm file:
    (fset 'vm-toolbar-visit-command 'some-other-command)"])
@@ -111,7 +111,7 @@
    (vm-toolbar-any-messages-p)
    "Reply to the current message.\n
 The command `vm-toolbar-reply-command' is run, which is normally
-bound to `vm-followup-include-text'.
+fbound to `vm-followup-include-text'.
 You can make this button run some other command by using a Lisp
 s-expression like this one in your .vm file:
    (fset 'vm-toolbar-reply-command 'some-other-command)"])
@@ -123,7 +123,7 @@
   [vm-toolbar-compose-icon vm-toolbar-compose-command t
    "Compose a new message.\n
 The command `vm-toolbar-compose-command' is run, which is normally
-bound to `vm-mail'.
+fbound to `vm-mail'.
 You can make this button run some other command by using a Lisp
 s-expression like this one in your .vm file:
    (fset 'vm-toolbar-compose-command 'some-other-command)"])
@@ -141,7 +141,7 @@
 and vm-mime-external-content-types-alist to see how to control
 whether you see buttons or objects.\n
 The command `vm-toolbar-decode-mime-command' is run, which is normally
-bound to `vm-decode-mime-messages'.
+fbound to `vm-decode-mime-messages'.
 You can make this button run some other command by using a Lisp
 s-expression like this one in your .vm file:
    (fset 'vm-toolbar-decode-mime-command 'some-other-command)"])
@@ -190,7 +190,7 @@
    (vm-toolbar-can-quit-p)
    "Quit visiting this folder.\n
 The command `vm-toolbar-quit-command' is run, which is normally
-bound to `vm-quit'.
+fbound to `vm-quit'.
 You can make this button run some other command by using a Lisp
 s-expression like this one in your .vm file:
    (fset 'vm-toolbar-quit-command 'some-other-command)"])
--- a/lisp/vm/vm-vars.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/vm/vm-vars.el	Mon Aug 13 09:24:17 2007 +0200
@@ -415,7 +415,7 @@
 A nil value means VM will not offer any support for composing
 MIME messages.")
 
-(defvar vm-honor-mime-content-disposition nil
+(defvar vm-honor-mime-content-disposition t
   "*Non-nil value means use information from the Content-Disposition header
 to display MIME messages.  The Content-Disposition header
 specifies whether a MIME object should be displayed inline or
@@ -450,11 +450,11 @@
 Note that some types are processed specially, and this variable does not
 apply to them.
 
-   Multipart/Digest and Message/RFC822 messages are always
-   displayed as a button to avoid visiting a new folder while the
-   user is moving around in the current folder.
-
-   Message/Partial messages are always displayed as a button,
+   multipart/digest, message/news and message/rfc822 messages are
+   always displayed as a button to avoid automatically visiting a
+   new folder while you are moving around in the current folder.
+
+   message/partial messages are always displayed as a button,
    because there always needs to be a way to trigger the assembly
    of the parts into a full message.
 
@@ -594,7 +594,7 @@
 e.g. X windows.  So this variable will have no effect if you're
 running Emacs on a tty.
 
-Note that under FSF Emacs any fonts you use must be the same size
+Note that under FSF Emacs any fonts you use must be the same height
 as your default font.  XEmacs does not have this limitation.")
 
 (defvar vm-mime-button-face 'gui-button-face
@@ -610,7 +610,7 @@
 This variable is unused in XEmacs/MULE.  Since multiple character
 sets can be displayed in a single buffer under MULE, VM will map
 the file coding system of the buffer to a single MIME character
-that can display all the buffer's characters.")
+set that can display all the buffer's characters.")
 
 (defvar vm-mime-8bit-text-transfer-encoding 'quoted-printable
   "*Symbol specifying what kind of transfer encoding to use on 8bit
@@ -2307,7 +2307,10 @@
 (defvar vm-mosaic-program-switches nil
   "*List of command line switches to pass to Mosaic.")
 
-(defvar vm-temp-file-directory "/tmp"
+(defvar vm-temp-file-directory
+  (or (and (file-directory-p "/tmp") "/tmp")
+      (and (file-directory-p "C:\\") "C:\\")
+      "/tmp")
   "*Name of a directory where VM can put temporary files.
 This name must not end with a slash.")
 
@@ -2433,6 +2436,17 @@
     (define-key map "8" 'digit-argument)
     (define-key map "9" 'digit-argument)
     (define-key map "-" 'negative-argument)
+    (cond ((fboundp 'set-keymap-name)
+	   (set-keymap-name map 'vm-mode-map)
+	   (set-keymap-name (lookup-key map "l")
+			    "VM mode message labels map")
+	   (set-keymap-name (lookup-key map "V")
+			    "VM mode virtual folders map")
+	   (set-keymap-name (lookup-key map "M")
+			    "VM mode message marks map")
+	   (set-keymap-name (lookup-key map "W")
+			    "VM mode window configuration map")))
+
     map )
   "Keymap for VM mode.")
 
@@ -2449,8 +2463,11 @@
     (define-key map "\C-c\C-y" 'vm-yank-message)
     (define-key map "\C-c\C-s" 'vm-mail-send)
     (define-key map "\C-c\C-c" 'vm-mail-send-and-exit)
+    (cond ((fboundp 'set-keymap-name)
+	   (set-keymap-name map 'vm-mail-mode-map)))
     map )
-  "Keymap for VM Mail mode buffers.")
+  "Keymap for VM Mail mode buffers.
+Its parent keymap is mail-mode-map.")
 
 (defvar vm-edit-message-map
   (let ((map (make-sparse-keymap)))
@@ -2458,6 +2475,8 @@
     (define-key map "\C-c\e" 'vm-edit-message-end)
     (define-key map "\C-c\C-c" 'vm-edit-message-end)
     (define-key map "\C-c\C-]" 'vm-edit-message-abort)
+    (cond ((fboundp 'set-keymap-name)
+	   (set-keymap-name map 'vm-edit-message-map)))
     map )
   "Keymap for the buffers created by VM's vm-edit-message command.")
 
@@ -2913,6 +2932,7 @@
 (make-variable-buffer-local 'vm-summary-overlay)
 (defvar vm-thread-loop-obarray (make-vector 29 0))
 (defvar vm-delete-duplicates-obarray (make-vector 29 0))
+(defvar vm-image-obarray (make-vector 29 0))
 (defvar vm-mail-mode-map-parented nil)
 (defvar vm-xface-cache (make-vector 29 0))
 (defconst vm-mime-base64-alphabet
--- a/lisp/vm/vm-version.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/vm/vm-version.el	Mon Aug 13 09:24:17 2007 +0200
@@ -2,7 +2,7 @@
 
 (provide 'vm-version)
 
-(defconst vm-version "6.22"
+(defconst vm-version "6.23"
   "Version number of VM.")
 
 (defun vm-version ()
--- a/lisp/vm/vm-window.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/vm/vm-window.el	Mon Aug 13 09:24:17 2007 +0200
@@ -644,12 +644,15 @@
 ;; absent under Emacs 19.34.  So vm-frame-per-summary won't work
 ;; quite right under these Emacs versions.  XEmacs 19.15 should
 ;; have a working version of this function.
-(if (and (fboundp 'frame-totally-visible-p)
-	 (vm-xemacs-p)
-	 (or (>= emacs-major-version 20)
-	     (>= emacs-minor-version 15)))
-    (fset 'vm-frame-totally-visible-p 'frame-totally-visible-p)
-  (fset 'vm-frame-totally-visible-p 'vm-frame-visible-p))
+;; 2 April 1997, frame-totallyt-visible-p apparently still broken
+;; under 19.15.  I give it up for now.
+;;(if (and (fboundp 'frame-totally-visible-p)
+;;	 (vm-xemacs-p)
+;;	 (or (>= emacs-major-version 20)
+;;	     (>= emacs-minor-version 15)))
+;;    (fset 'vm-frame-totally-visible-p 'frame-totally-visible-p)
+;;  (fset 'vm-frame-totally-visible-p 'vm-frame-visible-p))
+(fset 'vm-frame-totally-visible-p 'vm-frame-visible-p)
 
 (fset 'vm-window-frame
       (symbol-function
--- a/lisp/w3/ChangeLog	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/ChangeLog	Mon Aug 13 09:24:17 2007 +0200
@@ -2,11 +2,134 @@
 
 * Makefile (xemacs-w3): Special target for XEmacs Build.
 
+Thu Apr  3 07:22:27 1997  William M. Perry  <wmperry@aventail.com>
+
+* w3-parse.el: Put in <p> as part of the content-model of <ul/ol> so that
+  <p> at the front of a list doesn't cause a bogus list item to be shown.
+
+* url-http.el (url-parse-mime-headers): Make proxy authentication sort of
+  work again.
+
+* w3-display.el (w3-setup-terminal-chars): Check to see whether face is
+  actually different before trying to set its font to a terminal one.
+
+* url.el (url-buffer-visiting): Better matching of URLs - it was taking
+  the target into account - bad bad bad.
+
+Wed Apr  2 18:05:11 1997  William M. Perry  <wmperry@aventail.com>
+
+* w3-forms.el (w3-form-add-element): New way to do hidden form
+  fields that retains the order information - damned idiots out there rely
+  on ordering.  !#%!@
+
+* w3.el (w3-fetch): Put some of the logic about _blank/_top frame targets
+  into w3-fetch
+
+* w3-display.el (w3-get-all-face-info): Added in support for the 'face'
+  attribute to specify font-family
+
+Wed Apr  2 13:08:36 1997  Frederic Lepied <Frederic.Lepied@sugix.frmug.org>
+
+* w3-print.el (w3-print-this-url): Need to run LaTeX to get the indices
+  right.
+
+Tue Apr  1 11:20:54 1997  William M. Perry  <wmperry@aventail.com>
+
+* Emacs/W3 3.0.78 released
+
+* css.el (css-color-light-p): New function
+  (css-active-device-types): Use it to add a 'dark' or 'light' property to
+  the active device types as necessary
+
+Mon Mar 31 09:07:13 1997  William M. Perry  <wmperry@aventail.com>
+
+* w3-parse.el: More error transitions for tables (push tr before td/th
+  just after a table)
+
+* w3-display.el (w3-display-node): Use it for body/html attribute handling
+  (w3-fix-color): New function to make sure we don't pass hex values without
+  "#" in front of them.
+
+Sun Mar 30 15:00:59 1997  William M. Perry  <wmperry@aventail.com>
+
+* w3-display.el (w3-display-node): Now honors alink/vlink/link attributes
+  on the body tag.
+  (w3-fixup-eol-faces): Fixed nuking of faces at end of line to deal with
+  bad underlining behaviour of Emacs 19.
+
+Sun Mar 30 14:28:32 1997  Greg Stark <gsstark@mit.edu>
+
+* w3-e19.el (w3-mode-version-specifics): Fixed buffer read-only errors
+  when trying to set a background face.
+
+Fri Mar 28 10:41:43 1997  William M. Perry  <wmperry@aventail.com>
+
+* Emacs/W3 3.0.77 released
+
+* w3-display.el (w3-display-table): Face properties specified on the
+  'table' element now propogate to table cells correctly.
+
+Fri Mar 28 07:53:48 1997  Greg Stark <gsstark@mit.edu>
+
+* w3-forms.el: Make sure we set the button-face on all widgets
+
+Fri Mar 28 07:53:48 1997  William M. Perry  <wmperry@aventail.com>
+
+* w3-display.el (w3-frames): Use make-frame, not make-frame-command, so it
+  will work on XEmacs.
+
+* w3-e19.el (w3-mode-version-specifics): Now honors background/foreground
+  color requests in Emacs19 by coloring in the whole buffer.  Oh how I
+  wish Emacs 19 had buffer-local faces.
+
+* w3-display.el (w3-display-table): Tables now look better under Emacs 19
+
+Thu Mar 27 08:05:34 1997  William M. Perry  <wmperry@aventail.com>
+
+* font.el (font-x-registry-and-encoding-regexp): got rid of compile
+  warning under Emacs 19
+
+* w3-display.el (w3-display-handle-list-type): manually remove faces on
+  bullet/list items
+  (w3-display-node): We were being a bit rude to inhibit-read-only -
+  sometimes would leave it 't', which is bad bad bad, some might even say
+  pure evil.
+
+* Emacs-W3 3.0.76 released
+
+* Synch'd up to Widget 1.68
+
+* w3-display.el (w3-display-node): Handles 'text' attribute correctly now
+  to set the default foreground when requested.
+
+* mm.el (mm-play-sound-file): Fixed it for new mule stuff
+
+* url-gw.el (url-gateway-nslookup-host): Added autoload for
+  gateway-nslookup-host
+
+* w3-display.el (w3-display-table): Expand each line of a table cell out
+  to the border, so that we get nicely colors backgrounds for table cells
+  now.
+
+* font.el (font-x-registry-and-encoding-regexp): New variable to match the
+  registry and encoding of a font name under X
+  (x-font-create-object): Use it to set the default registry and encoding
+  for font objects we create from font names.
+  (x-font-create-name): Grab the registry and encoding from the default
+  object for this device before defaulting back to '*'
+
+* w3-display.el (w3-setup-terminal-chars): Explicitly specify wildcard
+  registry and encoding for the table-hack-x-face, to deal with changes in
+  the font library.
+
 Wed Mar 26 06:23:51 1997  William M. Perry  <wmperry@aventail.com>
 
+* custom-check: Should work better now, and spit out better instructions
+  for rebuilding correctly.
+
 * Emacs-W3 3.0.75 released
 
-* url.el (url-clean-text): Better matchine of bogus process exited
+* url.el (url-clean-text): Better matching of bogus process exited
   messages.
 
 * font.el (font-rgb-color-p): No longer match "^#xxyyzz" as an rgb-color,
@@ -24,7 +147,7 @@
 
 * Emacs-W3 3.0.74 released
 
-Tue Mar 25 15:31:56 1997  Greg Stark <gsstark@great-white>
+Tue Mar 25 15:31:56 1997  Greg Stark <gsstark@mit.edu>
 
 * url-cookie.el (url-cookie-handle-set-cookie): don't deal with #!%@ed
   microsoft web site cookies - they break good, clean, wholesome sites
--- a/lisp/w3/FAQ	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/FAQ	Mon Aug 13 09:24:17 2007 +0200
@@ -1,8 +1,12 @@
 Q: Options menu is ugly under Emacs 19
 A: Wait for 19.35 - this is because of a 'feature lack' in easymenu.el
 
+Q: Animated GIFs cause XEmacs 19.14 or 20.0 to crash
+A: There was a bug in the GIF decoding routines in XEmacs 19.14 - please 
+   upgrade to XEmacs 19.15 or later.
+
 Q: I get an error when starting up:
-   Symbol's value as variable is void: widget-mouse-face
+   Symbol's function definition is void: custom-declare-group
 A: This usually means you compiled W3 in an emacs that could not find
    the 'custom' package (or found an old version), but are running W3
    in an emacs that find the new one.  This is usually the case if you
@@ -11,3 +15,119 @@
    Make sure that you can load the custom library when compiling
    emacs.  Set the environment variable WIDGETDIR to where your custom
    library lives (ie: ~/lisp/gnus/lisp)
+
+Courtesy of greg stark <gsstark@mit.edu>
+Q: How do i get Shift-Tab to go backwards on a text terminal or XTerm?
+aka: I hate the new text widgets, I can't go through the links with n and b
+     I can go forward using TAB but how do i go backward on a terminal? 
+
+A: Not all terminals can distinguish between a shifted tab and an unshifted
+tab at all. Tab is indicated on a text terminal by a control-i. There is no
+such thing as capital control characters, so if the terminal is going to
+indicate a shift-tab somehow it has to be completely differently. The most
+appropriate thing to use is probably "backtab" which on old text terminals was
+sometimes a separate key and Emacs is already set up to recognize
+automatically if it exists.
+
+Making "backtab" work involves several steps. First you have to make sure your
+console generates some character sequence to indicate the key you want to
+generate a "backtab". Then you have to configure termcap or terminfo to
+recognize that key sequence. Then you may have to make your programs do useful
+things when they get a "backtab", Emacs for example will recognize it
+automatically but except for the Widget and W3 commands nothing is ever bound
+it it.
+
+Step 1 On An XTerm: XTerm obeys standard X Toolkit translations which you can
+use to specify what character sequence Shift-Tab generates. The following X
+Resources will cause Shift-Tab and Meta-Shift-Tab to generate reasonable
+character sequences. You can either put this in your .Xresources or .Xdefaults
+file, or you can put it in /usr/lib/X11/app-defaults/XTerm to make it a
+site-wide default. (On Debian systems you should put it in
+/etc/X11/Xresources, not the app-defaults files):
+
+XTerm*VT100.translations: #override \
+   ~Meta Shift<Key>Tab: string(\033[Z) \n\
+    Meta Shift<Key>Tab: string(\033\033[Z) \n
+
+I recommend these sequences, they are based on what seems to be a more or less
+standard sequence ^[[Z for backtab.
+
+Step 1 On Rxvt: By default Rxvt sends ^[[Z for Shift-Tab. 
+However, if Shift-Tab generates another keysym, like for example in XFree86
+3.2 where it's bound to ISO_Left_Tab then Rxvt will just ignore it. You would
+need to defeat this feature to make rxvt work again by doing something like:
+
+xmodmap -e 'keysym Tab = Tab'
+
+or adding that command to some global X configuration file (On Debian systems
+adding ``Keysym Tab = Tab'' to /etc/X11/Xmodmap or ~/.Xmodmap is sufficient)
+
+Step 1 On A Linux Virtual Console: on a Linux virtual console you can
+configure what character sequences are generated by which keys using the
+loadkeys command. Many systems are set up to run loadkeys automatically on
+startup with some keymap file. On Debian systems this is true, the keymap file
+is specified in /etc/kbd/config and usually lives in the
+/usr/lib/kbd/keytables directory. You want to put something like the following
+in your keytable file:
+
+keycode  15 = Tab   F91
+	alt     keycode  15 = Meta_Tab        
+	shift   alt     keycode  15 = F92
+
+where keycode 15 is Tab on my keyboard (and probably any keyboard). This
+defines Tab and Alt-Tab normally, and also defines Shift-Tab to be F91 and
+Shift-Alt-Tab to be F92.
+
+Then put something like this:
+# backtab and M-backtab
+string F91 = "\033[Z"
+string F92 = "\033\033[Z"
+
+later in the file. This defines what character sequence F91 (Shift-Tab) and
+F92 (Alt-Shift-Tab) should generate. I recommend these sequences, they are
+based on what seems to be a more or less standard sequence ^[[Z for backtab.
+
+Step 2 On A Termcap System:
+
+The termcap capability is kB, i'm not familiar with termcap tools, i think you
+just need to add it to the /etc/termcap file for the terminal you're concerned
+with as kB=\E[Z.
+
+Step 2 On A Terminfo System:
+
+The terminfo capability is kcbt (the long name is key_btab). You want to run
+infocmp to generate an edittable copy of the terminal info. Add the
+capability, then use tic to compile that information. Something like this:
+
+infocmp $TERM > info
+emacs info & # add kcbt=\E[Z, to the file
+tic info
+
+If you do this as root it should add the new definition to the system wide
+terminfo database. If you do it as a normal user it should create a
+~/.terminfo database with a local terminfo info definition for that terminal.
+
+Step 3 On Emacs:
+
+The standard terminal initialization should recognize the backtab capability
+automatically. To test it try C-h c Shift-Tab and see what it calls the key.
+To bind commands to it just use [backtab] in local-set-key or global-set-key
+as in:
+
+(local-set-key [backtab] 'hippie-expand)
+or
+(global-set-key [backtab] 'hippie-expand)
+
+In the interest of maintaining a single consistent set of key bindings between
+X and tty emacsen you may want to make equivalent X keystroke generate
+"backtab" as well, you can do this by doing this:
+
+(define-key function-key-map [S-tab] [backtab])
+or
+(define-key function-key-map [iso-lefttab] [backtab])
+
+To make S-tab or whatever keystroke you made generate backtab on a terminal
+be recognized as backtab under X11 as well. You can check how Emacs recognizes
+this keystroke currently by doing C-h c <keystroke>.
+
+
--- a/lisp/w3/Makefile	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/Makefile	Mon Aug 13 09:24:17 2007 +0200
@@ -17,7 +17,7 @@
 
 # Change this to be how to convert texinfo files into info files
 # examples:
-#	$(EMACS) -batch -q -f batch-texinfo-format
+#	$(EMACS) -batch -q -l texinfmt -f batch-texinfo-format
 #	makeinfo
 MAKEINFO      = makeinfo
 
--- a/lisp/w3/css.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/css.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,7 +1,7 @@
 ;;; css.el -- Cascading Style Sheet parser
 ;; Author: wmperry
-;; Created: 1997/03/25 03:35:09
-;; Version: 1.33
+;; Created: 1997/04/01 19:21:41
+;; Version: 1.34
 ;; Keywords: 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -714,8 +714,62 @@
   (css-replace-regexp "[ \t\r]+$" "")	; Nuke whitespace at end of line
   (goto-char (point-min)))
 
+(if css-running-xemacs
+    (defun css-color-light-p (color-or-face)
+      (let (face color)
+	(cond
+	 ((or (facep color-or-face)
+	      (and (symbolp color-or-face)
+		   (find-face color-or-face)))
+	  (setq color (specifier-instance (face-background color-or-face))))
+	 ((color-instance-p color-or-face)
+	  (setq color color-or-face))
+	 ((color-specifier-p color-or-face)
+	  (setq color (specifier-instance color-or-face)))
+	 ((stringp color-or-face)
+	  (setq color (make-color-instance color-or-face)))
+	 (t (signal 'wrong-type-argument 'color-or-face-p)))
+	(if color
+	    (not (< (apply '+ (color-instance-rgb-components color))
+		    (/ (apply '+ (color-instance-rgb-components
+				  (make-color-instance "white"))) 3)))
+	  t)))
+  (defun css-color-values (color)
+    (cond
+     ((eq window-system 'x)
+      (x-color-values color))
+     ((eq window-system 'pm)
+      (pm-color-values color))
+     ((eq window-system 'ns)
+      (ns-color-values color))
+     (t nil)))
+  (defun css-color-light-p (color-or-face)
+    (let (colors)
+      (cond
+       ((null window-system)
+	nil)
+       ((facep color-or-face)
+	(setq color-or-face (face-background color-or-face))
+	(if (null color-or-face)
+	    (setq color-or-face (cdr-safe
+				 (assq 'background-color (frame-parameters)))))
+	(setq colors (css-color-values color-or-face)))
+       ((stringp color-or-face)
+	(setq colors (css-color-values color-or-face)))
+       ((font-rgb-color-p color-or-face)
+	(setq colors (list (font-rgb-color-red color-or-face)
+			   (font-rgb-color-green color-or-face)
+			   (font-rgb-color-blue color-or-face))))
+       (t
+	(signal 'wrong-type-argument 'color-or-face-p)))
+      (not (< (apply '+ colors)
+	      (/ (apply '+ (css-color-values "white")) 3)))))
+  )
+
 (defun css-active-device-types (&optional device)
-  (let ((types (list 'all (if css-running-xemacs 'xemacs 'emacs)))
+  (let ((types (list 'all
+		     (if css-running-xemacs 'xemacs 'emacs)
+		     (if (css-color-light-p 'default) 'light 'dark)))
 	(type (device-type device)))
     (cond
      ((featurep 'emacspeak)
--- a/lisp/w3/custom-check	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/custom-check	Mon Aug 13 09:24:17 2007 +0200
@@ -1,5 +1,10 @@
 #!/bin/sh
 EMACS=${1:-emacs}
+
+if [ -n "$WIDGETDIR" ]; then
+    exit 0
+fi
+
 if [ -z "$HOME" ]; then
     HOME=`(cd ; pwd)`
 fi
@@ -8,18 +13,25 @@
     DOTEMACS="-l ${HOME}/.emacs"
 fi
 
-WITH=`   ${EMACS} -batch ${DOTEMACS}      -eval '(princ (file-truename (locate-library "custom")))'`
-WITHOUT=`${EMACS} -batch -q -no-site-file -eval '(princ (file-truename (locate-library "custom")))'`
+WITH=`   ${EMACS} -batch ${DOTEMACS}      -eval '(princ (file-truename (locate-library "custom")))' 2> /dev/null`
+WITHOUT=`${EMACS} -batch -q -no-site-file -eval '(princ (file-truename (locate-library "custom")))' 2>/dev/null`
+
+# For some reason XEmacs sometimes ends up with a newline at the beginning
+# of the output... this will hopefully strip it out.
+WITH=`echo $WITH | tr '\010\013' ' '`
+WITHOUT=`echo $WITHOUT | tr '\013\010' ' '`
 
 if [ "${WITH}" = "${WITHOUT}" ]; then
     exit 0
 else
+    DIRECTORY=`dirname ${WITH}`
+
     echo "WARNING -- WARNING -- WARNING"
     echo "Found custom in different places with and without ${HOME}/.emacs"
     echo
     echo "This could cause potential problems.  Please recompile with"
     echo "the environment variable WIDGETDIR set correctly.  Try this"
     echo "command:"
-    echo "make WIDGETDIR=${WITH}"
+    echo "make WIDGETDIR=${DIRECTORY}"
     exit 1
 fi
--- a/lisp/w3/font.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/font.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,7 +1,7 @@
 ;;; font.el --- New font model
 ;; Author: wmperry
-;; Created: 1997/03/26 20:08:55
-;; Version: 1.40
+;; Created: 1997/03/28 20:23:52
+;; Version: 1.43
 ;; Keywords: faces
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -75,7 +75,7 @@
     (:light       . "light")
     (:demi-light  . "demilight")
     (:medium      . "medium")
-    (:normal      . "normal")
+    (:normal      . "medium")
     (:demi-bold   . "demibold")
     (:bold        . "bold")
     (:extra-bold  . "extrabold"))
@@ -89,7 +89,7 @@
     (:demi        . "demi")
     (:book        . "book")
     (:medium      . "medium")
-    (:normal      . "normal")
+    (:normal      . "medium")
     (:demi-bold   . "demibold")
     (:bold        . "bold")
     (:extra-bold  . "extrabold"))
@@ -474,6 +474,15 @@
 	   registry - encoding "\\'"
 	   ))))
 
+(defvar font-x-registry-and-encoding-regexp
+  (or (and font-running-xemacs
+	   (boundp 'x-font-regexp-registry-and-encoding)
+	   (symbol-value 'x-font-regexp-registry-and-encoding))
+      (let ((- "[-?]")
+	    (registry "[^-]*")
+	    (encoding "[^-]+"))
+	(concat - "\\(" registry "\\)" - "\\(" encoding "\\)\\'"))))
+
 (defun x-font-create-object (fontname &optional device)
   (let ((case-fold-search t))
     (if (or (not (stringp fontname))
@@ -515,6 +524,10 @@
 	  (set-font-italic-p retval t))
 	 ((member slant '("o" "O"))
 	  (set-font-oblique-p retval t)))
+	(if (string-match font-x-registry-and-encoding-regexp fontname)
+	    (progn
+	      (set-font-registry retval (match-string 1 fontname))
+	      (set-font-encoding retval (match-string 2 fontname))))
 	retval))))
 
 (defun x-font-families-for-device (&optional device no-resetp)
@@ -566,6 +579,16 @@
   (font-family (font-default-object-for-device device)))
 
 ;;;###autoload
+(defun font-default-registry-for-device (&optional device)
+  (or device (setq device (selected-device)))
+  (font-registry (font-default-object-for-device device)))
+
+;;;###autoload
+(defun font-default-encoding-for-device (&optional device)
+  (or device (setq device (selected-device)))
+  (font-encoding (font-default-object-for-device device)))
+
+;;;###autoload
 (defun font-default-size-for-device (&optional device)
   (or device (setq device (selected-device)))
   ;; face-height isn't the right thing (always 1 pixel too high?)
@@ -582,16 +605,21 @@
 	   (= (font-style fontobj) 0))
       (face-font 'default)
     (or device (setq device (selected-device)))
-    (let ((family (or (font-family fontobj)
-		      (font-default-family-for-device device)
-		      (x-font-families-for-device device)))
-	  (weight (or (font-weight fontobj) :medium))
-	  (style (font-style fontobj))
-	  (size (or (if font-running-xemacs
-			(font-size fontobj))
-		    (font-default-size-for-device device)))
-	  (registry (or (font-registry fontobj) "*"))
-	  (encoding (or (font-encoding fontobj) "*")))
+    (let* ((default (font-default-object-for-device device))
+	   (family (or (font-family fontobj)
+		       (font-family default)
+		       (x-font-families-for-device device)))
+	   (weight (or (font-weight fontobj) :medium))
+	   (style (font-style fontobj))
+	   (size (or (if font-running-xemacs
+			 (font-size fontobj))
+		     (font-size default)))
+	   (registry (or (font-registry fontobj)
+			 (font-registry default)
+			 "*"))
+	   (encoding (or (font-encoding fontobj)
+			 (font-encoding default)
+			 "*")))
       (if (stringp family)
 	  (setq family (list family)))
       (setq weight (font-higher-weight weight
--- a/lisp/w3/mm.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/mm.el	Mon Aug 13 09:24:17 2007 +0200
@@ -184,7 +184,7 @@
 		      ("x-mpeg" . (("viewer" . "maplay %s")
 				   ("type"   . "audio/x-mpeg")))
 		      (".*" . (("viewer" . mm-play-sound-file)
-			       ("test"     . (or (featurep 'nas-sound)
+			       ("test"   . (or (featurep 'nas-sound)
 					       (featurep 'native-sound)))
 			       ("type"   . "audio/*")))
 		      (".*" . (("viewer" . "showaudio")
@@ -1082,7 +1082,7 @@
   (setq buff (or buff (current-buffer)))
   (let ((fname (mm-generate-unique-filename "%s.au"))
 	(synchronous-sounds t))		; Play synchronously
-    (mm-write-region-no-coding-system (point-min) (point-max) fname)
+    (mule-write-region-no-coding-system (point-min) (point-max) fname)
     (kill-buffer (current-buffer))
     (play-sound-file fname)
     (condition-case ()
--- a/lisp/w3/ssl.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/ssl.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,7 +1,7 @@
 ;;; ssl.el,v --- ssl functions for emacsen without them builtin
 ;; Author: wmperry
-;; Created: 1997/03/26 00:04:40
-;; Version: 1.13
+;; Created: 1997/03/31 16:22:42
+;; Version: 1.14
 ;; Keywords: comm
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -43,7 +43,7 @@
 
 (defgroup ssl nil
   "Support for `Secure Sockets Layer' encryption."
-  :group 'emacs)
+  :group 'comm)
   
 (defcustom ssl-certificate-directory "~/.w3/certs/"
   "*Directory to store CA certificates in"
@@ -74,10 +74,13 @@
   :group 'ssl
   :type '(choice (const :tag "SSLeay" :value ssleay)))  
 
-(defcustom ssl-certificate-verification-depth 0
+(defcustom ssl-certificate-verification-policy 0
   "*How far up the certificate chain we should verify."
   :group 'ssl
-  :type 'integer)
+  :type '(choice (const :tag "No verification" :value 0)
+		 (const :tag "Verification required" :value 1)
+		 (const :tag "Reject connection if verification fails" :value 3)
+		 (const :tag "SSL_VERIFY_CLIENT_ONCE" :value 5)))
 
 (defcustom ssl-program-name "s_client"
   "*The program to run in a subprocess to open an SSL connection."
@@ -88,7 +91,7 @@
   '(;;"-quiet"
     "-host" host
     "-port" service
-    "-verify" (int-to-string ssl-certificate-verification-depth)
+    "-verify" (int-to-string ssl-certificate-verification-policy)
     "-CApath" ssl-certificate-directory
     )
   "*Arguments that should be passed to the program `ssl-program-name'.
--- a/lisp/w3/url-cache.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/url-cache.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,7 +1,7 @@
 ;;; url-cache.el --- Uniform Resource Locator retrieval tool
 ;; Author: wmperry
-;; Created: 1997/03/09 21:09:36
-;; Version: 1.10
+;; Created: 1997/04/03 21:04:08
+;; Version: 1.11
 ;; Keywords: comm, data, processes, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -150,9 +150,9 @@
 	      (cons
 	       (user-real-login-name)
 	       (cons (or protocol "file")
-		     (split-string (or hostname "localhost")
-				   (eval-when-compile
-				     (regexp-quote "."))))))
+		     (reverse (split-string (or hostname "localhost")
+					    (eval-when-compile
+					      (regexp-quote ".")))))))
 	     (fname    (url-filename urlobj)))
 	(if (and fname (/= (length fname) 0) (= (aref fname 0) ?/))
 	    (setq fname (substring fname 1 nil)))
--- a/lisp/w3/url-gw.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/url-gw.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,7 +1,7 @@
 ;;; url-gw.el --- Gateway munging for URL loading
 ;; Author: wmperry
-;; Created: 1997/03/26 14:32:29
-;; Version: 1.7
+;; Created: 1997/03/27 21:29:24
+;; Version: 1.8
 ;; Keywords: comm, data, processes
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -72,6 +72,7 @@
   "*If non-NIL then a string naming nslookup program." )
 
 ;; Stolen from ange-ftp
+;;;###autoload
 (defun url-gateway-nslookup-host (host)
   "Attempt to resolve the given HOSTNAME using nslookup if possible."
   (interactive "sHost:  ")
--- a/lisp/w3/url-http.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/url-http.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,7 +1,7 @@
 ;;; url-http.el --- HTTP Uniform Resource Locator retrieval code
 ;; Author: wmperry
-;; Created: 1997/03/03 15:13:11
-;; Version: 1.16
+;; Created: 1997/04/03 20:34:59
+;; Version: 1.17
 ;; Keywords: comm, data, processes
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -442,7 +442,10 @@
        ((= status 407)			; Proxy authentication required
 	(let* ((y (or (cdr (assoc "proxy-authenticate" result)) "basic"))
 	       (url (url-view-url t))
+	       (urlobj (url-generic-parse-url url))
 	       (url-basic-auth-storage url-proxy-basic-authentication)
+	       (url-using-proxy (url-find-proxy-for-url urlobj
+							(url-host urlobj)))
 	       (type (downcase (if (string-match "[ \t]" y)
 				   (substring y 0 (match-beginning 0))
 				 y))))
--- a/lisp/w3/url-vars.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/url-vars.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,7 +1,7 @@
 ;;; url-vars.el --- Variables for Uniform Resource Locator tool
 ;; Author: wmperry
-;; Created: 1997/03/26 20:12:27
-;; Version: 1.43
+;; Created: 1997/04/03 21:42:29
+;; Version: 1.47
 ;; Keywords: comm, data, processes, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -26,7 +26,7 @@
 ;;; Boston, MA 02111-1307, USA.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(defconst url-version (let ((x "p3.0.75"))
+(defconst url-version (let ((x "p3.0.79"))
 			(if (string-match "State: \\([^ \t\n]+\\)" x)
 			    (substring x (match-beginning 1) (match-end 1))
 			  x))
--- a/lisp/w3/url.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/url.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,13 +1,13 @@
 ;;; url.el --- Uniform Resource Locator retrieval tool
 ;; Author: wmperry
-;; Created: 1997/03/26 20:11:33
-;; Version: 1.69
+;; Created: 1997/04/03 15:23:07
+;; Version: 1.70
 ;; Keywords: comm, data, processes, hypermedia
 
 ;;; LCD Archive Entry:
 ;;; url|William M. Perry|wmperry@cs.indiana.edu|
 ;;; Functions for retrieving/manipulating URLs|
-;;; 1997/03/26 20:11:33|1.69|Location Undetermined
+;;; 1997/04/03 15:23:07|1.70|Location Undetermined
 ;;;
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -668,6 +668,7 @@
 	  type (url-type data))
     (if (member type '("www" "about" "mailto" "mailserver" "info"))
 	(setq retval url)
+      (url-set-target data nil)
       (setq retval (url-recreate-url data)))
     retval))
 
@@ -677,17 +678,14 @@
   (setq url (url-normalize-url url))
   (let ((bufs (buffer-list))
 	(found nil))
-    (if (condition-case ()
-	    (string-match "\\(.*\\)#" url)
-	  (error nil))
-	(setq url (url-match url 1)))
     (while (and bufs (not found))
       (save-excursion
 	(set-buffer (car bufs))
 	(setq found (if (and
 			 (not (string-match " \\*URL-?[0-9]*\\*" (buffer-name (car bufs))))
 			 (memq major-mode '(url-mode w3-mode))
-			 (equal (url-view-url t) url)) (car bufs) nil)
+			 (equal (url-normalize-url (url-view-url t)) url))
+			(car bufs) nil)
 	      bufs (cdr bufs))))
     found))
 
--- a/lisp/w3/w3-auto.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/w3-auto.el	Mon Aug 13 09:24:17 2007 +0200
@@ -45,6 +45,9 @@
 (autoload 'widget-backward "wid-edit")
 (autoload 'widget-at "wid-edit")
 
+;; URL stuff
+(autoload 'url-gateway-nslookup-host "url-gw")
+
 ;; Preferences
 (autoload 'w3-preferences-edit "w3-prefs" nil t)
 
--- a/lisp/w3/w3-display.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/w3-display.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,7 +1,7 @@
 ;;; w3-display.el --- display engine v99999
 ;; Author: wmperry
-;; Created: 1997/03/26 15:24:53
-;; Version: 1.157
+;; Created: 1997/04/03 16:32:31
+;; Version: 1.171
 ;; Keywords: faces, help, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -70,6 +70,7 @@
 (w3-d-s-var-def w3-face-descr)
 (w3-d-s-var-def w3-face-pixmap)
 (w3-d-s-var-def w3-display-css-properties)
+(w3-d-s-var-def w3-display-background-properties)
 
 (eval-when-compile
   (defmacro w3-get-attribute (attr)
@@ -91,6 +92,13 @@
     (`
      (progn
        (w3-get-face-info font-family)
+       ;; This is to handle the 'face' attribute on arbitrary elements
+       (if (cdr-safe (assq 'face (nth 1 node)))
+	   (setf (car w3-face-font-family)
+		 (append (car w3-face-font-family)
+			 (split-string (cdr-safe
+					(assq 'face (nth 1 node)))
+				       " *, *"))))
        (w3-get-face-info font-style)
        (w3-get-face-info font-weight)
        (w3-get-face-info font-variant)
@@ -311,7 +319,7 @@
 	     (if (>= (setq width (current-column)) fill-column)
 		 nil			; already justified, or error
 	       (beginning-of-line)
-	       (insert-char ?  (- fill-column width))
+	       (insert-char ?  (- fill-column width) t)
 	       (end-of-line)
 	       (if (eobp)
 		   (throw 'fill-exit t))
@@ -363,9 +371,10 @@
   (add-text-properties w3-scratch-start-point
 		       (point) (list 'face w3-active-faces
 				     'html-stack w3-display-open-element-stack
-				     'start-open t
-				     'end-open t
-				     'rear-nonsticky t
+				     'start-open nil
+				     'end-open nil
+				     'front-sticky t
+				     'rear-nonsticky nil
 				     'duplicable t))
   (if (car w3-active-voices)
       (add-text-properties w3-scratch-start-point (point)
@@ -450,51 +459,57 @@
 
   (defmacro w3-display-handle-list-type ()
     (`
-     (case (car break-style)
-       (list-item
-	(let ((list-style (w3-get-style-info 'list-style-type node))
-	      (list-num (if (car w3-display-list-stack)
-			    (incf (car w3-display-list-stack))
-			  1))
-	      (margin (1- (car left-margin-stack)))
-	      (indent (w3-get-style-info 'text-indent node 0)))
-	  (if (> indent 0)
-	      (setq margin (+ margin indent))
-	    (setq margin (max 0 (- margin indent))))
-	  (beginning-of-line)
-	  (case list-style
-	    ((disc circle square)
-	     (insert (format (format "%%%dc" margin)
-			     (or (cdr-safe (assq list-style w3-bullets))
-				 ?o))))
-	    ((decimal lower-roman upper-roman lower-alpha upper-alpha)
-	     (let ((x (case list-style
-			(lower-roman
-			 (w3-decimal-to-roman list-num))
-			(upper-roman
-			 (upcase
-			  (w3-decimal-to-roman list-num)))
-			(lower-alpha
-			 (w3-decimal-to-alpha list-num))
-			(upper-alpha
-			 (upcase
-			  (w3-decimal-to-alpha list-num)))
-			(otherwise
-			 (int-to-string list-num)))))
-	       (insert (format (format "%%%ds." margin) x))
+     (add-text-properties
+      (point)
+      (progn
+	(case (car break-style)
+	  (list-item
+	   (let ((list-style (w3-get-style-info 'list-style-type node))
+		 (list-num (if (car w3-display-list-stack)
+			       (incf (car w3-display-list-stack))
+			     1))
+		 (margin (1- (car left-margin-stack)))
+		 (indent (w3-get-style-info 'text-indent node 0)))
+	     (if (> indent 0)
+		 (setq margin (+ margin indent))
+	       (setq margin (max 0 (- margin indent))))
+	     (beginning-of-line)
+	     (case list-style
+	       ((disc circle square)
+		(insert (format (format "%%%dc" margin)
+				(or (cdr-safe (assq list-style w3-bullets))
+				    ?o))))
+	       ((decimal lower-roman upper-roman lower-alpha upper-alpha)
+		(let ((x (case list-style
+			   (lower-roman
+			    (w3-decimal-to-roman list-num))
+			   (upper-roman
+			    (upcase
+			     (w3-decimal-to-roman list-num)))
+			   (lower-alpha
+			    (w3-decimal-to-alpha list-num))
+			   (upper-alpha
+			    (upcase
+			     (w3-decimal-to-alpha list-num)))
+			   (otherwise
+			    (int-to-string list-num)))))
+		  (insert (format (format "%%%ds." margin) x))
+		  )
+		)
+	       (otherwise
+		(insert (w3-get-pad-string margin)))
 	       )
 	     )
-	    (otherwise
-	     (insert (w3-get-pad-string margin)))
-	    )
+	   )
+	  (otherwise
+	   (insert (w3-get-pad-string (+ (car left-margin-stack)
+					 (w3-get-style-info 'text-indent node 0)))))
 	  )
-	)
-       (otherwise
-	(insert (w3-get-pad-string (+ (car left-margin-stack)
-				      (w3-get-style-info 'text-indent node 0)))))
-       )
-     )
-    )
+	(point))
+      (list 'start-open t
+	    'end-open t
+	    'rear-nonsticky nil
+	    'face 'nil))))
 
   (defmacro w3-display-set-margins ()
     (`
@@ -810,10 +825,16 @@
   (cond
    ((and w3-use-terminal-characters
 	 (eq (device-type) 'x))
-    (if (find-face 'w3-table-hack-x-face) nil
+    (if (and (find-face 'w3-table-hack-x-face)
+	     (face-differs-from-default-p 'w3-table-hack-x-face))
+	nil
       (make-face 'w3-table-hack-x-face)
-      (font-set-face-font 'w3-table-hack-x-face
-			  (make-font :family "terminal")))
+      (if (not (face-differs-from-default-p 'w3-table-hack-x-face))
+	  (font-set-face-font 'w3-table-hack-x-face
+			      (make-font :family "terminal"
+					 :registry "*"
+					 :encoding "*"
+					 ))))
     (cond
      ((not (face-differs-from-default-p 'w3-table-hack-x-face))
       nil)
@@ -1210,6 +1231,7 @@
 	     (rows nil)
 	     (row 0)
 	     (this-rectangle nil)
+	     (inhibit-read-only t)
 	     (i 0)
 	     )
 
@@ -1249,14 +1271,27 @@
 	       (save-restriction
 		 (narrow-to-region (point) (point))
 		 (setq fill-column avgwidth
-		       inhibit-read-only t
 		       w3-last-fill-pos (point-min)
 		       i 0)
 		 ;; skip over columns that have leftover content
 		 (while (and (< i num-cols)
 			     (/= 0 (aref table-rowspans i)))
 		   (setq i (+ i (max 1 (aref table-colspans i)))))
+		 ;; Need to push the properties for the table onto the stack
+		 (setq w3-display-css-properties (css-get
+						  tag
+						  args
+						  w3-current-stylesheet
+						  w3-display-open-element-stack))
+		 (push (w3-face-for-element (list tag args nil)) w3-active-faces)
+		 (push (w3-voice-for-element (list tag args nil)) w3-active-voices)
+		 (push (cons tag args) w3-display-open-element-stack)
 		 (while cols
+		   ;; And need to push these bogus placeholders on there
+		   ;; so that w3-display-node doesn't pop off the real face
+		   ;; or voice we just put in above.
+		   (push nil w3-active-faces)
+		   (push nil w3-active-voices)
 		   (let* ((node (car cols))
 			  (attributes (nth 1 node))
 			  (colspan (string-to-int
@@ -1302,7 +1337,15 @@
 		     (skip-chars-backward " \t\n\r")
 		     (delete-region (point) (point-max))
 		     (if (>= fill-column (current-column))
-			 (insert-char ?  (- fill-column (current-column))))
+			 (insert-char ?  (- fill-column (current-column)) t))
+		     (goto-char (point-min))
+		     ;; This gets our text properties out to the
+		     ;; end of lines for table rows/cells with backgrounds
+		     (while (not (eobp))
+		       (re-search-forward "$" nil t)
+		       (if (>= fill-column (current-column))
+			   (insert-char ?  (- fill-column (current-column)) t))
+		       (or (eobp) (forward-char 1)))
 		     (aset formatted-cols i (extract-rectangle (point-min) (point-max)))
 		     (delete-region (point-min) (point-max))
 		     (let ((j (1- colspan)))
@@ -1315,7 +1358,10 @@
 				 (/= 0 (aref table-rowspans i)))
 		       (setq i (+ i (max 1 (aref table-colspans i)))))
 		     ))
-
+		 (pop w3-display-open-element-stack)
+		 (pop w3-active-faces)
+		 (pop w3-active-voices)
+		 (w3-pop-all-face-info)
 		 ;; finish off the columns
 		 (while (< i num-cols)
 		   (aset table-colwidth i (aref column-dimensions i))
@@ -1388,7 +1434,7 @@
 			(setq i (+ i (max (aref table-colspans i)
 					  (aref prev-colspans  i) 1))))
 		       (t
-			(insert-char ?  (aref table-colwidth i))
+			(insert-char ?  (aref table-colwidth i) t)
 			(setq lflag nil)
 			(setq i (+ i (max (aref table-colspans i)
 					  (aref prev-colspans  i) 1))))))
@@ -1411,7 +1457,7 @@
 	       (while (< i num-cols)
 		 (if (car (aref formatted-cols i))
 		     (insert (pop (aref formatted-cols i))) 
-		   (insert-char ?  (aref table-colwidth i))) 
+		   (insert-char ?  (aref table-colwidth i) t)) 
 		 (w3-insert-terminal-char (w3-table-lookup-char nil t nil t))
 		 (setq i (+ i (max (aref table-colspans i) 1))))
 	       (insert "\n")
@@ -1428,7 +1474,6 @@
 	     (setq prev-colspans (copy-seq table-colspans))
 	 
 	     (and w3-do-incremental-display (w3-pause))
-
 	     )
 	    (caption
 	     (let ((left (length fill-prefix))
@@ -1494,6 +1539,12 @@
       (push (list 'tr nil (pop rows)) items))
     items))
 
+(defun w3-fix-color (color)
+  (if (and color
+	   (string-match "^[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]$" color))
+      (concat "#" color)
+    color))
+
 (defun w3-display-normalize-form-info (args)
   (let* ((plist (alist-to-plist args))
 	 (type (intern (downcase
@@ -1617,7 +1668,7 @@
 					   (nth 1 node))))
 		(setf (nth 1 node) (cons (cons 'id unique-id) (nth 1 node)))
 		(w3-handle-style (list 'data sheet
-				       'notation "css"))))
+				       'notation "text/css"))))
 	  (setq w3-display-css-properties (css-get
 					   (nth 0 node)
 					   (nth 1 node)
@@ -1827,11 +1878,32 @@
 	    ((html body)
 	     (let ((fore (car (delq nil (copy-list w3-face-color))))
 		   (back (car (delq nil (copy-list w3-face-background-color))))
+		   (alink (w3-get-attribute 'alink))
+		   (vlink (w3-get-attribute 'vlink))
+		   (link  (w3-get-attribute 'link))
+		   (sheet "")
 		   )
-	       (if (and fore font-running-xemacs)
-		   (font-set-face-foreground 'default fore (current-buffer)))
-	       (if (and back font-running-xemacs)
-		   (font-set-face-background 'default back (current-buffer)))
+	       (if link
+		   (setq sheet (format "%sa:link { color: %s }\n" sheet
+				       (w3-fix-color link))))
+	       (if vlink
+		   (setq sheet (format "%sa:visited { color: %s }\n" sheet
+				       (w3-fix-color vlink))))
+	       (if alink
+		   (setq sheet (format "%sa:active { color: %s }\n" sheet
+				       (w3-fix-color alink))))
+	       (if (/= (length sheet) 0)
+		   (w3-handle-style (list 'data sheet
+					  'notation "text/css")))
+	       (if (and (w3-get-attribute 'text) (not fore))
+		   (setf (car w3-face-color) (w3-fix-color
+					      (w3-get-attribute 'text))))
+	       (if (not font-running-xemacs)
+		   (setq w3-display-background-properties (cons fore back))
+		 (if fore
+		     (font-set-face-foreground 'default fore (current-buffer)))
+		 (if back
+		     (font-set-face-background 'default back (current-buffer))))
 	       (w3-handle-content node)))
 	    (*document
 	     (let ((info (mapcar (lambda (x) (cons x (symbol-value x)))
@@ -1860,7 +1932,7 @@
 					    w3-user-stylesheet)
 		     w3-last-fill-pos (point)
 		     fill-prefix "")
-	       (set (make-local-variable 'inhibit-read-only) t))
+	       )
 	     (w3-handle-content node)
 	     )
 	    (*invisible
@@ -2076,7 +2148,7 @@
   (let ((inhibit-read-only t))
     (save-excursion
       (goto-char (point-min))
-      (while (search-forward "[ \t]*\n[ \t]*" nil t)
+      (while (re-search-forward "[ \t]*\n[ \t]*" nil t)
 	(remove-text-properties (match-beginning 0) (match-end 0)
 				'(face nil mouse-face nil) nil)))))
 
@@ -2098,8 +2170,6 @@
   (and (not w3-running-xemacs)
        (not (eq (device-type) 'tty))
        (w3-fixup-eol-faces))
-  (let ((inhibit-read-only t))
-    (remove-text-properties (point-min) (point-max) '(read-only) nil))
   (message "Drawing... done"))
 
 (defun w3-region (st nd)
@@ -2173,7 +2243,7 @@
   (let* ((old-asynch url-be-asynchronous)
 	 (structure (reverse w3-frameset-structure)))
     (if new-frame
-	(select-frame (make-frame-command)))
+	(select-frame (make-frame)))
     (setq-default url-be-asynchronous nil)
     ;; set up frames
     (while structure
@@ -2300,5 +2370,4 @@
 	      ;; push + push => in order
 	      dimensions))))))
 
-
 (provide 'w3-display)
--- a/lisp/w3/w3-e19.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/w3-e19.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,7 +1,7 @@
 ;;; w3-e19.el --- Emacs 19.xx specific functions for emacs-w3
 ;; Author: wmperry
-;; Created: 1997/03/12 20:07:18
-;; Version: 1.19
+;; Created: 1997/04/01 19:23:18
+;; Version: 1.22
 ;; Keywords: faces, help, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -104,9 +104,21 @@
 
 (defun w3-mode-version-specifics ()
   ;; Emacs 19 specific stuff for w3-mode
+  (declare (special w3-face-index w3-display-background-properties))
   (make-local-variable 'track-mouse)
   (set (make-local-variable 'buffer-access-fontify-functions) 'w3-e19-no-read-only)
-  (if w3-track-mouse (setq track-mouse t)))
+  (if w3-track-mouse (setq track-mouse t))
+  (if w3-display-background-properties
+      (let ((face (w3-make-face (intern
+				 (format "w3-style-face-%05d" w3-face-index))
+				"An Emacs-W3 face... don't edit by hand." t))
+	    (fore (car w3-display-background-properties))
+	    (inhibit-read-only t)
+	    (back (cdr w3-display-background-properties)))
+	(setq w3-face-index (1+ w3-face-index))
+	(if fore (font-set-face-foreground face fore))
+	(if back (font-set-face-background face back))
+	(fillin-text-property (point-min) (point-max) 'face 'face face))))
 
 (defun w3-mouse-handler (e)
   "Function to message the url under the mouse cursor"
@@ -122,39 +134,6 @@
       (if (assq 'onmouseover mouse-events)
 	  (w3-script-evaluate-form (cdr (assq 'onmouseover mouse-events)))))))
 
-(defun w3-color-values (color)
-  (cond
-   ((eq window-system 'x)
-    (x-color-values color))
-   ((eq window-system 'pm)
-    (pm-color-values color))
-   ((eq window-system 'ns)
-    (ns-color-values color))
-   (t nil)))
-     
-(defun w3-color-light-p (color-or-face)
-  (let (colors)
-    (cond
-     ((null window-system)
-      nil)
-     ((facep color-or-face)
-      (setq color-or-face (face-background color-or-face))
-      (if (null color-or-face)
-	  (setq color-or-face (cdr-safe
-			       (assq 'background-color (frame-parameters)))))
-      (setq colors (w3-color-values color-or-face)))
-     ((stringp color-or-face)
-      (setq colors (w3-color-values color-or-face)))
-     ((font-rgb-color-p color-or-face)
-      (setq colors (list (font-rgb-color-red color-or-face)
-			 (font-rgb-color-green color-or-face)
-			 (font-rgb-color-blue color-or-face))))
-     (t
-      (signal 'wrong-type-argument 'color-or-face-p)))
-    (not (< (apply '+ colors)
-	    (/ (apply '+ (w3-color-values "white")) 3)))))
-
-
 
 (provide 'w3-emacs19)
 (provide 'w3-e19)
--- a/lisp/w3/w3-forms.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/w3-forms.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,7 +1,7 @@
 ;;; w3-forms.el --- Emacs-w3 forms parsing code for new display engine
 ;; Author: wmperry
-;; Created: 1997/03/25 23:33:51
-;; Version: 1.81
+;; Created: 1997/04/03 14:23:37
+;; Version: 1.84
 ;; Keywords: faces, help, comm, data, languages
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -159,12 +159,11 @@
 		     plist))
 	 (size (w3-form-determine-size el (plist-get plist 'size)))
 	 (node (assoc action w3-form-elements)))
-    (if (and (eq (plist-get plist 'type) 'hidden)
-	     (not (assq '*table-autolayout w3-display-open-element-stack)))
-	(if node
-	    (setcdr node (cons el (cdr node)))
-	  (setq w3-form-elements (cons (cons action (list el))
-				       w3-form-elements))))
+    (if (not (assq '*table-autolayout w3-display-open-element-stack))
+ 	(if node
+ 	    (setcdr node (cons el (cdr node)))
+ 	  (setq w3-form-elements (cons (cons action (list el))
+ 				       w3-form-elements))))
     (if size
 	(set-text-properties (point)
 			     (progn (insert-char ?T size) (point))
@@ -191,10 +190,6 @@
 	    (delete-region st nd)
 	    (if (not (w3-form-element-size info))
 		(w3-form-element-set-size info 20))
-	    (if node
-		(setcdr node (cons info (cdr node)))
-	      (setq w3-form-elements (cons (cons action (list info))
-					   w3-form-elements)))
 	    (w3-form-add-element-internal info face)
 	    (setq st (next-single-property-change st 'w3-form-info)))
 	(setq st (next-single-property-change st 'w3-form-info))))))
@@ -304,6 +299,7 @@
 	  (setq widget (w3-form-element-widget formobj))
 	  (widget-radio-add-item widget
 				 (list 'item
+				       :button-face face
 				       :format "%t"
 				       :tag ""
 				       :value (w3-form-element-value el)))
@@ -319,6 +315,7 @@
 		    :value (w3-form-element-value el)
 		    :action 'w3-form-radio-button-update
 		    (list 'item
+			  :button-face face
 			  :format "%t"
 			  :tag ""
 			  :value (w3-form-element-value el)))
@@ -341,6 +338,8 @@
 
 (defun w3-form-create-image (el face)
   (widget-create 'push-button
+		 :button-face face
+		 :value-face face
 		 :notify 'w3-form-submit/reset-callback
 		 :value (or
 			 (plist-get (w3-form-element-plist el) 'alt)
@@ -371,11 +370,15 @@
 	 (options (mapcar (function (lambda (pair)
 				      (list 'choice-item
 					    :format "%[%t%]" 
+					    :tab-order -1
+					    :button-face face
+					    :value-face face
 					    :menu-tag-get `(lambda (zed) ,(car pair))
 					    :tag (mule-truncate-string (car pair) size ? )
 					    :value (cdr pair))))
 			  w3-form-valid-key-sizes)))
     (apply 'widget-create 'menu-choice
+	   :emacspeak-help 'w3-form-summarize-field
 	   :value 1024
 	   :ignore-case t
 	   :tag "Key Length"
@@ -413,6 +416,7 @@
 
 (defun w3-form-create-multiline (el face)
   (widget-create 'push-button
+		 :button-face face
 		 :notify 'w3-do-text-entry
 		 "Multiline text area"))
 
@@ -615,8 +619,8 @@
 								"[nothing]"))))
 
 (defun w3-form-summarize-keygen-list (data widget)
-  )
-
+  (format "Submitting this form will generate a %d bit key (not)" 
+	  (widget-value (w3-form-element-widget data))))
 
 (defun w3-form-maybe-submit-by-keypress ()
   (interactive)
--- a/lisp/w3/w3-parse.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/w3-parse.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1289,12 +1289,17 @@
                            nil
                            (((li) *include *next))
                            (*retry *next))
+                          ((p)
+                           nil
+                           nil
+                           (*retry *next))
                           ((li)
                            nil
                            ;; Push <LI> before data characters or block
                            ;; elements.
                            ;; Non-SGML.
-                           (((%text %block) li *same error))
+                           (;; ((p) b *same nil)
+                            ((%text %block) li *same error))
                            nil)]))
        ((lh)
         (content-model . [((%text)
@@ -1506,6 +1511,7 @@
                           ((tbody)
                            nil
                            (((tr) tbody *same)
+                            ((td th) tr *same)
                             ;; error handling
                             ((%body.content) tbody *same error))
                            nil)]))
--- a/lisp/w3/w3-print.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/w3-print.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,7 +1,7 @@
 ;;; w3-print.el --- Printing support for emacs-w3
 ;; Author: wmperry
-;; Created: 1997/02/07 01:05:01
-;; Version: 1.7
+;; Created: 1997/04/02 21:09:14
+;; Version: 1.8
 ;; Keywords: faces, help, printing, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -69,7 +69,7 @@
 					  w3-temporary-directory) nil 5)
 	  (shell-command
 	   (format
-	    "cd %s ; latex w3-tmp.latex ; %s w3-tmp.dvi ; rm -f w3-tmp*"
+	    "cd %s ; latex w3-tmp.latex ; latex w3-tmp.latex ; %s w3-tmp.dvi ; rm -f w3-tmp*"
 	    w3-temporary-directory
 	    w3-print-command))
 	  (kill-buffer "*Shell Command Output*")))))))
--- a/lisp/w3/w3-vars.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/w3-vars.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,7 +1,7 @@
 ;;; w3-vars.el,v --- All variable definitions for emacs-w3
 ;; Author: wmperry
-;; Created: 1997/03/26 20:12:26
-;; Version: 1.116
+;; Created: 1997/04/03 21:42:29
+;; Version: 1.120
 ;; Keywords: comm, help, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -33,7 +33,7 @@
 (require 'w3-cus)			; Grab everything that is customized
 
 (defconst w3-version-number
-  (let ((x "p3.0.75"))
+  (let ((x "p3.0.79"))
     (if (string-match "State:[ \t\n]+.\\([^ \t\n]+\\)" x)
 	(setq x (substring x (match-beginning 1) (match-end 1)))
       (setq x (substring x 1)))
@@ -41,7 +41,7 @@
      (function (lambda (x) (if (= x ?-) "." (char-to-string x)))) x ""))
   "Version # of w3-mode.")
 
-(defconst w3-version-date (let ((x "1997/03/26 20:12:26"))
+(defconst w3-version-date (let ((x "1997/04/03 21:42:29"))
 			    (if (string-match "Date: \\([^ \t\n]+\\)" x)
 				(substring x (match-beginning 1) (match-end 1))
 			      x))
--- a/lisp/w3/w3-xemac.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/w3-xemac.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,7 +1,7 @@
 ;;; w3-xemac.el --- XEmacs specific functions for emacs-w3
 ;; Author: wmperry
-;; Created: 1997/03/09 01:59:33
-;; Version: 1.16
+;; Created: 1997/04/01 19:23:21
+;; Version: 1.17
 ;; Keywords: faces, help, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -100,26 +100,6 @@
     )
    (t nil)))
 
-(defun w3-color-light-p (color-or-face)
-  (let (face color)
-    (cond
-     ((or (facep color-or-face)
-	  (and (symbolp color-or-face)
-	       (find-face color-or-face)))
-      (setq color (specifier-instance (face-background color-or-face))))
-     ((color-instance-p color-or-face)
-      (setq color color-or-face))
-     ((color-specifier-p color-or-face)
-      (setq color (specifier-instance color-or-face)))
-     ((stringp color-or-face)
-      (setq color (make-color-instance color-or-face)))
-     (t (signal 'wrong-type-argument 'color-or-face-p)))
-    (if color
-	(not (< (apply '+ (color-instance-rgb-components color))
-		(/ (apply '+ (color-instance-rgb-components
-			      (make-color-instance "white"))) 3)))
-      t)))
-
 (defun w3-mode-motion-hook (e)
   (let* ((glyph  (event-glyph e))
 	 (x      (and glyph (event-glyph-x-pixel e)))
--- a/lisp/w3/w3.el	Mon Aug 13 09:23:08 2007 +0200
+++ b/lisp/w3/w3.el	Mon Aug 13 09:24:17 2007 +0200
@@ -1,7 +1,7 @@
 ;;; w3.el --- Main functions for emacs-w3 on all platforms/versions
 ;; Author: wmperry
-;; Created: 1997/03/26 00:02:30
-;; Version: 1.103
+;; Created: 1997/04/03 02:06:01
+;; Version: 1.105
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -421,7 +421,13 @@
        (let ((window-distance (cdr-safe (assq target w3-target-window-distances))))
 	 (if (numberp window-distance)
 	     (other-window window-distance)
-	   (error "target %S not found." target))))
+	   (case target
+	     ((_blank external)
+	      (w3-fetch-other-frame url))
+	     (_top
+	      (delete-other-windows))
+	     (otherwise
+	      (message "target %S not found." target))))))
   (cond
    ((= (string-to-char url) ?#)
     (w3-relative-link url))
@@ -1890,7 +1896,7 @@
 
 (defun w3-find-default-stylesheets ()
   (setq w3-loaded-stylesheets nil)
-  (let* ((lightp (w3-color-light-p 'default))
+  (let* ((lightp (css-color-light-p 'default))
 	 (longname (if lightp "stylesheet-light" "stylesheet-dark"))
 	 (shortname (if lightp "light.css" "dark.css"))
 	 (directories (list
--- a/lwlib/lwlib.c	Mon Aug 13 09:23:08 2007 +0200
+++ b/lwlib/lwlib.c	Mon Aug 13 09:24:17 2007 +0200
@@ -36,10 +36,16 @@
 #define alloca __builtin_alloca
 #endif
 
-#if ((!__GNUC__) && !defined(__hpux)) && !defined(_AIX) && !defined (_SCO_DS) && !defined (__USLC__) && !defined(sinix)
+#if ((!__GNUC__) && !defined(__hpux)) && !defined(_AIX) && !defined (_SCO_DS) && !defined (__USLC__) && !defined(sinix) && !defined(WINDOWSNT)
 #include <alloca.h>
 #endif
 
+#ifdef WINDOWSNT
+/* NT has an _alloca function prototyped in malloc.h --marcpa */
+#include <malloc.h>
+#endif
+
+
 #ifdef __SUNPRO_C
 void *__builtin_alloca (unsigned int);
 #endif
@@ -476,11 +482,13 @@
   return (s1 && s2) ? strcmp (s1, s2) : s1 ? False : !!s2;
 }
 
+#ifndef WINDOWSNT
 static change_type
 max (change_type i1, change_type i2)
 {
   return (int)i1 > (int)i2 ? i1 : i2;
 }
+#endif
 
 
 #if 0
--- a/man/Makefile	Mon Aug 13 09:23:08 2007 +0200
+++ b/man/Makefile	Mon Aug 13 09:24:17 2007 +0200
@@ -26,10 +26,9 @@
 EMACS = xemacs
 EMACSFLAGS = -batch -q -no-site-file 
 
-# Implies makeinfo-1.64
+# NOTE:  You *must* have a patched makeinfo-1.67 or later to rebuild the
+# info tree.
 MAKEINFO = makeinfo
-# Implies makeinfo-1.67
-NEWMAKEINFO = makeinfo-1.67
 
 .SUFFIXES: .info .texi .dvi
 
@@ -69,10 +68,10 @@
 FORCE :
 
 ../info/w3.info : w3.texi
-	-$(NEWMAKEINFO) w3.texi -o ../info/w3.info
+	-$(MAKEINFO) w3.texi -o ../info/w3.info
 
 ../info/texinfo.info : texinfo.texi
-	-$(NEWMAKEINFO) texinfo.texi -o ../info/texinfo.info
+	-$(MAKEINFO) texinfo.texi -o ../info/texinfo.info
 
 
 ../info/vm.info : vm.texi
--- a/man/custom.texi	Mon Aug 13 09:23:08 2007 +0200
+++ b/man/custom.texi	Mon Aug 13 09:24:17 2007 +0200
@@ -13,7 +13,7 @@
 @comment  node-name,  next,  previous,  up
 @top The Customization Library
 
-Version: 1.68
+Version: 1.69
 
 @menu
 * Introduction::                
--- a/man/gnus.texi	Mon Aug 13 09:23:08 2007 +0200
+++ b/man/gnus.texi	Mon Aug 13 09:24:17 2007 +0200
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Gnus 5.4.37 Manual
+@settitle Gnus 5.4.40 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -287,7 +287,7 @@
 @tex
 
 @titlepage
-@title Gnus 5.4.37 Manual
+@title Gnus 5.4.40 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -323,7 +323,7 @@
 spool or your mbox file.  All at the same time, if you want to push your
 luck.
 
-This manual corresponds to Gnus 5.4.37.
+This manual corresponds to Gnus 5.4.40.
 
 @end ifinfo
 
@@ -641,8 +641,10 @@
 What Gnus does when it encounters a new group is determined by the
 @code{gnus-subscribe-newsgroup-method} variable.
 
-This variable should contain a function.  Some handy pre-fab values
-are:
+This variable should contain a function.  This function will be called
+with the name of the new group as the only parameter.
+
+Some handy pre-fab functions are:
 
 @table @code
 
@@ -2013,7 +2015,7 @@
 Here's an example group parameter list:
 
 @example
-((to-address . "ding@@ifi.uio.no")
+((to-address . "ding@@gnus.org")
  (auto-expiry . t))
 @end example
 
@@ -4727,7 +4729,7 @@
 (setq gnus-thread-sort-functions 
       '(gnus-thread-sort-by-number
         gnus-thread-sort-by-subject
-        gnus-thread-sort-by-score))
+        gnus-thread-sort-by-total-score))
 @end lisp
 
 The threads that have highest score will be displayed first in the
@@ -7518,6 +7520,11 @@
 List of regexps to match headers included in digested messages.  The
 headers will be included in the sequence they are matched.
 
+@item gnus-add-to-list
+@vindex gnus-add-to-list
+If non-@code{nil}, add a @code{to-list} group parameter to mail groups
+that have none when you do a @kbd{a}.
+
 @end table
 
 
@@ -11577,12 +11584,12 @@
 files are applicable to which group.
 
 Say you want to use the score file
-@file{/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE} and
+@file{/ftp@@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE} and
 all score files in the @file{/ftp@@ftp.some-where:/pub/score} directory:
 
 @lisp
 (setq gnus-global-score-files
-      '("/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE"
+      '("/ftp@@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE"
         "/ftp@@ftp.some-where:/pub/score/"))
 @end lisp
 
@@ -13302,7 +13309,7 @@
 
 If you are a moderator, you can use the @file{gnus-mdrtn.el} package.
 It is not included in the standard Gnus package.  Write a mail to
-@samp{larsi@@ifi.uio.no} and state what group you moderate, and you'll
+@samp{larsi@@gnus.org} and state what group you moderate, and you'll
 get a copy.
 
 The moderation package is implemented as a minor mode for summary
@@ -13432,7 +13439,7 @@
 false pretenses.  I press @kbd{g} and Gnus merrily informs me that I
 have 10 new emails.  I say ``Golly gee!  Happy is me!'' and selects the
 mail group, only to find two pyramid schemes, seven advertisements
-``New!  Miracle tonic for growing full, lustrouos hair on your toes!''
+(``New!  Miracle tonic for growing full, lustrouos hair on your toes!'')
 and one mail asking me to repent and find some god.
 
 This is annoying.
@@ -13468,6 +13475,20 @@
 header, it's probably ok.  All the rest goes to the @samp{spam} group.
 (This idea probably comes from Tim Pierce.)
 
+In addition, many mail spammers talk directly to your @code{smtp} server
+and do not include your email address explicitly in the @code{To}
+header.  Why they do this is unknown---perhaps it's to thwart this
+twarting scheme?  In any case, this is trivial to deal with---you just
+put anything not addressed to you in the @samp{spam} group by ending
+your fancy split rule in this way:
+
+@lisp
+(
+ ...
+ (to "larsi" "misc")
+ "spam")
+@end lisp
+
 In my experience, this will sort virtually everything into the right
 group.  You still have to check the @samp{spam} group from time to time to
 check for legitimate mail, though.  If you feel like being a good net
@@ -13964,6 +13985,7 @@
 Ulrik Dickow,
 Dave Disser,
 Joev Dubach,
+Michael Welsh Duggan,
 Paul Eggert,
 Michael Ernst,
 Luc Van Eycken,
@@ -14016,6 +14038,7 @@
 Colin Rafferty,
 Bart Robinson,
 Jason Rumney,
+Dewey M. Sasser,
 Loren Schall,
 Dan Schmidt,
 Ralph Schleicher,
@@ -14024,6 +14047,7 @@
 Danny Siu, 
 Paul D. Smith,
 Jeff Sparkes,
+Toby Speight,
 Michael Sperber,
 Richard Stallman,
 Greg Stark, 
@@ -15010,8 +15034,8 @@
 
 @cindex gnu.emacs.gnus
 @cindex ding mailing list
-You can also ask on the ding mailing list---@samp{ding@@ifi.uio.no}.
-Write to @samp{ding-request@@ifi.uio.no} to subscribe.
+You can also ask on the ding mailing list---@samp{ding@@gnus.org}.
+Write to @samp{ding-request@@gnus.org} to subscribe.
 
 
 @node A Programmers Guide to Gnus
@@ -15030,6 +15054,7 @@
 and general method of operations.
 
 @menu 
+* Gnus Utility Functions::   Common functions and variable to use.
 * Backend Interface::        How Gnus communicates with the servers.
 * Score File Syntax::        A BNF definition of the score file standard.
 * Headers::                  How Gnus stores headers internally.
@@ -15040,6 +15065,114 @@
 @end menu
 
 
+@node Gnus Utility Functions
+@subsection Gnus Utility Functions
+@cindex Gnus utility functions
+@cindex utility functions
+@cindex functions
+@cindex internal variables
+
+When writing small functions to be run from hooks (and stuff), it's
+vital to have access to the Gnus internal functions and variables.
+Below is a list of the most common ones.
+
+@table @code
+
+@item gnus-newsgroup-name
+@vindex gnus-newsgroup-name
+This variable holds the name of the current newsgroup.
+
+@item gnus-find-method-for-group
+@findex gnus-find-method-for-group
+A function that returns the select method for @var{group}.
+
+@item gnus-group-real-name
+@findex gnus-group-real-name
+Takes a full (prefixed) Gnus group name, and returns the unprefixed
+name.
+
+@item gnus-group-prefixed-name
+@findex gnus-group-prefixed-name
+Takes an unprefixed group name and a select method, and returns the full
+(prefixed) Gnus group name.
+
+@item gnus-get-info
+@findex gnus-get-info
+Return the group info list for @var{group}.
+
+@item gnus-add-current-to-buffer-list
+@findex gnus-add-current-to-buffer-list
+Add the current buffer to the list of buffers to be killed on Gnus
+exit.
+
+@item gnus-continuum-version
+@findex gnus-continuum-version
+Take a Gnus version string as a parameter and returns a floating point
+number.  Earlier versions will always get a lower number than later
+versions.
+
+@item gnus-group-read-only-p
+@findex gnus-group-read-only-p
+Say whether @var{group} is read-only or not.
+
+@item gnus-news-group-p
+@findex gnus-news-group-p
+Say whether @var{group} came from a news backend.
+
+@item gnus-ephemeral-group-p
+@findex gnus-ephemeral-group-p
+Say whether @var{group} is ephemeral or not.
+
+@item gnus-server-to-method
+@findex gnus-server-to-method
+Return the select method corresponding to @var{server}.
+
+@item gnus-server-equal
+@findex gnus-server-equal
+Say whether two virtual servers are equal.
+
+@item gnus-group-native-p
+@findex gnus-group-native-p
+Say whether @var{group} is native or not.
+
+@item gnus-group-secondary-p
+@findex gnus-group-secondary-p
+Say whether @var{group} is secondary or not.
+
+@item gnus-group-foreign-p
+@findex gnus-group-foreign-p
+Say whether @var{group} is foreign or not.
+
+@item group-group-find-parameter
+@findex group-group-find-parameter
+Return the parameter list of @var{group}.  If given a second parameter,
+return the value of that parameter for @var{group}.
+
+@item gnus-group-set-parameter
+@findex gnus-group-set-parameter
+Takes three parameters; @var{group}, @var{parameter} and @var{value}.
+
+@item gnus-narrow-to-body
+@findex gnus-narrow-to-body
+Narrow the current buffer to the body of the article.
+
+@item gnus-check-backend-function
+@findex gnus-check-backend-function
+Takes two parameters, @var{function} and @var{group}.  If the backend
+@var{group} comes from supports @var{function}, return non-@code{nil}.
+
+@lisp
+(gnus-check-backend-function "request-scan" "nnml:misc")
+=> t
+@end lisp
+
+@item gnus-read-method
+@findex gnus-read-method
+Prompt the user for a select method.
+
+@end table
+
+
 @node Backend Interface
 @subsection Backend Interface
 
@@ -16003,7 +16136,7 @@
 ("nnml:my.mail" 3 ((1 . 5) 9 (20 . 55))
                 ((tick (15 . 19)) (replied 3 6 (19 . 3)))
                 (nnml "")
-                (auto-expire (to-address "ding@@ifi.uio.no")))
+                (auto-expire (to-address "ding@@gnus.org")))
 @end example
 
 The first element is the @dfn{group name}---as Gnus knows the group,
@@ -16037,6 +16170,67 @@
 @samp{<string>} consed on to a @samp{range}, but that's a bitch to say
 in pseudo-BNF.
 
+If you have a Gnus info and want to access the elements, Gnus offers a
+series of macros for getting/setting these elements.
+
+@table @code
+@item gnus-info-group
+@itemx gnus-info-set-group
+@findex gnus-info-group
+@findex gnus-info-set-group
+Get/set the group name.
+
+@item gnus-info-rank
+@itemx gnus-info-set-rank
+@findex gnus-info-rank
+@findex gnus-info-set-rank
+Get/set the group rank.
+
+@item gnus-info-level
+@itemx gnus-info-set-level
+@findex gnus-info-level
+@findex gnus-info-set-level
+Get/set the group level.
+
+@item gnus-info-score
+@itemx gnus-info-set-score
+@findex gnus-info-score
+@findex gnus-info-set-score
+Get/set the group score.
+
+@item gnus-info-read
+@itemx gnus-info-set-read
+@findex gnus-info-read
+@findex gnus-info-set-read
+Get/set the ranges of read articles.
+
+@item gnus-info-marks
+@itemx gnus-info-set-marks
+@findex gnus-info-marks
+@findex gnus-info-set-marks
+Get/set the lists of ranges of marked articles.
+
+@item gnus-info-method
+@itemx gnus-info-set-method
+@findex gnus-info-method
+@findex gnus-info-set-method
+Get/set the group select method.
+
+@item gnus-info-params
+@itemx gnus-info-set-params
+@findex gnus-info-params
+@findex gnus-info-set-params
+Get/set the group parameters.
+@end table
+
+All the getter functions take one parameter---the info list.  The setter
+functions take two parameters---the info list and the new value.
+
+The last three elements in the group info aren't mandatory, so it may be
+necessary to extend the group info before setting the element.  If this
+is necessary, you can just pass on a non-@code{nil} third parameter to
+the three final setter functions to have this happen automatically.
+
 
 @node Emacs/XEmacs Code
 @subsection Emacs/XEmacs Code
--- a/man/internals/Makefile	Mon Aug 13 09:23:08 2007 +0200
+++ b/man/internals/Makefile	Mon Aug 13 09:24:17 2007 +0200
@@ -32,7 +32,7 @@
 info : ../../info/$(NAME).info
 
 ../../info/$(NAME).info: $(srcs) index.texi
-	makeinfo $(NAME).texi
+	$(MAKEINFO) $(NAME).texi
 
 dvi : $(NAME).dvi
 
--- a/man/message.texi	Mon Aug 13 09:23:08 2007 +0200
+++ b/man/message.texi	Mon Aug 13 09:24:17 2007 +0200
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
-@settitle Message 5.4.37 Manual
+@settitle Message 5.4.40 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -39,7 +39,7 @@
 @tex
 
 @titlepage
-@title Message 5.4.37 Manual
+@title Message 5.4.40 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -79,7 +79,7 @@
 * Key Index::         List of Message mode keys.
 @end menu
 
-This manual corresponds to Message 5.4.37.  Message is distributed with
+This manual corresponds to Message 5.4.40.  Message is distributed with
 the Gnus distribution bearing the same version number as this manual
 has. 
 
@@ -948,6 +948,21 @@
 @vindex message-send-hook
 Hook run before sending messages.
 
+If you want to add certain headers before sending, you can use the
+@code{message-add-header} function in this hook.  For instance:
+@findex message-add-header
+
+@lisp
+(add-hook 'message-send-hook 'my-message-add-content)
+(defun my-message-add-content ()
+  (message-add-header
+   "Mime-Version: 1.0"
+   "Content-Type: text/plain"
+   "Content-Transfer-Encoding: 7bit"))
+@end lisp
+
+This function won't add the header if the header is already present.
+
 @item message-send-mail-hook
 @vindex message-send-mail-hook
 Hook run before sending mail messages.
--- a/man/w3.texi	Mon Aug 13 09:23:08 2007 +0200
+++ b/man/w3.texi	Mon Aug 13 09:24:17 2007 +0200
@@ -55,7 +55,7 @@
 @sp 4
 @center Third Edition, Emacs/W3 Version 3.0
 @sp 1
-@center February 1997
+@center March 1997
 @sp 5
 @center William M. Perry
 @center @i{wmperry@@cs.indiana.edu}
@@ -2199,12 +2199,16 @@
 For braille tactile feedback devices.
 @item Speech
 Aural presentation.
+@item Light
+The stylesheet will only be applied if the user is using a light background.
+@item Dark
+The stylesheet will only be applied if the user is using a dark background.
 @item Emacs
 The stylesheet will only be applied if the user is running in Emacs 19.
 @item XEmacs
 The stylesheet will only be applied if the user is running in XEmacs 19.
 @item All
-The default value, the style sheet applies to all output devices
+The default value, the style sheet applies to all output devices.
 @end table
 
 @node Speech Properties,  , Media Selection, Properties
--- a/man/widget.texi	Mon Aug 13 09:23:08 2007 +0200
+++ b/man/widget.texi	Mon Aug 13 09:24:17 2007 +0200
@@ -1,6 +1,6 @@
 \input texinfo.tex
 
-@c $Id: widget.texi,v 1.10 1997/03/28 02:29:31 steve Exp $
+@c $Id: widget.texi,v 1.11 1997/04/05 18:08:23 steve Exp $
 
 @c %**start of header
 @setfilename widget
@@ -15,7 +15,7 @@
 @comment  node-name,  next,  previous,  up
 @top The Emacs Widget Library
 
-Version: 1.68
+Version: 1.69
 
 @menu
 * Introduction::                
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/ChangeLog	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,60 @@
+Thu Mar 27 20:56:21 1997  marcpa  (marcpa at MARCPA)
+
+	* Synced with 20.1b9.
+
+Sun Mar 16 00:32:15 1997  marcpa  (marcpa at MARCPA)
+
+	* lisp/eterm/README.term is truncated: is it just me (because
+	I'm on NT) or everyone else sees this ?
+	Answer: it is because it contains a ^Z embedded in it, therefore
+	it needs to be inserted in binary mode in CVS.
+
+Thu Mar 13 00:19:25 1997  marcpa  (marcpa at MARCPA)
+
+	* At end of compilation, there are some unresolved symbols: 
+
+link.exe @C:\TEMP\nma00115.
+sysdep.obj : error LNK2001: unresolved external symbol _vfork
+../src/temacs.exe : warning LNK4088: image being generated due to /FORCE
+option; image may not run
+
+
+Wed Mar 12 23:18:53 1997  marcpa  (marcpa at MARCPA)
+
+	* Need to copy the nt/inc directory David originally submitted or
+	NT code won't compile.
+
+	* Need to copy nt/{config.h,paths.h,ad2c.sed,xemacs.mak} in src.
+
+	* Had to modify XEmacs sources here and there : see the diffs
+	between NT_FIRST_COMPILE and V20_1_beta9.
+
+	* Needed to patch X11R6.3 sources: (include/x11/Xmd.h:155) BOOL is
+	already defined by Windows and is a long, while X wants it to be
+	an unsigned char.
+
+--- Xmd.h~	Thu Jun 08 23:20:40 1995
++++ Xmd.h	Sun Mar 16 13:09:10 1997
+@@ -150,8 +150,9 @@
+ typedef CARD16		BITS16;
+ typedef CARD8		BYTE;
+ 
++#ifndef WIN32
+ typedef CARD8           BOOL;
+-
++#endif
+
+	* cpp.exe not used: cl.exe from VC++4.2 seems to handle everything
+	properly. 
+
+NOTES:
+
+Compilation with nmake -f xemacs.mak.
+
+Using X11R6.3 for NT.
+
+Work started with 20.1b2.
+
+Local Variables:
+mode: change-log
+End:
--- a/nt/config.h	Mon Aug 13 09:23:08 2007 +0200
+++ b/nt/config.h	Mon Aug 13 09:24:17 2007 +0200
@@ -79,10 +79,10 @@
    the user's full name.  If neither this nor any other
    field contains the right thing, use pw_name,
    giving the user's login name, since that is better than nothing.  */
+#define USER_FULL_NAME pw->pw_gecos
 #if 0
-#define USER_FULL_NAME pw->pw_gecos
+#define USER_FULL_NAME unknown
 #endif
-#define USER_FULL_NAME unknown
 
 /* Define AMPERSAND_FULL_NAME if you use the convention
    that & in the full name stands for the login id.  */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/inc/arpa/inet.h	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,1 @@
+/* null version of <arpa/inet.h> - <sys/socket.h> has everything */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/inc/netdb.h	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,1 @@
+/* null version of <netdb.h> - <sys/socket.h> has everything */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/inc/netinet/in.h	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,1 @@
+/* null version of <netinet/in.h> - <sys/socket.h> has everything */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/inc/pwd.h	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,18 @@
+#ifndef _PWD_H_
+#define _PWD_H_
+/*
+ * pwd.h doesn't exist on NT, so we put together our own.
+ */
+
+struct passwd {
+    char *pw_name;
+    char *pw_passwd;
+    int   pw_uid;
+    int   pw_gid;
+    int   pw_quota;
+    char *pw_gecos;
+    char *pw_dir;
+    char *pw_shell;
+};
+
+#endif /* _PWD_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/inc/sys/dir.h	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,77 @@
+/* This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Synched up with: FSF 19.30. */
+
+/*
+	<dir.h> -- definitions for 4.2BSD-compatible directory access
+
+	last edit:	09-Jul-1983	D A Gwyn
+*/
+
+#ifdef VMS
+#ifndef FAB$C_BID
+#include <fab.h>
+#endif
+#ifndef NAM$C_BID
+#include <nam.h>
+#endif
+#ifndef RMS$_SUC
+#include <rmsdef.h>
+#endif
+#include "vms-dir.h"
+#endif /* VMS */
+
+#define DIRBLKSIZ	512		/* size of directory block */
+#ifdef VMS
+#define MAXNAMLEN	(DIR$S_NAME + 7) /* 80 plus room for version #.  */
+#define MAXFULLSPEC	NAM$C_MAXRSS /* Maximum full spec */
+#else
+#ifdef WINDOWSNT
+#define MAXNAMLEN	255
+#else  /* not WINDOWSNT */
+#define MAXNAMLEN	15		/* maximum filename length */
+#endif /* not WINDOWSNT */
+#endif /* VMS */
+	/* NOTE:  MAXNAMLEN must be one less than a multiple of 4 */
+
+struct direct				/* data from readdir() */
+	{
+	long		d_ino;		/* inode number of entry */
+	unsigned short	d_reclen;	/* length of this record */
+	unsigned short	d_namlen;	/* length of string in d_name */
+	char		d_name[MAXNAMLEN+1];	/* name of file */
+	};
+
+typedef struct
+	{
+	int	dd_fd;			/* file descriptor */
+	int	dd_loc;			/* offset in block */
+	int	dd_size;		/* amount of valid data */
+	char	dd_buf[DIRBLKSIZ];	/* directory block */
+	}	DIR;			/* stream data from opendir() */
+
+#ifndef WINDOWSNT
+extern DIR *opendir (CONST char *filename);
+extern int closedir (DIR *dirp);
+extern struct direct *readdir (DIR *dirp);
+extern struct direct *readdirver (DIR *dirp);
+extern long telldir (DIR *dirp);
+extern void seekdir (DIR *dirp, long loc);
+
+#define rewinddir( dirp )	seekdir( dirp, 0L )
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/inc/sys/file.h	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,8 @@
+/*
+ * sys\file.h doesn't exist on NT - only needed for these constants
+ */
+
+#define F_OK 0
+#define X_OK 1
+#define W_OK 2
+#define R_OK 4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/inc/sys/ioctl.h	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,5 @@
+/*
+ * sys\ioctl.h doesn't exist on NT...rather than including it conditionally
+ * in many of the source files, we just extend the include path so that the
+ * compiler will pick this up empty header instead.
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/inc/sys/param.h	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,10 @@
+#ifndef _PARAM_H_
+#define _PARAM_H_
+
+/*
+ * sys\param.h doesn't exist on NT, so we'll make one.
+ */
+
+#define NBPG 4096
+
+#endif /* _PARAM_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/inc/sys/socket.h	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,119 @@
+/* Workable version of <sys/socket.h> based on winsock.h */
+
+#ifndef _SOCKET_H_
+#define _SOCKET_H_
+
+/* defeat the multiple include protection */
+#ifdef _WINSOCKAPI_
+#undef _WINSOCKAPI_
+#endif
+
+/* avoid confusion with our version of select */
+#ifdef select
+#undef select
+#define MUST_REDEF_SELECT
+#endif
+
+/* avoid clashing with our version of FD_SET if already defined */
+#ifdef FD_SET
+#undef FD_SET
+#undef FD_CLR
+#undef FD_ISSET
+#undef FD_ZERO
+#endif
+
+/* allow us to provide our own version of fd_set */
+#define fd_set ws_fd_set
+
+/* avoid duplicate definition of timeval */
+#ifdef HAVE_TIMEVAL
+#define timeval ws_timeval
+#endif
+
+#include <winsock.h>
+
+/* redefine select to reference our version */
+#ifdef MUST_REDEF_SELECT
+#define select sys_select
+#undef MUST_REDEF_SELECT
+#endif
+
+/* revert to our version of FD_SET */
+#undef FD_SET
+#undef FD_CLR
+#undef FD_ISSET
+#undef FD_ZERO
+#undef fd_set
+#include "nt.h"
+
+#ifdef HAVE_TIMEVAL
+#undef timeval
+#endif
+
+/* shadow functions where we provide our own wrapper */
+#define socket         sys_socket
+#define bind           sys_bind
+#define connect        sys_connect
+#define htons          sys_htons
+#define ntohs          sys_ntohs
+#define inet_addr      sys_inet_addr
+#define gethostname    sys_gethostname
+#define gethostbyname  sys_gethostbyname
+#define getservbyname  sys_getservbyname
+
+int sys_socket(int af, int type, int protocol);
+int sys_bind (int s, const struct sockaddr *addr, int namelen);
+int sys_connect (int s, const struct sockaddr *addr, int namelen);
+u_short sys_htons (u_short hostshort);
+u_short sys_ntohs (u_short netshort);
+unsigned long sys_inet_addr (const char * cp);
+int sys_gethostname (char * name, int namelen);
+struct hostent * sys_gethostbyname(const char * name);
+struct servent * sys_getservbyname(const char * name, const char * proto);
+
+/* we are providing a real h_errno variable */
+#undef h_errno
+extern int h_errno;
+
+/* map winsock error codes to standard names */
+#define EWOULDBLOCK             WSAEWOULDBLOCK
+#define EINPROGRESS             WSAEINPROGRESS
+#define EALREADY                WSAEALREADY
+#define ENOTSOCK                WSAENOTSOCK
+#define EDESTADDRREQ            WSAEDESTADDRREQ
+#define EMSGSIZE                WSAEMSGSIZE
+#define EPROTOTYPE              WSAEPROTOTYPE
+#define ENOPROTOOPT             WSAENOPROTOOPT
+#define EPROTONOSUPPORT         WSAEPROTONOSUPPORT
+#define ESOCKTNOSUPPORT         WSAESOCKTNOSUPPORT
+#define EOPNOTSUPP              WSAEOPNOTSUPP
+#define EPFNOSUPPORT            WSAEPFNOSUPPORT
+#define EAFNOSUPPORT            WSAEAFNOSUPPORT
+#define EADDRINUSE              WSAEADDRINUSE
+#define EADDRNOTAVAIL           WSAEADDRNOTAVAIL
+#define ENETDOWN                WSAENETDOWN
+#define ENETUNREACH             WSAENETUNREACH
+#define ENETRESET               WSAENETRESET
+#define ECONNABORTED            WSAECONNABORTED
+#define ECONNRESET              WSAECONNRESET
+#define ENOBUFS                 WSAENOBUFS
+#define EISCONN                 WSAEISCONN
+#define ENOTCONN                WSAENOTCONN
+#define ESHUTDOWN               WSAESHUTDOWN
+#define ETOOMANYREFS            WSAETOOMANYREFS
+#define ETIMEDOUT               WSAETIMEDOUT
+#define ECONNREFUSED            WSAECONNREFUSED
+#define ELOOP                   WSAELOOP
+/* #define ENAMETOOLONG            WSAENAMETOOLONG */
+#define EHOSTDOWN               WSAEHOSTDOWN
+#define EHOSTUNREACH            WSAEHOSTUNREACH
+/* #define ENOTEMPTY               WSAENOTEMPTY */
+#define EPROCLIM                WSAEPROCLIM
+#define EUSERS                  WSAEUSERS
+#define EDQUOT                  WSAEDQUOT
+#define ESTALE                  WSAESTALE
+#define EREMOTE                 WSAEREMOTE
+
+#endif /* _SOCKET_H_ */
+
+/* end of socket.h */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/inc/sys/time.h	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,24 @@
+/*
+ * sys/time.h doesn't exist on NT
+ */
+
+#include <time.h>
+
+struct timeval 
+  {
+    long tv_sec;	/* seconds */
+    long tv_usec;	/* microseconds */
+  };
+
+struct timezone 
+  {
+    int	tz_minuteswest;	/* minutes west of Greenwich */
+    int	tz_dsttime;	/* type of dst correction */
+  };
+
+#ifndef HAVE_X_WINDOWS
+/* X11R6 on NT provides the single parameter version of this command */
+void gettimeofday (struct timeval *, struct timezone *);
+#endif
+
+/* end of sys/time.h */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nt/inc/unistd.h	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,1 @@
+/* Fake unistd.h: config.h already provides most of the relevant things. */
--- a/nt/xemacs.mak	Mon Aug 13 09:23:08 2007 +0200
+++ b/nt/xemacs.mak	Mon Aug 13 09:24:17 2007 +0200
@@ -1,1000 +1,1010 @@
-MSDEV=F:/msdev
-X11R6=F:/utils/X11R6
-XEMACS=..
-LISP=$(XEMACS)/lisp
-
-#------------------------------------------------------------------------------
-
-# Generic variables
-
-INCLUDES=-I$(X11R6)/include -I$(XEMACS)/nt/inc -I$(XEMACS)/src\
- -I$(XEMACS)/lwlib -I$(MSDEV)/include
-LIBRARIES=
-
-OUTDIR=obj
-
-#------------------------------------------------------------------------------
-
-# LASTFILE Library
-
-LASTFILE=$(OUTDIR)/lastfile.lib
-LASTFILE_SRC=$(XEMACS)/src
-LASTFILE_FLAGS=-nologo -w -Od $(INCLUDES) -Fo$@ -c
-LASTFILE_OBJS= \
-	$(OUTDIR)/lastfile.obj
-	
-$(LASTFILE): $(LASTFILE_OBJS)
-	link.exe -lib /nologo /out:$@ $(LASTFILE_OBJS)
-
-$(OUTDIR)/lastfile.obj:	$(LASTFILE_SRC)/lastfile.c
-	 $(CC) $(LASTFILE_FLAGS) $**
-
-#------------------------------------------------------------------------------
-
-# LWLIB Library
-
-LWLIB=$(OUTDIR)/lwlib.lib
-LWLIB_SRC=$(XEMACS)/lwlib
-LWLIB_FLAGS=/nologo /w /Od /Yd /Zd $(INCLUDES) /D "WIN32" /D "_DEBUG" \
- /D "_WINDOWS" /D "MENUBARS_LUCID" /D "SCROLLBARS_LUCID" /D "DIALOGS_ATHENA" \
- /D "WINDOWSNT" /Fo$@ /c
-LWLIB_OBJS= \
-        $(OUTDIR)/lwlib-config.obj \
-        $(OUTDIR)/lwlib-utils.obj \
-        $(OUTDIR)/lwlib-Xaw.obj \
-        $(OUTDIR)/lwlib-Xlw.obj \
-        $(OUTDIR)/lwlib.obj \
-        $(OUTDIR)/xlwmenu.obj \
-        $(OUTDIR)/xlwscrollbar.obj
-
-$(LWLIB): $(LWLIB_OBJS)
-	link.exe -lib -nologo -debug -debugtype:both -out:$@ $(LWLIB_OBJS)
-
-$(OUTDIR)/lwlib-config.obj:	$(LWLIB_SRC)/lwlib-config.c
-	 $(CC) $(LWLIB_FLAGS) $**
-
-$(OUTDIR)/lwlib-utils.obj:	$(LWLIB_SRC)/lwlib-utils.c
-	 $(CC) $(LWLIB_FLAGS) $**
-
-$(OUTDIR)/lwlib-Xaw.obj:	$(LWLIB_SRC)/lwlib-Xaw.c
-	 $(CC) $(LWLIB_FLAGS) $**
-
-$(OUTDIR)/lwlib-Xlw.obj:	$(LWLIB_SRC)/lwlib-Xlw.c
-	 $(CC) $(LWLIB_FLAGS) $**
-
-$(OUTDIR)/lwlib.obj:		$(LWLIB_SRC)/lwlib.c
-	 $(CC) $(LWLIB_FLAGS) $**
-
-$(OUTDIR)/xlwmenu.obj:		$(LWLIB_SRC)/xlwmenu.c
-	 $(CC) $(LWLIB_FLAGS) $**
-
-$(OUTDIR)/xlwscrollbar.obj:	$(LWLIB_SRC)/xlwscrollbar.c
-	 $(CC) $(LWLIB_FLAGS) $**
-
-#------------------------------------------------------------------------------
-
-# lib-src programs
-
-LIB_SRC=$(XEMACS)/lib-src
-LIB_SRC_FLAGS=$(INCLUDES) -D_DEBUG -DWIN32 -D_WIN32 -DWIN32_LEAN_AND_MEAN \
- -D_NTSDK -D_M_IX86 -D_DLL -D_MT -D_X86_ -Demacs -DHAVE_CONFIG_H -D_MSC_VER=999
-LIB_SRC_LIBS= kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib \
- odbccp32.lib msvcrt.lib
-LIB_SRC_LFLAGS=/nologo $(LIB_SRC_LIBS) /base:0x1000000\
- /subsystem:console /pdb:none /debugtype:both /machine:I386\
- /nodefaultlib /out:$@ /debug:full
-
-DOC=$(LIB_SRC)/DOC
-DOC_SRCS_1=\
- $(XEMACS)/src/abbrev.c \
- $(XEMACS)/src/alloc.c \
- $(XEMACS)/src/alloca.c \
- $(XEMACS)/src/blocktype.c \
- $(XEMACS)/src/buffer.c \
- $(XEMACS)/src/bytecode.c \
- $(XEMACS)/src/callint.c \
- $(XEMACS)/src/callproc.c \
- $(XEMACS)/src/casefiddle.c \
- $(XEMACS)/src/casetab.c \
- $(XEMACS)/src/chartab.c \
- $(XEMACS)/src/cmdloop.c \
- $(XEMACS)/src/cmds.c \
- $(XEMACS)/src/console-stream.c \
- $(XEMACS)/src/console-x.c \
- $(XEMACS)/src/console.c \
- $(XEMACS)/src/data.c \
- $(XEMACS)/src/database.c \
- $(XEMACS)/src/debug.c \
- $(XEMACS)/src/device-x.c \
- $(XEMACS)/src/device.c \
- $(XEMACS)/src/dgif_lib.c \
- $(XEMACS)/src/dialog-x.c \
- $(XEMACS)/src/dialog.c \
- $(XEMACS)/src/dired.c \
- $(XEMACS)/src/doc.c \
- $(XEMACS)/src/doprnt.c \
- $(XEMACS)/src/dynarr.c \
- $(XEMACS)/src/editfns.c \
- $(XEMACS)/src/elhash.c \
- $(XEMACS)/src/emacs.c \
- $(XEMACS)/src/EmacsFrame.c \
- $(XEMACS)/src/EmacsManager.c \
- $(XEMACS)/src/EmacsShell-sub.c\
- $(XEMACS)/src/EmacsShell.c \
- $(XEMACS)/src/energize.c \
- $(XEMACS)/src/eval.c \
- $(XEMACS)/src/event-stream.c \
- $(XEMACS)/src/event-unixoid.c \
- $(XEMACS)/src/event-Xt.c \
- $(XEMACS)/src/events.c \
- $(XEMACS)/src/extents.c \
- $(XEMACS)/src/faces.c \
- $(XEMACS)/src/fileio.c \
- $(XEMACS)/src/filelock.c \
- $(XEMACS)/src/filemode.c \
- $(XEMACS)/src/floatfns.c \
- $(XEMACS)/src/fns.c \
- $(XEMACS)/src/font-lock.c \
- $(XEMACS)/src/frame-x.c \
- $(XEMACS)/src/frame.c \
- $(XEMACS)/src/free-hook.c \
- $(XEMACS)/src/general.c \
- $(XEMACS)/src/gif_err.c \
- $(XEMACS)/src/gifalloc.c \
- $(XEMACS)/src/glyphs-x.c \
- $(XEMACS)/src/glyphs.c \
- $(XEMACS)/src/gmalloc.c \
- $(XEMACS)/src/gui-x.c \
- $(XEMACS)/src/gui.c \
- $(XEMACS)/src/hash.c \
- $(XEMACS)/src/indent.c \
- $(XEMACS)/src/inline.c \
- $(XEMACS)/src/insdel.c \
- $(XEMACS)/src/intl.c \
- $(XEMACS)/src/keymap.c \
- $(XEMACS)/src/lread.c \
- $(XEMACS)/src/lstream.c \
- $(XEMACS)/src/macros.c \
- $(XEMACS)/src/marker.c \
- $(XEMACS)/src/md5.c \
- $(XEMACS)/src/menubar-x.c \
- $(XEMACS)/src/menubar.c \
- $(XEMACS)/src/minibuf.c \
- $(XEMACS)/src/mocklisp.c \
- $(XEMACS)/src/nt.c \
- $(XEMACS)/src/ntheap.c \
- $(XEMACS)/src/ntproc.c \
- $(XEMACS)/src/objects-x.c \
- $(XEMACS)/src/objects.c \
- $(XEMACS)/src/opaque.c \
- $(XEMACS)/src/print.c \
- $(XEMACS)/src/process.c \
- $(XEMACS)/src/pure.c \
- $(XEMACS)/src/rangetab.c \
- $(XEMACS)/src/realpath.c \
- $(XEMACS)/src/redisplay-output.c \
- $(XEMACS)/src/redisplay-x.c \
- $(XEMACS)/src/redisplay.c \
- $(XEMACS)/src/regex.c \
- $(XEMACS)/src/scrollbar-x.c \
- $(XEMACS)/src/scrollbar.c \
- $(XEMACS)/src/search.c \
- $(XEMACS)/src/signal.c \
- $(XEMACS)/src/sound.c \
- $(XEMACS)/src/specifier.c \
- $(XEMACS)/src/strftime.c \
- $(XEMACS)/src/symbols.c \
- $(XEMACS)/src/syntax.c \
- $(XEMACS)/src/sysdep.c \
- $(XEMACS)/src/termcap.c \
- $(XEMACS)/src/tparam.c \
- $(XEMACS)/src/undo.c \
- $(XEMACS)/src/unexnt.c \
- $(XEMACS)/src/vm-limit.c \
- $(XEMACS)/src/window.c \
- $(XEMACS)/src/xgccache.c \
- $(XEMACS)/src/xmu.c \
- $(XEMACS)/src/xselect.c
-DOC_SRCS_2=\
- $(LISP)/version.el \
- $(LISP)/paths.el \
- $(LISP)/prim/loaddefs.elc \
- $(LISP)/prim/auto-autoloads.elc \
- $(LISP)/prim/loadup.el \
- $(LISP)/prim/subr.elc \
- $(LISP)/prim/cmdloop.elc \
- $(LISP)/utils/text-props.elc \
- $(LISP)/prim/gui.elc \
- $(LISP)/prim/mouse.elc \
- $(LISP)/prim/mode-motion.elc \
- $(LISP)/prim/keymap.elc \
- $(LISP)/prim/syntax.elc \
- $(LISP)/prim/minibuf.elc \
- $(LISP)/prim/faces.elc \
- $(LISP)/prim/objects.elc \
- $(LISP)/prim/process.elc \
- $(LISP)/prim/keydefs.elc \
- $(LISP)/prim/device.elc \
- $(LISP)/prim/obsolete.elc \
- $(LISP)/prim/glyphs.elc \
- $(LISP)/prim/extents.elc \
- $(LISP)/prim/backquote.elc \
- $(LISP)/prim/events.elc \
- $(LISP)/prim/console.elc \
- $(LISP)/utils/map-ynp.elc \
- $(LISP)/prim/modeline.elc \
- $(LISP)/prim/profile.elc \
- $(LISP)/modes/list-mode.elc \
- $(LISP)/utils/derived.elc \
- $(LISP)/cl/cl.elc \
- $(LISP)/cl/cl-defs.elc \
- $(LISP)/prim/undo-stack.elc \
- $(LISP)/prim/simple.elc \
- $(LISP)/prim/help.elc \
- $(LISP)/prim/files.elc \
- $(LISP)/utils/lib-complete.elc \
- $(LISP)/prim/indent.elc \
- $(LISP)/prim/frame.elc \
- $(LISP)/prim/format.elc \
- $(LISP)/prim/window.elc \
- $(LISP)/prim/startup.elc \
- $(LISP)/prim/lisp.elc \
- $(LISP)/prim/page.elc \
- $(LISP)/prim/register.elc \
- $(LISP)/iso/iso8859-1.elc \
- $(LISP)/prim/paragraphs.elc \
- $(LISP)/modes/lisp-mode.elc \
- $(LISP)/modes/text-mode.elc \
- $(LISP)/prim/fill.elc \
- $(LISP)/prim/isearch-mode.elc \
- $(LISP)/prim/misc.elc \
- $(LISP)/packages/vc-hooks.elc \
- $(LISP)/prim/replace.elc \
- $(LISP)/prim/specifier.elc \
- $(LISP)/modes/auto-show.elc \
- $(LISP)/bytecomp/bytecomp-runtime.elc \
- $(LISP)/prim/float-sup.elc \
- $(LISP)/prim/itimer.elc \
- $(LISP)/ediff/ediff-hook.elc \
- $(LISP)/packages/fontl-hooks.elc \
- $(LISP)/prim/scrollbar.elc \
- $(LISP)/prim/buffer.elc \
- $(LISP)/prim/menubar.elc \
- $(LISP)/packages/buff-menu.elc  \
- $(LISP)/modes/abbrev.elc 
-# X11_LISP NS_LISP ENERGIZE_LISP TOOLTALK_LISP DIALOG_LISP MULE_LISP NOMULE_LISP
-
-MAKE_DOCFILE=$(OUTDIR)\make-docfile.exe
-SUPPORT_PROGS=$(MAKE_DOCFILE)
-
-$(MAKE_DOCFILE): $(OUTDIR)\make-docfile.obj
-	link.exe $(LIB_SRC_LFLAGS) $** $(LIB_SRC_LIBS)
-
-$(OUTDIR)/make-docfile.obj:	$(LIB_SRC)\make-docfile.c
-	 $(CC) $(LIB_SRC_FLAGS) $** /Fo$@
-
-$(DOC): $(OUTDIR)/make-docfile.exe
-	!$(MAKE_DOCFILE) -o $@ $(DOC_SRCS_1) 
-	!$(MAKE_DOCFILE) -a $@ $(DOC_SRCS_2)
-
-#------------------------------------------------------------------------------
-
-# TEMACS Executable
-
-TEMACS_DIR=$(XEMACS)/src
-TEMACS=$(TEMACS_DIR)/temacs.exe
-TEMACS_SRC=$(XEMACS)/src
-TEMACS_LIBS=$(LASTFILE) $(LWLIB) Xaw.lib Xmu.lib Xt.lib SM.lib ICE.lib \
- Xext.lib X11.lib kernel32.lib user32.lib gdi32.lib \
- winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
- uuid.lib odbc32.lib odbccp32.lib wsock32.lib msvcrt.lib
-TEMACS_LFLAGS=/nologo $(LIBRARIES) /base:0x1000000\
- /stack:0x800000 /entry:_start /subsystem:console /pdb:none\
- /map:$(TEMACS_DIR)/temacs.map /debug:full /debugtype:both /machine:I386\
- /nodefaultlib /force /out:$@\
- /heap:0x00100000
-
-TEMACS_CPP=$(XEMACS)/nt/cpp/cpp.exe
-TEMACS_CPP_FLAGS= $(INCLUDES) -D_DEBUG -DWIN32 -D_WIN32 -DWIN32_LEAN_AND_MEAN \
- -D_NTSDK -D_M_IX86 -D_DLL -D_MT -D_X86_ -Demacs -DHAVE_CONFIG_H -D_MSC_VER=999
-TEMACS_FLAGS=-nologo -w -Od -Yd -Zd -c $(TEMACS_CPP_FLAGS)
-
-TEMACS_OBJS= \
-	$(OUTDIR)/abbrev.obj \
-	$(OUTDIR)/alloc.obj \
-	$(OUTDIR)/alloca.obj \
-	$(OUTDIR)/blocktype.obj \
-	$(OUTDIR)/buffer.obj \
-	$(OUTDIR)/bytecode.obj \
-	$(OUTDIR)/callint.obj \
-	$(OUTDIR)/callproc.obj \
-	$(OUTDIR)/casefiddle.obj \
-	$(OUTDIR)/casetab.obj \
-	$(OUTDIR)/chartab.obj \
-	$(OUTDIR)/cmdloop.obj \
-	$(OUTDIR)/cmds.obj \
-	$(OUTDIR)/console-stream.obj \
-	$(OUTDIR)/console-x.obj \
-	$(OUTDIR)/console.obj \
-	$(OUTDIR)/data.obj \
-	$(OUTDIR)/database.obj \
-	$(OUTDIR)/debug.obj \
-	$(OUTDIR)/device-x.obj \
-	$(OUTDIR)/device.obj \
-	$(OUTDIR)/dgif_lib.obj \
-	$(OUTDIR)/dialog-x.obj \
-	$(OUTDIR)/dialog.obj \
-	$(OUTDIR)/dired.obj \
-	$(OUTDIR)/doc.obj \
-	$(OUTDIR)/doprnt.obj \
-	$(OUTDIR)/dynarr.obj \
-	$(OUTDIR)/editfns.obj \
-	$(OUTDIR)/elhash.obj \
-	$(OUTDIR)/emacs.obj \
-	$(OUTDIR)/EmacsFrame.obj \
-	$(OUTDIR)/EmacsManager.obj \
-	$(OUTDIR)/TopLevelEmacsShell.obj\
-	$(OUTDIR)/TransientEmacsShell.obj\
-	$(OUTDIR)/EmacsShell.obj \
-	$(OUTDIR)/energize.obj \
-	$(OUTDIR)/eval.obj \
-	$(OUTDIR)/event-stream.obj \
-	$(OUTDIR)/event-unixoid.obj \
-	$(OUTDIR)/event-Xt.obj \
-	$(OUTDIR)/events.obj \
-	$(OUTDIR)/extents.obj \
-	$(OUTDIR)/faces.obj \
-	$(OUTDIR)/fileio.obj \
-	$(OUTDIR)/filelock.obj \
-	$(OUTDIR)/filemode.obj \
-	$(OUTDIR)/floatfns.obj \
-	$(OUTDIR)/fns.obj \
-	$(OUTDIR)/font-lock.obj \
-	$(OUTDIR)/frame-x.obj \
-	$(OUTDIR)/frame.obj \
-	$(OUTDIR)/free-hook.obj \
-	$(OUTDIR)/general.obj \
-	$(OUTDIR)/gif_err.obj \
-	$(OUTDIR)/gifalloc.obj \
-	$(OUTDIR)/glyphs-x.obj \
-	$(OUTDIR)/glyphs.obj \
-	$(OUTDIR)/gmalloc.obj \
-	$(OUTDIR)/gui-x.obj \
-	$(OUTDIR)/gui.obj \
-	$(OUTDIR)/hash.obj \
-	$(OUTDIR)/indent.obj \
-	$(OUTDIR)/inline.obj \
-	$(OUTDIR)/insdel.obj \
-	$(OUTDIR)/intl.obj \
-	$(OUTDIR)/keymap.obj \
-	$(OUTDIR)/lread.obj \
-	$(OUTDIR)/lstream.obj \
-	$(OUTDIR)/macros.obj \
-	$(OUTDIR)/marker.obj \
-	$(OUTDIR)/md5.obj \
-	$(OUTDIR)/menubar-x.obj \
-	$(OUTDIR)/menubar.obj \
-	$(OUTDIR)/minibuf.obj \
-	$(OUTDIR)/mocklisp.obj \
-	$(OUTDIR)/nt.obj \
-	$(OUTDIR)/ntheap.obj \
-	$(OUTDIR)/ntproc.obj \
-	$(OUTDIR)/objects-x.obj \
-	$(OUTDIR)/objects.obj \
-	$(OUTDIR)/opaque.obj \
-	$(OUTDIR)/print.obj \
-	$(OUTDIR)/process.obj \
-	$(OUTDIR)/pure.obj \
-	$(OUTDIR)/rangetab.obj \
-	$(OUTDIR)/realpath.obj \
-	$(OUTDIR)/redisplay-output.obj \
-	$(OUTDIR)/redisplay-x.obj \
-	$(OUTDIR)/redisplay.obj \
-	$(OUTDIR)/regex.obj \
-	$(OUTDIR)/scrollbar-x.obj \
-	$(OUTDIR)/scrollbar.obj \
-	$(OUTDIR)/search.obj \
-	$(OUTDIR)/signal.obj \
-	$(OUTDIR)/sound.obj \
-	$(OUTDIR)/specifier.obj \
-	$(OUTDIR)/strftime.obj \
-	$(OUTDIR)/symbols.obj \
-	$(OUTDIR)/syntax.obj \
-	$(OUTDIR)/sysdep.obj \
-	$(OUTDIR)/termcap.obj \
-	$(OUTDIR)/tparam.obj \
-	$(OUTDIR)/undo.obj \
-	$(OUTDIR)/unexnt.obj \
-	$(OUTDIR)/vm-limit.obj \
-	$(OUTDIR)/window.obj \
-	$(OUTDIR)/xgccache.obj \
-	$(OUTDIR)/xmu.obj \
-	$(OUTDIR)/xselect.obj
-
-#$(TEMACS): $(TEMACS_SRC)/Emacs.ad.h $(TEMACS_SRC)/paths.h $(TEMACS_OBJS)
-#	link.exe $(TEMACS_LFLAGS) $(TEMACS_OBJS) $(TEMACS_LIBS)
-
-$(TEMACS): $(TEMACS_SRC)/Emacs.ad.h $(TEMACS_SRC)/paths.h $(TEMACS_OBJS)
-	link.exe @<<
-  $(TEMACS_LFLAGS) $(TEMACS_OBJS) $(TEMACS_LIBS)
-<<
-
-$(OUTDIR)/abbrev.obj:	$(TEMACS_SRC)/abbrev.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@
-        !"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/alloc.obj:	$(TEMACS_SRC)/alloc.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/alloca.obj:	$(TEMACS_SRC)/alloca.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/blocktype.obj:	$(TEMACS_SRC)/blocktype.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/buffer.obj:	$(TEMACS_SRC)/buffer.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/bytecode.obj:	$(TEMACS_SRC)/bytecode.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/callint.obj:	$(TEMACS_SRC)/callint.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/callproc.obj:	$(TEMACS_SRC)/callproc.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/casefiddle.obj:	$(TEMACS_SRC)/casefiddle.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/casetab.obj:	$(TEMACS_SRC)/casetab.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/chartab.obj:	$(TEMACS_SRC)/chartab.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/cmdloop.obj:	$(TEMACS_SRC)/cmdloop.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/cmds.obj:	$(TEMACS_SRC)/cmds.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/console-stream.obj:	$(TEMACS_SRC)/console-stream.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/console-x.obj:	$(TEMACS_SRC)/console-x.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/console.obj:	$(TEMACS_SRC)/console.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/data.obj:	$(TEMACS_SRC)/data.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/database.obj:	$(TEMACS_SRC)/database.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/debug.obj:	$(TEMACS_SRC)/debug.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/device-x.obj:	$(TEMACS_SRC)/device-x.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/device.obj:	$(TEMACS_SRC)/device.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/dgif_lib.obj:	$(TEMACS_SRC)/dgif_lib.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/dialog-x.obj:	$(TEMACS_SRC)/dialog-x.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/dialog.obj:	$(TEMACS_SRC)/dialog.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/dired.obj:	$(TEMACS_SRC)/dired.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/doc.obj:	$(TEMACS_SRC)/doc.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/doprnt.obj:	$(TEMACS_SRC)/doprnt.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/dynarr.obj:	$(TEMACS_SRC)/dynarr.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/editfns.obj:	$(TEMACS_SRC)/editfns.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/elhash.obj:	$(TEMACS_SRC)/elhash.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/emacs.obj:	$(TEMACS_SRC)/emacs.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/EmacsFrame.obj:	$(TEMACS_SRC)/EmacsFrame.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/EmacsManager.obj:	$(TEMACS_SRC)/EmacsManager.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/TopLevelEmacsShell.obj:	$(TEMACS_SRC)/EmacsShell-sub.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) -DDEFINE_TOP_LEVEL_EMACS_SHELL $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/TransientEmacsShell.obj: $(TEMACS_SRC)/EmacsShell-sub.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) -DDEFINE_TRANSIENT_EMACS_SHELL $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS) $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/EmacsShell.obj:	$(TEMACS_SRC)/EmacsShell.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/energize.obj:	$(TEMACS_SRC)/energize.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/eval.obj:	$(TEMACS_SRC)/eval.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/event-stream.obj:	$(TEMACS_SRC)/event-stream.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/event-unixoid.obj:	$(TEMACS_SRC)/event-unixoid.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/event-Xt.obj:	$(TEMACS_SRC)/event-Xt.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/events.obj:	$(TEMACS_SRC)/events.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/extents.obj:	$(TEMACS_SRC)/extents.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/faces.obj:	$(TEMACS_SRC)/faces.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/fileio.obj:	$(TEMACS_SRC)/fileio.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/filelock.obj:	$(TEMACS_SRC)/filelock.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/filemode.obj:	$(TEMACS_SRC)/filemode.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/floatfns.obj:	$(TEMACS_SRC)/floatfns.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/fns.obj:	$(TEMACS_SRC)/fns.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/font-lock.obj:	$(TEMACS_SRC)/font-lock.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/frame-x.obj:	$(TEMACS_SRC)/frame-x.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/frame.obj:	$(TEMACS_SRC)/frame.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/free-hook.obj:	$(TEMACS_SRC)/free-hook.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/general.obj:	$(TEMACS_SRC)/general.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/gif_err.obj:	$(TEMACS_SRC)/gif_err.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/gifalloc.obj:	$(TEMACS_SRC)/gifalloc.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/glyphs-x.obj:	$(TEMACS_SRC)/glyphs-x.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/glyphs.obj:	$(TEMACS_SRC)/glyphs.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/gmalloc.obj:	$(TEMACS_SRC)/gmalloc.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/gui-x.obj:	$(TEMACS_SRC)/gui-x.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/gui.obj:	$(TEMACS_SRC)/gui.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/hash.obj:	$(TEMACS_SRC)/hash.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/indent.obj:	$(TEMACS_SRC)/indent.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/inline.obj:	$(TEMACS_SRC)/inline.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/insdel.obj:	$(TEMACS_SRC)/insdel.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/intl.obj:	$(TEMACS_SRC)/intl.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/keymap.obj:	$(TEMACS_SRC)/keymap.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/lread.obj:	$(TEMACS_SRC)/lread.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/lstream.obj:	$(TEMACS_SRC)/lstream.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/macros.obj:	$(TEMACS_SRC)/macros.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/marker.obj:	$(TEMACS_SRC)/marker.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/md5.obj:	$(TEMACS_SRC)/md5.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/menubar-x.obj:	$(TEMACS_SRC)/menubar-x.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/menubar.obj:	$(TEMACS_SRC)/menubar.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/minibuf.obj:	$(TEMACS_SRC)/minibuf.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/mocklisp.obj:	$(TEMACS_SRC)/mocklisp.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/msdos.obj:	$(TEMACS_SRC)/msdos.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/nt.obj:	$(TEMACS_SRC)/nt.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/ntheap.obj:	$(TEMACS_SRC)/ntheap.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/ntproc.obj:	$(TEMACS_SRC)/ntproc.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/objects-x.obj:	$(TEMACS_SRC)/objects-x.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/objects.obj:	$(TEMACS_SRC)/objects.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/opaque.obj:	$(TEMACS_SRC)/opaque.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/print.obj:	$(TEMACS_SRC)/print.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/process.obj:	$(TEMACS_SRC)/process.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/pure.obj:	$(TEMACS_SRC)/pure.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/rangetab.obj:	$(TEMACS_SRC)/rangetab.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/realpath.obj:	$(TEMACS_SRC)/realpath.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/redisplay-output.obj:	$(TEMACS_SRC)/redisplay-output.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/redisplay-x.obj:	$(TEMACS_SRC)/redisplay-x.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/redisplay.obj:	$(TEMACS_SRC)/redisplay.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/regex.obj:	$(TEMACS_SRC)/regex.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/scrollbar-x.obj:	$(TEMACS_SRC)/scrollbar-x.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/scrollbar.obj:	$(TEMACS_SRC)/scrollbar.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/search.obj:	$(TEMACS_SRC)/search.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/signal.obj:	$(TEMACS_SRC)/signal.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/sound.obj:	$(TEMACS_SRC)/sound.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/specifier.obj:	$(TEMACS_SRC)/specifier.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/strftime.obj:	$(TEMACS_SRC)/strftime.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/symbols.obj:	$(TEMACS_SRC)/symbols.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/syntax.obj:	$(TEMACS_SRC)/syntax.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/sysdep.obj:	$(TEMACS_SRC)/sysdep.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/termcap.obj:	$(TEMACS_SRC)/termcap.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/tparam.obj:	$(TEMACS_SRC)/tparam.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/undo.obj:	$(TEMACS_SRC)/undo.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/unexnt.obj:	$(TEMACS_SRC)/unexnt.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/vm-limit.obj:	$(TEMACS_SRC)/vm-limit.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/window.obj:	$(TEMACS_SRC)/window.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/xgccache.obj:	$(TEMACS_SRC)/xgccache.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/xmu.obj:	$(TEMACS_SRC)/xmu.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(OUTDIR)/xselect.obj:	$(TEMACS_SRC)/xselect.c
-	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
-	$(CC) $(TEMACS_FLAGS)  $(OUTDIR)/foo.c /Fo$@
-	!"del $(OUTDIR)\\foo.c"
-
-$(TEMACS_SRC)/Emacs.ad.h: $(XEMACS)/etc/Emacs.ad
-	!"sed -f ad2c.sed < $(XEMACS)/etc/Emacs.ad > $(TEMACS_SRC)/Emacs.ad.h"
-
-$(TEMACS_SRC)/paths.h: $(TEMACS_SRC)/paths.h.in
-	!"cd $(TEMACS_SRC); cp paths.h.in paths.h"
-
-#------------------------------------------------------------------------------
-
-# LISP bits 'n bobs
-
-dump-elcs: $(TEMACS)
-        $(LOADPATH) $(TEMACS) -batch -l ../prim/update-elc.el $(LISP)
-
-dump-xemacs: $(TEMACS)
-	$(TEMACS) -batch -l loadup.el dump
-
-#------------------------------------------------------------------------------
-
-# use this rule to build the complete system
-all: $(LASTFILE) $(LWLIB) $(TEMACS) $(SUPPORT_PROGS) $(DOC)
-
-# use this rule to install the system
-install:
+MSDEV=F:/msdev
+X11R6=F:/utils/X11R6
+XEMACS=..
+LISP=$(XEMACS)/lisp
+
+#------------------------------------------------------------------------------
+
+# Generic variables
+
+INCLUDES=-I$(X11R6)/include -I$(XEMACS)/nt/inc -I$(XEMACS)/src\
+ -I$(XEMACS)/lwlib -I$(MSDEV)/include
+#INCLUDES=-I$(X11R6)/include -I$(XEMACS)/src\
+# -I$(XEMACS)/lwlib -I$(MSDEV)/include
+LIBRARIES=
+
+OUTDIR=obj
+
+#------------------------------------------------------------------------------
+
+default: objdir all 
+
+objdir:
+	@echo "Ignore error message if $(OUTDIR) subdirectory already exists."
+	-@mkdir $(OUTDIR)
+
+# LASTFILE Library
+
+LASTFILE=$(OUTDIR)/lastfile.lib
+LASTFILE_SRC=$(XEMACS)/src
+LASTFILE_FLAGS=-nologo -w -Od $(INCLUDES) -Fo$@ -c
+LASTFILE_OBJS= \
+	$(OUTDIR)/lastfile.obj
+	
+$(LASTFILE): $(LASTFILE_OBJS)
+	link.exe -lib /nologo /out:$@ $(LASTFILE_OBJS)
+
+$(OUTDIR)/lastfile.obj:	$(LASTFILE_SRC)/lastfile.c
+	 $(CC) $(LASTFILE_FLAGS) $**
+
+#------------------------------------------------------------------------------
+
+# LWLIB Library
+
+LWLIB=$(OUTDIR)/lwlib.lib
+LWLIB_SRC=$(XEMACS)/lwlib
+LWLIB_FLAGS=/nologo /w /Od /Zi $(INCLUDES) /D "WIN32" /D "_DEBUG" \
+ /D "NEED_ATHENA" /D "NEED_LUCID" \
+ /D "_WINDOWS" /D "MENUBARS_LUCID" /D "SCROLLBARS_LUCID" /D "DIALOGS_ATHENA" \
+ /D "WINDOWSNT" /Fo$@ /c
+LWLIB_OBJS= \
+        $(OUTDIR)/lwlib-config.obj \
+        $(OUTDIR)/lwlib-utils.obj \
+        $(OUTDIR)/lwlib-Xaw.obj \
+        $(OUTDIR)/lwlib-Xlw.obj \
+        $(OUTDIR)/lwlib.obj \
+        $(OUTDIR)/xlwmenu.obj \
+        $(OUTDIR)/xlwscrollbar.obj
+
+$(LWLIB): $(LWLIB_OBJS)
+	link.exe -lib -nologo -debug -debugtype:both -out:$@ $(LWLIB_OBJS)
+
+$(OUTDIR)/lwlib-config.obj:	$(LWLIB_SRC)/lwlib-config.c
+	 $(CC) $(LWLIB_FLAGS) $**
+
+$(OUTDIR)/lwlib-utils.obj:	$(LWLIB_SRC)/lwlib-utils.c
+	 $(CC) $(LWLIB_FLAGS) $**
+
+$(OUTDIR)/lwlib-Xaw.obj:	$(LWLIB_SRC)/lwlib-Xaw.c
+	 $(CC) $(LWLIB_FLAGS) $**
+
+$(OUTDIR)/lwlib-Xlw.obj:	$(LWLIB_SRC)/lwlib-Xlw.c
+	 $(CC) $(LWLIB_FLAGS) $**
+
+$(OUTDIR)/lwlib.obj:		$(LWLIB_SRC)/lwlib.c
+	 $(CC) $(LWLIB_FLAGS) $**
+
+$(OUTDIR)/xlwmenu.obj:		$(LWLIB_SRC)/xlwmenu.c
+	 $(CC) $(LWLIB_FLAGS) $**
+
+$(OUTDIR)/xlwscrollbar.obj:	$(LWLIB_SRC)/xlwscrollbar.c
+	 $(CC) $(LWLIB_FLAGS) $**
+
+#------------------------------------------------------------------------------
+
+# lib-src programs
+
+LIB_SRC=$(XEMACS)/lib-src
+LIB_SRC_FLAGS=$(INCLUDES) -D_DEBUG -DWIN32 -D_WIN32 -DWIN32_LEAN_AND_MEAN \
+ -D_NTSDK -D_M_IX86 -ML -D_X86_ -Demacs -DHAVE_CONFIG_H -D_MSC_VER=999
+LIB_SRC_LIBS= kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
+ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib \
+ odbccp32.lib libc.lib
+LIB_SRC_LFLAGS=/nologo $(LIB_SRC_LIBS) /base:0x1000000\
+ /subsystem:console /pdb:none /debugtype:both /machine:I386\
+ /nodefaultlib /out:$@ /debug:full
+
+DOC=$(LIB_SRC)/DOC
+DOC_SRCS_1=\
+ $(XEMACS)/src/abbrev.c \
+ $(XEMACS)/src/alloc.c \
+ $(XEMACS)/src/alloca.c \
+ $(XEMACS)/src/blocktype.c \
+ $(XEMACS)/src/buffer.c \
+ $(XEMACS)/src/bytecode.c \
+ $(XEMACS)/src/callint.c \
+ $(XEMACS)/src/callproc.c \
+ $(XEMACS)/src/casefiddle.c \
+ $(XEMACS)/src/casetab.c \
+ $(XEMACS)/src/chartab.c \
+ $(XEMACS)/src/cmdloop.c \
+ $(XEMACS)/src/cmds.c \
+ $(XEMACS)/src/console-stream.c \
+ $(XEMACS)/src/console-x.c \
+ $(XEMACS)/src/console.c \
+ $(XEMACS)/src/data.c \
+ $(XEMACS)/src/database.c \
+ $(XEMACS)/src/debug.c \
+ $(XEMACS)/src/device-x.c \
+ $(XEMACS)/src/device.c \
+ $(XEMACS)/src/dgif_lib.c \
+ $(XEMACS)/src/dialog-x.c \
+ $(XEMACS)/src/dialog.c \
+ $(XEMACS)/src/dired.c \
+ $(XEMACS)/src/doc.c \
+ $(XEMACS)/src/doprnt.c \
+ $(XEMACS)/src/dynarr.c \
+ $(XEMACS)/src/editfns.c \
+ $(XEMACS)/src/elhash.c \
+ $(XEMACS)/src/emacs.c \
+ $(XEMACS)/src/EmacsFrame.c \
+ $(XEMACS)/src/EmacsManager.c \
+ $(XEMACS)/src/EmacsShell-sub.c\
+ $(XEMACS)/src/EmacsShell.c \
+ $(XEMACS)/src/energize.c \
+ $(XEMACS)/src/eval.c \
+ $(XEMACS)/src/event-stream.c \
+ $(XEMACS)/src/event-unixoid.c \
+ $(XEMACS)/src/event-Xt.c \
+ $(XEMACS)/src/events.c \
+ $(XEMACS)/src/extents.c \
+ $(XEMACS)/src/faces.c \
+ $(XEMACS)/src/fileio.c \
+ $(XEMACS)/src/filelock.c \
+ $(XEMACS)/src/filemode.c \
+ $(XEMACS)/src/floatfns.c \
+ $(XEMACS)/src/fns.c \
+ $(XEMACS)/src/font-lock.c \
+ $(XEMACS)/src/frame-x.c \
+ $(XEMACS)/src/frame.c \
+ $(XEMACS)/src/free-hook.c \
+ $(XEMACS)/src/general.c \
+ $(XEMACS)/src/gif_err.c \
+ $(XEMACS)/src/gifalloc.c \
+ $(XEMACS)/src/glyphs-x.c \
+ $(XEMACS)/src/glyphs.c \
+ $(XEMACS)/src/gmalloc.c \
+ $(XEMACS)/src/gui-x.c \
+ $(XEMACS)/src/gui.c \
+ $(XEMACS)/src/hash.c \
+ $(XEMACS)/src/indent.c \
+ $(XEMACS)/src/inline.c \
+ $(XEMACS)/src/insdel.c \
+ $(XEMACS)/src/intl.c \
+ $(XEMACS)/src/keymap.c \
+ $(XEMACS)/src/lread.c \
+ $(XEMACS)/src/lstream.c \
+ $(XEMACS)/src/macros.c \
+ $(XEMACS)/src/marker.c \
+ $(XEMACS)/src/md5.c \
+ $(XEMACS)/src/menubar-x.c \
+ $(XEMACS)/src/menubar.c \
+ $(XEMACS)/src/minibuf.c \
+ $(XEMACS)/src/mocklisp.c \
+ $(XEMACS)/src/nt.c \
+ $(XEMACS)/src/ntheap.c \
+ $(XEMACS)/src/ntproc.c \
+ $(XEMACS)/src/objects-x.c \
+ $(XEMACS)/src/objects.c \
+ $(XEMACS)/src/opaque.c \
+ $(XEMACS)/src/print.c \
+ $(XEMACS)/src/process.c \
+ $(XEMACS)/src/pure.c \
+ $(XEMACS)/src/rangetab.c \
+ $(XEMACS)/src/realpath.c \
+ $(XEMACS)/src/redisplay-output.c \
+ $(XEMACS)/src/redisplay-x.c \
+ $(XEMACS)/src/redisplay.c \
+ $(XEMACS)/src/regex.c \
+ $(XEMACS)/src/scrollbar-x.c \
+ $(XEMACS)/src/scrollbar.c \
+ $(XEMACS)/src/search.c \
+ $(XEMACS)/src/signal.c \
+ $(XEMACS)/src/sound.c \
+ $(XEMACS)/src/specifier.c \
+ $(XEMACS)/src/strftime.c \
+ $(XEMACS)/src/symbols.c \
+ $(XEMACS)/src/syntax.c \
+ $(XEMACS)/src/sysdep.c \
+ $(XEMACS)/src/termcap.c \
+ $(XEMACS)/src/tparam.c \
+ $(XEMACS)/src/undo.c \
+ $(XEMACS)/src/unexnt.c \
+ $(XEMACS)/src/vm-limit.c \
+ $(XEMACS)/src/window.c \
+ $(XEMACS)/src/xgccache.c \
+ $(XEMACS)/src/xmu.c \
+ $(XEMACS)/src/xselect.c
+DOC_SRCS_2=\
+ $(LISP)/version.el \
+ $(LISP)/paths.el \
+ $(LISP)/prim/loaddefs.elc \
+ $(LISP)/prim/auto-autoloads.elc \
+ $(LISP)/prim/loadup.el \
+ $(LISP)/prim/subr.elc \
+ $(LISP)/prim/cmdloop.elc \
+ $(LISP)/utils/text-props.elc \
+ $(LISP)/prim/gui.elc \
+ $(LISP)/prim/mouse.elc \
+ $(LISP)/prim/mode-motion.elc \
+ $(LISP)/prim/keymap.elc \
+ $(LISP)/prim/syntax.elc \
+ $(LISP)/prim/minibuf.elc \
+ $(LISP)/prim/faces.elc \
+ $(LISP)/prim/objects.elc \
+ $(LISP)/prim/process.elc \
+ $(LISP)/prim/keydefs.elc \
+ $(LISP)/prim/device.elc \
+ $(LISP)/prim/obsolete.elc \
+ $(LISP)/prim/glyphs.elc \
+ $(LISP)/prim/extents.elc \
+ $(LISP)/prim/backquote.elc \
+ $(LISP)/prim/events.elc \
+ $(LISP)/prim/console.elc \
+ $(LISP)/utils/map-ynp.elc \
+ $(LISP)/prim/modeline.elc \
+ $(LISP)/prim/profile.elc \
+ $(LISP)/modes/list-mode.elc \
+ $(LISP)/utils/derived.elc \
+ $(LISP)/cl/cl.elc \
+ $(LISP)/cl/cl-defs.elc \
+ $(LISP)/prim/undo-stack.elc \
+ $(LISP)/prim/simple.elc \
+ $(LISP)/prim/help.elc \
+ $(LISP)/prim/files.elc \
+ $(LISP)/utils/lib-complete.elc \
+ $(LISP)/prim/indent.elc \
+ $(LISP)/prim/frame.elc \
+ $(LISP)/prim/format.elc \
+ $(LISP)/prim/window.elc \
+ $(LISP)/prim/startup.elc \
+ $(LISP)/prim/lisp.elc \
+ $(LISP)/prim/page.elc \
+ $(LISP)/prim/register.elc \
+ $(LISP)/iso/iso8859-1.elc \
+ $(LISP)/prim/paragraphs.elc \
+ $(LISP)/modes/lisp-mode.elc \
+ $(LISP)/modes/text-mode.elc \
+ $(LISP)/prim/fill.elc \
+ $(LISP)/prim/isearch-mode.elc \
+ $(LISP)/prim/misc.elc \
+ $(LISP)/packages/vc-hooks.elc \
+ $(LISP)/prim/replace.elc \
+ $(LISP)/prim/specifier.elc \
+ $(LISP)/modes/auto-show.elc \
+ $(LISP)/bytecomp/bytecomp-runtime.elc \
+ $(LISP)/prim/float-sup.elc \
+ $(LISP)/prim/itimer.elc \
+ $(LISP)/ediff/ediff-hook.elc \
+ $(LISP)/packages/fontl-hooks.elc \
+ $(LISP)/prim/scrollbar.elc \
+ $(LISP)/prim/buffer.elc \
+ $(LISP)/prim/menubar.elc \
+ $(LISP)/packages/buff-menu.elc  \
+ $(LISP)/modes/abbrev.elc 
+# X11_LISP NS_LISP ENERGIZE_LISP TOOLTALK_LISP DIALOG_LISP MULE_LISP NOMULE_LISP
+
+MAKE_DOCFILE=$(OUTDIR)\make-docfile.exe
+SUPPORT_PROGS=$(MAKE_DOCFILE)
+
+$(MAKE_DOCFILE): $(OUTDIR)\make-docfile.obj
+	link.exe $(LIB_SRC_LFLAGS) $** $(LIB_SRC_LIBS)
+
+$(OUTDIR)/make-docfile.obj:	$(LIB_SRC)\make-docfile.c
+	 $(CC) $(LIB_SRC_FLAGS) $** /Fo$@
+
+$(DOC): $(OUTDIR)/make-docfile.exe
+	!$(MAKE_DOCFILE) -o $@ $(DOC_SRCS_1) 
+	!$(MAKE_DOCFILE) -a $@ $(DOC_SRCS_2)
+
+#------------------------------------------------------------------------------
+
+# TEMACS Executable
+
+TEMACS_DIR=$(XEMACS)/src
+TEMACS=$(TEMACS_DIR)/temacs.exe
+TEMACS_SRC=$(XEMACS)/src
+TEMACS_LIBS=$(LASTFILE) $(LWLIB) Xaw.lib Xmu.lib Xt.lib SM.lib ICE.lib \
+ Xext.lib X11.lib kernel32.lib user32.lib gdi32.lib \
+ winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
+ uuid.lib odbc32.lib odbccp32.lib wsock32.lib libc.lib
+TEMACS_LFLAGS=/nologo $(LIBRARIES) /base:0x1000000\
+ /stack:0x800000 /entry:_start /subsystem:console /pdb:none\
+ /map:$(TEMACS_DIR)/temacs.map /debug:full /debugtype:both /machine:I386\
+ /nodefaultlib /force /out:$@\
+ /heap:0x00100000
+
+#TEMACS_CPP=$(XEMACS)/nt/cpp/cpp.exe
+TEMACS_CPP=c:/usr/local/bin/cpp.exe
+TEMACS_CPP_FLAGS= $(INCLUDES) -D_DEBUG -DWIN32 -D_WIN32 -DWIN32_LEAN_AND_MEAN \
+ -D_NTSDK -D_M_IX86 -D_X86_ -Demacs -DHAVE_CONFIG_H -D_MSC_VER=999
+TEMACS_FLAGS=-nologo -ML -w -Od -Zi -c $(TEMACS_CPP_FLAGS)
+
+TEMACS_OBJS= \
+	$(OUTDIR)/abbrev.obj \
+	$(OUTDIR)/alloc.obj \
+	$(OUTDIR)/alloca.obj \
+	$(OUTDIR)/blocktype.obj \
+	$(OUTDIR)/buffer.obj \
+	$(OUTDIR)/bytecode.obj \
+	$(OUTDIR)/callint.obj \
+	$(OUTDIR)/callproc.obj \
+	$(OUTDIR)/casefiddle.obj \
+	$(OUTDIR)/casetab.obj \
+	$(OUTDIR)/chartab.obj \
+	$(OUTDIR)/cmdloop.obj \
+	$(OUTDIR)/cmds.obj \
+	$(OUTDIR)/console-stream.obj \
+	$(OUTDIR)/console-x.obj \
+	$(OUTDIR)/console.obj \
+	$(OUTDIR)/data.obj \
+	$(OUTDIR)/database.obj \
+	$(OUTDIR)/debug.obj \
+	$(OUTDIR)/device-x.obj \
+	$(OUTDIR)/device.obj \
+	$(OUTDIR)/dgif_lib.obj \
+	$(OUTDIR)/dialog-x.obj \
+	$(OUTDIR)/dialog.obj \
+	$(OUTDIR)/dired.obj \
+	$(OUTDIR)/doc.obj \
+	$(OUTDIR)/doprnt.obj \
+	$(OUTDIR)/dynarr.obj \
+	$(OUTDIR)/editfns.obj \
+	$(OUTDIR)/elhash.obj \
+	$(OUTDIR)/emacs.obj \
+	$(OUTDIR)/EmacsFrame.obj \
+	$(OUTDIR)/EmacsManager.obj \
+	$(OUTDIR)/TopLevelEmacsShell.obj\
+	$(OUTDIR)/TransientEmacsShell.obj\
+	$(OUTDIR)/EmacsShell.obj \
+	$(OUTDIR)/energize.obj \
+	$(OUTDIR)/eval.obj \
+	$(OUTDIR)/event-stream.obj \
+	$(OUTDIR)/event-unixoid.obj \
+	$(OUTDIR)/event-Xt.obj \
+	$(OUTDIR)/events.obj \
+	$(OUTDIR)/extents.obj \
+	$(OUTDIR)/faces.obj \
+	$(OUTDIR)/fileio.obj \
+	$(OUTDIR)/filelock.obj \
+	$(OUTDIR)/filemode.obj \
+	$(OUTDIR)/floatfns.obj \
+	$(OUTDIR)/fns.obj \
+	$(OUTDIR)/font-lock.obj \
+	$(OUTDIR)/frame-x.obj \
+	$(OUTDIR)/frame.obj \
+	$(OUTDIR)/free-hook.obj \
+	$(OUTDIR)/general.obj \
+	$(OUTDIR)/gif_err.obj \
+	$(OUTDIR)/gifalloc.obj \
+	$(OUTDIR)/glyphs-x.obj \
+	$(OUTDIR)/glyphs.obj \
+	$(OUTDIR)/gmalloc.obj \
+	$(OUTDIR)/gui-x.obj \
+	$(OUTDIR)/gui.obj \
+	$(OUTDIR)/hash.obj \
+	$(OUTDIR)/indent.obj \
+	$(OUTDIR)/inline.obj \
+	$(OUTDIR)/insdel.obj \
+	$(OUTDIR)/intl.obj \
+	$(OUTDIR)/keymap.obj \
+	$(OUTDIR)/lread.obj \
+	$(OUTDIR)/lstream.obj \
+	$(OUTDIR)/macros.obj \
+	$(OUTDIR)/marker.obj \
+	$(OUTDIR)/md5.obj \
+	$(OUTDIR)/menubar-x.obj \
+	$(OUTDIR)/menubar.obj \
+	$(OUTDIR)/minibuf.obj \
+	$(OUTDIR)/mocklisp.obj \
+	$(OUTDIR)/nt.obj \
+	$(OUTDIR)/ntheap.obj \
+	$(OUTDIR)/ntproc.obj \
+	$(OUTDIR)/objects-x.obj \
+	$(OUTDIR)/objects.obj \
+	$(OUTDIR)/opaque.obj \
+	$(OUTDIR)/print.obj \
+	$(OUTDIR)/process.obj \
+	$(OUTDIR)/pure.obj \
+	$(OUTDIR)/rangetab.obj \
+	$(OUTDIR)/realpath.obj \
+	$(OUTDIR)/redisplay-output.obj \
+	$(OUTDIR)/redisplay-x.obj \
+	$(OUTDIR)/redisplay.obj \
+	$(OUTDIR)/regex.obj \
+	$(OUTDIR)/scrollbar-x.obj \
+	$(OUTDIR)/scrollbar.obj \
+	$(OUTDIR)/search.obj \
+	$(OUTDIR)/signal.obj \
+	$(OUTDIR)/sound.obj \
+	$(OUTDIR)/specifier.obj \
+	$(OUTDIR)/strftime.obj \
+	$(OUTDIR)/symbols.obj \
+	$(OUTDIR)/syntax.obj \
+	$(OUTDIR)/sysdep.obj \
+	$(OUTDIR)/termcap.obj \
+	$(OUTDIR)/tparam.obj \
+	$(OUTDIR)/undo.obj \
+	$(OUTDIR)/unexnt.obj \
+	$(OUTDIR)/vm-limit.obj \
+	$(OUTDIR)/window.obj \
+	$(OUTDIR)/xgccache.obj \
+	$(OUTDIR)/xmu.obj \
+	$(OUTDIR)/xselect.obj
+
+#$(TEMACS): $(TEMACS_SRC)/Emacs.ad.h $(TEMACS_SRC)/paths.h $(TEMACS_OBJS)
+#	link.exe $(TEMACS_LFLAGS) $(TEMACS_OBJS) $(TEMACS_LIBS)
+
+$(TEMACS): $(TEMACS_SRC)/Emacs.ad.h $(TEMACS_SRC)/paths.h $(TEMACS_OBJS)
+	link.exe @<<
+  $(TEMACS_LFLAGS) $(TEMACS_OBJS) $(TEMACS_LIBS)
+<<
+
+$(OUTDIR)/abbrev.obj:	$(TEMACS_SRC)/abbrev.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#        !"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/alloc.obj:	$(TEMACS_SRC)/alloc.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/alloca.obj:	$(TEMACS_SRC)/alloca.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/blocktype.obj:	$(TEMACS_SRC)/blocktype.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/buffer.obj:	$(TEMACS_SRC)/buffer.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/bytecode.obj:	$(TEMACS_SRC)/bytecode.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/callint.obj:	$(TEMACS_SRC)/callint.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/callproc.obj:	$(TEMACS_SRC)/callproc.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/casefiddle.obj:	$(TEMACS_SRC)/casefiddle.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/casetab.obj:	$(TEMACS_SRC)/casetab.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/chartab.obj:	$(TEMACS_SRC)/chartab.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/cmdloop.obj:	$(TEMACS_SRC)/cmdloop.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/cmds.obj:	$(TEMACS_SRC)/cmds.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/console-stream.obj:	$(TEMACS_SRC)/console-stream.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/console-x.obj:	$(TEMACS_SRC)/console-x.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/console.obj:	$(TEMACS_SRC)/console.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/data.obj:	$(TEMACS_SRC)/data.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/database.obj:	$(TEMACS_SRC)/database.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/debug.obj:	$(TEMACS_SRC)/debug.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/device-x.obj:	$(TEMACS_SRC)/device-x.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/device.obj:	$(TEMACS_SRC)/device.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/dgif_lib.obj:	$(TEMACS_SRC)/dgif_lib.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/dialog-x.obj:	$(TEMACS_SRC)/dialog-x.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/dialog.obj:	$(TEMACS_SRC)/dialog.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/dired.obj:	$(TEMACS_SRC)/dired.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/doc.obj:	$(TEMACS_SRC)/doc.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/doprnt.obj:	$(TEMACS_SRC)/doprnt.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/dynarr.obj:	$(TEMACS_SRC)/dynarr.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/editfns.obj:	$(TEMACS_SRC)/editfns.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/elhash.obj:	$(TEMACS_SRC)/elhash.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/emacs.obj:	$(TEMACS_SRC)/emacs.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/EmacsFrame.obj:	$(TEMACS_SRC)/EmacsFrame.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/EmacsManager.obj:	$(TEMACS_SRC)/EmacsManager.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/TopLevelEmacsShell.obj:	$(TEMACS_SRC)/EmacsShell-sub.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) -DDEFINE_TOP_LEVEL_EMACS_SHELL $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) -DDEFINE_TOP_LEVEL_EMACS_SHELL $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/TransientEmacsShell.obj: $(TEMACS_SRC)/EmacsShell-sub.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) -DDEFINE_TRANSIENT_EMACS_SHELL $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) -DDEFINE_TRANSIENT_EMACS_SHELL $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/EmacsShell.obj:	$(TEMACS_SRC)/EmacsShell.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/energize.obj:	$(TEMACS_SRC)/energize.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/eval.obj:	$(TEMACS_SRC)/eval.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/event-stream.obj:	$(TEMACS_SRC)/event-stream.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/event-unixoid.obj:	$(TEMACS_SRC)/event-unixoid.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/event-Xt.obj:	$(TEMACS_SRC)/event-Xt.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/events.obj:	$(TEMACS_SRC)/events.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/extents.obj:	$(TEMACS_SRC)/extents.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/faces.obj:	$(TEMACS_SRC)/faces.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/fileio.obj:	$(TEMACS_SRC)/fileio.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/filelock.obj:	$(TEMACS_SRC)/filelock.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/filemode.obj:	$(TEMACS_SRC)/filemode.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/floatfns.obj:	$(TEMACS_SRC)/floatfns.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/fns.obj:	$(TEMACS_SRC)/fns.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/font-lock.obj:	$(TEMACS_SRC)/font-lock.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/frame-x.obj:	$(TEMACS_SRC)/frame-x.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/frame.obj:	$(TEMACS_SRC)/frame.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/free-hook.obj:	$(TEMACS_SRC)/free-hook.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/general.obj:	$(TEMACS_SRC)/general.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/gif_err.obj:	$(TEMACS_SRC)/gif_err.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/gifalloc.obj:	$(TEMACS_SRC)/gifalloc.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/glyphs-x.obj:	$(TEMACS_SRC)/glyphs-x.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/glyphs.obj:	$(TEMACS_SRC)/glyphs.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/gmalloc.obj:	$(TEMACS_SRC)/gmalloc.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/gui-x.obj:	$(TEMACS_SRC)/gui-x.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/gui.obj:	$(TEMACS_SRC)/gui.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/hash.obj:	$(TEMACS_SRC)/hash.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/indent.obj:	$(TEMACS_SRC)/indent.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/inline.obj:	$(TEMACS_SRC)/inline.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/insdel.obj:	$(TEMACS_SRC)/insdel.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/intl.obj:	$(TEMACS_SRC)/intl.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/keymap.obj:	$(TEMACS_SRC)/keymap.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/lread.obj:	$(TEMACS_SRC)/lread.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/lstream.obj:	$(TEMACS_SRC)/lstream.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/macros.obj:	$(TEMACS_SRC)/macros.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/marker.obj:	$(TEMACS_SRC)/marker.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/md5.obj:	$(TEMACS_SRC)/md5.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/menubar-x.obj:	$(TEMACS_SRC)/menubar-x.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/menubar.obj:	$(TEMACS_SRC)/menubar.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/minibuf.obj:	$(TEMACS_SRC)/minibuf.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/mocklisp.obj:	$(TEMACS_SRC)/mocklisp.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/msdos.obj:	$(TEMACS_SRC)/msdos.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/nt.obj:	$(TEMACS_SRC)/nt.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/ntheap.obj:	$(TEMACS_SRC)/ntheap.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/ntproc.obj:	$(TEMACS_SRC)/ntproc.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/objects-x.obj:	$(TEMACS_SRC)/objects-x.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/objects.obj:	$(TEMACS_SRC)/objects.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/opaque.obj:	$(TEMACS_SRC)/opaque.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/print.obj:	$(TEMACS_SRC)/print.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/process.obj:	$(TEMACS_SRC)/process.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS)  $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/pure.obj:	$(TEMACS_SRC)/pure.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/rangetab.obj:	$(TEMACS_SRC)/rangetab.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/realpath.obj:	$(TEMACS_SRC)/realpath.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/redisplay-output.obj:	$(TEMACS_SRC)/redisplay-output.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/redisplay-x.obj:	$(TEMACS_SRC)/redisplay-x.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/redisplay.obj:	$(TEMACS_SRC)/redisplay.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/regex.obj:	$(TEMACS_SRC)/regex.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/scrollbar-x.obj:	$(TEMACS_SRC)/scrollbar-x.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/scrollbar.obj:	$(TEMACS_SRC)/scrollbar.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/search.obj:	$(TEMACS_SRC)/search.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/signal.obj:	$(TEMACS_SRC)/signal.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/sound.obj:	$(TEMACS_SRC)/sound.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/specifier.obj:	$(TEMACS_SRC)/specifier.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/strftime.obj:	$(TEMACS_SRC)/strftime.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/symbols.obj:	$(TEMACS_SRC)/symbols.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/syntax.obj:	$(TEMACS_SRC)/syntax.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/sysdep.obj:	$(TEMACS_SRC)/sysdep.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/termcap.obj:	$(TEMACS_SRC)/termcap.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/tparam.obj:	$(TEMACS_SRC)/tparam.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/undo.obj:	$(TEMACS_SRC)/undo.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/unexnt.obj:	$(TEMACS_SRC)/unexnt.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/vm-limit.obj:	$(TEMACS_SRC)/vm-limit.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/window.obj:	$(TEMACS_SRC)/window.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS)  $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/xgccache.obj:	$(TEMACS_SRC)/xgccache.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/xmu.obj:	$(TEMACS_SRC)/xmu.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(OUTDIR)/xselect.obj:	$(TEMACS_SRC)/xselect.c
+#	!"$(TEMACS_CPP) $(TEMACS_CPP_FLAGS) $** > $(OUTDIR)/foo.c"
+	$(CC) $(TEMACS_FLAGS) $** /Fo$@
+#	!"del $(OUTDIR)\\foo.c"
+
+$(TEMACS_SRC)/Emacs.ad.h: $(XEMACS)/etc/Emacs.ad
+	!"sed -f ad2c.sed < $(XEMACS)/etc/Emacs.ad > $(TEMACS_SRC)/Emacs.ad.h"
+
+$(TEMACS_SRC)/paths.h: $(TEMACS_SRC)/paths.h.in
+	!"cd $(TEMACS_SRC); cp paths.h.in paths.h"
+
+#------------------------------------------------------------------------------
+
+# LISP bits 'n bobs
+
+dump-elcs: $(TEMACS)
+        $(LOADPATH) $(TEMACS) -batch -l ../prim/update-elc.el $(LISP)
+
+dump-xemacs: $(TEMACS)
+	$(TEMACS) -batch -l loadup.el dump
+
+#------------------------------------------------------------------------------
+
+# use this rule to build the complete system
+all: $(LASTFILE) $(LWLIB) $(TEMACS) $(SUPPORT_PROGS) $(DOC)
+
+# use this rule to install the system
+install:
--- a/src/ChangeLog	Mon Aug 13 09:23:08 2007 +0200
+++ b/src/ChangeLog	Mon Aug 13 09:24:17 2007 +0200
@@ -1,3 +1,19 @@
+Thu Apr  3 08:01:50 1997  Steve Carney  <carney@gvc.dec.com>
+
+	* s/decosf4.0-static.h: New file.
+
+Tue Apr  1 12:22:32 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+	* config.h.in: MAIL_USE_POP, KERBEROS, HESIOD -- new parameters to 
+	deal with upgraded movemail.c.
+
+Fri Mar 28 19:25:22 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+	* inline.c: Restore this blasphemous file.
+
+	* Makefile.in.in (inline.o): Restore the bletcherous
+	inline.c.
+
 Tue Mar 25 11:36:08 1997  David Moore  <dmoore@ucsd.edu>
 
 	* fileio.c (barf_or_query_if_file_exists): GC fixes.
--- a/src/Makefile.in.in	Mon Aug 13 09:23:08 2007 +0200
+++ b/src/Makefile.in.in	Mon Aug 13 09:24:17 2007 +0200
@@ -911,7 +911,7 @@
 	frame.o \
 	general.o getloadavg.o GIF_OBJS glyphs.o GUI_OBJS \
 	hash.o \
-	indent.o insdel.o intl.o \
+	indent.o inline.o insdel.o intl.o \
 	keymap.o $(RTC_PATCH_O) \
 	lread.o lstream.o \
 	macros.o marker.o md5.o MENUBAR_OBJS minibuf.o MOCKLISPOBJS \
@@ -1937,6 +1937,8 @@
 glyphs.o: mule-charset.h
 gui-x.o: mule-charset.h
 indent.o: mule-charset.h
+inline.o: mule-charset.h
+inline.o: mule-coding.h
 input-method-xlib.o: mule-charset.h
 input-method-xlib.o: mule-coding.h
 insdel.o: mule-charset.h
@@ -2944,6 +2946,40 @@
 indent.o: specifier.h
 indent.o: toolbar.h
 indent.o: window.h
+inline.o: $(LWLIBSRCDIR)/lwlib.h
+inline.o: blocktype.h
+inline.o: buffer.h
+inline.o: bufslots.h
+inline.o: bytecode.h
+inline.o: chartab.h
+inline.o: config.h
+inline.o: conslots.h
+inline.o: console-x.h
+inline.o: console.h
+inline.o: device.h
+inline.o: dynarr.h
+inline.o: elhash.h
+inline.o: events.h
+inline.o: extents.h
+inline.o: faces.h
+inline.o: frame.h
+inline.o: frameslots.h
+inline.o: glyphs-x.h
+inline.o: glyphs.h
+inline.o: gui-x.h
+inline.o: keymap.h
+inline.o: lstream.h
+inline.o: objects.h
+inline.o: opaque.h
+inline.o: process.h
+inline.o: redisplay.h
+inline.o: scrollbar.h
+inline.o: specifier.h
+inline.o: syntax.h
+inline.o: systime.h
+inline.o: toolbar.h
+inline.o: window.h
+inline.o: xintrinsic.h
 input-method-xlib.o: EmacsFrame.h
 input-method-xlib.o: blocktype.h
 input-method-xlib.o: buffer.h
--- a/src/alloc.c	Mon Aug 13 09:23:08 2007 +0200
+++ b/src/alloc.c	Mon Aug 13 09:24:17 2007 +0200
@@ -2739,7 +2739,12 @@
 
   if (rc < 0) {
     (void)unlink("SATISFIED");
+				/* Current build process on NT does */
+				/* not know how to restart itself. */
+				/* --marcpa */ 
+#ifndef WINDOWSNT
     fatal ("Pure size adjusted, will restart `make'");
+#endif
   } else if (pure_lossage && die_if_pure_storage_exceeded) {
     fatal ("Pure storage exhausted");
   }
--- a/src/alloca.c	Mon Aug 13 09:23:08 2007 +0200
+++ b/src/alloca.c	Mon Aug 13 09:24:17 2007 +0200
@@ -86,7 +86,9 @@
 # endif
 #endif
 
+#ifndef WINDOWSNT
 #define	NULL	0
+#endif
 
 /* Different portions of Emacs need to call different versions of
    malloc.  The Emacs executable needs alloca to call xmalloc, because
@@ -101,7 +103,11 @@
 #ifndef emacs
 #define malloc xmalloc
 #endif
+#ifndef WINDOWSNT
 extern pointer malloc ();
+#else
+extern void *malloc();
+#endif
 
 /* Define STACK_DIRECTION if you know the direction of stack
    growth for your system; otherwise it will be automatically
--- a/src/config.h.in	Mon Aug 13 09:23:08 2007 +0200
+++ b/src/config.h.in	Mon Aug 13 09:24:17 2007 +0200
@@ -712,4 +712,12 @@
 # define JMP_BUF jmp_buf
 #endif
 
+/* movemail options */
+/* define to POP3 for mail access */
+#undef MAIL_USE_POP
+/* define to use kerberos for POP authentication */
+#undef KERBEROS
+/* define to use hesiod for getting POP server host */
+#undef HESIOD
+
 #endif /* _CONFIG_H_ */
--- a/src/dired.c	Mon Aug 13 09:23:08 2007 +0200
+++ b/src/dired.c	Mon Aug 13 09:24:17 2007 +0200
@@ -256,10 +256,14 @@
 {
   /* This function can GC */
   Lisp_Object handler;
+  struct gcpro gcpro1;
 
+  GCPRO1 (dirname);
+  dirname = Fexpand_file_name (dirname, Qnil);
   /* If the file name has special constructs in it,
      call the corresponding file handler.  */
   handler = Ffind_file_name_handler (dirname, Qfile_name_all_completions);
+  UNGCPRO;
   if (!NILP (handler))
     return call3 (handler, Qfile_name_all_completions, file,
 		  dirname);
--- a/src/fns.c	Mon Aug 13 09:23:08 2007 +0200
+++ b/src/fns.c	Mon Aug 13 09:24:17 2007 +0200
@@ -3296,8 +3296,8 @@
 If the 5-minute or 15-minute load averages are not available, return a
 shortened list, containing only those averages which are available.
 
-On most systems, this won't work unless the emacs executable is installed
-as setgid kmem (assuming that /dev/kmem is in the group kmem).
+On some systems, this won't work due to permissions on /dev/kmem in
+which case you can't use this.
 */
        ())
 {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/inline.c	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,78 @@
+/* Repository for inline functions
+   Copyright (C) 1995 Sun Microsystems, Inc.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Synched up with: Not in FSF. */
+
+/* The purpose of this file is so that there is at least one actual
+   definition of each inline function.  This is needed under GCC.  The
+   reason is that under GCC we declare our inline functions `extern
+   inline', which causes the inlined version to get used only for
+   inlining, and in other cases to generate an external reference to
+   the function.  This is more efficient that declaring out inline
+   functions `static inline', which (in many cases) would cause a separate
+   version of the function to get inserted into every source file that
+   included the corresponding header file.
+
+   Some compilers that recognize `inline' may not do the same
+   `extern inline' business, so on those we just do `static inline'.
+   */
+   
+#define DONT_EXTERN_INLINE_FUNCTIONS
+
+#include <config.h>
+#include "lisp.h"
+#include "buffer.h"
+#include "bytecode.h"
+#include "console.h"
+#include "device.h"
+#include "events.h"
+#include "elhash.h"
+#include "extents.h"
+#include "faces.h"
+#include "frame.h"
+#include "glyphs.h"
+#include "keymap.h"
+#include "lstream.h"
+#include "objects.h"
+#include "opaque.h"
+#include "process.h"
+#include "specifier.h"
+#include "syntax.h"
+#include "toolbar.h"
+#include "window.h"
+
+#ifdef HAVE_DATABASE
+#include "database.h"
+#endif
+
+#ifdef HAVE_X_WINDOWS
+#include "console-x.h"
+#include "glyphs-x.h"
+#include "gui-x.h"
+#endif
+
+#ifdef MULE
+#include "mule-coding.h"
+#endif
+
+#ifdef TOOLTALK
+#include <tt_c.h>
+#include "tooltalk.h"
+#endif
--- a/src/lread.c	Mon Aug 13 09:23:08 2007 +0200
+++ b/src/lread.c	Mon Aug 13 09:24:17 2007 +0200
@@ -560,6 +560,7 @@
 #ifdef DOS_NT
   int dosmode = O_TEXT;
 #endif /* DOS_NT */
+  struct stat s1, s2;
   GCPRO3 (file, newer, found);
 
   CHECK_STRING (file);
@@ -628,7 +629,7 @@
       else if (load_warn_when_source_newer &&
 	       !memcmp (".elc", foundstr + foundlen - 4, 4))
 	{
-	  struct stat s1, s2;
+/*	  struct stat s1, s2;*/
 	  if (! fstat (fd, &s1))	/* can't fail, right? */
 	    {
 	      int result;
@@ -662,15 +663,15 @@
 
       if (!memcmp (".elc", foundstr + foundlen - 4, 4))
 	reading_elc = 1;
-    }
 
 #ifdef DOS_NT
   /* The file was opened as binary, because that's what we'll
      encounter most of the time.  If we're loading a .el, we need
      to reopen it in text mode. */
-  if (!reading_elc)
-    fd = open (foundstr, O_RDONLY | O_TEXT);
+      if (!reading_elc)
+	fd = open (foundstr, O_RDONLY | O_TEXT);
 #endif /* DOS_NT */
+    }
 
 #define PRINT_LOADING_MESSAGE(done) do {				\
   if (load_ignore_elc_files)						\
@@ -954,11 +955,16 @@
 		*storeptr = build_string (fn);
 	      UNGCPRO;
 	      
+/* XXX FIX ME
+   Not sure about this on NT yet.  Do nothing for now.
+   --marcpa */
+#ifndef DOS_NT	      
 	      /* If we actually opened the file, set close-on-exec flag
 		 on the new descriptor so that subprocesses can't whack
 		 at it.  */
 	      if (mode < 0)
 		(void) fcntl (fd, F_SETFD, FD_CLOEXEC);
+#endif
 	      
 	      return fd;
 	    }
--- a/src/md5.c	Mon Aug 13 09:23:08 2007 +0200
+++ b/src/md5.c	Mon Aug 13 09:24:17 2007 +0200
@@ -34,7 +34,7 @@
 
 typedef unsigned char *POINTER;/* POINTER defines a generic pointer type */
 typedef unsigned short int UINT2;/* UINT2 defines a two byte word */
-typedef unsigned long  int UINT4;/* UINT4 defines a four byte word */
+typedef unsigned int UINT4;/* UINT4 defines a four byte word */
 
 #define PROTO_LIST(list) list
 #define MD_CTX MD5_CTX
--- a/src/puresize.h	Mon Aug 13 09:23:08 2007 +0200
+++ b/src/puresize.h	Mon Aug 13 09:24:17 2007 +0200
@@ -172,7 +172,13 @@
   
 #endif /* !RAW_PURESIZE */
   
-#include <puresize_adjust.h>
+/* Current build process on NT does not generate a puresize_adjust.h */
+/* file. --marcpa */  
+#ifdef WINDOWSNT
+# define PURESIZE_ADJUSTMENT 1000000
+#else
+# include <puresize_adjust.h>
+#endif
 #define PURESIZE ((RAW_PURESIZE) + (PURESIZE_ADJUSTMENT))
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s/decosf4.0-static.h	Mon Aug 13 09:24:17 2007 +0200
@@ -0,0 +1,13 @@
+/* Synched up with: Not in FSF. */
+
+#include "decosf4-0.h"
+
+#ifdef NOT_C_CODE
+/* This is to get rid of the definition that selects dynamic linking. */
+#undef LD_SWITCH_CALL_SHARED
+#ifdef USE_GCC
+#define LD_SWITCH_CALL_SHARED -static -Xlinker -non_shared
+#else
+#define LD_SWITCH_CALL_SHARED -non_shared
+#endif /* USE_GCC */
+#endif /* NOT_C_CODE */