changeset 40:7e54bd776075 r19-15b103

Import from CVS: tag r19-15b103
author cvs
date Mon, 13 Aug 2007 08:54:25 +0200
parents 06f275776fba
children 5d6df4963a99
files CHANGES-beta Makefile.in etc/time/0.xpm etc/time/1.xpm etc/time/2.xpm etc/time/3.xpm etc/time/4.xpm etc/time/5.xpm etc/time/6.xpm etc/time/7.xpm etc/time/8.xpm etc/time/9.xpm etc/time/am.xpm etc/time/dp.xpm etc/time/l-0.0.xpm etc/time/l-0.5.xpm etc/time/l-1.0.xpm etc/time/l-1.5.xpm etc/time/l-2.0.xpm etc/time/l-2.5.xpm etc/time/l-3.0.xpm etc/time/l-jtl-0.0.xpm etc/time/l-jtl-0.5.xpm etc/time/l-jtl-1.0.xpm etc/time/l-jtl-1.5.xpm etc/time/l-jtl-2.0.xpm etc/time/l-jtl-2.5.xpm etc/time/l-jtl-3.0.xpm etc/time/pm.xpm lib-src/emacsserver.c lisp/bytecomp/disass.el lisp/efs/Makefile lisp/efs/default-dir.el lisp/efs/dired-cmpr.el lisp/efs/dired-diff.el lisp/efs/dired-faces.el lisp/efs/dired-grep.el lisp/efs/dired-help.el lisp/efs/dired-mob.el lisp/efs/dired-oas.el lisp/efs/dired-rgxp.el lisp/efs/dired-sex.el lisp/efs/dired-shell.el lisp/efs/dired-uu.el lisp/efs/dired-vir.el lisp/efs/dired-xemacs.el lisp/efs/dired-xy.el lisp/efs/dired.el lisp/efs/efs-auto.el lisp/efs/efs-cms.el lisp/efs/efs-cu.el lisp/efs/efs-dl.el lisp/efs/efs-dump.el lisp/efs/efs-guardian.el lisp/efs/efs-ka9q.el lisp/efs/efs-mpe.el lisp/efs/efs-mvs.el lisp/efs/efs-netrc.el lisp/efs/efs-netware.el lisp/efs/efs-nos-ve.el lisp/efs/efs-ovwrt.el lisp/efs/efs-pc.el lisp/efs/efs-report.el lisp/efs/efs-vms.el lisp/efs/efs-x19.15.el lisp/efs/efs.el lisp/mel/mel-u.el lisp/mel/mel.el lisp/modes/cc-mode.el lisp/mu/mu-cite.el lisp/packages/time.el lisp/prim/auto-autoloads.el lisp/prim/custom-load.el lisp/tm/tm-edit.el lisp/tm/tm-file.el lisp/tm/tm-play.el lisp/tm/tm-vm.el lisp/tm/tmh-comp.el lisp/version.el lisp/vm/vm-autoload.el lisp/vm/vm-folder.el lisp/vm/vm-mime.el lisp/vm/vm-startup.el lisp/vm/vm-version.el src/buffer.c src/device-x.c src/editfns.c src/fileio.c src/filelock.c src/insdel.c src/keymap.c
diffstat 91 files changed, 1167 insertions(+), 892 deletions(-) [+]
line wrap: on
line diff
--- a/CHANGES-beta	Mon Aug 13 08:54:02 2007 +0200
+++ b/CHANGES-beta	Mon Aug 13 08:54:25 2007 +0200
@@ -1,4 +1,15 @@
 							-*- indented-text -*-
+to 19.15 beta103
+-- VM-6.21
+-- tm-7.106
+-- Garbage Collection patches courtesy of David Moore
+-- time.el update
+-- cc-mode.el-4.387
+-- EFS integration/bug fix patches courtesy of Michael Sperber
+-- safe char-before added
+-- minor build tweaks
+-- miscellaneous bug fixes
+
 to 19.15 beta102
 -- preceding-char, following-char are obsolete and broken, do not use them
 -- miscellaneous bug fixes
--- a/Makefile.in	Mon Aug 13 08:54:02 2007 +0200
+++ b/Makefile.in	Mon Aug 13 08:54:25 2007 +0200
@@ -213,7 +213,7 @@
 # Build XEmacs and recompile out-of-date and missing .elc files along
 # the way.
 all-elc:	src/paths.h src/Emacs.ad.h lib-src lwlib dump-elcs src
-	sh ${srcdir}/lib-src/update-elc.sh
+	MAKE='$(MAKE)' sh ${srcdir}/lib-src/update-elc.sh
 
 # Sub-target for all-elc.
 dump-elcs:	FRC.dump-elcs
@@ -221,7 +221,7 @@
 		CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
 
 autoloads:	src
-	sh ${srcdir}/lib-src/update-autoloads.sh
+	MAKE='$(MAKE)' sh ${srcdir}/lib-src/update-autoloads.sh
 
 # We force the rebuilding of src/paths.h because the user might give
 # different values for the various directories.  Since we use
--- a/etc/time/0.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/0.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -3,8 +3,8 @@
 /* width height ncolors chars_per_pixel */
 "9 13 2 1",
 /* colors */
-"` s None c None",
-"a c #CB1E1C",
+"` c None    s ledbg",
+"a c #CA1E1C s ledfg",
 /* pixels */
 "`````````",
 "````aaaaa",
--- a/etc/time/1.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/1.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -3,8 +3,8 @@
 /* width height ncolors chars_per_pixel */
 "9 13 2 1",
 /* colors */
-"` s None c None",
-"a c #CA1E1C",
+"` s ledbg c None",
+"a s ledfg c #CA1E1C",
 /* pixels */
 "`````````",
 "`````````",
--- a/etc/time/2.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/2.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -3,8 +3,8 @@
 /* width height ncolors chars_per_pixel */
 "9 13 2 1",
 /* colors */
-"a c #CB1D1C",
-"` s None c None",
+"` c None    s ledbg",
+"a c #CA1E1C s ledfg",
 /* pixels */
 "`````````",
 "````aaaaa",
--- a/etc/time/3.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/3.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -3,8 +3,8 @@
 /* width height ncolors chars_per_pixel */
 "9 13 2 1",
 /* colors */
-"` s None c None",
-"a c #CB1D1C",
+"` c None    s ledbg",
+"a c #CA1E1C s ledfg",
 /* pixels */
 "`````````",
 "````aaaaa",
--- a/etc/time/4.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/4.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -3,8 +3,8 @@
 /* width height ncolors chars_per_pixel */
 "9 13 2 1",
 /* colors */
-"` s None c None",
-"a c #CA1E1C",
+"` c None    s ledbg",
+"a c #CA1E1C s ledfg",
 /* pixels */
 "`````````",
 "`````````",
--- a/etc/time/5.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/5.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -3,8 +3,8 @@
 /* width height ncolors chars_per_pixel */
 "9 13 2 1",
 /* colors */
-"` s None c None",
-"a c #CB1D1C",
+"` c None    s ledbg",
+"a c #CA1E1C s ledfg",
 /* pixels */
 "`````````",
 "````aaaaa",
--- a/etc/time/6.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/6.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -3,8 +3,8 @@
 /* width height ncolors chars_per_pixel */
 "9 13 2 1",
 /* colors */
-"` s None c None",
-"a c #CB1E1C",
+"` c None    s ledbg",
+"a c #CA1E1C s ledfg",
 /* pixels */
 "`````````",
 "````aaaaa",
--- a/etc/time/7.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/7.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -3,8 +3,8 @@
 /* width height ncolors chars_per_pixel */
 "9 13 2 1",
 /* colors */
-"` s None c None",
-"a c #CB1E1C",
+"` c None    s ledbg",
+"a c #CA1E1C s ledfg",
 /* pixels */
 "`````````",
 "````aaaaa",
--- a/etc/time/8.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/8.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -3,8 +3,8 @@
 /* width height ncolors chars_per_pixel */
 "9 13 2 1",
 /* colors */
-"` s None c None",
-"a c #CB1E1C",
+"` c None    s ledbg",
+"a c #CA1E1C s ledfg",
 /* pixels */
 "`````````",
 "````aaaaa",
--- a/etc/time/9.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/9.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -3,8 +3,8 @@
 /* width height ncolors chars_per_pixel */
 "9 13 2 1",
 /* colors */
-"` s None c None",
-"a c #CB1E1C",
+"` c None    s ledbg",
+"a c #CA1E1C s ledfg",
 /* pixels */
 "`````````",
 "````aaaaa",
--- a/etc/time/am.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/am.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -3,8 +3,8 @@
 /* width height ncolors chars_per_pixel */
 "4 13 2 1",
 /* colors */
-"` s None c None",
-"a c #CA1E1C",
+"` c None    s ledbg",
+"a c #CA1E1C s ledfg",
 /* pixels */
 "````",
 "``aa",
--- a/etc/time/dp.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/dp.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -3,8 +3,8 @@
 /* width height ncolors chars_per_pixel */
 "9 13 2 1",
 /* colors */
-"` s None c None",
-"a c #CA1E1C",
+"` c None    s ledbg",
+"a c #CA1E1C s ledfg",
 /* pixels */
 "`````````",
 "`````````",
--- a/etc/time/l-0.0.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/l-0.0.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -1,21 +1,22 @@
 /* XPM */
 static char *noname[] = {
 /* width height ncolors chars_per_pixel */
-"10 13 1 1",
+"10 13 2 1",
 /* colors */
-"  s None c None",
+"` s None c None",
+". s pad-color c #606060",
 /* pixels */
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          "
+"``````....",
+"``````....",
+"`````.....",
+"`````.....",
+"````......",
+"````......",
+"```.......",
+"```.......",
+"``........",
+"``........",
+"`.........",
+"`.........",
+".........."
 };
--- a/etc/time/l-0.5.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/l-0.5.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -1,22 +1,23 @@
 /* XPM */
 static char *noname[] = {
 /* width height ncolors chars_per_pixel */
-"10 13 2 1",
+"10 13 3 1",
 /* colors */
-"  s None c None",
-"a c #2AD244",
+"` s None c None",
+"a c #0AB224",
+". s pad-color c #606060",
 /* pixels */
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-" aaaaaaaaa",
-"          "
+"``````....",
+"``````....",
+"`````.....",
+"`````.....",
+"````......",
+"````......",
+"```.......",
+"```.......",
+"``........",
+"``........",
+"`.........",
+"`aaaaaaaaa",
+".........."
 };
--- a/etc/time/l-1.0.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/l-1.0.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -1,22 +1,23 @@
 /* XPM */
 static char *noname[] = {
 /* width height ncolors chars_per_pixel */
-"10 13 2 1",
+"10 13 3 1",
 /* colors */
-"  s None c None",
-"a c #2AD244",
+"` s None c None",
+"a c #0AB224",
+". s pad-color c #606060",
 /* pixels */
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"  aaaaaaaa",
-"          ",
-" aaaaaaaaa",
-"          "
+"``````....",
+"``````....",
+"`````.....",
+"`````.....",
+"````......",
+"````......",
+"```.......",
+"```.......",
+"``........",
+"``aaaaaaaa",
+"`.........",
+"`aaaaaaaaa",
+".........."
 };
--- a/etc/time/l-1.5.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/l-1.5.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -1,23 +1,24 @@
 /* XPM */
 static char *noname[] = {
 /* width height ncolors chars_per_pixel */
-"10 13 3 1",
+"10 13 4 1",
 /* colors */
-"  s None c None",
+"` s None c None",
 "a c #2AD244",
 "b c #DEE614",
+". s pad-color c #606060",
 /* pixels */
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"   bbbbbbb",
-"          ",
-"  aaaaaaaa",
-"          ",
-" aaaaaaaaa",
-"          "
+"``````....",
+"``````....",
+"`````.....",
+"`````.....",
+"````......",
+"````......",
+"```.......",
+"```bbbbbbb",
+"``........",
+"``aaaaaaaa",
+"`.........",
+"`aaaaaaaaa",
+".........."
 };
--- a/etc/time/l-2.0.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/l-2.0.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -1,23 +1,24 @@
 /* XPM */
 static char *noname[] = {
 /* width height ncolors chars_per_pixel */
-"10 13 3 1",
+"10 13 4 1",
 /* colors */
-"  s None c None",
-"a c #2AD244",
+"` s None c None",
+"a c #0AB224",
 "b c #DEE614",
+". s pad-color c #606060",
 /* pixels */
-"          ",
-"          ",
-"          ",
-"          ",
-"          ",
-"    bbbbbb",
-"          ",
-"   bbbbbbb",
-"          ",
-"  aaaaaaaa",
-"          ",
-" aaaaaaaaa",
-"          "
+"``````....",
+"``````....",
+"`````.....",
+"`````.....",
+"````......",
+"````bbbbbb",
+"```.......",
+"```bbbbbbb",
+"``........",
+"``aaaaaaaa",
+"`.........",
+"`aaaaaaaaa",
+".........."
 };
--- a/etc/time/l-2.5.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/l-2.5.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -1,24 +1,25 @@
 /* XPM */
 static char *noname[] = {
 /* width height ncolors chars_per_pixel */
-"10 13 4 1",
+"10 13 5 1",
 /* colors */
-"  s None c None",
+"a s None c None",
 "` c #FE0204",
-"b c #2AD244",
+"b c #0AB224",
 "c c #DEE614",
+". s pad-color c #606060",
 /* pixels */
-"          ",
-"          ",
-"          ",
-"     `````",
-"          ",
-"    cccccc",
-"          ",
-"   ccccccc",
-"          ",
-"  bbbbbbbb",
-"          ",
-" bbbbbbbbb",
-"          "
+"aaaaaa....",
+"aaaaaa....",
+"aaaaa.....",
+"aaaaa`````",
+"aaaa......",
+"aaaacccccc",
+"aaa.......",
+"aaaccccccc",
+"aa........",
+"aabbbbbbbb",
+"a.........",
+"abbbbbbbbb",
+".........."
 };
--- a/etc/time/l-3.0.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/l-3.0.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -1,24 +1,25 @@
 /* XPM */
 static char *noname[] = {
 /* width height ncolors chars_per_pixel */
-"10 13 4 1",
+"10 13 5 1",
 /* colors */
-"  s None c None",
+"a s None c None",
 "` c #FE0204",
-"b c #2AD244",
+"b c #0AB224",
 "c c #DEE614",
+". s pad-color c #606060",
 /* pixels */
-"          ",
-"      ````",
-"          ",
-"     `````",
-"          ",
-"    cccccc",
-"          ",
-"   ccccccc",
-"          ",
-"  bbbbbbbb",
-"          ",
-" bbbbbbbbb",
-"          "
+"aaaaaa....",
+"aaaaaa````",
+"aaaaa.....",
+"aaaaa`````",
+"aaaa......",
+"aaaacccccc",
+"aaa.......",
+"aaaccccccc",
+"aa........",
+"aabbbbbbbb",
+"a.........",
+"abbbbbbbbb",
+".........."
 };
--- a/etc/time/l-jtl-0.0.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-/* XPM */
-static char *noname[] = {
-/* width height ncolors chars_per_pixel */
-"10 13 2 1",
-/* colors */
-"` s None c None",
-". c #606060",
-/* pixels */
-"``````````",
-"``````....",
-"`````.....",
-"`````.....",
-"````......",
-"````......",
-"```.......",
-"```.......",
-"``........",
-"``........",
-"`.........",
-"`.........",
-".........."
-};
--- a/etc/time/l-jtl-0.5.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-/* XPM */
-static char *noname[] = {
-/* width height ncolors chars_per_pixel */
-"10 13 3 1",
-/* colors */
-"` s None c None",
-"a c #0AB224",
-". c #606060",
-/* pixels */
-"``````````",
-"``````....",
-"`````.....",
-"`````.....",
-"````......",
-"````......",
-"```.......",
-"```.......",
-"``........",
-"``........",
-"`.........",
-"`aaaaaaaaa",
-".........."
-};
--- a/etc/time/l-jtl-1.0.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-/* XPM */
-static char *noname[] = {
-/* width height ncolors chars_per_pixel */
-"10 13 3 1",
-/* colors */
-"` s None c None",
-"a c #0AB224",
-". c #606060",
-/* pixels */
-"``````````",
-"``````....",
-"`````.....",
-"`````.....",
-"````......",
-"````......",
-"```.......",
-"```.......",
-"``........",
-"``aaaaaaaa",
-"`.........",
-"`aaaaaaaaa",
-".........."
-};
--- a/etc/time/l-jtl-1.5.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-/* XPM */
-static char *noname[] = {
-/* width height ncolors chars_per_pixel */
-"10 13 4 1",
-/* colors */
-"` s None c None",
-"a c #2AD244",
-"b c #DEE614",
-". c #606060",
-/* pixels */
-"``````````",
-"``````....",
-"`````.....",
-"`````.....",
-"````......",
-"````......",
-"```.......",
-"```bbbbbbb",
-"``........",
-"``aaaaaaaa",
-"`.........",
-"`aaaaaaaaa",
-".........."
-};
--- a/etc/time/l-jtl-2.0.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-/* XPM */
-static char *noname[] = {
-/* width height ncolors chars_per_pixel */
-"10 13 4 1",
-/* colors */
-"` s None c None",
-"a c #0AB224",
-"b c #DEE614",
-". c #606060",
-/* pixels */
-"``````````",
-"``````....",
-"`````.....",
-"`````.....",
-"````......",
-"````bbbbbb",
-"```.......",
-"```bbbbbbb",
-"``........",
-"``aaaaaaaa",
-"`.........",
-"`aaaaaaaaa",
-".........."
-};
--- a/etc/time/l-jtl-2.5.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/* XPM */
-static char *noname[] = {
-/* width height ncolors chars_per_pixel */
-"10 13 5 1",
-/* colors */
-"a s None c None",
-"` c #FE0204",
-"b c #0AB224",
-"c c #DEE614",
-". c #606060",
-/* pixels */
-"aaaaaaaaaa",
-"aaaaaa....",
-"aaaaa.....",
-"aaaaa`````",
-"aaaa......",
-"aaaacccccc",
-"aaa.......",
-"aaaccccccc",
-"aa........",
-"aabbbbbbbb",
-"a.........",
-"abbbbbbbbb",
-".........."
-};
--- a/etc/time/l-jtl-3.0.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/* XPM */
-static char *noname[] = {
-/* width height ncolors chars_per_pixel */
-"10 13 5 1",
-/* colors */
-"a s None c None",
-"` c #FE0204",
-"b c #0AB224",
-"c c #DEE614",
-". c #606060",
-/* pixels */
-"aaaaaaaaaa",
-"aaaaaa````",
-"aaaaa.....",
-"aaaaa`````",
-"aaaa......",
-"aaaacccccc",
-"aaa.......",
-"aaaccccccc",
-"aa........",
-"aabbbbbbbb",
-"a.........",
-"abbbbbbbbb",
-".........."
-};
--- a/etc/time/pm.xpm	Mon Aug 13 08:54:02 2007 +0200
+++ b/etc/time/pm.xpm	Mon Aug 13 08:54:25 2007 +0200
@@ -3,8 +3,8 @@
 /* width height ncolors chars_per_pixel */
 "4 13 2 1",
 /* colors */
-"` s None c None",
-"a c #CA1E1C",
+"` c None    s ledbg",
+"a c #CA1E1C s ledfg",
 /* pixels */
 "````",
 "````",
--- a/lib-src/emacsserver.c	Mon Aug 13 08:54:02 2007 +0200
+++ b/lib-src/emacsserver.c	Mon Aug 13 08:54:25 2007 +0200
@@ -61,13 +61,18 @@
 
 #include <sys/types.h>
 #include <sys/file.h>
-#include <sys/socket.h>
 #include <sys/signal.h>
 #include <sys/stat.h> /* Needed for chmod, at least on Linux */
 #include <sys/un.h>
 #include <stdio.h>
 #include <errno.h>
 #include "../src/sysproc.h" /* Needed for select */
+#ifndef SOCK_STREAM
+/* this is normally included by src/sysproc.h.  might be safe to omit
+ * it entirely.  lousy ultrix's sys/socket.h chokes if it's included
+ * twice, so we can't include unconditionally.  */
+#include <sys/socket.h>
+#endif
 
 void
 main ()
--- a/lisp/bytecomp/disass.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/bytecomp/disass.el	Mon Aug 13 08:54:25 2007 +0200
@@ -266,3 +266,7 @@
 		)
 	  (insert "\n")))))
   nil)
+
+(provide 'disass)
+
+;;; disass.el ends here
--- a/lisp/efs/Makefile	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/Makefile	Mon Aug 13 08:54:25 2007 +0200
@@ -2,7 +2,7 @@
 #
 # File:         Makefile
 # Release:      $efs release: 1.15 $
-# Version:      $Revision: 1.3 $
+# Version:      $Revision: 1.4 $
 # RCS:
 # Description:  Makefile for byte-compiling efs and dired.
 # Author:       Andy Norman, HPLabs, Bristol, UK.
@@ -84,10 +84,18 @@
 COREOBJS = efs-defun.elc efs-ovwrt.elc efs-fnh.elc efs-cu.elc efs-netrc.elc \
            efs.elc efs-dired.elc efs-report.elc \
            efs-cp-p.elc
+CORESRC = efs-defun.el efs-ovwrt.el efs-fnh.el efs-cu.el efs-netrc.el \
+          efs.el efs-dired.el efs-report.el \
+          efs-cp-p.el \
+	  efs-dump.el
 DOBJS = default-dir.elc dired.elc dired-mob.elc dired-oas.elc \
         dired-rgxp.elc dired-shell.elc dired-vir.elc dired-xy.elc \
         dired-grep.elc dired-uu.elc \
         dired-cmpr.elc dired-diff.elc dired-help.elc dired-sex.elc
+DSRC = default-dir.el dired.el dired-mob.el dired-oas.el \
+       dired-rgxp.el dired-shell.el dired-vir.el dired-xy.el \
+       dired-grep.el dired-uu.el \
+       dired-cmpr.el dired-diff.el dired-help.el dired-sex.el
 EFSOBJS = $(COREOBJS) efs-auto.elc \
           efs-cms.elc efs-cms-knet.elc efs-dos-distinct.elc efs-nos-ve.elc \
           efs-gwp.elc efs-kerberos.elc efs-hell.elc efs-ka9q.elc \
@@ -95,10 +103,21 @@
           efs-pc.elc efs-ti-explorer.elc efs-ti-twenex.elc \
           efs-tops-20.elc efs-dl.elc efs-guardian.elc efs-coke.elc \
           efs-vms.elc efs-vos.elc efs-plan9.elc efs-ms-unix.elc
+EFSSRC = $(CORESRC) efs-auto.el \
+          efs-cms.el efs-cms-knet.el efs-dos-distinct.el efs-nos-ve.el \
+          efs-gwp.el efs-kerberos.el efs-hell.el efs-ka9q.el \
+          efs-mpe.el efs-mts.el efs-mvs.el efs-netware.el \
+          efs-pc.el efs-ti-explorer.el efs-ti-twenex.el \
+          efs-tops-20.el efs-dl.el efs-guardian.el efs-coke.el \
+          efs-vms.el efs-vos.el efs-plan9.el efs-ms-unix.el
 VMOBJS = efs-vm.elc
+VMSRC = efs-vm.el
 GEOBJS = dired-fsf.elc dired-mule.elc efs-dired-mule.elc \
 	 passwd.elc diff.elc auto-save.elc
+GESRC = dired-fsf.el dired-mule.el efs-dired-mule.el \
+	passwd.el diff.el auto-save.el
 XEOBJS = dired-faces.elc dired-xemacs.elc
+XESRC = dired-faces.el dired-xemacs.el
 OBJS = $(DOBJS) $(EFSOBJS) $(VMOBJS) $(GEOBJS) $(XEOBJS) \
        efs-18.elc efs-19.elc efs-19.23.elc \
        efs-l19.11.elc efs-x19.15.elc \
@@ -195,6 +214,8 @@
 # backward compatibility files
 fn-handler.elc: fn-handler.el
 emacs-19.elc: emacs-19.el
+# auto-save package
+auto-save.elc: auto-save.el
 
 # Core targets
 core: $(COREOBJS)
@@ -229,6 +250,7 @@
 efs: $(EFSOBJS)
 dired: $(DOBJS)
 all: $(OBJS)
+info: efs.info
 
 # Making for a specific emacs version
 18: emacs-19.elc fn-handler.elc efs dired efs-18.elc dired-mule.elc \
@@ -247,6 +269,20 @@
 	@echo "Installing in $(LISPDIR)..."
 	@ls -C `ls *.el 2>&1 | grep -v "fixup"` 2> /dev/null
 	cp `ls *.el | grep -v "fixup"` $(LISPDIR)
+install_xemacs:
+	@echo "Installing source in $(LISPDIR)..."
+	cp $(EFSSRC) $(DSRC) $(XESRC) efs-x19.15.el $(LISPDIR)
+	cp Makefile README fixup.el $(LISPDIR)
+diff_xemacs:
+	for f in $(EFSSRC) $(DSRC) $(XESRC) efs-x19.15.el \
+	         Makefile README fixup.el; do \
+		if [ -e $(LISPDIR)/$$f ]; \
+		then\
+		  diff -c $(LISPDIR)/$$f $$f; \
+		else \
+		  diff -c /dev/null $$f; \
+		fi \
+	done
 install_all: install_src install
 clean:
 	rm -f $(OBJS)
--- a/lisp/efs/default-dir.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/default-dir.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,7 +3,7 @@
 ;;
 ;; File:         default-dir.el
 ;; RCS:
-;; Version:      $Revision: 1.2 $
+;; Version:      $Revision: 1.5 $
 ;; Description:  Defines the function default-directory, for fancy handling
 ;;               of the initial contents in the minibuffer when reading
 ;;               file names.
@@ -35,6 +35,10 @@
 	((>= (string-to-int (substring emacs-version 0 2)) 19) 'fsf-19)
 	(t 'fsf-18)))
 
+(defconst default-dir-find-file-takes-coding-system
+  (and (eq default-dir-emacs-variant 'xemacs)
+       (>= (string-to-int (substring emacs-version 0 2)) 20)))
+
 ;;;###autoload
 (defvar default-directory-function nil
   "A function to call to compute the default-directory for the current buffer.
@@ -58,86 +62,157 @@
 
 ;;; Overloads
 
-(if (or (featurep 'mule)
-	(boundp 'MULE))
-    (progn
-      
-      (defun default-dir-find-file (file &optional coding-system)
-	"Documented as original"
-	(interactive   
-	 (list
-	  (expand-file-name
-	   (read-file-name "Find file: " (default-directory)))
-	  (and current-prefix-arg
-	       (read-coding-system "Coding-system: "))))
-	(default-dir-real-find-file file coding-system))
+(cond
+ ((or (featurep 'mule)
+      (boundp 'MULE))
+
+  (defun default-dir-find-file (file &optional coding-system)
+    "Documented as original"
+    (interactive   
+     (list
+      (expand-file-name
+       (read-file-name "Find file: " (default-directory)))
+      (and current-prefix-arg
+	   (read-coding-system "Coding-system: "))))
+    (default-dir-real-find-file file coding-system))
+
+  (defun default-dir-find-file-other-window (file &optional coding-system)
+    "Documented as original"
+    (interactive
+     (list
+      (expand-file-name
+       (read-file-name "Find file in other window: " (default-directory)))
+      (and current-prefix-arg
+	   (read-coding-system "Coding-system: "))))
+    (default-dir-real-find-file-other-window file coding-system))
 
-      (defun default-dir-find-file-other-window (file &optional coding-system)
-	"Documented as original"
-	(interactive
-	 (list
-	  (expand-file-name
-	   (read-file-name "Find file in other window: " (default-directory)))
-	  (and current-prefix-arg
-	       (read-coding-system "Coding-system: "))))
-	(default-dir-real-find-file-other-window file coding-system))
+  (defun default-dir-find-file-read-only (file &optional coding-system)
+    "Documented as original"
+    (interactive
+     (list
+      (expand-file-name
+       (read-file-name "Find file read-only: " (default-directory) nil t))
+      (and current-prefix-arg
+	   (read-coding-system "Coding-system: "))))
+    (default-dir-real-find-file-read-only file coding-system))
 
-      (defun default-dir-find-file-read-only (file &optional coding-system)
-	"Documented as original"
-	(interactive
-	 (list
-	  (expand-file-name
-	   (read-file-name "Find file read-only: " (default-directory) nil t))
-	  (and current-prefix-arg
-	       (read-coding-system "Coding-system: "))))
-	(default-dir-real-find-file-read-only file coding-system))
+  (if (fboundp 'find-file-read-only-other-window)
+      (progn
+	(defun default-dir-find-file-read-only-other-window
+	  (file &optional coding-system)
+	  "Documented as original"
+	  (interactive
+	   (list
+	    (expand-file-name
+	     (read-file-name
+	      "Find file read-only in other window: "
+	      (default-directory) nil t))
+	    (and current-prefix-arg
+		 (read-coding-system "Coding-system: "))))
+	  (default-dir-real-find-file-read-only-other-window file
+	    coding-system))))
 
-      (if (fboundp 'find-file-read-only-other-window)
-	  (progn
-	    (defun default-dir-find-file-read-only-other-window
-	      (file &optional coding-system)
-	      "Documented as original"
-	      (interactive
-	       (list
-		(expand-file-name
-		 (read-file-name
-		  "Find file read-only in other window: "
-		  (default-directory) nil t))
-		(and current-prefix-arg
-		     (read-coding-system "Coding-system: "))))
-	      (default-dir-real-find-file-read-only-other-window file
-		coding-system))))
+  (if (fboundp 'find-file-other-frame)
+      (progn
+	(defun default-dir-find-file-other-frame
+	  (file &optional coding-system)
+	  "Documented as original"
+	  (interactive
+	   (list
+	    (expand-file-name
+	     (read-file-name "Find file in other frame: "
+			     (default-directory)))
+	    (and current-prefix-arg
+		 (read-coding-system "Coding-system: "))))
+	  (default-dir-real-find-file-other-frame file
+	    coding-system))))
+  
+  (if (fboundp 'find-file-read-only-other-frame)
+      (progn
+	(defun default-dir-find-file-read-only-other-frame
+	  (file &optional coding-system)
+	  "Documented as original"
+	  (interactive
+	   (list
+	    (expand-file-name
+	     (read-file-name "Find file read-only in other frame: "
+			     (default-directory) nil t))
+	    (and current-prefix-arg
+		 (read-coding-system "Coding-system: "))))
+	  (default-dir-real-find-file-read-only-other-frame file
+	    coding-system)))))
 
-      (if (fboundp 'find-file-other-frame)
-	  (progn
-	    (defun default-dir-find-file-other-frame
-	      (file &optional coding-system)
-	      "Documented as original"
-	      (interactive
-	       (list
-		(expand-file-name
-		 (read-file-name "Find file in other frame: "
-				 (default-directory)))
-		(and current-prefix-arg
-		     (read-coding-system "Coding-system: "))))
-	      (default-dir-real-find-file-other-frame file
-		coding-system))))
+ (default-dir-find-file-takes-coding-system
+   ;; This lossage is due to the fact that XEmacs 20.x without mule
+   ;; still accepts an optional argument for find-file related
+   ;; functions.  Things like advice.el insist on passing nil for
+   ;; optional arguments, and the interaction screws things up.
+   ;; Therefore these functions accept an optional dummy coding-system
+   ;; argument.
+    
+   (defun default-dir-find-file (file &optional coding-system)
+     "Documented as original"
+     (interactive
+      (list
+       (expand-file-name
+	(read-file-name "Find file: " (default-directory)))))
+     (default-dir-real-find-file file))
+  
+   (defun default-dir-find-file-other-window (file &optional coding-system)
+     "Documented as original"
+     (interactive
+      (list
+       (expand-file-name
+	(read-file-name "Find file in other window: " (default-directory)))))
+     (default-dir-real-find-file-other-window file))
+
+   (defun default-dir-find-file-read-only (file  &optional coding-system)
+     "Documented as original"
+     (interactive
+      (list
+       (expand-file-name
+	(read-file-name "Find file read-only: " (default-directory) nil t))))
+     (default-dir-real-find-file-read-only file))
   
-      (if (fboundp 'find-file-read-only-other-frame)
-	  (progn
-	    (defun default-dir-find-file-read-only-other-frame
-	      (file &optional coding-system)
-	      "Documented as original"
-	      (interactive
-	       (list
-		(expand-file-name
-		 (read-file-name "Find file read-only in other frame: "
-				 (default-directory) nil t))
-		(and current-prefix-arg
-		     (read-coding-system "Coding-system: "))))
-	      (default-dir-real-find-file-read-only-other-frame file
-		coding-system)))))
+   (if (fboundp 'find-file-read-only-other-window)
+       (progn
+	 (defun default-dir-find-file-read-only-other-window
+	   (file  &optional coding-system)
+	   "Documented as original"
+	   (interactive
+	    (list
+	     (expand-file-name
+	      (read-file-name
+	       "Find file read-only in other window: "
+	       (default-directory) nil t))))
+	   (default-dir-real-find-file-read-only-other-window file))))
 
+   (if (fboundp 'find-file-other-frame)
+       (progn
+	 (defun default-dir-find-file-other-frame
+	   (file  &optional coding-system)
+	   "Documented as original"
+	   (interactive
+	    (list
+	     (expand-file-name
+	      (read-file-name "Find file in other frame: "
+			      (default-directory)))))
+	   (default-dir-real-find-file-other-frame file))))
+
+   (if (fboundp 'find-file-read-only-other-frame)
+       (progn
+	 (defun default-dir-find-file-read-only-other-frame
+	   (file &optional coding-system)
+	   "Documented as original"
+	   (interactive
+	    (list
+	     (expand-file-name
+	      (read-file-name "Find file read-only in other frame: "
+			      (default-directory) nil t))))
+	   (default-dir-real-find-file-read-only-other-frame file)))))
+
+ (t
+    
   (defun default-dir-find-file (file)
     "Documented as original"
     (interactive
@@ -194,7 +269,9 @@
 	    (expand-file-name
 	     (read-file-name "Find file read-only in other frame: "
 			     (default-directory) nil t))))
-	  (default-dir-real-find-file-read-only-other-frame file)))))
+	  (default-dir-real-find-file-read-only-other-frame file))))))
+
+ 
 
 (efs-overwrite-fn "default-dir" 'find-file 'default-dir-find-file)
 (efs-overwrite-fn "default-dir" 'find-file-other-window
@@ -282,23 +359,15 @@
 
 (efs-overwrite-fn "default-dir" 'shell-command 'default-dir-shell-command)
 
-;; Is advice about?
-(if (featurep 'advice)
-    (defadvice cd (before default-dir-cd activate compile)
-      (interactive
-       (list
-	(expand-file-name
-	 (read-file-name "Change default directory: " (default-directory))))))
-
-  (defun default-dir-cd (dir)
-    "Documented as original"
-    (interactive
-     (list
-      (expand-file-name
-       (read-file-name "Change default directory: " (default-directory)))))
-    (default-dir-real-cd dir))
+(defun default-dir-cd (dir)
+  "Documented as original"
+  (interactive
+   (list
+    (expand-file-name
+     (read-file-name "Change default directory: " (default-directory)))))
+  (default-dir-real-cd dir))
   
-  (efs-overwrite-fn "default-dir" 'cd 'default-dir-cd))
+(efs-overwrite-fn "default-dir" 'cd 'default-dir-cd)
 
 (defun default-dir-set-visited-file-name (filename)
   "Documented as original"
--- a/lisp/efs/dired-cmpr.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/dired-cmpr.el	Mon Aug 13 08:54:25 2007 +0200
@@ -1,7 +1,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:          dired-cmpr.el
-;; Dired Version: $Revision: 1.1 $
+;; Dired Version: $Revision: 7.9 $
 ;; RCS:
 ;; Description:   Commands for compressing marked files.
 ;;
--- a/lisp/efs/dired-diff.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/dired-diff.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,7 +3,7 @@
 ;;
 ;; File:           dired-diff.el
 ;; RCS:
-;; Dired Version:  $Revision: 1.1 $
+;; Dired Version:  $Revision: 7.9 $
 ;; Description:    Support for diff and related commands.
 ;; Author:         Sandy Rutherford <sandy@ibm550.sissa.it>
 ;; Created:        Fri Jun 24 08:50:20 1994 by sandy on ibm550
--- a/lisp/efs/dired-faces.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/dired-faces.el	Mon Aug 13 08:54:25 2007 +0200
@@ -1,7 +1,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:          dired-faces.el
-;; Dired Version: $Revision: 1.1 $
+;; Dired Version: $Revision: 1.2 $
 ;; RCS:
 ;; Description:   rudimentary face customization support for dired
 ;; Author:        Mike Sperber <sperber@informatik.uni-tuebingen.de>
@@ -68,12 +68,6 @@
   "Face used for interactive permissions."
   :group 'dired)
 
-(defface dired-face-deleted '((((class color))
-			       (:foreground "yellow3"))
-			      (t (:reverse t)))
-  "Face used to indicate deleted files."
-  :group 'dired)
-
 (defface dired-face-socket '((((class color))
 			      (:foreground "magenta"))
 			     (t (:bold nil)))
--- a/lisp/efs/dired-grep.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/dired-grep.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,7 +3,7 @@
 ;;
 ;; File:           dired-grep.el
 ;; RCS:
-;; Dired Version:  $Revision: 1.1 $
+;; Dired Version:  $Revision: 7.9 $
 ;; Description:    Support for running grep on marked files in a dired buffer.
 ;; Author:         Sandy Rutherford <sandy@ibm550.sissa.it>
 ;; Created:        Tue Jul 13 22:59:37 1993 by sandy on ibm550
--- a/lisp/efs/dired-help.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/dired-help.el	Mon Aug 13 08:54:25 2007 +0200
@@ -1,7 +1,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:          dired-help.el
-;; Dired Version: $Revision: 1.1 $
+;; Dired Version: $Revision: 7.9 $
 ;; RCS:
 ;; Description:   Obtaining help for dired
 ;; Modified:      Sun Nov 20 21:10:47 1994 by sandy on gandalf
--- a/lisp/efs/dired-mob.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/dired-mob.el	Mon Aug 13 08:54:25 2007 +0200
@@ -2,7 +2,7 @@
 ;;
 ;; File:           dired-mob.el
 ;; RCS:
-;; Dired Version:  $Revision: 1.1 $
+;; Dired Version:  $Revision: 7.9 $
 ;; Description:    Commands for marking files from another buffer.
 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
--- a/lisp/efs/dired-oas.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/dired-oas.el	Mon Aug 13 08:54:25 2007 +0200
@@ -1,7 +1,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:          dired-oas.el
-;; Dired Version: $Revision: 1.1 $
+;; Dired Version: $Revision: 7.9 $
 ;; RCS:
 ;; Description:   dired odds and sods. Dired functions not usually needed.
 ;;                This file is not a reference to the Organization of
--- a/lisp/efs/dired-rgxp.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/dired-rgxp.el	Mon Aug 13 08:54:25 2007 +0200
@@ -1,7 +1,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:           dired-rgxp.el
-;; Dired Version: $Revision: 1.1 $
+;; Dired Version: $Revision: 7.9 $
 ;; RCS:
 ;; Description:   Commands for running commands on files whose names
 ;;                match a regular expression.
--- a/lisp/efs/dired-sex.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/dired-sex.el	Mon Aug 13 08:54:25 2007 +0200
@@ -1,7 +1,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:          dired-sex.el
-;; Dired Version: $Revision: 1.1 $
+;; Dired Version: $Revision: 7.9 $
 ;; RCS:
 ;; Description:   Marking files according to sexpressions.  Sorry.
 ;; Created:       Wed Sep 14 01:30:43 1994 by sandy on ibm550
--- a/lisp/efs/dired-shell.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/dired-shell.el	Mon Aug 13 08:54:25 2007 +0200
@@ -1,7 +1,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:          dired-shell.el
-;; Dired Version: $Revision: 1.1 $
+;; Dired Version: $Revision: 7.9 $
 ;; RCS:
 ;; Description:   Commands for running shell commands on marked files.
 ;;
@@ -15,21 +15,28 @@
 ;;; Variables
 
 (defvar dired-postscript-print-command
-  (concat
-   (if (boundp 'lpr-command)
-       lpr-command
-     (if (memq system-type
-	       '(usg-unix-v hpux silicon-graphics-unix))
-	 "lp"
-       "lpr"))
-   (if (and (boundp 'lpr-switches) lpr-switches)
-       (concat " "
-	       (mapconcat 'identity lpr-switches " ")
-	       " ")
-     " "))
-  "Command to print a postscript file.")
+  (condition-case nil
+      (progn
+	(require 'ps-print)
+	(concat ps-lpr-command
+		" "
+		(ps-flatten-list (mapcar 'ps-eval-switch ps-lpr-switches))))
+    (error
+     (concat
+      (if (boundp 'lpr-command)
+	  lpr-command
+	(if (memq system-type
+		  '(usg-unix-v hpux silicon-graphics-unix))
+	    "lp"
+	  "lpr"))
+      (if (and (boundp 'lpr-switches) lpr-switches)
+	  (concat " "
+		  (mapconcat 'identity lpr-switches " ")
+		  " ")
+	" "))))
+     "Command to print a postscript file.")
 
-(defvar dired-text-print-command (concat dired-postscript-print-command " -p")
+(defvar dired-text-print-command (concat dired-postscript-print-command "-p ")
   "Command to print a text file.")
 
 (defvar dired-print-program-alist
--- a/lisp/efs/dired-uu.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/dired-uu.el	Mon Aug 13 08:54:25 2007 +0200
@@ -1,7 +1,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:          dired-uu.el
-;; Dired Version: $Revision: 1.1 $
+;; Dired Version: $Revision: 7.9 $
 ;; RCS:
 ;; Description:   Commands for uuencoding/uudecoding marked files.
 ;; Author:        Sandy Rutherford <sandy@math.ubc.ca>
--- a/lisp/efs/dired-vir.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/dired-vir.el	Mon Aug 13 08:54:25 2007 +0200
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:          dired-vir.el
-;; Dired Version: $Revision: 1.1 $
+;; Dired Version: $Revision: 7.9 $
 ;; RCS:
 ;; Description:   Virtual dired mode for browsing ls -lR listings.
 ;; Author:        Sebastian Kremer <sk@thp.uni-koeln.de>
--- a/lisp/efs/dired-xemacs.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/dired-xemacs.el	Mon Aug 13 08:54:25 2007 +0200
@@ -1,7 +1,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:          dired-xemacs.el
-;; Dired Version: $Revision: 1.1 $
+;; Dired Version: $Revision: 7.9 $
 ;; RCS:
 ;; Description:   dired functions for XEmacs
 ;; Author:        Mike Sperber <sperber@informatik.uni-tuebingen.de>
@@ -274,7 +274,7 @@
   "Installs the Dired menu at the menubar."
   (if (null dired-help-menu)
       (dired-setup-menus))
-  (if current-menubar
+  (if (and (featurep 'menubar) current-menubar)
       (progn
 	(let ((buffer-menubar (copy-sequence current-menubar)))
 	  (delete (assoc "Edit" buffer-menubar) buffer-menubar)
--- a/lisp/efs/dired-xy.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/dired-xy.el	Mon Aug 13 08:54:25 2007 +0200
@@ -1,7 +1,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:          dired-xy.el
-;; Dired Version: $Revision: 1.1 $
+;; Dired Version: $Revision: 7.9 $
 ;; RCS:
 ;; Description:   Commands for reading mail from dired.
 ;;
--- a/lisp/efs/dired.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/dired.el	Mon Aug 13 08:54:25 2007 +0200
@@ -92,9 +92,24 @@
    ((< ver 18)
     (error "dired does not work with emacs version %s" emacs-version))))
 
-;; Load default-dir last, because we want its interactive specs.
-(require 'default-dir)
-
+;; We duplicate default-dir stuff to avoid its overwrites unless
+;; they are explicitly requested.
+
+(defvar default-directory-function nil
+  "A function to call to compute the default-directory for the current buffer.
+If this is nil, the function default-directory will return the value of the
+variable default-directory.
+Buffer local.")
+(make-variable-buffer-local 'default-directory-function)
+
+(defun default-directory ()
+  " Returns the default-directory for the current buffer.
+Will use the variable default-directory-function if it non-nil."
+  (if default-directory-function
+      (funcall default-directory-function)
+    (if (string-match "Lucid" emacs-version)
+	(abbreviate-file-name default-directory t)
+      (abbreviate-file-name default-directory))))
 
 ;;;;----------------------------------------------------------------
 ;;;; Customizable variables
@@ -143,7 +158,7 @@
  
  For example:
  
-   \(setq dired-compresssion-method-alist
+   \(setq dired-compression-method-alist
          \(cons '\(frobnicate \".frob\" \(\"frob\"\) \(\"frob\" \"-d\"\) \"-f\"\)
                dired-compression-method-alist\)\)
    => \(\(frobnicate \".frob\" \(\"frob\"\) \(\"frob\" \"-d\"\)\) 
@@ -207,7 +222,7 @@
 ;;;###autoload
 (defvar dired-chown-program
   (if (memq system-type '(hpux dgux usg-unix-v)) "chown" "/etc/chown")
-  "*Name of chown command (usully `chown' or `/etc/chown').")
+  "*Name of chown command (usually `chown' or `/etc/chown').")
 
 ;;;###autoload
 (defvar dired-gnutar-program nil
@@ -3776,7 +3791,7 @@
 Optional CHAR indicates a marker character to use."
   (let (buffer-read-only)
     (if (memq (or char dired-marker-char) '(?\  ?\n ?\r))
-	(error "Invalid marker charcter %c" dired-marker-char))
+	(error "Invalid marker character %c" dired-marker-char))
     (or char (setq char dired-marker-char))
     (dired-repeat-over-lines
      arg
--- a/lisp/efs/efs-auto.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs-auto.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,7 +3,7 @@
 ;;
 ;; File:         efs-auto.el
 ;; Release:      $efs release: 1.15 $
-;; Version:      $Revision: 1.1 $
+;; Version:      $Revision: 1.7 $
 ;; RCS:          
 ;; Description:  Simple way of autoloading efs
 ;; Author:       Andy Norman, Dawn
@@ -17,7 +17,7 @@
 ;;; (it's copylefted) and warrranty (there isn't one) information.
   
 ;;; Provides a way of autoloading efs. To use this, just put
-;;; (require 'efs-auto in your .emacs file.
+;;; (require 'efs-auto) in your .emacs file.
 ;;;
 ;;; The Bad News:
 ;;; 
@@ -37,7 +37,7 @@
 (defconst efs-auto-version
   (concat (substring "$efs release: 1.15 $" 14 -2)
 	  "/"
-	  (substring "$Revision: 1.1 $" 11 -2)))
+	  (substring "$Revision: 1.7 $" 11 -2)))
 
 ;;; Interactive functions that should be accessible from here.
 
--- a/lisp/efs/efs-cms.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs-cms.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,7 +3,7 @@
 ;;
 ;; File:         efs-cms.el
 ;; Release:      $efs release: 1.15 $
-;; Version:      $Revision: 1.1 $
+;; Version:      $Revision: 1.9 $
 ;; RCS:          
 ;; Description:  CMS support for efs
 ;; Author:       Sandy Rutherford <sandy@ibm550.sissa.it>
@@ -22,7 +22,7 @@
 (defconst efs-cms-version
   (concat (substring "$efs release: 1.15 $" 14 -2)
 	  "/"
-	  (substring "$Revision: 1.1 $" 11 -2)))
+	  (substring "$Revision: 1.9 $" 11 -2)))
 
 ;;;; ------------------------------------------------------------
 ;;;; CMS support
--- a/lisp/efs/efs-cu.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs-cu.el	Mon Aug 13 08:54:25 2007 +0200
@@ -26,7 +26,7 @@
 ;;;; Use configuration variables.
 ;;;; ------------------------------------------------------------
 
-(defvar efs-default-user nil
+(defvar efs-default-user "anonymous"
   "*User name to use when none is specied in a pathname.
 
 If a string, than this string is used as the default user name.
@@ -86,6 +86,7 @@
   (substring efs-path-user-at-host-format 3)
   "Format to return `host:' strings for completion in root directory.")
 
+;;;###autoload
 (defvar efs-path-root-regexp "^/[^/:]+:"
   "Regexp to match the `/user@host:' root of an efs full path.")
 
@@ -619,12 +620,12 @@
 (defun efs-code-string (string)
   ;; Encode a string, using `efs-passwd-seed'. This is nil-potent,
   ;; meaning applying it twice decodes.
-  (if (and (fboundp 'int-char) (fboundp 'char-int))
+  (if (and (fboundp 'int-to-char) (fboundp 'char-to-int))
       (mapconcat
        (function
 	(lambda (c)
 	  (char-to-string
-	   (int-char (logxor (efs-get-passwd-seed) (char-int c))))))
+	   (int-to-char (logxor (efs-get-passwd-seed) (char-to-int c))))))
        string "")
     (mapconcat
      (function
--- a/lisp/efs/efs-dl.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs-dl.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,7 +3,7 @@
 ;;
 ;; File:         efs-dl.el
 ;; Release:      $efs release: 1.15 $
-;; Version:      $Revision: 1.1 $
+;; Version:      $Revision: 1.3 $
 ;; RCS:          
 ;; Description:  Unix descriptive listing support for efs
 ;; Author:       Sandy Rutherford <sandy@tsmi19.sissa.it>
@@ -21,7 +21,7 @@
 (defconst efs-dl-version
   (concat (substring "$efs release: 1.15 $" 14 -2)
 	  "/"
-	  (substring "$Revision: 1.1 $" 11 -2)))
+	  (substring "$Revision: 1.3 $" 11 -2)))
 
 ;;;-----------------------------------------------------------------
 ;;; Unix descriptive listing (dl) support for efs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/efs/efs-dump.el	Mon Aug 13 08:54:25 2007 +0200
@@ -0,0 +1,18 @@
+;; -*-Emacs-Lisp-*-
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; File:         efs-dump.el
+;; Release:      $efs release: 1.15 $
+;; Version:      $Revision: 1.1 $
+;; RCS:
+;; Description:  Install a bare-bones EFS hook into file-name-handler-alist
+;;               for dumping
+;; Author:       Mike Sperber <sperber@informatik.uni-tuebingen.de>
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;###autoload
+(setq file-name-handler-alist
+      (cons
+       (cons efs-path-root-regexp 'efs-file-handler-function)
+       file-name-handler-alist))
--- a/lisp/efs/efs-guardian.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs-guardian.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,7 +3,7 @@
 ;;
 ;; File:         efs-guardian.el
 ;; Release:      $efs release: 1.15 $
-;; Version:      $Revision: 1.1 $
+;; Version:      $Revision: 1.7 $
 ;; RCS:          
 ;; Description:  Guardian support for efs
 ;; Author:       Sandy Rutherford <sandy@math.ubc.ca>
@@ -22,7 +22,7 @@
 (defconst efs-guardian-version
   (concat (substring "$efs release: 1.15 $" 14 -2)
 	  "/"
-	  (substring "$Revision: 1.1 $" 11 -2)))
+	  (substring "$Revision: 1.7 $" 11 -2)))
 
 (provide 'efs-guardian)
 (require 'efs)
--- a/lisp/efs/efs-ka9q.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs-ka9q.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,7 +3,7 @@
 ;;
 ;; File:         efs-ka9q.el
 ;; Release:      $efs release: 1.15 $
-;; Version:      $Revision: 1.1 $
+;; Version:      $Revision: 1.2 $
 ;; RCS:          
 ;; Description:  KA9Q support for efs
 ;; Author:       Sandy Rutherford <sandy@tsmi19.sissa.it>
@@ -23,7 +23,7 @@
 (defconst efs-ka9q-version
   (concat (substring "$efs release: 1.15 $" 14 -2)
 	  "/"
-	  (substring "$Revision: 1.1 $" 11 -2)))
+	  (substring "$Revision: 1.2 $" 11 -2)))
 
 ;;;-----------------------------------------------------------------
 ;;; KA9Q support for efs
--- a/lisp/efs/efs-mpe.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs-mpe.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,7 +3,7 @@
 ;;
 ;; File:         efs-mpe.el
 ;; Release:      $efs release: 1.15 $
-;; Version:      $Revision: 1.1 $
+;; Version:      $Revision: 1.8 $
 ;; RCS:          
 ;; Description:  MPE (HP3000) support for efs.
 ;; Author:       (Corny de Souza) cdesouza@hpbbn.bbn.hp.com
@@ -125,7 +125,7 @@
 (defconst efs-mpe-version
   (concat (substring "$efs release: 1.15 $" 14 -2)
 	  "/"
-	  (substring "$Revision: 1.1 $" 11 -2)))
+	  (substring "$Revision: 1.8 $" 11 -2)))
 
 ;;; Support for build parameters
 
--- a/lisp/efs/efs-mvs.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs-mvs.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,7 +3,7 @@
 ;;
 ;; File:         efs-mvs.el
 ;; Release:      $efs release: 1.15 $
-;; Version:      $Revision: 1.1 $
+;; Version:      $Revision: 1.4 $
 ;; RCS:          
 ;; Description:  MVS support for efs
 ;; Author:       Sandy Rutherford <sandy@math.ubc.ca, sandy@itp.ethz.ch>
@@ -26,7 +26,7 @@
 (defconst efs-mvs-version
   (concat (substring "$efs release: 1.15 $" 14 -2)
 	  "/"
-	  (substring "$Revision: 1.1 $" 11 -2)))
+	  (substring "$Revision: 1.4 $" 11 -2)))
 
 ;; What's the MVS character set for valid partitioned data sets?
 ;; I'll guess [-A-Z0-9_$+]
--- a/lisp/efs/efs-netrc.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs-netrc.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,12 +3,11 @@
 ;;
 ;; File:         efs-netrc.el
 ;; Release:      $efs release: 1.15 $
-;; Version:      $Revision: 1.1 $
+;; Version:      $Revision: 1.2 $
 ;; RCS:          
 ;; Description:  Parses ~/.netrc file, and does completion in /.
 ;; Author:       Sandy Rutherford <sandy@ibm550.sissa.it>
 ;; Created:      Fri Jan 28 19:32:47 1994 by sandy on ibm550
-;; Modified:     Sun Nov 27 18:38:50 1994 by sandy on gandalf
 ;; Language:     Emacs-Lisp
 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -33,7 +32,7 @@
 (defconst efs-netrc-version
   (concat (substring "$efs release: 1.15 $" 14 -2)
 	  "/"
-	  (substring "$Revision: 1.1 $" 11 -2)))
+	  (substring "$Revision: 1.2 $" 11 -2)))
 
 ;; Make the byte compiler happy.
 (defvar dired-directory)
@@ -58,6 +57,7 @@
 ;;;; Host / User / Account mapping support.
 ;;;; ------------------------------------------------------------
 
+;;;###autoload
 (defun efs-set-passwd (host user passwd)
   "For a given HOST and USER, set or change the associated PASSWORD."
   (interactive (list (read-string "Host: ")
@@ -370,6 +370,7 @@
 	  (list nil)
 	res))))
 
+;;;###autoload
 (defun efs-root-file-name-all-completions (file dir)
   ;; Generates all completions in the root directory.
   (let ((file-name-handler-alist (efs-file-name-handler-alist-sans-fn
@@ -378,6 +379,7 @@
 	   (file-name-all-completions file dir))))
 
 
+;;;###autoload
 (defun efs-root-file-name-completion (file dir)
   ;; Calculates completions in the root directory to include remote hosts.
   (let ((file-name-handler-alist (efs-file-name-handler-alist-sans-fn
--- a/lisp/efs/efs-netware.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs-netware.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,7 +3,7 @@
 ;;
 ;; File:         efs-netware.el
 ;; Release:      $efs release: 1.15 $
-;; Version:      $Revision: 1.1 $
+;; Version:      $Revision: 1.5 $
 ;; RCS:          
 ;; Description:  efs support for the Novell Netware FTP server
 ;; Author:       Sandy Rutherford <sandy@math.ubc.ca>
@@ -24,7 +24,7 @@
 (defconst efs-netware-version
   (concat (substring "$efs release: 1.15 $" 14 -2)
 	  "/"
-	  (substring "$Revision: 1.1 $" 11 -2)))
+	  (substring "$Revision: 1.5 $" 11 -2)))
 
 ;;; Basic efs support
 
--- a/lisp/efs/efs-nos-ve.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs-nos-ve.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,7 +3,7 @@
 ;;
 ;; File:         efs-nos-ve.el
 ;; Release:      $efs release: 1.15 $
-;; Version:      $Revision: 1.1 $
+;; Version:      $Revision: 1.2 $
 ;; RCS:          
 ;; Description:  efs support for NOS/VE
 ;; Authors:      Sandy Rutherford <sandy@ibm550.sissa,it>
@@ -26,7 +26,7 @@
 (defconst efs-nos-ve-version
   (concat (substring "$efs release: 1.15 $" 14 -2)
 	  "/"
-	  (substring "$Revision: 1.1 $" 11 -2)))
+	  (substring "$Revision: 1.2 $" 11 -2)))
 
 ;;;;---------------------------------------------------------------
 ;;;; NOS/VE support for efs
--- a/lisp/efs/efs-ovwrt.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs-ovwrt.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,11 +3,10 @@
 ;;
 ;; File:         efs-ovwrt.el
 ;; Release:      $efs release: 1.15 $
-;; Version:      $Revision: 1.1 $
+;; Version:      $Revision: 1.2 $
 ;; RCS:
 ;; Description:  Utilities for overwriting functions with new definitions.
 ;; Author:       Andy Norman <ange@hplb.hpl.hp.com>
-;; Modified:     Sun Nov 27 18:40:20 1994 by sandy on gandalf
 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
@@ -20,7 +19,7 @@
 (defconst efs-ovwrt-version
   (concat (substring "$efs release: 1.15 $" 14 -2)
 	  "/"
-	  (substring "$Revision: 1.1 $" 11 -2)))
+	  (substring "$Revision: 1.2 $" 11 -2)))
 
 (defvar efs-overwrite-fmt
   "Note: This function has been modified to work with %s.")
@@ -66,9 +65,12 @@
     ;; later after some other code has been loaded on top of our stuff.
     
     (or (fboundp saved)
-	(progn
+	(let ((advised-p (and (featurep 'advice)
+			      (ad-is-advised fun))))
+	  (if advised-p (ad-deactivate fun))
 	  (fset saved (symbol-function fun))
-	  (fset fun new)))
+	  (fset fun new)
+	  (if advised-p (ad-activate fun))))
     
     ;; Rewrite the doc string on the new function.  This should
     ;; be done every time the file is loaded (or a function is redefined),
--- a/lisp/efs/efs-pc.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs-pc.el	Mon Aug 13 08:54:25 2007 +0200
@@ -260,7 +260,7 @@
 	;; Neither DOS nor OS/2 allows us to end the name of a directory
 	;; with an "\".
 	;; Adding *.* to the end also allows us to distinguish plain files from
-	;; directries.  All DOS servers seem to understand this except
+	;; directories.  All DOS servers seem to understand this except
 	;; Frontier Technologies' super-tcp server.
 	((string-match "/$" dir-path)
 	 (concat (efs-fix-pc-path dir-path) "*.*"))
--- a/lisp/efs/efs-report.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs-report.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,12 +3,11 @@
 ;;
 ;; File:         efs-report.el
 ;; Release:      $efs release: 1.15 $
-;; Version:      $Revision: 1.1 $
+;; Version:      $Revision: 1.9 $
 ;; RCS:          
 ;; Description:  Function to report efs bugs in a usable way.
 ;; Author:       Andy Norman, Dawn
 ;; Created:      Tue May 18 08:34:45 1993
-;; Modified:     Sun Nov 27 18:41:45 1994 by sandy on gandalf
 ;; Language:     Emacs-Lisp
 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -23,7 +22,7 @@
 (defconst efs-report-version
   (concat (substring "$efs release: 1.15 $" 14 -2)
 	  "/"
-	  (substring "$Revision: 1.1 $" 11 -2)))
+	  (substring "$Revision: 1.9 $" 11 -2)))
 
 (defconst efs-report-salutations
   ["Dear bug team:"
@@ -163,6 +162,7 @@
 	   ?\n ?\ )
 	(insert subj)))))
 
+;;;###autoload
 (defun efs-report-bug (&optional default-host  default-user blurb no-confirm)
   "Submit a bug report for efs."
   (interactive)
--- a/lisp/efs/efs-vms.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs-vms.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,7 +3,7 @@
 ;;
 ;; File:         efs-vms.el
 ;; Release:      $efs release: 1.15 $
-;; Version:      $Revision: 1.1 $
+;; Version:      $Revision: 1.13 $
 ;; RCS:          
 ;; Description:  VMS support for efs
 ;; Authors:      Andy Norman, Joe Wells, Sandy Rutherford <sandy@itp.ethz.ch>
@@ -20,7 +20,7 @@
 (defconst efs-vms-version
   (concat (substring "$efs release: 1.15 $" 14 -2)
 	  "/"
-	  (substring "$Revision: 1.1 $" 11 -2)))
+	  (substring "$Revision: 1.13 $" 11 -2)))
 
 ;;;; ------------------------------------------------------------
 ;;;; VMS support.
--- a/lisp/efs/efs-x19.15.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs-x19.15.el	Mon Aug 13 08:54:25 2007 +0200
@@ -3,24 +3,22 @@
 ;;
 ;; File:         efs-x19.15.el
 ;; Release:      $efs release: 1.15 $
-;; Version:      $Revision: 1.1 $
+;; Version:      $Revision: 1.2 $
 ;; RCS:          
 ;; Description:  efs support for XEmacs, versions 19.15, and later.
 ;; Author:       Sandy Rutherford <sandy@ibm550.sissa.it>
 ;; Created:      Tue Aug  2 17:40:32 1994 by sandy on ibm550
-;; Modified:     by Mike Sperber
 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (provide 'efs-x19\.15)
 (require 'efs-cu)
-(require 'default-dir)
 (require 'efs-ovwrt)
 
 (defconst efs-x19\.15-version
   (concat (substring "$efs release: 1.15 $" 14 -2)
 	  "/"
-	  (substring "$Revision: 1.1 $" 11 -2)))
+	  (substring "$Revision: 1.2 $" 11 -2)))
 
 ;;; Functions requiring special defs. for these XEmacs versions.
 
--- a/lisp/efs/efs.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/efs/efs.el	Mon Aug 13 08:54:25 2007 +0200
@@ -73,12 +73,8 @@
 ;;; Documentation:
 ;;; --------------------------------------------------------------
 ;;;
-;;; Currently efs does not have a tex info file, and what you are
-;;; reading represents the only efs documentation. Please report any
-;;; errors or omissions in this documentation to the "bugs" address
-;;; below. Eventually, a tex info file should be written.  If you have
-;;; any problems with efs, please read this section *before*
-;;; submitting a bug report.
+;;; If you have any problems with efs, please read this section
+;;; *before* submitting a bug report.
 
 ;;; Installation:
 ;;;
@@ -309,7 +305,7 @@
 
 ;;; Gateways:
 ;;;
-;;; Sometimes it is neccessary for the FTP process to be run on a different
+;;; Sometimes it is necessary for the FTP process to be run on a different
 ;;; machine than the machine running GNU Emacs.  This can happen when the
 ;;; local machine has restrictions on what hosts it can access.
 ;;;
@@ -4161,6 +4157,7 @@
 ;;;;                      pretty much scrap metal.)
 ;;;; ---------------------------------------------------------------------
 
+;;;###autoload
 (defun efs-nslookup-host (host)
   "Attempt to resolve the given HOSTNAME using nslookup if possible."
   (interactive "sHost: ")
@@ -10730,6 +10727,7 @@
 ;;;; File name handlers
 ;;;; ------------------------------------------------------------
 
+;;;###autoload
 (defun efs-file-handler-function (operation &rest args)
   "Function to call special file handlers for remote files."
   (let ((handler (get operation 'efs)))
--- a/lisp/mel/mel-u.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/mel/mel-u.el	Mon Aug 13 08:54:25 2007 +0200
@@ -1,58 +1,57 @@
-;;;
 ;;; mel-u.el: uuencode encoder/decoder for GNU Emacs
-;;;
-;;; Copyright (C) 1995 Free Software Foundation, Inc.
-;;; Copyright (C) 1995,1996 MORIOKA Tomohiko
-;;;
-;;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;;; Maintainer: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;;; Created: 1995/10/25
-;;; Version:
-;;;	$Id: mel-u.el,v 1.3 1996/12/29 00:14:57 steve Exp $
-;;; Keywords: uuencode
-;;;
-;;; This file is part of MEL (MIME Encoding Library).
-;;;
-;;; 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, 675 Mass Ave, Cambridge, MA 02139, USA.
-;;;
+
+;; Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
+
+;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;; Created: 1995/10/25
+;; Version: $Id: mel-u.el,v 1.4 1997/03/22 05:29:07 steve Exp $
+;; Keywords: uuencode
+
+;; This file is part of MEL (MIME Encoding Library).
+
+;; 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 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.
+
 ;;; Code:
 
 (require 'emu)
+(require 'mel)
 
 
 ;;; @ variables
 ;;;
 
-(defvar mime/tmp-dir (or (getenv "TM_TMP_DIR") "/tmp/"))
-
 (defvar uuencode-external-encoder '("uuencode" "-")
   "*list of uuencode encoder program name and its arguments.")
 
 (defvar uuencode-external-decoder
-  (list "sh" "-c" (format "(cd %s; uudecode)" mime/tmp-dir))
+  (list "sh" "-c" (format "(cd %s; uudecode)" mime-temp-directory))
   "*list of uuencode decoder program name and its arguments.")
 
 
 ;;; @ uuencode encoder/decoder for region
 ;;;
 
-(defun uuencode-external-encode-region (beg end)
+(defun uuencode-external-encode-region (start end)
+  "Encode current region by unofficial uuencode format.
+This function uses external uuencode encoder which is specified by
+variable `uuencode-external-encoder'."
   (interactive "*r")
   (save-excursion
     (as-binary-process (apply (function call-process-region)
-			      beg end (car uuencode-external-encoder)
+			      start end (car uuencode-external-encoder)
 			      t t nil (cdr uuencode-external-encoder))
 		       )
     ;; for OS/2
@@ -63,13 +62,16 @@
       )
     ))
 
-(defun uuencode-external-decode-region (beg end)
+(defun uuencode-external-decode-region (start end)
+  "Decode current region by unofficial uuencode format.
+This function uses external uuencode decoder which is specified by
+variable `uuencode-external-decoder'."
   (interactive "*r")
   (save-excursion
     (let ((filename (save-excursion
 		      (save-restriction
-			(narrow-to-region beg end)
-			(goto-char beg)
+			(narrow-to-region start end)
+			(goto-char start)
 			(if (re-search-forward "^begin [0-9]+ " nil t)
 			    (if (looking-at ".+$")
 				(buffer-substring (match-beginning 0)
@@ -78,17 +80,10 @@
       (if filename
 	  (as-binary-process
 	   (apply (function call-process-region)
-		  beg end (car uuencode-external-decoder)
+		  start end (car uuencode-external-decoder)
 		  t nil nil (cdr uuencode-external-decoder))
-	   (setq filename (expand-file-name filename mime/tmp-dir))
-	   (let ((file-coding-system-for-read *noconv*) ; for Mule
-		 kanji-fileio-code		        ; for NEmacs
-		 (emx-binary-mode t)                    ; for OS/2
-		 jka-compr-compression-info-list        ; for jka-compr
-		 jam-zcat-filename-list                 ; for jam-zcat
-		 require-final-newline)
-	     (insert-file-contents filename)
-	     )
+	   (setq filename (expand-file-name filename mime-temp-directory))
+	   (as-binary-input-file (insert-file-contents filename))
 	   (delete-file filename)
 	   ))
       )))
@@ -101,6 +96,9 @@
 ;;;
 
 (defun uuencode-insert-encoded-file (filename)
+  "Insert file encoded by unofficial uuencode format.
+This function uses external uuencode encoder which is specified by
+variable `uuencode-external-encoder'."
   (interactive (list (read-file-name "Insert encoded file: ")))
   (call-process (car uuencode-external-encoder) filename t nil
 		(file-name-nondirectory filename))
--- a/lisp/mel/mel.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/mel/mel.el	Mon Aug 13 08:54:25 2007 +0200
@@ -1,11 +1,11 @@
 ;;; mel.el : a MIME encoding/decoding library
 
-;; Copyright (C) 1995,1996 Free Software Foundation, Inc.
+;; Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; modified by Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
 ;; Created: 1995/6/25
-;; Version: $Id: mel.el,v 1.3 1996/12/29 00:14:58 steve Exp $
+;; Version: $Id: mel.el,v 1.4 1997/03/22 05:29:07 steve Exp $
 ;; Keywords: MIME, Base64, Quoted-Printable, uuencode, gzip64
 
 ;; This file is part of MEL (MIME Encoding Library).
@@ -27,13 +27,26 @@
 
 ;;; Code:
 
+;;; @ variable
+;;;
+
+(defvar mime-temp-directory (or (getenv "MIME_TMP_DIR")
+				(getenv "TM_TMP_DIR")
+				"/tmp/")
+  "*Directory for temporary files.")
+
+
 ;;; @ region
 ;;;
 
-(autoload 'base64-encode-region           "mel-b" nil t)
-(autoload 'quoted-printable-encode-region "mel-q" nil t)
-(autoload 'uuencode-encode-region         "mel-u" nil t)
-(autoload 'gzip64-encode-region           "mel-g" nil t)
+(autoload 'base64-encode-region
+  "mel-b" "Encode current region by base64." t)
+(autoload 'quoted-printable-encode-region
+  "mel-q" "Encode current region by Quoted-Printable." t)
+(autoload 'uuencode-encode-region
+  "mel-u" "Encode current region by unofficial uuencode format." t)
+(autoload 'gzip64-encode-region
+  "mel-g" "Encode current region by unofficial x-gzip64 format." t)
 
 (defvar mime-encoding-method-alist
   '(("base64"           . base64-encode-region)
@@ -47,13 +60,17 @@
   "Alist of encoding vs. corresponding method to encode region.
 Each element looks like (STRING . FUNCTION) or (STRING . nil).
 STRING is content-transfer-encoding.
-FUNCTION is region encoder and nil means not to encode. [mel.el]")
+FUNCTION is region encoder and nil means not to encode.")
 
 
-(autoload 'base64-decode-region           "mel-b" nil t)
-(autoload 'quoted-printable-decode-region "mel-q" nil t)
-(autoload 'uuencode-decode-region         "mel-u" nil t)
-(autoload 'gzip64-decode-region		  "mel-g" nil t)
+(autoload 'base64-decode-region
+  "mel-b" "Decode current region by base64." t)
+(autoload 'quoted-printable-decode-region
+  "mel-q" "Decode current region by Quoted-Printable." t)
+(autoload 'uuencode-decode-region
+  "mel-u" "Decode current region by unofficial uuencode format." t)
+(autoload 'gzip64-decode-region
+  "mel-g" "Decode current region by unofficial x-gzip64 format." t)
 
 (defvar mime-decoding-method-alist
   '(("base64"           . base64-decode-region)
@@ -65,11 +82,11 @@
   "Alist of encoding vs. corresponding method to decode region.
 Each element looks like (STRING . FUNCTION).
 STRING is content-transfer-encoding.
-FUNCTION is region decoder. [mel.el]")
+FUNCTION is region decoder.")
 
 
-(defun mime-encode-region (beg end encoding)
-  "Encode region BEG to END of current buffer using ENCODING. [mel.el]"
+(defun mime-encode-region (start end encoding)
+  "Encode region START to END of current buffer using ENCODING."
   (interactive
    (list (region-beginning) (region-end)
 	 (completing-read "encoding: "
@@ -78,11 +95,11 @@
    )
   (let ((f (cdr (assoc encoding mime-encoding-method-alist))))
     (if f
-	(funcall f beg end)
+	(funcall f start end)
       )))
 
-(defun mime-decode-region (beg end encoding)
-  "Decode region BEG to END of current buffer using ENCODING. [mel.el]"
+(defun mime-decode-region (start end encoding)
+  "Decode region START to END of current buffer using ENCODING."
   (interactive
    (list (region-beginning) (region-end)
 	 (completing-read "encoding: "
@@ -91,17 +108,21 @@
    )
   (let ((f (cdr (assoc encoding mime-decoding-method-alist))))
     (if f
-	(funcall f beg end)
+	(funcall f start end)
       )))
 
 
 ;;; @ file
 ;;;
 
-(autoload 'base64-insert-encoded-file           "mel-b" nil t)
-(autoload 'quoted-printable-insert-encoded-file "mel-q" nil t)
-(autoload 'uuencode-insert-encoded-file         "mel-u" nil t)
-(autoload 'gzip64-insert-encoded-file           "mel-g" nil t)
+(autoload 'base64-insert-encoded-file
+  "mel-b" "Insert file encoded by base64." t)
+(autoload 'quoted-printable-insert-encoded-file
+  "mel-q" "Insert file encoded by quoted-printable." t)
+(autoload 'uuencode-insert-encoded-file
+  "mel-u" "Insert file encoded by unofficial uuencode format." t)
+(autoload 'gzip64-insert-encoded-file
+  "mel-g" "Insert file encoded by unofficial gzip64 format." t)
 
 (defvar mime-file-encoding-method-alist
   '(("base64"           . base64-insert-encoded-file)
@@ -115,11 +136,10 @@
   "Alist of encoding vs. corresponding method to insert encoded file.
 Each element looks like (STRING . FUNCTION).
 STRING is content-transfer-encoding.
-FUNCTION is function to insert encoded file. [mel.el]")
-
+FUNCTION is function to insert encoded file.")
 
 (defun mime-insert-encoded-file (filename encoding)
-  "Encode region BEG to END of current buffer using ENCODING. [mel.el]"
+  "Insert file FILENAME encoded by ENCODING format."
   (interactive
    (list (read-file-name "Insert encoded file: ")
 	 (completing-read "encoding: "
--- a/lisp/modes/cc-mode.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/modes/cc-mode.el	Mon Aug 13 08:54:25 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.381
-;; Last Modified:   1997/03/18 16:43:13
+;; Version:         4.387
+;; Last Modified:   1997/03/21 20:25:33
 ;; Keywords: c languages oop
 
 ;; NOTE: Read the commentary below for the right way to submit bug reports!
@@ -32,18 +32,19 @@
 
 ;;; Commentary:
 
-;; This package provides modes in GNU Emacs for editing C, C++,
-;; Objective-C, and Java code. It is intended to be a replacement for
-;; c-mode.el (a.k.a. BOCM -- Boring Old C-Mode), c++-mode.el,
-;; cplus-md.el, and cplus-md1.el, all of which are in some way
-;; ancestors of this file.  A number of important improvements have
-;; been made, briefly: complete K&R C, ANSI C, `ARM' C++, Objective-C,
-;; and Java support with consistent indentation across all modes, more
-;; intuitive indentation controlling variables, compatibility across
-;; all known Emacsen, nice new features, and tons of bug fixes.  This
-;; package is called "CC Mode" to distinguish it from its ancestors,
-;; but there is no cc-mode command.  Usage and programming details are
-;; contained in an accompanying texinfo manual.
+;; This package provides GNU Emacs major modes for editing C, C++,
+;; Objective-C, and Java code.  As of the latest Emacs and XEmacs
+;; releases, it is the default package for editing these languages.
+;; This package is called "CC Mode", and should be spelled exactly
+;; this way.  It supports K&R and ANSI C, ANSI C++, Objective-C, and
+;; Java, with a consistent indentation model across all modes.  This
+;; indentation model is intuitive and very flexible, so that almost
+;; any desired style of indentation can be supported.  Installation,
+;; usage, and programming details are contained in an accompanying
+;; texinfo manual.
+
+;; CC Mode's immediate ancestors were, c++-mode.el, cplus-md.el, and
+;; cplus-md1.el..
 
 ;; NOTE: This mode does not perform font-locking (a.k.a syntactic
 ;; coloring, keyword highlighting, etc.) for any of the supported
@@ -68,22 +69,6 @@
 ;; BYTE-COMPILER WARNINGS (you'd be surprised at how many people don't
 ;; follow this advice :-).
 
-;; As of this writing (24-Feb-1997), CC Mode comes with the latest
-;; Emacs and XEmacs distributions (19.34 and 19.14 respectively), but
-;; is no longer pre-loaded by default.  To use the latest version of
-;; CC Mode, you need only make sure that this copy of cc-mode.el is
-;; found first on your load-path.
-
-;; If your Emacs is pre-loaded with any version of cc-mode.el,
-;; c-mode.el, or c++-mode.el, you will need to consult the
-;; cc-mode.texinfo manual for details on upgrading your Emacs.
-
-;; There are four major mode entry points provided by this package,
-;; one for editing C++ code, one for editing C code (both K&R and
-;; ANSI), one for editing Objective-C code, and one for editing Java
-;; code.  The commands are M-x c-mode, M-x c++-mode, M-x objc-mode,
-;; and M-x java-mode.
-
 ;; Many, many thanks go out to all the folks on the beta test list.
 ;; Without their patience, testing, insight, code contributions, and
 ;; encouragement CC Mode would be a far inferior package.
@@ -421,8 +406,14 @@
 (defvar c-electric-pound-behavior nil
   "*List of behaviors for electric pound insertion.
 Only currently supported behavior is `alignleft'.")
+
 (defvar c-label-minimum-indentation 1
-  "*Minimum indentation for labels and case tags in `gnu' style.")
+  "*Minimum indentation for lines inside of top-level constructs.
+This variable typically only affects code using the `gnu' style, which
+mandates a minimum of one space in front of every line inside
+top-level constructs.  Specifically, the function
+`c-gnu-impose-minimum' on your `c-special-indent-hook' is what
+enforces this.")
 
 (defvar c-progress-interval 5
   "*Interval used to update progress status during long re-indentation.
@@ -1239,10 +1230,14 @@
 (defconst c-C++-friend-key
   "friend[ \t]+\\|template[ \t]*<.+>[ \t]*friend[ \t]+"
   "Regexp describing friend declarations in C++ classes.")
-(defconst c-C++-comment-start-regexp "/[/*]"
-  "Dual comment value for `c-comment-start-regexp'.")
-(defconst c-C-comment-start-regexp "/\\*"
-  "Single comment style value for `c-comment-start-regexp'.")
+
+;; comment starter definitions for various languages.  the language
+;; modes will set c-comment-start-regexp to this value.
+(defconst c-C++-comment-start-regexp "/[/*]")
+(defconst c-C-comment-start-regexp "/[*]")
+;; We need to match all 3 Java style comments
+;; 1) Traditional C block; 2) javadoc /** ...; 3) C++ style
+(defconst c-Java-comment-start-regexp "/\\(/\\|[*][*]?\\)")
 
 (defconst c-ObjC-method-key
   (concat
@@ -1453,7 +1448,7 @@
  	comment-end   ""
  	comment-multi-line nil
  	c-conditional-key c-Java-conditional-key
- 	c-comment-start-regexp c-C++-comment-start-regexp
+ 	c-comment-start-regexp c-Java-comment-start-regexp
   	c-class-key c-Java-class-key
 	c-method-key c-Java-method-key
 	c-double-slash-is-comments-p t
@@ -1597,6 +1592,11 @@
 
 
 ;; macros must be defined before first use
+(defmacro c-add-syntax (symbol &optional relpos)
+  ;; a simple macro to append the syntax in symbol to the syntax list.
+  ;; try to increase performance by using this macro
+  (` (setq syntax (cons (cons (, symbol) (, relpos)) syntax))))
+
 (defmacro c-point (position)
   ;; Returns the value of point at certain commonly referenced POSITIONs.
   ;; POSITION can be one of the following symbols:
@@ -2611,7 +2611,9 @@
 				      (goto-char comment-start-place)
 				    (search-backward "/*"))
 				  (if (and (not c-hanging-comment-starter-p)
-					   (looking-at "/\\*[ \t]*$"))
+					   (looking-at
+					    (concat c-comment-start-regexp
+						    "[ \t]*$")))
 				      (forward-line 1))
 				  ;; Protect text before the comment
 				  ;; start by excluding it.  Add
@@ -3857,11 +3859,6 @@
 
 ;; defuns for calculating the syntactic state and indenting a single
 ;; line of C/C++/ObjC code
-(defmacro c-add-syntax (symbol &optional relpos)
-  ;; a simple macro to append the syntax in symbol to the syntax list.
-  ;; try to increase performance by using this macro
-  (` (setq syntax (cons (cons (, symbol) (, relpos)) syntax))))
-
 (defun c-most-enclosing-brace (state)
   ;; return the bufpos of the most enclosing brace that hasn't been
   ;; narrowed out by any enclosing class, or nil if none was found
@@ -4937,8 +4934,9 @@
 		  ;; we now have to figure out where this comment begins.
 		  (goto-char here)
 		  (back-to-indentation)
-		  (if (re-search-forward "[*]+/" (c-point 'eol) t)
-		      (forward-comment -1)
+		  (if (looking-at "[*]+/")
+		      (progn (goto-char (match-end 0))
+			     (forward-comment -1))
 		    (goto-char (cdr langelem))
 		    (back-to-indentation))))
 	    (- (current-column) cs-curcol))
@@ -5205,7 +5203,7 @@
 
 ;; defuns for submitting bug reports
 
-(defconst c-version "4.381"
+(defconst c-version "4.387"
   "CC Mode version number.")
 (defconst c-mode-help-address
   "bug-gnu-emacs@prep.ai.mit.edu, cc-mode-help@python.org"
@@ -5226,7 +5224,10 @@
   (interactive)
   ;; load in reporter
   (let ((reporter-prompt-for-summary-p t)
-	(reporter-dont-compact-list '(c-offsets-alist)))
+	(reporter-dont-compact-list '(c-offsets-alist))
+	(style c-indentation-style)
+	(hook c-special-indent-hook)
+	(c-features c-emacs-features))
     (and
      (if (y-or-n-p "Do you want to submit a report on CC Mode? ")
 	 t (message "") nil)
@@ -5253,6 +5254,7 @@
 		   'c-hanging-colons-alist
 		   'c-hanging-comment-starter-p
 		   'c-hanging-comment-ender-p
+		   'c-indent-comments-syntactically-p
 		   'c-tab-always-indent
 		   'c-recognize-knr-p
 		   'c-label-minimum-indentation
@@ -5265,15 +5267,15 @@
       (function
        (lambda ()
 	 (insert
-	  "Buffer Style: " c-indentation-style "\n\n"
-	  (if c-special-indent-hook
+	  "Buffer Style: " style "\n\n"
+	  (if hook
 	      (concat "\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n"
 		      "c-special-indent-hook is set to '"
-		      (format "%s" c-special-indent-hook)
+		      (format "%s" hook)
 		      ".\nPerhaps this is your problem?\n"
 		      "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n")
 	    "\n")
-	  (format "c-emacs-features: %s\n" c-emacs-features)
+	  (format "c-emacs-features: %s\n" c-features)
 	  )))
       nil
       "Dear Barry,"
--- a/lisp/mu/mu-cite.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/mu/mu-cite.el	Mon Aug 13 08:54:25 2007 +0200
@@ -6,7 +6,7 @@
 ;;         MINOURA Makoto <minoura@netlaputa.or.jp>
 ;;         Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
 ;; Maintainer: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-;; Version: $Revision: 1.6 $
+;; Version: $Revision: 1.7 $
 ;; Keywords: mail, news, citation
 
 ;; This file is part of MU (Message Utilities).
@@ -54,7 +54,7 @@
 ;;;
 
 (defconst mu-cite/RCS-ID
-  "$Id: mu-cite.el,v 1.6 1997/03/16 05:55:24 steve Exp $")
+  "$Id: mu-cite.el,v 1.7 1997/03/22 05:29:11 steve Exp $")
 (defconst mu-cite/version (get-version-string mu-cite/RCS-ID))
 
 
@@ -95,21 +95,8 @@
 ;;; @ field
 ;;;
 
-(defvar mu-cite/get-field-value-method-alist
-  (list (cons 'mh-letter-mode
-	      (function
-	       (lambda (name)
-		 (if (and (stringp mh-sent-from-folder)
-			  (numberp mh-sent-from-msg))
-		     (save-excursion
-		       (set-buffer mh-sent-from-folder)
-		       (set-buffer mh-show-buffer)
-		       (and (boundp 'mime::preview/article-buffer)
-			    (bufferp mime::preview/article-buffer)
-			    (set-buffer mime::preview/article-buffer))
-		       (std11-field-body name)
-		       ))
-		 )))))
+(defvar mu-cite/get-field-value-method-alist nil
+  "Alist major-mode vs. function to get field-body of header.")
 
 (defun mu-cite/get-field-value (name)
   (or (std11-field-body name)
--- a/lisp/packages/time.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/packages/time.el	Mon Aug 13 08:54:25 2007 +0200
@@ -38,6 +38,9 @@
 ;;;      the old mechanism for specifying what is to be displayed.
 ;;;      The starting variable to look at is `display-time-form-list'
 
+;;; Thanks to Mike Scheidler for the idea to make the time led's fore- and
+;;; background color customizable
+
 ;;; Code:
 
 (require 'itimer)
@@ -141,6 +144,11 @@
   (start-itimer "display-time" 'display-time-function
 		display-time-interval display-time-interval))
 
+(defun display-time-stop ()
+  (interactive)
+  (delete-itimer "display-time")
+  (setq display-time-string nil))
+
 (defcustom display-time-show-icons-maybe t
   "Use icons for time, load and mail status if possible
 and not specified different explicitely"
@@ -163,11 +171,37 @@
 :group 'display-time
 :type 'string)
 
-(defcustom display-time-display-pad t
-  "Wether the load indicator is displayed with a trapezoidal \"pad\"
-in the background"
+(defcustom display-time-display-pad  "grey35"
+  "How the load indicator's trapezoidal \"pad\" is to be displayed.
+This can be 'transparent or a string describing the color it should have"
+  :group 'display-time
+  :type '(choice :tag "Value"
+		 (const transparent)
+		 (string :tag "Color")))
+
+(defcustom display-time-display-time-foreground  "firebrick"
+  "How the time LEDs foreground is to be displayed.
+This can be 'modeline (foreground color of the Modeline)
+or a string describing the color it should have"
   :group 'display-time
-  :type 'boolean)
+  :type '(choice :tag "Value"
+		 (const modline)
+		 (string :tag "Color")))
+
+(defcustom display-time-display-time-background  'transparent
+  "How the time LEDs background is to be displayed.
+This can be 'transparent or a string describing the color it should have"
+  :group 'display-time
+  :type '(choice :tag "Value"
+		 (const transparent)
+		 (string :tag "Color")))
+
+
+(defvar display-time-display-pad-old nil)
+
+(defvar display-time-display-time-fg-old nil)
+
+(defvar display-time-display-time-bg-old nil)
 
 (defcustom display-time-load-list
   (list 0.2 0.5 0.8 1.1 1.8 2.6)
@@ -175,108 +209,149 @@
 which correspond to the six different icons to be displayed
 as a load indicator"
   :group 'display-time
-  :type '(list (number :tag "Threshold 1 load")
-	       (number :tag "Threshold 2 load")
-	       (number :tag "Threshold 3 load")
-	       (number :tag "Threshold 4 load")
-	       (number :tag "Threshold 5 load")
-	       (number :tag "Threshold 6 load")))
+  :type '(list (number :tag "Threshold 1")
+	       (number :tag "Threshold 2")
+	       (number :tag "Threshold 3")
+	       (number :tag "Threshold 4")
+	       (number :tag "Threshold 5")
+	       (number :tag "Threshold 6")))
 
 (defun display-time-string-to-char-list (str)
   (mapcar (function identity) str))
 
-(if (featurep 'xpm)
+(defun display-time-generate-load-glyphs (&optional force)
+  (let* ((pad-color (if (symbolp display-time-display-pad)
+			(list "pad-color" '(face-background 'modeline))
+		      (list "pad-color" display-time-display-pad)))
+	 (xpm-color-symbols (append (list pad-color) xpm-color-symbols)))
+    (if (and (featurep 'xpm)
+	     (or force (not (equal display-time-display-pad
+				   display-time-display-pad-old))))
+	(progn
+	  (setq display-time-load-0.0-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph
+		       (concat display-time-icons-dir "l-0.0.xpm"))))
+	  (setq display-time-load-0.5-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph
+		       (concat display-time-icons-dir "l-0.5.xpm"))))
+	  (setq display-time-load-1.0-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph
+		       (concat display-time-icons-dir "l-1.0.xpm"))))
+	  (setq display-time-load-1.5-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph
+		       (concat display-time-icons-dir "l-1.5.xpm"))))
+	  (setq display-time-load-2.0-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph
+		       (concat display-time-icons-dir "l-2.0.xpm"))))
+	  (setq display-time-load-2.5-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph
+		       (concat display-time-icons-dir "l-2.5.xpm"))))
+	  (setq display-time-load-3.0-glyph
+	  (cons (make-extent nil nil)
+		(make-glyph
+		 (concat display-time-icons-dir "l-3.0.xpm"))))
+	  (setq display-time-display-pad-old display-time-display-pad)
+	  ))))
+
+
+(defun display-time-generate-time-glyphs (&optional force)
+  (let* ((ledbg (if (symbolp display-time-display-time-background)
+		    (list "ledbg" '(face-background 'modeline))
+		  (list "ledbg" display-time-display-time-background)))
+	 (ledfg (if (symbolp display-time-display-time-foreground)
+		    (list "ledfg" '(face-foreground 'modeline))
+		  (list "ledfg" display-time-display-time-foreground)))
+	 (xpm-color-symbols (append (list ledbg)
+				    (list ledfg) xpm-color-symbols)))
+    (if (and (featurep 'xpm)
+	     (or force (not (equal display-time-display-time-background
+				   display-time-display-time-bg-old))
+		 (not (equal display-time-display-time-foreground
+			     display-time-display-time-fg-old))))
+	(progn
+	  (setq display-time-1-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph (concat display-time-icons-dir "1.xpm"))))
+	  (setq display-time-2-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph (concat display-time-icons-dir "2.xpm"))))
+	  (setq display-time-3-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph (concat display-time-icons-dir "3.xpm"))))
+	  (setq display-time-4-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph (concat display-time-icons-dir "4.xpm"))))
+	  (setq display-time-5-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph (concat display-time-icons-dir "5.xpm"))))
+	  (setq display-time-6-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph (concat display-time-icons-dir "6.xpm"))))
+	  (setq display-time-7-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph (concat display-time-icons-dir "7.xpm"))))
+	  (setq display-time-8-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph (concat display-time-icons-dir "8.xpm"))))
+	  (setq display-time-9-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph (concat display-time-icons-dir "9.xpm"))))
+	  (setq display-time-0-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph (concat display-time-icons-dir "0.xpm"))))
+	  (setq display-time-:-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph (concat display-time-icons-dir "dp.xpm"))))
+	  (setq display-time-am-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph (concat display-time-icons-dir "am.xpm"))))
+	  (setq display-time-pm-glyph
+		(cons (make-extent nil nil)
+		      (make-glyph (concat display-time-icons-dir "pm.xpm"))))
+	  (setq display-time-display-time-fg-old
+		display-time-display-time-foreground
+		display-time-display-time-bg-old
+		display-time-display-time-background)
+	  ))))
+
+  (if (featurep 'xpm)
     (progn
       (defvar display-time-mail-sign
 	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "letter.xpm"))))
+	      (make-glyph  (concat display-time-icons-dir "letter.xpm"))))
       (defvar display-time-no-mail-sign
 	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "no-letter.xpm"))))
-      (defvar  display-time-1-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "1.xpm"))))
-      (defvar display-time-2-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "2.xpm"))))
-      (defvar display-time-3-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "3.xpm"))))
-      (defvar display-time-4-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "4.xpm"))))
-      (defvar display-time-5-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "5.xpm"))))
-      (defvar display-time-6-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "6.xpm"))))
-      (defvar display-time-7-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "7.xpm"))))
-      (defvar display-time-8-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "8.xpm"))))
-      (defvar display-time-9-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "9.xpm"))))
-      (defvar display-time-0-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "0.xpm"))))
-      (defvar display-time-:-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "dp.xpm"))))
-      (defvar display-time-load-0.0-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "l-0.0.xpm"))))
-      (defvar display-time-load-0.5-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "l-0.5.xpm"))))
-      (defvar display-time-load-1.0-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "l-1.0.xpm"))))
-      (defvar display-time-load-1.5-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "l-1.5.xpm"))))
-      (defvar display-time-load-2.0-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "l-2.0.xpm"))))
-      (defvar display-time-load-2.5-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "l-2.5.xpm"))))
-      (defvar display-time-load-3.0-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "l-3.0.xpm"))))
-      (defvar display-time-load-0.0-jtl-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "l-jtl-0.0.xpm"))))
-      (defvar display-time-load-0.5-jtl-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "l-jtl-0.5.xpm"))))
-      (defvar display-time-load-1.0-jtl-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "l-jtl-1.0.xpm"))))
-      (defvar display-time-load-1.5-jtl-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "l-jtl-1.5.xpm"))))
-      (defvar display-time-load-2.0-jtl-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "l-jtl-2.0.xpm"))))
-      (defvar display-time-load-2.5-jtl-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "l-jtl-2.5.xpm"))))
-      (defvar display-time-load-3.0-jtl-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "l-jtl-3.0.xpm"))))
-      (defvar display-time-am-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "am.xpm"))))
-      (defvar display-time-pm-glyph
-	(cons (make-extent nil nil)
-	      (make-glyph	(concat display-time-icons-dir "pm.xpm"))))
+	      (make-glyph  (concat display-time-icons-dir "no-letter.xpm"))))
+      (defvar display-time-1-glyph  nil)
+      (defvar display-time-2-glyph  nil)
+      (defvar display-time-3-glyph  nil)
+      (defvar display-time-4-glyph  nil)
+      (defvar display-time-5-glyph  nil)
+      (defvar display-time-6-glyph  nil)
+      (defvar display-time-7-glyph  nil)
+      (defvar display-time-8-glyph  nil)
+      (defvar display-time-9-glyph  nil)
+      (defvar display-time-0-glyph  nil)
+      (defvar display-time-:-glyph  nil)
+      (defvar display-time-am-glyph nil)
+      (defvar display-time-pm-glyph nil)
+      (defvar display-time-load-0.0-glyph nil)
+      (defvar display-time-load-0.5-glyph nil)
+      (defvar display-time-load-1.0-glyph nil)
+      (defvar display-time-load-1.5-glyph nil)
+      (defvar display-time-load-2.0-glyph nil)
+      (defvar display-time-load-2.5-glyph nil)
+      (defvar display-time-load-3.0-glyph nil)
+      (display-time-generate-time-glyphs 'force)
+      (display-time-generate-load-glyphs 'force)  
       ))
 
-
 (defun display-time-can-do-graphical-display (&optional textual)
   (and display-time-show-icons-maybe
        (not textual)
@@ -289,6 +364,7 @@
   (let ((list (display-time-string-to-char-list time-string))
 	elem tmp)
     (if (not (display-time-can-do-graphical-display textual)) time-string 
+      (display-time-generate-time-glyphs)
       (while (setq elem (pop list))
 	(push (eval (intern-soft (concat "display-time-"
 					 (char-to-string elem)
@@ -308,11 +384,11 @@
 	result elem)
     (if (not (display-time-can-do-graphical-display textual))
 	load-string
+      (display-time-generate-load-glyphs)
       (while (>= load-number (cdr (setq elem (pop alist))))
 	(setq result (eval (intern-soft (concat
 					 "display-time-load-"
 					 (number-to-string (car elem))
-					 (if display-time-display-pad "-jtl")
 					 "-glyph")))))
       result)))
 
@@ -410,7 +486,7 @@
 	      
 mail-text:     The same as above, but will not use a glyph"
   :group 'display-time
-  :type '(repeat (choice :tag "Toggle Symbol/String"
+  :type '(repeat (choice :tag "Symbol/String"
 			 (const :tag "Date" date)
 			 (const :tag "Time" time)
 			 (const :tag "Time (text)" time-text)
--- a/lisp/prim/auto-autoloads.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/prim/auto-autoloads.el	Mon Aug 13 08:54:25 2007 +0200
@@ -1204,7 +1204,7 @@
  
  For example:
  
-   (setq dired-compresssion-method-alist
+   (setq dired-compression-method-alist
          (cons '(frobnicate \".frob\" (\"frob\") (\"frob\" \"-d\") \"-f\")
                dired-compression-method-alist))
    => ((frobnicate \".frob\" (\"frob\") (\"frob\" \"-d\")) 
@@ -1221,7 +1221,7 @@
 Can contain even `F', `b', `i' and `s'.")
 
 (defvar dired-chown-program (if (memq system-type '(hpux dgux usg-unix-v)) "chown" "/etc/chown") "\
-*Name of chown command (usully `chown' or `/etc/chown').")
+*Name of chown command (usually `chown' or `/etc/chown').")
 
 (defvar dired-gnutar-program nil "\
 *If non-nil, name of the GNU tar executable (e.g. \"tar\" or \"gnutar\").
@@ -1362,6 +1362,47 @@
 
 ;;;***
 
+;;;### (autoloads nil "efs-cu" "efs/efs-cu.el")
+
+(defvar efs-path-root-regexp "^/[^/:]+:" "\
+Regexp to match the `/user@host:' root of an efs full path.")
+
+;;;***
+
+;;;### (autoloads nil "efs-dump" "efs/efs-dump.el")
+
+(setq file-name-handler-alist (cons (cons efs-path-root-regexp 'efs-file-handler-function) file-name-handler-alist))
+
+;;;***
+
+;;;### (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" "\
+For a given HOST and USER, set or change the associated PASSWORD." t nil)
+
+(autoload 'efs-root-file-name-all-completions "efs-netrc" nil nil nil)
+
+(autoload 'efs-root-file-name-completion "efs-netrc" nil nil nil)
+
+;;;***
+
+;;;### (autoloads (efs-report-bug) "efs-report" "efs/efs-report.el")
+
+(autoload 'efs-report-bug "efs-report" "\
+Submit a bug report for efs." t nil)
+
+;;;***
+
+;;;### (autoloads (efs-file-handler-function efs-nslookup-host) "efs" "efs/efs.el")
+
+(autoload 'efs-nslookup-host "efs" "\
+Attempt to resolve the given HOSTNAME using nslookup if possible." t nil)
+
+(autoload 'efs-file-handler-function "efs" "\
+Function to call special file handlers for remote files." nil nil)
+
+;;;***
+
 ;;;### (autoloads (electric-buffer-list) "ebuff-menu" "electric/ebuff-menu.el")
 
 (autoload 'electric-buffer-list "ebuff-menu" "\
@@ -3678,7 +3719,7 @@
 ;;;### (autoloads (ksh-mode) "ksh-mode" "modes/ksh-mode.el")
 
 (autoload 'ksh-mode "ksh-mode" "\
-ksh-mode $Revision: 1.16 $ - Major mode for editing (Bourne, Korn or Bourne again)
+ksh-mode $Revision: 1.17 $ - Major mode for editing (Bourne, Korn or Bourne again)
 shell scripts.
 Special key bindings and commands:
 \\{ksh-mode-map}
@@ -4953,7 +4994,7 @@
 
 (autoload 'vhdl-mode "vhdl-mode" "\
 Major mode for editing VHDL code.
-vhdl-mode $Revision: 1.16 $
+vhdl-mode $Revision: 1.17 $
 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
--- a/lisp/prim/custom-load.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/prim/custom-load.el	Mon Aug 13 08:54:25 2007 +0200
@@ -97,7 +97,7 @@
 (put 'message-insertion 'custom-loads '("message"))
 (put 'wp 'custom-loads '("cus-edit"))
 (put 'message-faces 'custom-loads '("message"))
-(put 'w3 'custom-loads '("w3-cus"))
+(put 'w3 'custom-loads '("w3-cus" "w3-script"))
 (put 'gnus-score-files 'custom-loads '("gnus-score"))
 (put 'gnus-summary-marks 'custom-loads '("gnus-sum"))
 (put 'picons 'custom-loads '("gnus-picon"))
@@ -107,3 +107,4 @@
 (put 'message-buffers 'custom-loads '("message"))
 (put 'editing 'custom-loads '("cus-edit"))
 (put 'gnus-article-mime 'custom-loads '("gnus-art" "gnus-sum"))
+(put 'w3-scripting 'custom-loads '("w3-script"))
--- a/lisp/tm/tm-edit.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/tm/tm-edit.el	Mon Aug 13 08:54:25 2007 +0200
@@ -6,7 +6,7 @@
 ;;         MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Maintainer: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Created: 1994/08/21 renamed from mime.el
-;; Version: $Revision: 1.6 $
+;; Version: $Revision: 1.7 $
 ;; Keywords: mail, news, MIME, multimedia, multilingual
 
 ;; This file is part of tm (Tools for MIME).
@@ -120,7 +120,7 @@
 ;;;
 
 (defconst mime-editor/RCS-ID
-  "$Id: tm-edit.el,v 1.6 1997/02/16 01:29:32 steve Exp $")
+  "$Id: tm-edit.el,v 1.7 1997/03/22 05:29:22 steve Exp $")
 
 (defconst mime-editor/version (get-version-string mime-editor/RCS-ID))
 
@@ -1760,16 +1760,17 @@
 	     (tag (buffer-substring beg end))
 	     )
 	(delete-region beg end)
-	(setq contype (mime-editor/get-contype tag))
-	(setq encoding (mime-editor/get-encoding tag))
-	(insert (concat prefix "--" boundary "\n"))
-	(save-restriction
-	  (narrow-to-region (point)(point))
-	  (insert "Content-Type: " contype "\n")
-	  (if encoding
-	      (insert "Content-Transfer-Encoding: " encoding "\n"))
-	  (mime/encode-message-header)
-	  )
+ 	(let ((contype (mime-editor/get-contype tag))
+ 	      (encoding (mime-editor/get-encoding tag))
+ 	      )
+	  (insert (concat prefix "--" boundary "\n"))
+	  (save-restriction
+	    (narrow-to-region (point)(point))
+	    (insert "Content-Type: " contype "\n")
+	    (if encoding
+		(insert "Content-Transfer-Encoding: " encoding "\n"))
+	    (mime/encode-message-header)
+	    ))
 	t)))
 
 (defun mime-editor/translate-region (beg end &optional boundary multipart)
--- a/lisp/tm/tm-file.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/tm/tm-file.el	Mon Aug 13 08:54:25 2007 +0200
@@ -1,10 +1,10 @@
 ;;; tm-file.el --- tm-view internal method for file extraction
 
-;; Copyright (C) 1995,1996 Free Software Foundation, Inc.
+;; Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; modified by Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-;; Version: $Id: tm-file.el,v 1.3 1996/12/29 00:15:13 steve Exp $
+;; Version: $Id: tm-file.el,v 1.4 1997/03/22 05:29:23 steve Exp $
 ;; Keywords: mail, news, MIME, multimedia, file, extract
 
 ;; This file is part of tm (Tools for MIME).
@@ -60,17 +60,7 @@
     (save-excursion
       (set-buffer tmp-buf)
       (mime-decode-region (point-min)(point-max) encoding)
-      (let ((coding-system-for-write 'no-conversion)
-	    (mc-flag nil)                   ; for Mule
-	    (file-coding-system
-	     (if (featurep 'mule) *noconv*))
-	    kanji-flag                      ; for NEmacs
-	    (emx-binary-mode t)             ; for OS/2
-	    jka-compr-compression-info-list ; for jka-compr
-	    jam-zcat-filename-list          ; for jam-zcat
-	    require-final-newline)
-	(write-file filename)
-	)
+      (as-binary-output-file (write-file filename))
       (kill-buffer tmp-buf)
       )))
 
--- a/lisp/tm/tm-play.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/tm/tm-play.el	Mon Aug 13 08:54:25 2007 +0200
@@ -4,7 +4,7 @@
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Created: 1995/9/26 (separated from tm-view.el)
-;; Version: $Id: tm-play.el,v 1.6 1997/03/16 05:55:43 steve Exp $
+;; Version: $Id: tm-play.el,v 1.7 1997/03/22 05:29:24 steve Exp $
 ;; Keywords: mail, news, MIME, multimedia
 
 ;; This file is part of tm (Tools for MIME).
@@ -273,7 +273,17 @@
 	(cons t (mime-charset-to-coding-system default-mime-charset))
 	))
 
-(cond (running-mule-merged-emacs
+(cond ((boundp 'MULE) ; for MULE 2.3 or older
+       (defun mime-article::write-region (start end file)
+	 (let ((file-coding-system
+		(cdr
+		 (or (assq major-mode mime-article/coding-system-alist)
+		     (assq t mime-article/coding-system-alist)
+		     ))))
+	   (write-region start end file)
+	   ))
+       )
+      ((featurep 'mule) ; for Emacs/mule and XEmacs/mule
        (defun mime-article::write-region (start end file)
 	 (let ((coding-system-for-write
 		(cdr
@@ -283,18 +293,7 @@
 	   (write-region start end file)
 	   ))
        )
-      ((or (boundp 'MULE)
-	   running-xemacs-with-mule)
-       (defun mime-article::write-region (start end file)
-	 (let ((file-coding-system
-		(cdr
-		 (or (assq major-mode mime-article/coding-system-alist)
-		     (assq t mime-article/coding-system-alist)
-		     ))))
-	   (write-region start end file)
-	   ))
-       )
-      ((boundp 'NEMACS)
+      ((boundp 'NEMACS) ; for NEmacs
        (defun mime-article::write-region (start end file)
 	 (let ((kanji-fileio-code
 		(cdr
@@ -304,7 +303,7 @@
 	   (write-region start end file)
 	   ))
        )
-      (t
+      (t ; for Emacs 19 or older and XEmacs without mule
        (defalias 'mime-article::write-region 'write-region)
        ))
 
--- a/lisp/tm/tm-vm.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/tm/tm-vm.el	Mon Aug 13 08:54:25 2007 +0200
@@ -9,7 +9,7 @@
 ;;         Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch>
 ;; Maintainer: Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch>
 ;; Created: 1994/10/29
-;; Version: $Revision: 1.5 $
+;; Version: $Revision: 1.6 $
 ;; Keywords: mail, MIME, multimedia, multilingual, encoded-word
 
 ;; This file is part of tm (Tools for MIME).
@@ -46,7 +46,7 @@
 (require 'vm-summary)
 (require 'vm-menu)
 (require 'vm-toolbar)
-
+(require 'vm-mime)
 
 ;;; @ Variables
 
@@ -103,7 +103,7 @@
 ;;; @@ System/Information variables
 
 (defconst tm-vm/RCS-ID
-  "$Id: tm-vm.el,v 1.5 1997/02/16 01:29:35 steve Exp $")
+  "$Id: tm-vm.el,v 1.6 1997/03/22 05:29:25 steve Exp $")
 (defconst tm-vm/version (get-version-string tm-vm/RCS-ID))
 
 ; Ensure vm-menu-mail-menu gets properly defined *before* tm-vm/vm-emulation-map
@@ -286,8 +286,8 @@
 (define-key vm-mode-map "\et" 'tm-vm/toggle-preview-mode)
 
 ; Disable VM 6 built-in MIME handling
-(setq vm-display-using-mime nil)
-(setq vm-send-using-mime nil)
+(setq vm-display-using-mime nil
+      vm-send-using-mime nil)
 
 ;;; @ MIME encoded-words
 
@@ -298,30 +298,18 @@
 
 (or tm-vm/use-tm-patch
     (progn
-;;;
-(defvar tm-vm/chop-full-name-function 'tm-vm/default-chop-full-name)
-(setq vm-chop-full-name-function tm-vm/chop-full-name-function)
+(defadvice vm-compile-format (around tm activate)
+  "MIME decoding support through TM added."
+  (let ((vm-display-using-mime t))
+    ad-do-it))
 
-(defun tm-vm/default-chop-full-name (address)
-  (let* ((ret (vm-default-chop-full-name address))
-         (full-name (car ret))
-         )
-    (if (stringp full-name)
-        (cons (mime-eword/decode-string full-name)
-              (cdr ret))
-      ret)))
+(defadvice vm-tokenized-summary-insert (around tm activate)
+  "MIME decoding support through TM added."
+  (let ((vm-display-using-mime t))
+    ad-do-it))
 
-(defadvice vm-su-subject (after tm activate)
-  "MIME decoding support through TM added."
-  (setq ad-return-value (mime-eword/decode-string ad-return-value)))
-
-(defadvice vm-su-full-name (after tm activate)
-  "MIME decoding support through TM added."
-  (setq ad-return-value (mime-eword/decode-string ad-return-value)))
-
-(defadvice vm-su-to-names (after tm activate)
-  "MIME decoding support through TM added."
-  (setq ad-return-value (mime-eword/decode-string ad-return-value)))
+(fset 'vm-decode-mime-encoded-words-in-string 'mime-eword/decode-string)
+(fset 'vm-reencode-mime-encoded-words-in-string 'mime-eword/encode-string)
 
 ))
 
@@ -398,6 +386,12 @@
 
 ;;; @ MIME Viewer
 
+(setq mime-viewer/code-converter-alist 
+      (append
+       (list (cons 'vm-mode 'mime-charset/decode-buffer)
+	     (cons 'vm-virtual-mode 'mime-charset/decode-buffer))
+       mime-viewer/code-converter-alist))
+
 ;;; @@ MIME-Preview buffer management
 
 (defvar tm-vm/system-state nil)
@@ -743,11 +737,9 @@
            'vm-virtual-mode
            (function tm-vm/following-method))
 
-
 (set-alist 'mime-viewer/quitting-method-alist
            'vm-mode
            'tm-vm/quit-view-message)
-
 (set-alist 'mime-viewer/quitting-method-alist
            'vm-virtual-mode
            'tm-vm/quit-view-message)
@@ -1204,7 +1196,9 @@
           ))))
 
 (defadvice vm-forward-message (around tm-aware activate)
-  "Extended to support rfc1521 multipart digests and to work properly in MIME-Preview buffers."
+  "Extended to support rfc1521 digests (roughly equivalent to what
+VM does when vm-forwarding-digest-type is 'mime but using message/rfc822
+when appropriate."
   (if (not (equal vm-forwarding-digest-type "rfc1521"))
       ad-do-it
     (if mime::preview/article-buffer
--- a/lisp/tm/tmh-comp.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/tm/tmh-comp.el	Mon Aug 13 08:54:25 2007 +0200
@@ -6,7 +6,7 @@
 ;;         OKABE Yasuo <okabe@kudpc.kyoto-u.ac.jp>
 ;; Maintainer: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Created: 1996/2/29 (separated from tm-mh-e.el)
-;; Version: $Id: tmh-comp.el,v 1.4 1997/02/02 05:06:21 steve Exp $
+;; Version: $Id: tmh-comp.el,v 1.5 1997/03/22 05:29:25 steve Exp $
 ;; Keywords: mail, MH, MIME, multimedia, encoded-word, multilingual
 
 ;; This file is part of tm (Tools for MIME).
@@ -225,12 +225,9 @@
 		     (if (get-buffer name)
 			 (throw 'tag (pop-to-buffer name))
 		       )
-		     (let ((file-coding-system-for-read *noconv*)
-			   (filename
-			    (mh-msg-filename msg mh-draft-folder)
-			    ))
+		     (let ((filename (mh-msg-filename msg mh-draft-folder)))
 		       (set-buffer (get-buffer-create name))
-		       (insert-file-contents filename)
+		       (as-binary-input-file (insert-file-contents filename))
 		       (setq buffer-file-name filename)
 		       (setq code-conversion t)
 		       )
@@ -241,9 +238,9 @@
 		     name))
 		  (t
 		   (prog1
-		       (let ((file-coding-system-for-read *noconv*))
-			 (mh-read-draft "clean-up" (mh-msg-filename msg) nil)
-			 )
+		       (as-binary-input-file
+			(mh-read-draft "clean-up" (mh-msg-filename msg) nil)
+			)
 		     (setq code-conversion t)
 		     ))))
 	   )
@@ -518,6 +515,31 @@
  'mh-insert-letter 'tm-mh-e/insert-letter mh-letter-mode-map)
 
 
+;;; @ for mu-cite
+;;;
+
+(call-after-loaded
+ 'mu-cite
+ (function
+  (lambda ()
+    (set-alist 'mu-cite/get-field-value-method-alist
+	       'mh-letter-mode
+	       (function
+		(lambda (name)
+		  (if (and (stringp mh-sent-from-folder)
+			   (numberp mh-sent-from-msg))
+		      (save-excursion
+			(set-buffer mh-sent-from-folder)
+			(set-buffer mh-show-buffer)
+			(and (boundp 'mime::preview/article-buffer)
+			     (bufferp mime::preview/article-buffer)
+			     (set-buffer mime::preview/article-buffer))
+			(std11-field-body name)
+			))
+		  )))
+    )))
+
+		   
 ;;; @ end
 ;;;
 
--- a/lisp/version.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/version.el	Mon Aug 13 08:54:25 2007 +0200
@@ -26,7 +26,7 @@
 (defconst emacs-version "19.15" "\
 Version numbers of this version of Emacs.")
 
-(setq emacs-version (purecopy (concat emacs-version " XEmacs Lucid (beta102)")))
+(setq emacs-version (purecopy (concat emacs-version " XEmacs Lucid (beta103)")))
 
 (defconst emacs-major-version
   (progn (or (string-match "^[0-9]+" emacs-version)
--- a/lisp/vm/vm-autoload.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/vm/vm-autoload.el	Mon Aug 13 08:54:25 2007 +0200
@@ -2192,7 +2192,7 @@
 
 (autoload (quote vm-mode) "vm-startup" "Major mode for reading mail.
 
-This is VM 6.20.
+This is VM 6.21.
 
 Commands:
    h - summarize folder contents
--- a/lisp/vm/vm-folder.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/vm/vm-folder.el	Mon Aug 13 08:54:25 2007 +0200
@@ -2414,6 +2414,7 @@
 	       (condition-case ()
 		   (progn
 		     (delete-file buffer-file-name)
+		     (clear-visited-file-modtime)
 		     (message "%s removed" buffer-file-name))
 		 ;; no can do, oh well.
 		 (error nil)))
--- a/lisp/vm/vm-mime.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/vm/vm-mime.el	Mon Aug 13 08:54:25 2007 +0200
@@ -384,7 +384,9 @@
 	    (cond ((= char ?\n)
 		   (vm-insert-char char 1 nil work-buffer)
 		   (setq cols 0))
-		  ((and (= char 32) (not (= ?\n (char-after (1+ inputpos)))))
+		  ((and (= char 32)
+			(not (= (1+ inputpos) end))
+			(not (= ?\n (char-after (1+ inputpos)))))
 		   (vm-insert-char char 1 nil work-buffer)
 		   (vm-increment cols))
 		  ((or (< char 33) (> char 126) (= char 61)
@@ -2575,7 +2577,10 @@
 		   (delete-char 1)))
 		((stringp object)
 		 (let ((overridding-file-coding-system 'no-conversion))
-		   (insert-file-contents-literally object))))
+		   (insert-before-markers " ")
+		   (forward-char -1)
+		   (insert-file-contents-literally object)
+		   (delete-char 1))))
 	  ;; gather information about the object from the extent.
 	  (if (setq already-mimed (vm-extent-property e 'vm-mime-encoded))
 	      (setq layout (vm-mime-parse-entity
--- a/lisp/vm/vm-startup.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/vm/vm-startup.el	Mon Aug 13 08:54:25 2007 +0200
@@ -275,7 +275,7 @@
 (defun vm-mode (&optional read-only)
   "Major mode for reading mail.
 
-This is VM 6.20.
+This is VM 6.21.
 
 Commands:
    h - summarize folder contents
--- a/lisp/vm/vm-version.el	Mon Aug 13 08:54:02 2007 +0200
+++ b/lisp/vm/vm-version.el	Mon Aug 13 08:54:25 2007 +0200
@@ -2,7 +2,7 @@
 
 (provide 'vm-version)
 
-(defconst vm-version "6.20"
+(defconst vm-version "6.21"
   "Version number of VM.")
 
 (defun vm-version ()
--- a/src/buffer.c	Mon Aug 13 08:54:02 2007 +0200
+++ b/src/buffer.c	Mon Aug 13 08:54:25 2007 +0200
@@ -980,6 +980,8 @@
 	{
 	  int count = specpdl_depth ();
 	  /* lock_file() and unlock_file() currently use current_buffer */
+	  /* #### - dmoore, what if lock_file or unlock_file kill
+	     the current buffer? */
 	  record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
 	  set_buffer_internal (buf);
 	  if (!already && !NILP (flag))
@@ -1300,14 +1302,14 @@
      to kill the buffer.  This must be done after the questions
      since anything can happen within yes-or-no-p.  */
 
+  /* Might have been deleted during the last question above */
+  if (!BUFFER_LIVE_P (b))
+    return Qnil;
+
   /* Don't kill the minibuffer now current.  */
   if (EQ (buf, XWINDOW (minibuf_window)->buffer))
     return Qnil;
 
-  /* Might have been deleted during the last question above */
-  if (!BUFFER_LIVE_P (b))
-    return Qnil;
-
   /* When we kill a base buffer, kill all its indirect buffers.
      We do it at this stage so nothing terrible happens if they
      ask questions or their hooks get errors.  */
@@ -1336,8 +1338,23 @@
   /* Now there is no question: we can kill the buffer.  */
 
 #ifdef CLASH_DETECTION
-  /* Unlock this buffer's file, if it is locked.  */
+  /* Unlock this buffer's file, if it is locked.  unlock_buffer
+     can both GC and kill the current buffer, and wreak general
+     havok by running lisp code. */
+  GCPRO1 (buf);
   unlock_buffer (b);
+  UNGCPRO;
+  b = XBUFFER (buf);
+
+  if (!BUFFER_LIVE_P (b))
+    return Qnil;
+
+  if (b == current_buffer)
+    {
+      Fset_buffer (Fother_buffer (buf, Qnil, Qnil));
+      if (b == current_buffer)
+	return Qnil;
+    }
 #endif /* CLASH_DETECTION */
 
   {
--- a/src/device-x.c	Mon Aug 13 08:54:02 2007 +0200
+++ b/src/device-x.c	Mon Aug 13 08:54:25 2007 +0200
@@ -99,8 +99,8 @@
 /*                          helper functions                            */
 /************************************************************************/
 
-struct device *
-get_device_from_display (Display *dpy)
+static struct device *
+get_device_from_display_1 (Display *dpy)
 {
   Lisp_Object devcons, concons;
 
@@ -111,11 +111,25 @@
 	return d;
     }
 
-  /* Only devices we are actually managing should ever be used as an
-     argument to this function. */
-  abort ();
+  return 0;
+}
+
+struct device *
+get_device_from_display (Display *dpy)
+{
+  struct device *d = get_device_from_display_1 (dpy);
 
-  return 0; /* suppress compiler warning */
+  if (!d) {
+    /* This isn't one of our displays.  Let's crash? */
+    stderr_out
+      ("\n%s: Fatal X Condition.  Asked about display we don't own: \"%s\"\n",
+       (STRINGP (Vinvocation_name) ?
+	(char *) XSTRING_DATA (Vinvocation_name) : "xemacs"),
+       DisplayString (dpy) ? DisplayString (dpy) : "???");
+    abort();
+  }
+
+  return d;
 }
 
 struct device *
@@ -578,8 +592,12 @@
 {
   /* This function can GC */
   Lisp_Object dev;
-  struct device *d = get_device_from_display (disp);
-  XSETDEVICE (dev, d);
+  struct device *d = get_device_from_display_1 (disp);
+
+  if (d)
+    XSETDEVICE (dev, d);
+  else
+    dev = Qnil;
 
   if (NILP (find_nonminibuffer_frame_not_on_device (dev)))
     {
@@ -607,7 +625,8 @@
          QLength (disp));
     }
 
-  enqueue_magic_eval_event (io_error_delete_device, dev);
+  if (d)
+    enqueue_magic_eval_event (io_error_delete_device, dev);
 
   return 0;
 }
--- a/src/editfns.c	Mon Aug 13 08:54:02 2007 +0200
+++ b/src/editfns.c	Mon Aug 13 08:54:25 2007 +0200
@@ -631,20 +631,42 @@
   return Qnil;
 }
 
-DEFUN ("char-after", Fchar_after, 1, 2, 0, /*
+DEFUN ("char-after", Fchar_after, 0, 2, 0, /*
 Return character in BUFFER at position POS.
 POS is an integer or a buffer pointer.
 If POS is out of range, the value is nil.
 If BUFFER is nil, the current buffer is assumed.
+if POS is nil, the value of point is assumed.
 */
        (pos, buffer))
 {
   struct buffer *b = decode_buffer (buffer, 1);
-  Bufpos n = get_buffer_pos_char (b, pos, GB_NO_ERROR_IF_BAD);
+  Bufpos n = (NILP (pos) ? BUF_PT (b) :
+	      get_buffer_pos_char (b, pos, GB_NO_ERROR_IF_BAD));
 
   if (n < 0 || n == BUF_ZV (b))
     return Qnil;
-  return (make_char (BUF_FETCH_CHAR (b, n)));
+  return make_char (BUF_FETCH_CHAR (b, n));
+}
+
+DEFUN ("char-before", Fchar_before, 0, 2, 0, /*
+Return character in BUFFER before position POS.
+POS is an integer or a buffer pointer.
+If POS is out of range, the value is nil.
+If BUFFER is nil, the current buffer is assumed.
+if POS is nil, the value of point is assumed.
+*/
+       (pos, buffer))
+{
+  struct buffer *b = decode_buffer (buffer, 1);
+  Bufpos n = ((NILP (pos) ? BUF_PT (b) :
+	       get_buffer_pos_char (b, pos, GB_NO_ERROR_IF_BAD)));
+
+  n--;
+  
+  if (n < BUF_BEGV (b))
+    return Qnil;
+  return make_char (BUF_FETCH_CHAR (b, n));
 }
 
 
@@ -2086,6 +2108,7 @@
   DEFSUBR (Ffollowing_char);
   DEFSUBR (Fpreceding_char);
   DEFSUBR (Fchar_after);
+  DEFSUBR (Fchar_before);
   DEFSUBR (Finsert);
   DEFSUBR (Finsert_string);
   DEFSUBR (Finsert_before_markers);
--- a/src/fileio.c	Mon Aug 13 08:54:02 2007 +0200
+++ b/src/fileio.c	Mon Aug 13 08:54:25 2007 +0200
@@ -112,6 +112,11 @@
 DOESNT_RETURN
 report_file_error (CONST char *string, Lisp_Object data)
 {
+  /* #### dmoore - This uses current_buffer, better make sure no one
+     has GC'd the current buffer.  File handlers are giving me a headache
+     maybe I'll just always protect current_buffer around all of those
+     calls. */
+
   /* mrb: #### Needs to be fixed at a lower level; errstring needs to
      be MULEized.  The following at least prevents a crash... */
   Lisp_Object errstring = build_ext_string (strerror (errno), FORMAT_BINARY);
@@ -375,6 +380,16 @@
 }
 
 static Lisp_Object
+call2_check_string_or_nil (Lisp_Object fn, Lisp_Object arg0, Lisp_Object arg1)
+{
+  /* This function can GC */
+  Lisp_Object result = call2 (fn, arg0, arg1);
+  if (!NILP (result))
+    CHECK_STRING (result);
+  return (result);
+}
+
+static Lisp_Object
 call3_check_string (Lisp_Object fn, Lisp_Object arg0, 
                     Lisp_Object arg1, Lisp_Object arg2)
 {
@@ -405,14 +420,8 @@
      call the corresponding file handler.  */
   handler = Ffind_file_name_handler (file, Qfile_name_directory);
   if (!NILP (handler))
-    {
-      Lisp_Object retval = call2 (handler, Qfile_name_directory,
-				  file);
-
-      if (!NILP (retval))
-	CHECK_STRING (retval);
-      return retval;
-    }
+    return (call2_check_string_or_nil (handler, Qfile_name_directory,
+				       file));
 
 #ifdef FILE_SYSTEM_CASE
   file = FILE_SYSTEM_CASE (file);
@@ -880,6 +889,7 @@
   Bufbyte *tmp, *defdir;
 #endif /* DOS_NT */
   Lisp_Object handler;
+  struct gcpro gcpro1;
   
   CHECK_STRING (name);
 
@@ -908,7 +918,11 @@
 
   if (!NILP (defalt))
     {
+      struct gcpro gcpro1;
+
+      GCPRO1 (defalt);		/* might be current_buffer->directory */
       handler = Ffind_file_name_handler (defalt, Qexpand_file_name);
+      UNGCPRO;
       if (!NILP (handler))
 	return call3 (handler, Qexpand_file_name, name, defalt);
     }
@@ -931,7 +945,7 @@
     {
       struct gcpro gcpro1;
 
-      GCPRO1 (name);
+      GCPRO1 (defalt);		/* may be current_buffer->directory */
       defalt = Fexpand_file_name (defalt, Qnil);
       UNGCPRO;
     }
@@ -944,6 +958,8 @@
   name = FILE_SYSTEM_CASE (name);
 #endif
 
+  /* #### dmoore - this is ugly, clean this up.  Looks like nm
+     pointing into name should be safe during all of this, though. */
   nm = XSTRING_DATA (name);
   
 #ifdef MSDOS
@@ -1388,9 +1404,7 @@
 
   CHECK_STRING (filename);
 
-  GCPRO1 (filename);
   expanded_name = Fexpand_file_name (filename, defalt);
-  UNGCPRO;
 
   if (!STRINGP (expanded_name))
     return Qnil;
@@ -1525,14 +1539,8 @@
      call the corresponding file handler.  */
   handler = Ffind_file_name_handler (string, Qsubstitute_in_file_name);
   if (!NILP (handler))
-    {
-      Lisp_Object retval = call2 (handler, Qsubstitute_in_file_name,
-				  string);
-
-      if (!NILP (retval))
-	CHECK_STRING (retval);
-      return retval;
-    }
+    return (call2_check_string_or_nil (handler, Qsubstitute_in_file_name,
+				       string));
 
   nm = XSTRING_DATA (string);
 #ifdef MSDOS
@@ -1981,18 +1989,16 @@
   /* This function can GC */
   char dir [MAXPATHLEN];
   Lisp_Object handler;
-
   struct gcpro gcpro1;
   
-  GCPRO1 (dirname);
   CHECK_STRING (dirname);
   dirname = Fexpand_file_name (dirname, Qnil);
 
+  GCPRO1 (dirname);
   handler = Ffind_file_name_handler (dirname, Qmake_directory_internal);
   UNGCPRO;
   if (!NILP (handler))
-    return (call2 (handler, Qmake_directory_internal,
-		   dirname));
+    return (call2 (handler, Qmake_directory_internal, dirname));
  
   if (XSTRING_LENGTH (dirname) > (sizeof (dir) - 1))
     {
@@ -2028,10 +2034,11 @@
   Lisp_Object handler;
   struct gcpro gcpro1;
   
+  CHECK_STRING (dirname);
+
   GCPRO1 (dirname);
-  CHECK_STRING (dirname);
-  dirname =
-    Fdirectory_file_name (Fexpand_file_name (dirname, Qnil));
+  dirname = Fexpand_file_name (dirname, Qnil);
+  dirname =  Fdirectory_file_name (dirname);
 
   handler = Ffind_file_name_handler (dirname, Qdelete_directory);
   UNGCPRO;
@@ -2054,10 +2061,10 @@
   Lisp_Object handler;
   struct gcpro gcpro1;
   
-  GCPRO1 (filename);
   CHECK_STRING (filename);
   filename = Fexpand_file_name (filename, Qnil);
 
+  GCPRO1 (filename);
   handler = Ffind_file_name_handler (filename, Qdelete_file);
   UNGCPRO;
   if (!NILP (handler))
@@ -2547,10 +2554,16 @@
 	    ? Qt : Qnil);
 
 
+  GCPRO1 (abspath);
   dir = Ffile_name_directory (abspath);
+  UNGCPRO;
 #if defined (VMS) || defined (MSDOS)
   if (!NILP (dir))
-    dir = Fdirectory_file_name (dir);
+    {
+      GCPRO1(dir);
+      dir = Fdirectory_file_name (dir);
+      UNGCPRO;
+    }
 #endif /* VMS or MSDOS */
   return (check_writable (!NILP (dir) ? (char *) XSTRING_DATA (dir)
 			  : "")
@@ -2622,7 +2635,7 @@
   Lisp_Object handler;
   struct gcpro gcpro1;
   
-  GCPRO1 (filename);
+  GCPRO1 (current_buffer->directory);
   abspath = expand_and_dir_to_file (filename,
 				    current_buffer->directory);
   UNGCPRO;
@@ -2661,6 +2674,8 @@
     return call2 (handler, Qfile_accessible_directory_p,
 		  filename);
 
+  /* #### dmoore - this gcpro on filename should be unneccesary since
+     the caller should ahve already protected it. */
   GCPRO1 (filename);
   if (NILP (Ffile_directory_p (filename)))
     {
@@ -2678,15 +2693,20 @@
 */
        (filename))
 {
-  REGISTER Lisp_Object abspath;
+  Lisp_Object abspath;
   struct stat st;
   Lisp_Object handler;
-
+  struct gcpro gcpro1;
+
+  GCPRO1 (current_buffer->directory);
   abspath = expand_and_dir_to_file (filename, current_buffer->directory);
+  UNGCPRO;
 
   /* If the file name has special constructs in it,
      call the corresponding file handler.  */
+  GCPRO1 (abspath);
   handler = Ffind_file_name_handler (abspath, Qfile_regular_p);
+  UNGCPRO;
   if (!NILP (handler))
     return call2 (handler, Qfile_regular_p, abspath);
 
@@ -2706,7 +2726,7 @@
   Lisp_Object handler;
   struct gcpro gcpro1;
   
-  GCPRO1 (filename);
+  GCPRO1 (current_buffer->directory);
   abspath = expand_and_dir_to_file (filename,
 				    current_buffer->directory);
   UNGCPRO;
@@ -2738,9 +2758,9 @@
   /* This function can GC */
   Lisp_Object abspath;
   Lisp_Object handler;
-  struct gcpro gcpro1, gcpro2;
+  struct gcpro gcpro1;
   
-  GCPRO2 (filename, mode);
+  GCPRO1 (current_buffer->directory);
   abspath = Fexpand_file_name (filename, current_buffer->directory);
   CHECK_INT (mode);
   UNGCPRO;
@@ -2815,22 +2835,20 @@
   struct stat st;
   int mtime1;
   Lisp_Object handler;
-  struct gcpro gcpro1, gcpro2;
+  struct gcpro gcpro1, gcpro2, gcpro3;
 
   CHECK_STRING (file1);
   CHECK_STRING (file2);
 
   abspath1 = Qnil;
-  GCPRO2 (abspath1, file2);
-  abspath1 = expand_and_dir_to_file (file1,
-				     current_buffer->directory);
-  abspath2 = expand_and_dir_to_file (file2,
-				     current_buffer->directory);
-  UNGCPRO;
+  abspath2 = Qnil;
+
+  GCPRO3 (abspath1, abspath2, current_buffer->directory);
+  abspath1 = expand_and_dir_to_file (file1, current_buffer->directory);
+  abspath2 = expand_and_dir_to_file (file2, current_buffer->directory);
 
   /* If the file name has special constructs in it,
      call the corresponding file handler.  */
-  GCPRO2 (abspath1, abspath2);
   handler = Ffind_file_name_handler (abspath1, Qfile_newer_than_file_p);
   if (NILP (handler))
     handler = Ffind_file_name_handler (abspath2, Qfile_newer_than_file_p);
@@ -2885,12 +2903,13 @@
   int saverrno = 0;
   Charcount inserted = 0;
   int speccount;
-  struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
+  struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
   Lisp_Object handler = Qnil, val;
   int total;
   Bufbyte read_buf[READ_BUF_SIZE];
   int mc_count;
   struct buffer *buf = current_buffer;
+  Lisp_Object curbuf;
   int not_regular = 0;
 
   if (buf->base_buffer && ! NILP (visit))
@@ -2901,7 +2920,12 @@
 
   val = Qnil;
 
-  GCPRO4 (filename, val, visit, handler);
+  /* #### dmoore - should probably check in various places to see if
+     curbuf was killed and if so signal an error? */
+
+  XSETBUFFER (curbuf, buf);
+
+  GCPRO5 (filename, val, visit, handler, curbuf);
   
   mc_count = (NILP (replace)) ?
     begin_multiple_change (buf, BUF_PT  (buf), BUF_PT (buf)) :
@@ -3341,6 +3365,12 @@
   struct buffer *given_buffer;
   Bufpos start1, end1;
 
+  /* #### dmoore - if Fexpand_file_name or handlers kill the buffer,
+     we should signal an error rather than blissfully continuing
+     along.  ARGH, this function is going to lose lose lose.  We need
+     to protect the current_buffer from being destroyed, but the
+     multiple return points make this a pain in the butt. */
+
 #ifdef DOS_NT
   int buffer_file_type
     = NILP (current_buffer->buffer_file_type) ? O_TEXT : O_BINARY;
@@ -3355,6 +3385,7 @@
   {
     Lisp_Object handler;
     struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
+
     GCPRO5 (start, filename, visit, visit_file, lockname);
 
     if (visiting_other)
@@ -3394,8 +3425,11 @@
 #ifdef CLASH_DETECTION
   if (!auto_saving)
     {
-      struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
-      GCPRO4 (start, filename, visit_file, lockname);
+      Lisp_Object curbuf;
+      struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
+
+      XSETBUFFER (curbuf, current_buffer);
+      GCPRO5 (start, filename, visit_file, lockname, curbuf);
       lock_file (lockname);
       UNGCPRO;
     }
@@ -4018,11 +4052,10 @@
       Lisp_Object filename;
       struct stat st;
       Lisp_Object handler;
-      struct gcpro gcpro1, gcpro2;
+      struct gcpro gcpro1, gcpro2, gcpro3;
       
-      GCPRO2 (filename, time_list);
-      filename = Fexpand_file_name (current_buffer->filename,
-				    Qnil);
+      GCPRO3 (filename, time_list, current_buffer->filename);
+      filename = Fexpand_file_name (current_buffer->filename, Qnil);
 
       /* If the file name has special constructs in it,
 	 call the corresponding file handler.  */
@@ -4074,16 +4107,16 @@
   if (!set_time_to_use)
     {
       Lisp_Object filename = Qnil;
-      struct gcpro gcpro1, gcpro2;
-      GCPRO2 (buf, filename);
+      struct gcpro gcpro1;
+      GCPRO1 (filename);
+      /* #### dmoore - do we need to protect XBUFFER (buf)->filename?
+	 What if a ^(*&^&*^*& handler renames a buffer?  I think I'm
+	 getting a headache now. */
 
       if (STRINGP (XBUFFER (buf)->filename))
-        filename = Fexpand_file_name (XBUFFER (buf)->filename,
-				      Qnil);
+        filename = Fexpand_file_name (XBUFFER (buf)->filename, Qnil);
       else
         filename = Qnil;
-  
-      UNGCPRO;
 
       if (!NILP (filename) && !NILP (Ffile_exists_p (filename)))
         {
@@ -4091,7 +4124,6 @@
 
 	  /* If the file name has special constructs in it,
 	     call the corresponding file handler.  */
-	  GCPRO1 (filename);
 	  handler = Ffind_file_name_handler (filename, Qset_buffer_modtime);
 	  UNGCPRO;
 	  if (!NILP (handler))
@@ -4106,11 +4138,14 @@
 	    }
         }
       else
-	time_to_use = time ((time_t *) 0);
+	{
+	  UNGCPRO;
+  	  time_to_use = time ((time_t *) 0);
+	}
     }
 
   XBUFFER (buf)->modtime = time_to_use;
-
+  
   return Qnil;
 }
 
--- a/src/filelock.c	Mon Aug 13 08:54:02 2007 +0200
+++ b/src/filelock.c	Mon Aug 13 08:54:25 2007 +0200
@@ -196,7 +196,11 @@
 void
 lock_file (Lisp_Object fn)
 {
-  /* This function can GC */
+  /* This function can GC. */
+  /* dmoore - and can destroy current_buffer and all sorts of other
+     mean nasty things with pointy teeth.  If you call this make sure
+     you protect things right. */
+
   REGISTER Lisp_Object attack, orig_fn;
   REGISTER char *lfname;
   struct gcpro gcpro1, gcpro2;
@@ -335,6 +339,11 @@
 void
 unlock_file (Lisp_Object fn)
 {
+  /* This function can GC. */
+  /* dmoore - and can destroy current_buffer and all sorts of other
+     mean nasty things with pointy teeth.  If you call this make sure
+     you protect things right. */
+
   REGISTER char *lfname;
   if (NILP (Vlock_directory) || NILP (Vsuperlock_file)) return;
   CHECK_STRING (fn);
@@ -391,9 +400,13 @@
 void
 unlock_all_files (void)
 {
-  REGISTER Lisp_Object tail;
+  /* This function can GC. */
+
+  Lisp_Object tail;
   REGISTER struct buffer *b;
+  struct gcpro gcpro1;
 
+  GCPRO1 (tail);
   for (tail = Vbuffer_alist; GC_CONSP (tail);
        tail = XCDR (tail))
     {
@@ -402,6 +415,7 @@
 	  BUF_SAVE_MODIFF (b) < BUF_MODIFF (b))
 	unlock_file (b->file_truename);
     }
+  UNGCPRO;
 }
 
 
@@ -413,6 +427,10 @@
        (fn))
 {
   /* This function can GC */
+  /* dmoore - and can destroy current_buffer and all sorts of other
+     mean nasty things with pointy teeth.  If you call this make sure
+     you protect things right. */
+
   if (NILP (fn))
     fn = current_buffer->file_truename;
   CHECK_STRING (fn);
@@ -428,6 +446,11 @@
 */
        ())
 {
+  /* This function can GC */
+  /* dmoore - and can destroy current_buffer and all sorts of other
+     mean nasty things with pointy teeth.  If you call this make sure
+     you protect things right. */
+
   if (BUF_SAVE_MODIFF (current_buffer) < BUF_MODIFF (current_buffer)
       && STRINGP (current_buffer->file_truename))
     unlock_file (current_buffer->file_truename);
@@ -440,6 +463,10 @@
 void
 unlock_buffer (struct buffer *buffer)
 {
+  /* This function can GC */
+  /* dmoore - and can destroy current_buffer and all sorts of other
+     mean nasty things with pointy teeth.  If you call this make sure
+     you protect things right. */
   if (BUF_SAVE_MODIFF (buffer) < BUF_MODIFF (buffer)
       && STRINGP (buffer->file_truename))
     unlock_file (buffer->file_truename);
--- a/src/insdel.c	Mon Aug 13 08:54:02 2007 +0200
+++ b/src/insdel.c	Mon Aug 13 08:54:25 2007 +0200
@@ -1374,10 +1374,18 @@
 			  int lockit)
 {
   /* This function can GC */
+  /* dmoore - This function can also kill the buffer buf, the current
+     buffer, and do anything it pleases.  So if you call it, be
+     careful. */
+  Lisp_Object buffer;
+  struct gcpro gcpro1;
+
   barf_if_buffer_read_only (buf, start, end);
 
   /* if this is the first modification, see about locking the buffer's
      file */
+  XSETBUFFER (buffer, buf);
+  GCPRO1 (buffer);
   if (!NILP (buf->filename) && lockit &&
       BUF_SAVE_MODIFF (buf) >= BUF_MODIFF (buf))
     {
@@ -1386,8 +1394,6 @@
 	/* Make binding buffer-file-name to nil effective.  */
 	lock_file (buf->file_truename);
 #else
-      Lisp_Object buffer;
-      XSETBUFFER (buffer, buf);
       /* At least warn if this file has changed on disk since it was visited.*/
       if (NILP (Fverify_visited_file_modtime (buffer))
 	  && !NILP (Ffile_exists_p (buf->filename)))
@@ -1395,6 +1401,11 @@
 			 buf->filename);
 #endif /* not CLASH_DETECTION */
     }
+  UNGCPRO;
+
+  /* #### dmoore - is this reasonable in case of buf being killed above? */
+  if (!BUFFER_LIVE_P (buf))
+    return;
 
   signal_before_change (buf, start, end);
 
--- a/src/keymap.c	Mon Aug 13 08:54:02 2007 +0200
+++ b/src/keymap.c	Mon Aug 13 08:54:25 2007 +0200
@@ -2381,8 +2381,11 @@
 
 	      if (!EQ (buffer, Vmouse_grabbed_buffer)) /* already pushed */
 		{
+		  Lisp_Object map = XBUFFER (buffer)->keymap;
+
 		  get_relevant_minor_maps (buffer, &closure);
-		  relevant_map_push (XBUFFER (buffer)->keymap, &closure);
+		  if (!NILP(map))
+		    relevant_map_push (map, &closure);
 		}
 	    }
 	}
@@ -2621,6 +2624,8 @@
   assert (EVENTP (event0));
 
   nmaps = get_relevant_keymaps (event0, countof (maps), maps);
+  if (nmaps > countof (maps))
+    nmaps = countof (maps);
   return (process_event_binding_result
 	  (lookup_events (event0, nmaps, maps, accept_default)));
 }