CVS update by michaels packages/xemacs-packages/efs, Makefile.efs, efs-cms.el, efs-defun.el, efs-dl.el, efs-fnh.el, efs-ka9q.el, efs-ms-unix.el, efs-netware.el, efs-plan9.el, efs-ti-twenex.el, efs-vos.el ...

xemacs-cvs at xemacs.org xemacs-cvs at xemacs.org
Fri Oct 12 11:16:38 EDT 2007


  User: michaels
  Date: 07/10/12 17:16:38

  Modified:    packages/xemacs-packages/efs ChangeLog LISTS Makefile
                        Makefile.efs README efs-auto.el efs-cms-knet.el
                        efs-cms.el efs-coke.el efs-cp-p.el efs-cu.el
                        efs-defun.el efs-dired-mule.el efs-dired.el
                        efs-dl.el efs-dos-distinct.el efs-dump.el
                        efs-fnh.el efs-guardian.el efs-gwp.el efs-hell.el
                        efs-ka9q.el efs-kerberos.el efs-mpe.el
                        efs-ms-unix.el efs-mts.el efs-mvs.el efs-netrc.el
                        efs-netware.el efs-nos-ve.el efs-ovwrt.el efs-pc.el
                        efs-plan9.el efs-report.el efs-ti-explorer.el
                        efs-ti-twenex.el efs-tops-20.el efs-vms.el
                        efs-vos.el efs-x19.15.el efs.el efs.texi
Log:
EFS 1.24

Revision  Changes    Path
1.42      +107 -16   XEmacs/packages/xemacs-packages/efs/ChangeLog

Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/ChangeLog,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -p -r1.41 -r1.42
--- ChangeLog	2004/10/04 08:54:56	1.41
+++ ChangeLog	2007/10/12 15:16:29	1.42
@@ -1,7 +1,98 @@
-2004-10-04  Norbert Koch  <viteno at xemacs.org>
+2007-10-10  Michael Sperber  <sperber at deinprogramm.de>
 
-	* Makefile (VERSION): XEmacs package 1.33 released.
+	* EFS 1.24.
 
+2007-08-27  Michael Sperber  <sperber at informatik.uni-tuebingen.de>
+
+	* efs-cu.el (efs): 
+	(efs-behavior): 
+	(efs-auto-save): 
+	(efs-gateways): 
+	(efs-programs): 
+	(efs-parameters): 
+	(efs-hooks): Move these customization groups from efs.el.
+	(efs-vms-host-regexp): 
+	(efs-cms-host-regexp): 
+	(efs-mts-host-regexp): 
+	(efs-ti-explorer-host-regexp): 
+	(efs-ti-twenex-host-regexp): 
+	(efs-sysV-unix-host-regexp): 
+	(efs-bsd-unix-host-regexp): 
+	(efs-next-unix-host-regexp): 
+	(efs-unix-host-regexp): 
+	(efs-dumb-unix-host-regexp): 
+	(efs-super-dumb-unix-host-regexp): 
+	(efs-dos-host-regexp): 
+	(efs-apollo-unix-host-regexp): 
+	(efs-mvs-host-regexp): 
+	(efs-tops-20-host-regexp): 
+	(efs-mpe-host-regexp): 
+	(efs-ka9q-host-regexp):
+	(efs-dos-distinct-host-regexp): 
+	(efs-os2-host-regexp): 
+	(efs-vos-host-regexp): 
+	(efs-hell-host-regexp): 
+	(efs-guardian-host-regexp): 
+	(efs-ms-unix-host-regexp): 
+	(efs-plan9-host-regexp): 
+	(efs-cms-knet-host-regexp): 
+	(efs-nos-ve-host-regexp): 
+	(efs-netware-host-regexp): 
+	(efs-dumb-apollo-unix-regexp): Customize.
+
+2007-08-21  Mike Sperber  <sperber at informatik.uni-tuebingen.de>
+
+	* efs.el (efs-skip-msgs-alist): Ignore IPv6 "No route to host"
+	error messages from the client.
+
+2007-05-10  Noah Friedman  <friedman at splode.com>
+
+	* efs.el (efs-require): Handle extra arguments beyond feature and
+	filename portably.  Emacs 22 has 'noerror' argument.
+
+	* efs-netrc.el (efs-root-file-name-completion): Handle optional
+	arg `predicate' for Emacs 22.
+
+2007-02-05  Michael Sperber  <sperber at informatik.uni-tuebingen.de>
+
+	* efs-dired.el (efs-dired-copy-file): Enable recursive copying.
+
+2007-01-03  Mike Sperber  <sperber at informatik.uni-tuebingen.de>
+
+	* efs.el (efs-month-and-time-regexp): Copy change for Breton month
+	names from Dired.
+
+2006-04-12  Mike Sperber  <sperber at informatik.uni-tuebingen.de>
+
+	* efs.el (efs-ftp-explicit-empty-file-name): Add, to handle
+	*BSD-specific kludge for ftp clients that don't accept an explicit
+	empty file name.
+
+2005-04-09  Mike Sperber  <sperber at informatik.uni-tuebingen.de>
+
+	* efs.texi (Getting help): Note new mailing list.
+
+	* efs-report.el (efs-bug-address): New mailing list.
+
+	* efs.el (efs-process-scream-and-yell)
+	(efs-require-scream-and-yell): New mailing list.
+
+2005-01-14  Steve Youngs  <steve at sxemacs.org>
+
+	* efs-fnh.el (efs-handle-emacs-version): Use `emacs-*-version'
+	variables for version info instead of string-matching through
+	`emacs-version'.
+
+2005-01-23  Timothy OCallaghan <T.OCallaghan at elsevier.com>.
+
+	* efs-vms.el (efs-fix-path):
+	(efs-fix-dir-path): Make EFS work better for VMS hosts.
+
+2005-01-23  Michael Sperber  <sperber at informatik.uni-tuebingen.de>
+
+	* efs.el (efs-send-cmd): Kludge addition for VMS, based on a patch
+	by Timothy OCallaghan <T.OCallaghan at elsevier.com>.
+
 2004-10-02  Mike Sperber  <sperber at informatik.uni-tuebingen.de>
 
 	* EFS 1.23.
@@ -40,8 +131,8 @@
 2003-08-07  Mike Sperber  <sperber at informatik.uni-tuebingen.de>
 
 	* efs.el (efs-month-and-time-regexp): Rewrite to match Dired.
-	(efs-file-size-submatch): 
-	(efs-month-date-submatch): 
+	(efs-file-size-submatch):
+	(efs-month-date-submatch):
 	(efs-time-or-year-submatch): Add.
 	(efs-month-regexp-alist): Replaces `efs-month-alist'.  Should
 	handle lotsa more languages than before.
@@ -72,7 +163,7 @@
 
 2002-09-05  Katsumi Yamaoka  <yamaoka at jpl.org>
 
-	* efs.el (efs-load): 
+	* efs.el (efs-load):
 	(efs-require): Make `eval-after-load' work.
 
 2002-09-01  Michael Sperber [Mr. Preprocessor]  <sperber at informatik.uni-tuebingen.de>
@@ -92,7 +183,7 @@
 
 2002-08-27  Michael Sperber [Mr. Preprocessor]  <sperber at informatik.uni-tuebingen.de>
 
-	* efs-guardian.el (efs-fix-path): 
+	* efs-guardian.el (efs-fix-path):
 	(efs-split-guardian-path):
 	(efs-guardian-file-name-nondirectory):
 	(efs-fix-dir-path): Rewrite Guardian path handling based on
@@ -133,14 +224,14 @@
 
 2002-04-13  Jonathan Harris <jhar at tardis.ed.ac.uk>
 
-	* efs-dired.el (efs-dired-compress-file): 
-	* efs.el (efs-recover-file): 
+	* efs-dired.el (efs-dired-compress-file):
+	* efs.el (efs-recover-file):
 	* efs-cu.el (efs-chase-symlinks): Force proper use of
 	`efs-file-symlink-p'.
 
 2002-04-13  Bob Weiner <weiner at altrasoft.com>
 
-	* efs.el: 
+	* efs.el:
 	(efs-wipe-from-ls-cache):
 	(efs-substitute-in-file-name):
 	(efs-file-name-as-directory):
@@ -151,8 +242,8 @@
 
 2002-04-13  Michael Sperber [Mr. Preprocessor]  <sperber at informatik.uni-tuebingen.de>
 
-	* efs.el (efs-file-regular-p): 
-	(efs-internal-file-regular-p): 
+	* efs.el (efs-file-regular-p):
+	(efs-internal-file-regular-p):
 	* efs-guardian.el (efs-internal-file-regular-p): Added
 	`file-regular-p' for remote files.
 
@@ -292,9 +383,9 @@
 1998-10-27  Jan Vroonhof  <vroonhof at math.ethz.ch>
 
 	* efs.el: Require comint softly. Provide dummy if not
-		available (bare XEmacs)	
-	
-	* efs-netrc.el: Do not require passwd. Use autoload. 
+		available (bare XEmacs)
+
+	* efs-netrc.el: Do not require passwd. Use autoload.
 
 1999-10-19  Kirat Singh <singhki at jany.gs.com>
 
@@ -424,7 +515,7 @@
 
 1998-03-14  Michael Sperber [Mr. Preprocessor]  <sperber at informatik.uni-tuebingen.de>
 
-	* efs-dump.el: Pulled in necessary variables and autoloads. 
+	* efs-dump.el: Pulled in necessary variables and autoloads.
 
 	* dumped-lisp.el: Created.
 
@@ -509,8 +600,8 @@
 
 	* efs.el, efs-tops-20.el, efs-vos.el, efs-pc.el, efs-netware.el, efs-nos-ve.el, efs-mts.el, efs-mvs.el, efs-netrc.el, efs-mpe.el, efs-ms-unix.el, efs-hell.el, efs-ka9q.el, efs-dos-distinct.el, efs-guardian.el, efs-dired.el, efs-dl.el, efs-cms.el:
 	Remove preceding-char & following-char.
+
 
-	
 1997-04-25  Michael Sperber [Mr. Preprocessor]  <sperber at informatik.uni-tuebingen.de>
 
 	* efs.texi: Directory entry.



1.5       +6 -23     XEmacs/packages/xemacs-packages/efs/LISTS

Index: LISTS
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/LISTS,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -p -r1.4 -r1.5
--- LISTS	2001/05/15 07:20:09	1.4
+++ LISTS	2007/10/12 15:16:29	1.5
@@ -1,26 +1,9 @@
-There are several mailing lists relevant to efs.  If you wish to join
-a list, send e-mail to their -request address.
+The EFS mailing list discusses all aspects of EFS.  You can send
+messages to the list at
 
-  efs-bugs at hplb.hpl.hp.com
+elisp-code-efs at nongnu.org
 
-This is where all bug reports should go.  M-x efs-report-bug is the
-recommended way of sending bug reports about efs, and this will send by
-default to this address.
+You can subscribe, view the archives, and perform a number of other
+adminstrative tasks at:
 
-  efs-help at hplb.hpl.hp.com
-
-This is where general discussions about efs should go.  For beta-testing
-discussions, use efs-testers instead.
-
-  efs-testers at hplb.hpl.hp.com
-
-This is where discussions about beta testing efs should go.  Bugs should
-however be reported to efs-bugs. Patches for beta test bugs will be
-sent to this list.
-
-  efs-announce at hplb.hpl.hp.com
-
-This is where announcements such as new generally available releases of efs
-should go.
-
-Each of the lists have a -request address to join and leave the list.
+http://lists.nongnu.org/mailman/listinfo/elisp-code-efs



1.47      +1 -1      XEmacs/packages/xemacs-packages/efs/Makefile

Index: Makefile
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/Makefile,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -p -r1.46 -r1.47
--- Makefile	2004/10/04 08:54:56	1.46
+++ Makefile	2007/10/12 15:16:29	1.47
@@ -20,7 +20,7 @@
 include Makefile.efs
 
 VERSION = 1.33
-AUTHOR_VERSION = 1.23
+AUTHOR_VERSION = 1.24
 MAINTAINER = Mike Sperber <sperber at informatik.uni-tuebingen.de>
 PACKAGE = efs
 PKG_TYPE = regular



1.12      +1 -1      XEmacs/packages/xemacs-packages/efs/Makefile.efs

Index: Makefile.efs
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/Makefile.efs,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -p -r1.11 -r1.12
--- Makefile.efs	2004/10/02 14:05:57	1.11
+++ Makefile.efs	2007/10/12 15:16:30	1.12
@@ -1,7 +1,7 @@
 ###############################################################################
 #
 # File:         Makefile
-# Release:      $EFS release: 1.23 $
+# Release:      $EFS release: 1.24 $
 # Release:      $dired release: 7.11 $
 # Version:      #Revision: 1.9 $
 # RCS:



1.11      +1 -1      XEmacs/packages/xemacs-packages/efs/README

Index: README
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/README,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -p -r1.10 -r1.11
--- README	2004/10/02 14:05:57	1.10
+++ README	2007/10/12 15:16:30	1.11
@@ -1,4 +1,4 @@
-This is EFS 1.23
+This is EFS 1.24
 ================
 
 EFS is a system for transparent file-transfer between remote VMS, CMS,



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-auto.el

Index: efs-auto.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-auto.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-auto.el	2004/10/02 14:05:57	1.12
+++ efs-auto.el	2007/10/12 15:16:30	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-auto.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.8 $
 ;; RCS:          
 ;; Description:  Simple way of autoloading efs
@@ -34,7 +34,7 @@
 (require 'efs-fnh)
 
 (defconst efs-auto-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.8 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-cms-knet.el

Index: efs-cms-knet.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-cms-knet.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-cms-knet.el	2004/10/02 14:05:58	1.12
+++ efs-cms-knet.el	2007/10/12 15:16:30	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-cms-knet.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.1 $
 ;; RCS:          
 ;; Description:  CMS support for efs using KNET/VM server
@@ -21,7 +21,7 @@
 (require 'efs)
 
 (defconst efs-cms-knet-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.1 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-cms.el

Index: efs-cms.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-cms.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-cms.el	2004/10/02 14:05:58	1.12
+++ efs-cms.el	2007/10/12 15:16:30	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-cms.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.9 $
 ;; RCS:          
 ;; Description:  CMS support for efs
@@ -20,7 +20,7 @@
 (require 'efs)
 
 (defconst efs-cms-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.9 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-coke.el

Index: efs-coke.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-coke.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-coke.el	2004/10/02 14:05:58	1.12
+++ efs-coke.el	2007/10/12 15:16:30	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-coke.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.1 $
 ;; RCS:          
 ;; Description:  Coke Machine support for efs
@@ -20,7 +20,7 @@
 (require 'efs)
 
 (defconst efs-coke-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.1 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-cp-p.el

Index: efs-cp-p.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-cp-p.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-cp-p.el	2004/10/02 14:05:58	1.12
+++ efs-cp-p.el	2007/10/12 15:16:30	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-cp-p.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.2 $
 ;; RCS:          
 ;; Description:  Support for preserving file modtimes with copies. i.e. cp -p
@@ -22,7 +22,7 @@
 ;;;; Internal Variables
 
 (defconst efs-cp-p-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.1 $" 11 -2)))
 



1.13      +153 -58   XEmacs/packages/xemacs-packages/efs/efs-cu.el

Index: efs-cu.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-cu.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-cu.el	2004/10/02 14:05:58	1.12
+++ efs-cu.el	2007/10/12 15:16:30	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-cu.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.13 $
 ;; RCS:          
 ;; Description:  Common utilities needed by efs files.
@@ -18,6 +18,7 @@
 ;;;; Provisions and autoloads.
 
 (provide 'efs-cu)
+(require 'custom)
 (require 'backquote)
 (autoload 'efs-get-process "efs")
 (autoload 'efs-parse-netrc "efs-netrc")
@@ -53,7 +54,7 @@ user's curent login name is used.")
 ;;;; -------------------------------------------------------------
 
 (defconst efs-cu-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.13 $" 11 -2)))
 
@@ -95,92 +96,186 @@ additional arguments user, host, and rem
 ;; the part of the path to the left of this pattern.
 
 ;;;; -----------------------------------------------------------
+;;;; Customization groups
+;;;; -----------------------------------------------------------
+
+(defgroup efs nil
+  "Transparent ftp access."
+:group 'files)
+
+(defgroup efs-behavior nil
+  "User-visible aspects of EFS."
+:prefix "efs-"
+:group 'efs)
+
+(defgroup efs-auto-save nil
+  "EFS interaction with auto-save."
+:prefix "efs-"
+:group 'efs)
+
+(defgroup efs-gateways nil
+  "Using EFS via an ftp gateway."
+:prefix "efs-"
+:group 'efs)
+
+(defgroup efs-programs nil
+  "External programs used by EFS."
+:prefix "efs-"
+:group 'efs)
+
+(defgroup efs-parameters nil
+  "Behind-the-scenes parameters of EFS."
+:prefix "efs-"
+:group 'efs)
+
+(defgroup efs-hooks nil
+  "Hooks for EFS."
+:prefix "efs-"
+:group 'efs)
+
+;;;; -----------------------------------------------------------
 ;;;; Variables for multiple host type support
 ;;;; -----------------------------------------------------------
 
-(defvar efs-vms-host-regexp nil
-  "Regexp to match the names of hosts running VMS.")
-(defvar efs-cms-host-regexp nil
-  "Regexp to match the names of hosts running CMS.")
-(defvar efs-mts-host-regexp nil
-  "Regexp to match the names of hosts running MTS.")
-(defvar efs-ti-explorer-host-regexp nil
+(defcustom efs-vms-host-regexp nil
+  "Regexp to match the names of hosts running VMS."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-cms-host-regexp nil
+  "Regexp to match the names of hosts running CMS."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-mts-host-regexp nil
+  "Regexp to match the names of hosts running MTS."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-ti-explorer-host-regexp nil
   "Regexp to match the names of hosts running TI-EXPLORER.
-These are lisp machines.")
-(defvar efs-ti-twenex-host-regexp nil
+These are lisp machines."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-ti-twenex-host-regexp nil
   "Regexp to match the names of hosts running TI-TWENEX.
-These are lisp machines, and this should not be confused with DEC's TOPS-20.")
-(defvar efs-sysV-unix-host-regexp nil
+These are lisp machines, and this should not be confused with DEC's TOPS-20."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-sysV-unix-host-regexp nil
   "Regexp to match the names of sysV unix hosts.
 These are defined to be unix hosts which mark symlinks
-with a @ in an ls -lF listing.")
-(defvar efs-bsd-unix-host-regexp nil
+with a @ in an ls -lF listing."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-bsd-unix-host-regexp nil
   "Regexp to match the names of bsd unix hosts.
 These are defined to be unix hosts which do not mark symlinks
-with a @ in an ls -lF listing.")
-(defvar efs-next-unix-host-regexp nil
+with a @ in an ls -lF listing."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-next-unix-host-regexp nil
   "Regexp to match names of NeXT unix hosts.
 These are defined to be unix hosts which put a @ after the
-destination of a symlink when doing ls -lF listing.")
-(defvar efs-unix-host-regexp nil
+destination of a symlink when doing ls -lF listing."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-unix-host-regexp nil
   "Regexp to match names of unix hosts.
-I you know which type of unix, it is much better to set that regexp instead.")
-(defvar efs-dumb-unix-host-regexp nil
+I you know which type of unix, it is much better to set that regexp instead."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-dumb-unix-host-regexp nil
   "Regexp to match names of unix hosts which do not take ls switches.
-For these hosts we use the \"dir\" command.")
-(defvar efs-super-dumb-unix-host-regexp nil
+For these hosts we use the \"dir\" command."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-super-dumb-unix-host-regexp nil
   "Regexp to match names of unix hosts with FTP servers that cannot do a PWD.
 It is also assumed that these hosts do not accept ls switches, whether
-or not this is actually true.")
-(defvar efs-dos-host-regexp nil
-  "Regexp to match names of hosts running DOS.")
+or not this is actually true."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-dos-host-regexp nil
+  "Regexp to match names of hosts running DOS."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
 ;; In principal there is apollo unix support -- at least efs
 ;; should do the right thing. However, apollo ftp servers can be
 ;; very flakey, especially about accessing files by fullpaths.
 ;; Good luck.
-(defvar efs-apollo-unix-host-regexp nil
+(defcustom efs-apollo-unix-host-regexp nil
   "Regexp to match names of apollo unix hosts running Apollo's Domain.
 For these hosts we don't short-circuit //'s immediately following 
-\"/user at host:\"")
-(defvar efs-mvs-host-regexp nil
-  "Regexp to match names of hosts running MVS.")
-(defvar efs-tops-20-host-regexp nil
-  "Regexp to match names of hosts runninf TOPS-20.")
-(defvar efs-mpe-host-regexp nil
-  "Regexp to match hosts running the MPE operating system.")
-(defvar efs-ka9q-host-regexp nil
+\"/user at host:\""
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-mvs-host-regexp nil
+  "Regexp to match names of hosts running MVS."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-tops-20-host-regexp nil
+  "Regexp to match names of hosts runninf TOPS-20."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-mpe-host-regexp nil
+  "Regexp to match hosts running the MPE operating system."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-ka9q-host-regexp nil
   "Regexp to match hosts using the ka9q ftp server. 
-These may actually be running one of DOS, LINUX, or unix.")
-(defvar efs-dos-distinct-host-regexp nil
+These may actually be running one of DOS, LINUX, or unix."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-dos-distinct-host-regexp nil
   "Regexp to match DOS hosts using the Distinct FTP server.
 These are not treated as DOS hosts with a special listing format, because
-the Distinct FTP server uses unix-style path syntax.")
-(defvar efs-os2-host-regexp nil
-  "Regexp to match names of hosts running OS/2.")
-(defvar efs-vos-host-regexp nil
-  "Regexp to match hosts running the VOS operating system.")
-(defvar efs-hell-host-regexp nil
+the Distinct FTP server uses unix-style path syntax."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-os2-host-regexp nil
+  "Regexp to match names of hosts running OS/2."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-vos-host-regexp nil
+  "Regexp to match hosts running the VOS operating system."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-hell-host-regexp nil
   "Regexp to match hosts using the hellsoft ftp server.
-These map be either DOS PC's or Macs.")
+These map be either DOS PC's or Macs."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
 ;; The way that we implement the hellsoft support, it probably won't
 ;; work with Macs. This could probably be fixed, if enough people scream.
-(defvar efs-guardian-host-regexp nil
-  "Regexp to match hosts running Tandem's guardian operating system.")
+(defcustom efs-guardian-host-regexp nil
+  "Regexp to match hosts running Tandem's guardian operating system."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
 ;; Note that ms-unix is really an FTP server running under DOS.
 ;; It's not a type of unix.
-(defvar efs-ms-unix-host-regexp nil
-  "Regexp to match hosts using the Microsoft FTP server in unix mode.")
-(defvar efs-plan9-host-regexp nil
-  "Regexp to match hosts running ATT's Plan 9 operating system.")
-(defvar efs-cms-knet-host-regexp nil
-  "Regexp to match hosts running the CMS KNET FTP server.")
-(defvar efs-nos-ve-host-regexp nil
-  "Regexp to match hosts running NOS/VE.")
-(defvar efs-netware-host-regexp nil
-  "Regexp to match hosts running Novell Netware.")
-(defvar efs-dumb-apollo-unix-regexp nil
+(defcustom efs-ms-unix-host-regexp nil
+  "Regexp to match hosts using the Microsoft FTP server in unix mode."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-plan9-host-regexp nil
+  "Regexp to match hosts running ATT's Plan 9 operating system."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-cms-knet-host-regexp nil
+  "Regexp to match hosts running the CMS KNET FTP server."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-nos-ve-host-regexp nil
+  "Regexp to match hosts running NOS/VE."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-netware-host-regexp nil
+  "Regexp to match hosts running Novell Netware."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
+(defcustom efs-dumb-apollo-unix-regexp nil
   "Regexp to match dumb hosts running Apollo's Domain.
-These are hosts which do not accept switches to ls over FTP.")
+These are hosts which do not accept switches to ls over FTP."
+:group 'efs-parameters
+:type '(choice (const nil) regexp))
 
 ;;; Further host types:
 ;;



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-defun.el

Index: efs-defun.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-defun.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-defun.el	2004/10/02 14:05:58	1.12
+++ efs-defun.el	2007/10/12 15:16:30	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-defun.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.1 $
 ;; RCS:          
 ;; Description:  efs-defun allows for OS-dependent coding of functions
@@ -134,7 +134,7 @@
 ;;; Variables
 
 (defconst efs-defun-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.1 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-dired-mule.el

Index: efs-dired-mule.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-dired-mule.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-dired-mule.el	2004/10/02 14:05:59	1.12
+++ efs-dired-mule.el	2007/10/12 15:16:30	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-dired.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.2 $
 ;; RCS:          
 ;; Description:  Makes efs-dired.el work with MULE.
@@ -14,7 +14,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (defconst efs-dired-mule-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.2 $" 11 -2)))
 



1.12      +13 -6     XEmacs/packages/xemacs-packages/efs/efs-dired.el

Index: efs-dired.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-dired.el,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -p -r1.11 -r1.12
--- efs-dired.el	2004/10/02 14:05:59	1.11
+++ efs-dired.el	2007/10/12 15:16:31	1.12
@@ -2,8 +2,8 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-dired.el
-;; Release:      $efs release: 1.23 $
-;; Version:      #Revision: 1.32 $
+;; Release:      $efs release: 1.24 $
+;; Version:      #Revision: 1.33 $
 ;; RCS:          
 ;; Description:  Extends much of Dired to work under efs.
 ;; Authors:      Sebastian Kremer <sk at thp.uni-koeln.de>, 
@@ -22,7 +22,7 @@
 (autoload 'dired-shell-call-process "dired-shell")
 
 (defconst efs-dired-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.32 $" 11 -2)))
 
@@ -555,9 +555,16 @@ and most of efs's cached data to be wipe
   ;; Version of dired-copy-file for remote files.
   ;; Assumes that filenames are already expanded.
   (dired-handle-overwrite to)
-  (efs-copy-file-internal from (efs-ftp-path from) to (efs-ftp-path to)
-			  ok-flag dired-copy-preserve-time 0 cont nowait))
-
+  (let ((efs-dired-copy-file-cont
+	 (efs-cont (from to ok-flag preserve-time) (cont nowait)
+	   (efs-copy-file-internal from (efs-ftp-path from) to (efs-ftp-path to)
+				   ok-flag dired-copy-preserve-time 0 cont nowait))))     
+    (dired-copy-file-recursive 
+     (function
+      (lambda (from to ok-flag preserve-time)
+	(efs-call-cont efs-dired-copy-file-cont from to ok-flag preserve-time)))
+     from to ok-flag dired-copy-preserve-time t)))
+  
 (defun efs-dired-rename-file (from to ok-flag &optional cont nowait
 				   insert-subdir)
   ;; Version of dired-rename-file for remote files.



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-dl.el

Index: efs-dl.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-dl.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-dl.el	2004/10/02 14:05:59	1.12
+++ efs-dl.el	2007/10/12 15:16:31	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-dl.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.3 $
 ;; RCS:          
 ;; Description:  Unix descriptive listing support for efs
@@ -19,7 +19,7 @@
 (require 'efs)
 
 (defconst efs-dl-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.3 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-dos-distinct.el

Index: efs-dos-distinct.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-dos-distinct.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-dos-distinct.el	2004/10/02 14:05:59	1.12
+++ efs-dos-distinct.el	2007/10/12 15:16:31	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-dos-distinct.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.1 $
 ;; RCS:          
 ;; Description:  Distinct's DOS FTP server support for efs
@@ -21,7 +21,7 @@
 (require 'efs)
 
 (defconst efs-dos-distinct-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.1 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-dump.el

Index: efs-dump.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-dump.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-dump.el	2004/10/02 14:05:59	1.12
+++ efs-dump.el	2007/10/12 15:16:31	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-dump.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.2 $
 ;; RCS:
 ;; Description:  Install a bare-bones EFS hook into file-name-handler-alist
@@ -14,7 +14,7 @@
 (provide 'efs-dump)
 
 (defconst efs-dump-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.2 $" 11 -2)))
 



1.14      +14 -12    XEmacs/packages/xemacs-packages/efs/efs-fnh.el

Index: efs-fnh.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-fnh.el,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -p -r1.13 -r1.14
--- efs-fnh.el	2004/10/02 14:06:00	1.13
+++ efs-fnh.el	2007/10/12 15:16:31	1.14
@@ -2,8 +2,8 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-fnh.el
-;; Release:      $efs release: 1.23 $
-;; Version:      #Revision: 1.4 $
+;; Release:      $efs release: 1.24 $
+;; Version:      #Revision: 1.5 $
 ;; RCS:
 ;; Description:  Look for the emacs version, and install into
 ;;               the file-name-handler-alist
@@ -18,7 +18,7 @@
 (provide 'efs-fnh)
 
 (defconst efs-fnh-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.4 $" 11 -2)))
 
@@ -36,15 +36,17 @@ remote files.")
   (let ((ehev-match-data (match-data)))
     (unwind-protect
 	(let ((xemacsp (string-match "XEmacs" emacs-version))
-	      ver subver)
-	  (or (string-match "^\\([0-9]+\\)\\.\\([0-9]+\\)" emacs-version)
-	      (error "efs does not work with emacs version %s" emacs-version))
-	  (setq ver (string-to-int (substring emacs-version
-					      (match-beginning 1)
-					      (match-end 1)))
-		subver (string-to-int (substring emacs-version
-						 (match-beginning 2)
-						 (match-end 2))))
+	      (ver emacs-major-version)
+	      (subver emacs-minor-version))
+	  (unless ver
+	    (or (string-match "^\\([0-9]+\\)\\.\\([0-9]+\\)" emacs-version)
+		(error "efs does not work with emacs version %s" emacs-version))
+	    (setq ver (string-to-int (substring emacs-version
+						(match-beginning 1)
+						(match-end 1)))
+		  subver (string-to-int (substring emacs-version
+						   (match-beginning 2)
+						   (match-end 2)))))
 	  (cond
 	   
 	   ;; XEmacs (emacs-version looks like \"19.xx XEmacs\")



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-guardian.el

Index: efs-guardian.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-guardian.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-guardian.el	2004/10/02 14:06:00	1.12
+++ efs-guardian.el	2007/10/12 15:16:31	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-guardian.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.10 $
 ;; Description:  Guardian support for efs
 ;; Author:       Sandy Rutherford <sandy at math.ubc.ca>
@@ -20,7 +20,7 @@
 ;;; questions and debugging. Thanks.
 
 (defconst efs-guardian-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.9 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-gwp.el

Index: efs-gwp.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-gwp.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-gwp.el	2004/10/02 14:06:00	1.12
+++ efs-gwp.el	2007/10/12 15:16:31	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-gwp.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.1 $
 ;; RCS:          
 ;; Description:  Support for efs to use an interactive gateway.
@@ -75,7 +75,7 @@ since it matches the login banner.")
 ;;; Internal Variables
 
 (defconst efs-gwp-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.1 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-hell.el

Index: efs-hell.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-hell.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-hell.el	2004/10/02 14:06:00	1.12
+++ efs-hell.el	2007/10/12 15:16:31	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-hell.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.1 $
 ;; RCS:          
 ;; Description:  Hellsoft FTP server support for efs
@@ -20,7 +20,7 @@
 (require 'efs)
 
 (defconst efs-hell-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.1 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-ka9q.el

Index: efs-ka9q.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-ka9q.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-ka9q.el	2004/10/02 14:06:00	1.12
+++ efs-ka9q.el	2007/10/12 15:16:31	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-ka9q.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.2 $
 ;; RCS:          
 ;; Description:  KA9Q support for efs
@@ -21,7 +21,7 @@
 (require 'efs)
 
 (defconst efs-ka9q-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.2 $" 11 -2)))
 



1.12      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-kerberos.el

Index: efs-kerberos.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-kerberos.el,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -p -r1.11 -r1.12
--- efs-kerberos.el	2004/10/02 14:06:01	1.11
+++ efs-kerberos.el	2007/10/12 15:16:31	1.12
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-kerberos.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.1 $
 ;; RCS:
 ;; Description:  Support for Kerberos gateways.
@@ -19,7 +19,7 @@
 (require 'efs)
 
 (defconst efs-kerberos-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.1 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-mpe.el

Index: efs-mpe.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-mpe.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-mpe.el	2004/10/02 14:06:01	1.12
+++ efs-mpe.el	2007/10/12 15:16:31	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-mpe.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.8 $
 ;; RCS:          
 ;; Description:  MPE (HP3000) support for efs.
@@ -123,7 +123,7 @@ This can take a very long time on large 
 ;;; Internal Variables
 
 (defconst efs-mpe-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.8 $" 11 -2)))
 



1.12      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-ms-unix.el

Index: efs-ms-unix.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-ms-unix.el,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -p -r1.11 -r1.12
--- efs-ms-unix.el	2004/10/02 14:06:01	1.11
+++ efs-ms-unix.el	2007/10/12 15:16:31	1.12
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-ms-unix.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.1 $
 ;; RCS:          
 ;; Description:  efs support for the Microsoft PC FTP server in unix mode.
@@ -17,7 +17,7 @@
 (require 'efs)
 
 (defconst efs-ms-unix-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.1 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-mts.el

Index: efs-mts.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-mts.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-mts.el	2004/10/02 14:06:01	1.12
+++ efs-mts.el	2007/10/12 15:16:31	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-mts.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.1 $
 ;; RCS:          
 ;; Description:  MTS support for efs
@@ -20,7 +20,7 @@
 (require 'efs)
 
 (defconst efs-mts-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.1 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-mvs.el

Index: efs-mvs.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-mvs.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-mvs.el	2004/10/02 14:06:01	1.12
+++ efs-mvs.el	2007/10/12 15:16:32	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-mvs.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.4 $
 ;; RCS:          
 ;; Description:  MVS support for efs
@@ -24,7 +24,7 @@
 (require 'efs)
 
 (defconst efs-mvs-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.4 $" 11 -2)))
 



1.15      +9 -8      XEmacs/packages/xemacs-packages/efs/efs-netrc.el

Index: efs-netrc.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-netrc.el,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -p -r1.14 -r1.15
--- efs-netrc.el	2004/10/02 14:06:02	1.14
+++ efs-netrc.el	2007/10/12 15:16:32	1.15
@@ -2,9 +2,9 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-netrc.el
-;; Release:      $efs release: 1.23 $
-;; Version:      #Revision: 1.4 $
-;; RCS:          
+;; Release:      $efs release: 1.24 $
+;; Version:      #Revision: 1.5 $
+;; RCS:
 ;; Description:  Parses ~/.netrc file, and does completion in /.
 ;; Author:       Sandy Rutherford <sandy at ibm550.sissa.it>
 ;; Created:      Fri Jan 28 19:32:47 1994 by sandy on ibm550
@@ -35,7 +35,7 @@
 ;;;; ------------------------------------------------------------
 
 (defconst efs-netrc-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.4 $" 11 -2)))
 
@@ -187,7 +187,7 @@ give the null string for it. In lisp pro
 
 (defun efs-parse-netrc-group (&optional machine)
   ;; Extract the values for the tokens  "machine", "login", "password",
-  ;; "account" and "minidisk"  in the current buffer.  If successful, 
+  ;; "account" and "minidisk"  in the current buffer.  If successful,
   ;; record the information found.
   (let (data login)
     ;; Get a machine token.
@@ -383,14 +383,15 @@ Used when completion is done in the root
 
 
 ;;;###autoload
-(defun efs-root-file-name-completion (file dir)
+(defun efs-root-file-name-completion (file dir &optional predicate)
   ;; Calculates completions in the root directory to include remote hosts.
   (let ((file-name-handler-alist (efs-file-name-handler-alist-sans-fn
 				  'efs-root-handler-function)))
     (try-completion
      file
      (nconc (efs-generate-root-prefixes)
-	    (mapcar 'list (file-name-all-completions file "/"))))))
-
+            (mapcar 'list (if predicate
+                              (file-name-all-completions file "/" predicate)
+                            (file-name-all-completions file "/")))))))
 
 ;;; end of efs-netrc.el



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-netware.el

Index: efs-netware.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-netware.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-netware.el	2004/10/02 14:06:02	1.12
+++ efs-netware.el	2007/10/12 15:16:32	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-netware.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.5 $
 ;; RCS:          
 ;; Description:  efs support for the Novell Netware FTP server
@@ -22,7 +22,7 @@
 (require 'efs)
 
 (defconst efs-netware-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.5 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-nos-ve.el

Index: efs-nos-ve.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-nos-ve.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-nos-ve.el	2004/10/02 14:06:02	1.12
+++ efs-nos-ve.el	2007/10/12 15:16:32	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-nos-ve.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.2 $
 ;; RCS:          
 ;; Description:  efs support for NOS/VE
@@ -24,7 +24,7 @@
 ;;; providing imformation and testing.
 
 (defconst efs-nos-ve-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.2 $" 11 -2)))
 



1.14      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-ovwrt.el

Index: efs-ovwrt.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-ovwrt.el,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -p -r1.13 -r1.14
--- efs-ovwrt.el	2004/10/02 14:06:02	1.13
+++ efs-ovwrt.el	2007/10/12 15:16:32	1.14
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-ovwrt.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.3 $
 ;; RCS:
 ;; Description:  Utilities for overwriting functions with new definitions.
@@ -21,7 +21,7 @@
     (error)))
 
 (defconst efs-ovwrt-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.3 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-pc.el

Index: efs-pc.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-pc.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-pc.el	2004/10/02 14:06:02	1.12
+++ efs-pc.el	2007/10/12 15:16:32	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-pc.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.1 $
 ;; RCS:          
 ;; Description:  PC support for efs
@@ -29,7 +29,7 @@
 (require 'efs)
 
 (defconst efs-pc-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.1 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-plan9.el

Index: efs-plan9.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-plan9.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-plan9.el	2004/10/02 14:06:02	1.12
+++ efs-plan9.el	2007/10/12 15:16:32	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-plan9.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.1 $
 ;; RCS:          
 ;; Description:  efs support for the Plan 9 FTP Server
@@ -22,7 +22,7 @@
 (require 'efs)
 
 (defconst efs-plan9-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.1 $" 11 -2)))
 



1.14      +4 -4      XEmacs/packages/xemacs-packages/efs/efs-report.el

Index: efs-report.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-report.el,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -p -r1.13 -r1.14
--- efs-report.el	2004/10/02 14:06:03	1.13
+++ efs-report.el	2007/10/12 15:16:32	1.14
@@ -2,8 +2,8 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-report.el
-;; Release:      $efs release: 1.23 $
-;; Version:      #Revision: 1.10 $
+;; Release:      $efs release: 1.24 $
+;; Version:      #Revision: 1.11 $
 ;; RCS:          
 ;; Description:  Function to report efs bugs in a usable way.
 ;; Author:       Andy Norman, Dawn
@@ -20,7 +20,7 @@
 ;;; Variables
 
 (defconst efs-report-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.10 $" 11 -2)))
 
@@ -33,7 +33,7 @@
    "Fellow efs'ers:"
    "Greetings earthlings:"])
 
-(defvar efs-bug-address "efs-bugs at hplb.hpl.hp.com")
+(defvar efs-bug-address "elisp-code-efs at nongnu.org")
 
 (defconst efs-report-other-vars
   ;; List of variables needed for efs-report, that aren't generated below.



1.14      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-ti-explorer.el

Index: efs-ti-explorer.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-ti-explorer.el,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -p -r1.13 -r1.14
--- efs-ti-explorer.el	2004/10/02 14:06:03	1.13
+++ efs-ti-explorer.el	2007/10/12 15:16:32	1.14
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-ti-explorer.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.1 $
 ;; RCS:          
 ;; Description:  Explorer support for efs
@@ -20,7 +20,7 @@
 (require 'efs)
 
 (defconst efs-ti-explorer-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.1 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-ti-twenex.el

Index: efs-ti-twenex.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-ti-twenex.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-ti-twenex.el	2004/10/02 14:06:03	1.12
+++ efs-ti-twenex.el	2007/10/12 15:16:32	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-ti-twenex.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.1 $
 ;; RCS:          
 ;; Description:  Support for a TI lisp machine in Twenex emulation mode.
@@ -20,7 +20,7 @@
 (require 'efs)
 
 (defconst efs-ti-twenex-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.1 $" 11 -2)))
 



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-tops-20.el

Index: efs-tops-20.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-tops-20.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-tops-20.el	2004/10/02 14:06:03	1.12
+++ efs-tops-20.el	2007/10/12 15:16:33	1.13
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-tops-20.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.1 $
 ;; RCS:          
 ;; Description:  TOPS-20 support for efs
@@ -20,7 +20,7 @@
 (provide 'efs-tops-20)
 
 (defconst efs-tops-20-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.1 $" 11 -2)))
 



1.13      +15 -14    XEmacs/packages/xemacs-packages/efs/efs-vms.el

Index: efs-vms.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-vms.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-vms.el	2004/10/02 14:06:03	1.12
+++ efs-vms.el	2007/10/12 15:16:33	1.13
@@ -2,8 +2,8 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-vms.el
-;; Release:      $efs release: 1.23 $
-;; Version:      #Revision: 1.13 $
+;; Release:      $efs release: 1.24 $
+;; Version:      #Revision: 1.14 $
 ;; RCS:          
 ;; Description:  VMS support for efs
 ;; Authors:      Andy Norman, Joe Wells, Sandy Rutherford <sandy at itp.ethz.ch>
@@ -18,7 +18,7 @@
 (require 'efs)
 
 (defconst efs-vms-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.13 $" 11 -2)))
 
@@ -146,7 +146,9 @@
 	      (if (<= len 0)
 		  (setq dir nil)
 		(while (<= n len)
-		  (and (char-equal (aref dir n) ?/)
+		  (and (or (char-equal (aref dir n) ?/)
+                           (char-equal (aref dir n) ?\\)
+                           )
 		       (cond
 			((zerop n) (aset dir n ?\[))
 			((= n len) (aset dir n ?\]))
@@ -154,12 +156,10 @@
 		  (setq n (1+ n))))))
 	(concat drive dir file)))))
 
-;; It is important that this function barf for directories for which we know
-;; that we cannot possibly get a directory listing, such as "/" and "/DEV:/".
-;; This is because it saves an unnecessary FTP error, or possibly the listing
-;; might succeed, but give erroneous info. This last case is particularly
-;; likely for OS's (like MTS) for which we need to use a wildcard in order
-;; to list a directory.
+;; in vms the paths "/" and "/DEV:/" correspond to [000000] and dev:[000000]
+;; though you may not have permissions for these directories, if you do,
+;; then it mans you can explore the directory tree, rather than guess 
+;; subdirectory names
 
 (efs-defun efs-fix-dir-path vms (dir-path)
   ;; Convert path from UNIX-ish to VMS ready for a DIRectory listing.
@@ -167,11 +167,12 @@
   ;; think so, because expand-filename should have already short-circuited
   ;; them.
   (cond ((string-equal dir-path "/")
-	 (error "Cannot get listing for fictitious \"/\" directory."))
-	((string-match "^/[-A-Z0-9_$]+:/$" dir-path)
-	 (error "Cannot get listing for device."))
+	 (efs-fix-path 'vms "/000000/"))
+	((string-match "^\\(/[-A-Z0-9_$]+:/\\)$" dir-path)
+	 (efs-fix-path 'vms (concat dir-path "000000/")))
 	((efs-fix-path 'vms dir-path))))
-  
+;
+
 ;; These parsing functions are as general as possible because the syntax
 ;; of ftp listings from VMS hosts is a bit erratic. What saves us is that
 ;; the VMS filename syntax is so rigid. If they bomb on a listing in the



1.13      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-vos.el

Index: efs-vos.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-vos.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -r1.12 -r1.13
--- efs-vos.el	2004/10/02 14:06:03	1.12
+++ efs-vos.el	2007/10/12 15:16:33	1.13
@@ -3,7 +3,7 @@
 ;;
 ;; File:         efs-vos.el
 ;; Description:  VOS support for efs
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.1 $
 ;; RCS:          
 ;; Author:       Sandy Rutherford <sandy at ibm550.sissa.it>
@@ -25,7 +25,7 @@
 (require 'efs)
 
 (defconst efs-vos-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.1 $" 11 -2)))
 



1.12      +2 -2      XEmacs/packages/xemacs-packages/efs/efs-x19.15.el

Index: efs-x19.15.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-x19.15.el,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -p -r1.11 -r1.12
--- efs-x19.15.el	2004/10/02 14:06:03	1.11
+++ efs-x19.15.el	2007/10/12 15:16:33	1.12
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs-x19.15.el
-;; Release:      $efs release: 1.23 $
+;; Release:      $efs release: 1.24 $
 ;; Version:      #Revision: 1.2 $
 ;; RCS:          
 ;; Description:  efs support for XEmacs, versions 19.15, and later.
@@ -16,7 +16,7 @@
 (require 'efs-ovwrt)
 
 (defconst efs-x19\.15-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.2 $" 11 -2)))
 



1.23      +235 -256  XEmacs/packages/xemacs-packages/efs/efs.el

Index: efs.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs.el,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -p -r1.22 -r1.23
--- efs.el	2004/10/02 14:06:04	1.22
+++ efs.el	2007/10/12 15:16:33	1.23
@@ -2,28 +2,28 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:         efs.el
-;; Release:      $efs release: 1.23 $
-;; Version:      #Revision: 1.92 $
-;; RCS:          
+;; Release:      $efs release: 1.24 $
+;; Version:      #Revision: 1.93 $
+;; RCS:
 ;; Description:  Transparent FTP support for the original GNU Emacs
 ;;               from FSF and XEmacs
 ;; Authors:      Andy Norman <ange at hplb.hpl.hp.com>,
 ;;               Sandy Rutherford <sandy at ibm550.sissa.it>
-;;               Mike Sperber <sperber at informatik.uni-tuebingen.de> 
+;;               Mike Sperber <sperber at informatik.uni-tuebingen.de>
 ;; Created:      Thu Oct 12 14:00:05 1989 (as ange-ftp)
 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 ;;; The following restrictions apply to all of the files in the efs
 ;;; distribution.
-;;; 
+;;;
 ;;; Copyright (C) 1993  Andy Norman / Sandy Rutherford
 ;;; Copyright (C) 2003  Mike Sperber
 ;;;
 ;;; Authors:
 ;;;          Andy Norman (ange at hplb.hpl.hp.com)
 ;;;          Sandy Rutherford (sandy at ibm550.sissa.it)
-;;;          
+;;;
 ;;;          The authors of some of the sub-files of efs are different
 ;;;          from the above.  We are very grateful to people who have
 ;;;          contributed code to efs.
@@ -99,7 +99,7 @@
 ;;; substitute-in-file-name
 ;;; verify-visited-file-modtime
 ;;; write-region
-;;; 
+;;;
 ;;; The following functions are overloaded in efs.el, because they cannot
 ;;; be handled via the file-name-handler-alist.
 ;;;
@@ -107,10 +107,10 @@
 ;;; load
 ;;; read-file-name-internal (Emacs 18, only)
 ;;; require
-;;; 
+;;;
 ;;; The following dired functions are handled by hooking them into the
 ;;; the file-name-handler-alist. This is done in efs-dired.el.
-;;; 
+;;;
 ;;; efs-dired-compress-file
 ;;; eds-dired-print-file
 ;;; efs-dired-make-compressed-filename
@@ -120,7 +120,7 @@
 ;;; efs-dired-recursive-delete-directory
 ;;; efs-dired-uncache
 ;;; efs-dired-call-process
-;;; 
+;;;
 ;;; In efs-dired.el, the following dired functions are overloaded.
 ;;;
 ;;; dired-collect-file-versions
@@ -140,12 +140,12 @@
 ;;; dired-grep-load-hook
 
 ;;; LISPDIR ENTRY for the Elisp Archive:
-;;; 
+;;;
 ;;;    LCD Archive Entry:
 ;;;    efs|Andy Norman and Sandy Rutherford
 ;;;    |ange at hplb.hpl.hp.com and sandy at ibm550.sissa.it
 ;;;    |transparent FTP Support for GNU Emacs
-;;;    |$Date: 2004/10/02 14:06:04 $|$efs release: 1.23 $|
+;;;    |$Date: 2007/10/12 15:16:33 $|$efs release: 1.24 $|
 
 ;;; Host and listing type notation:
 ;;;
@@ -180,7 +180,7 @@
 ;;; Host and listing type hierarchy:
 ;;;
 ;;; unknown: unix, dumb-unix, sysV-unix, bsd-unix, next-unix, apollo-unix,
-;;;          ka9q, dos-distinct, unix:dl, hell, 
+;;;          ka9q, dos-distinct, unix:dl, hell,
 ;;;          super-dumb-unix, dumb-apollo-unix
 ;;; unix:    sysV-unix, bsd-unix, next-unix, apollo-unix, unix:dl
 ;;; dos:     dos:ftp, dos:novell, dos:ncsa, dos:microsoft, dos:winsock
@@ -219,7 +219,7 @@
 ;;; plan9:
 ;;; nos-ve:
 ;;; coke:
-;;; 
+;;;
 
 
 ;;;; ================================================================
@@ -264,7 +264,7 @@
 ;; When bootstapping XEmacs, comint is not available
 (condition-case nil
     (require 'comint)
-  (error 
+  (error
    (defun comint-mode ()
      (fundamental-mode))
    (defun comint-output-filter (process string)
@@ -300,7 +300,7 @@
 ;;;; ------------------------------------------------------------
 
 (defconst efs-version
-  (concat (substring "$efs release: 1.23 $" 14 -2)
+  (concat (substring "$efs release: 1.24 $" 14 -2)
 	  "/"
 	  (substring "#Revision: 1.91 $" 11 -2)))
 
@@ -322,7 +322,7 @@
 (defconst efs-version-host-types '(vms tops-20 ti-twenex ti-explorer)
   "List of host-types which associated a version number to all files.
 This is not the same as associating version numbers to only backup files.")
-;; Note that on these systems, 
+;; Note that on these systems,
 ;;  (file-name-sans-versions EXISTING-FILE) does not exist as a file.
 
 (defconst efs-single-extension-host-types
@@ -366,41 +366,7 @@ to indicate compressed files.")
 ;;;; User customization variables. Please read through these carefully.
 ;;;; ------------------------------------------------------------------
 
-(defgroup efs nil
-  "Transparent ftp access."
-:group 'files)
-
-(defgroup efs-behavior nil
-  "User-visible aspects of EFS."
-:prefix "efs-"
-:group 'efs)
-
-(defgroup efs-auto-save nil
-  "EFS interaction with auto-save."
-:prefix "efs-"
-:group 'efs)
-
-(defgroup efs-gateways nil
-  "Using EFS via an ftp gateway."
-:prefix "efs-"
-:group 'efs)
-
-(defgroup efs-programs nil
-  "External programs used by EFS."
-:prefix "efs-"
-:group 'efs)
-
-(defgroup efs-parameters nil
-  "Behind-the-scenes parameters of EFS."
-:prefix "efs-"
-:group 'efs)
-
-(defgroup efs-hooks nil
-  "Hooks for EFS."
-:prefix "efs-"
-:group 'efs)
-
-;;;>>>>  If you are not fully connected to the internet,        <<<< 
+;;;>>>>  If you are not fully connected to the internet,        <<<<
 ;;;>>>>  and need to use a gateway (no matter how transparent)  <<<<
 ;;;>>>>  you will need to set some of the following variables.  <<<<
 ;;;>>>>  Read the documentation carefully.                      <<<<
@@ -411,7 +377,7 @@ These are hosts to which it is possible 
 connection.  Even if the host is accessible by a very transparent FTP gateway,
 it does not qualify as a local host.  The test to determine if machine A is
 local to your machine is if it is possible to ftp from A _back_ to your
-local machine.  Also, open-network-stream must be able to reach the host 
+local machine.  Also, open-network-stream must be able to reach the host
 in question."
   :type 'regexp
   :group 'efs-gateways)
@@ -453,10 +419,10 @@ The following possibilities are supporte
   This indicates that your gateway works by first FTP'ing to it, and
   then giving a  USER command of the form \"USER <username>@<host>\".
   FTP-PROGRAM is the FTP program to use to connect to the gateway; this
-  is most likely \"ftp\".  FTP-PROGRAM-ARGS is a list of arguments to 
+  is most likely \"ftp\".  FTP-PROGRAM-ARGS is a list of arguments to
   pass to it.  You likely want this to be set to the value of
   efs-ftp-program-args <V>.  If the connection to the gateway FTP server
-  is to be on a port different from 21, set efs-gateway-host to 
+  is to be on a port different from 21, set efs-gateway-host to
   \"<host>#<port>\".
 
   '(sidewinder FTP-PROGRAM FTP-PROGRAM-ARGS)
@@ -467,7 +433,7 @@ The following possibilities are supporte
   '(raptor FTP-PROGRAM FTP-PROGRAM-ARGS USER)
   This is for the gateway called raptor by Eagle.  After connecting to the
   the gateway, the command \"user <user>@host USER\" is issued to login
-  as <user> on <host>, where USER is an authentication username for the 
+  as <user> on <host>, where USER is an authentication username for the
   gateway.  After issuing the password for the remote host, efs will
   send the password for USER on efs-gateway-host <V> as an account command.
 
@@ -497,11 +463,11 @@ The following possibilities are supporte
   this remote shell.  Likely values are \"remsh\" or \"rsh\".
   GATEWAY-PROGRAM-ARGS is a list of arguments to pass to GATEWAY-PROGRAM.
   FTP-PROGRAM is the name of the FTP program on the gateway.  A likely setting
-  of this is \"ftp\".  FTP-PROGRAM-ARGS is a list of arguments to pass to 
+  of this is \"ftp\".  FTP-PROGRAM-ARGS is a list of arguments to pass to
   FTP-PROGRAM.  Most likely these should be set to the value of
   efs-ftp-program-args <V>.
 
-  '(interactive GATEWAY-PROGRAM GATEWAY-PROGRAM-ARGS FTP-PROGRAM 
+  '(interactive GATEWAY-PROGRAM GATEWAY-PROGRAM-ARGS FTP-PROGRAM
       FTP-PROGRAM-ARGS)
   This indicates that you need to start an interactive login on your gatway,
   using rlogin, telnet, or something similar.  GATEWAY-PROGRAM is the name
@@ -511,7 +477,7 @@ The following possibilities are supporte
   \"exec ftp\".  FTP-PROGRAM-ARGS is a list of arguments to pass
   to FTP-PROGRAM.  You probably want to set these to the same value as
   efs-ftp-program-args <V>.  If you are using this option, read the
-  documentation at the top of efs-gwp.el, and see 
+  documentation at the top of efs-gwp.el, and see
   efs-gwp-setup-term-command <V>."
   :type '(choice (const nil)
                  (list :tag "Local"
@@ -729,7 +695,7 @@ transferred, and the number hashes outpu
 transfer.
 
 The variable `efs-gateway-hash-mark-size' defines the corresponding value
-for the FTP client on the gateway, if you are using a gateway. 
+for the FTP client on the gateway, if you are using a gateway.
 
 Some client-server combinations do not correctly compute the number of hash
 marks for incoming binary transfers. In this case, a separate variable
@@ -741,7 +707,7 @@ hash mark size for incoming binary trans
 
 (defcustom efs-incoming-binary-hm-size nil
   "*Default hash mark size for incoming binary transfers.
-If this is nil, incoming binary transfers will use `efs-hash-mark-size' as 
+If this is nil, incoming binary transfers will use `efs-hash-mark-size' as
 the default. See the documentation of this variable for more details."
   :type '(choice integer
 		 (const nil))
@@ -786,7 +752,7 @@ sessions as an integer."
   :group 'efs-behavior)
 
 (defcustom efs-ftp-activity-function nil
-  "Function called to indicate FTP activity. 
+  "Function called to indicate FTP activity.
 It must have exactly one argument, the number of active FTP sessions as an
 integer."
   :type '(choice function
@@ -822,6 +788,16 @@ This works around a common bug in many B
   :type 'boolean
   :group 'efs-programs)
 
+(defcustom efs-ftp-explicit-empty-file-name
+  (if (eq system-type 'berkeley-unix) ; lukemftp has this problem
+      "\" \""
+    "")
+  "Quoted version of the empty file, if it needs to be specified explicitly.
+Some ftp clients can't handle an empty file, but will accept a filename
+consisting of a single space."
+:type 'string
+:group 'efs-programs)
+
 (defcustom efs-nslookup-program
   (and (not (eq system-type 'windows-nt)) "nslookup")
   "*If non-NIL then a string naming the nslookup program."
@@ -888,7 +864,7 @@ For example:
 (defcustom efs-backup-by-copying nil
   "*Version of `backup by copying' for remote files.
 If non-nil, remote files will be backed up by copying, instead of by renaming.
-Note the copying will be done by moving the file through the local host -- a 
+Note the copying will be done by moving the file through the local host -- a
 very time consuming operation."
   :type 'boolean
   :group 'efs-behavior)
@@ -912,7 +888,7 @@ or `auto-save-directory-fallback' if thi
 If non-nil, causes the auto-save file for an efs file to be written in
 the remote directory containing the file, rather than in a local directory.
 For remote files, this overrides a non-nil `auto-save-directory'. Local files
-are unaffected. If you want to use this feature, you probably only want to 
+are unaffected. If you want to use this feature, you probably only want to
 set this true in a few buffers, rather than globally.  You might want to give
 each buffer its own value using `make-variable-buffer-local'. It is usually
 a good idea to auto-save remote files locally, because it is not only faster,
@@ -937,7 +913,7 @@ See also variable `efs-auto-save'."
 (defcustom efs-local-apollo-unix
   (eq 0 (string-match "//" (or (getenv "HOME") (getenv "SHELL") "")))
   "*Defines whether the local machine is an apollo running Domain.
-This variable has nothing to do with efs, and should be basic to all 
+This variable has nothing to do with efs, and should be basic to all
 of emacs."
   :type 'boolean
   :group 'efs-parameters)
@@ -987,7 +963,7 @@ to nil."
     "nlist")
    ;; Blind guess
    ("ls"))
-  "*FTP client command for getting a brief listing (NLST) from the FTP server. 
+  "*FTP client command for getting a brief listing (NLST) from the FTP server.
 We try to guess this based on the local system-type, but obviously if you
 are using a gateway, you'll have to set it yourself."
   :type 'string
@@ -1030,8 +1006,8 @@ very time-consuming over FTP, this varia
 Case-insensitive file names are files on hosts whose host type is in
 `efs-case-insensitive-host-types'.
 
-If this is 'up upper case is used, if it is 'down lower case is used. 
-If this has any other value, the case is inherited from the name used 
+If this is 'up upper case is used, if it is 'down lower case is used.
+If this has any other value, the case is inherited from the name used
 to access the file."
   :type '(choice (const nil)
 		 (const up)
@@ -1055,7 +1031,7 @@ be used for the buffer."
 
 (defcustom efs-verify-anonymous-modtime nil
   "*Determines if efs checks modtimes for remote files on anonymous logins.
-If non-nil, efs runs `verify-visited-file-modtime' for remote files on 
+If non-nil, efs runs `verify-visited-file-modtime' for remote files on
 anonymous ftp logins. Since verify-visited-file-modtime slows things down,
 and most people aren't editing files on anonymous ftp logins, this is nil
 by default."
@@ -1183,7 +1159,7 @@ match in the alist is run."
 
 (defcustom efs-load-hook nil
   "Hook to run immediately after loading efs.el.
-You can use it to alter definitions in efs.el, but why would you want 
+You can use it to alter definitions in efs.el, but why would you want
 to do such a thing?"
   :type 'hook
   :group 'efs-hooks)
@@ -1212,15 +1188,18 @@ to do such a thing?"
    (cons "^ls \\|^put \\|^get \\|^append \\|passive"
 	 ;; Some ftp clients try this first by default and do not
 	 ;; filter out the reply.
-	 "^500 .*\\(EPSV\\|EPRT\\).* not understood")))
-  
+	 "^500 .*\\(EPSV\\|EPRT\\).* not understood")
+   ;; Regexp to match failed IPv6 connection attempts
+   (cons "^open "
+	 "^ftp: .*`?[0-9a-zA-Z]+:[0-9a-zA-Z:]+'?: No route to host")))
+
 (defvar efs-cmd-ok-msgs
   ;; RFC959 and RFC2428 compliant
   "^200 \\|^227 \\|^229")
 ;; Regexp to match the server command OK response.
 ;; Because PORT commands return this we usually ignore it. However, it is
 ;; a valid response for TYPE, SITE, and a few other commands (cf. RFC 959).
-;; If we are explicitly sending a PORT, or one of these other commands, 
+;; If we are explicitly sending a PORT, or one of these other commands,
 ;; then we don't want to ignore this response code.  Also use this to match
 ;; the return code for PASV, as some clients burp these things out at odd
 ;; times.
@@ -1259,7 +1238,7 @@ to do such a thing?"
   ;; then does send a second completion code for the command. This does
   ;; *not* conform to RFC959.
   "^100 Warning: type is ")
-;; Regexp to match non-standard response from the FTP server. This can 
+;; Regexp to match non-standard response from the FTP server. This can
 ;; sometimes be the result of an incorrectly set transfer mode. In this case
 ;; we do not rely on the server to tell us when the data transfer is complete,
 ;; but check with the client.
@@ -1347,7 +1326,7 @@ to do such a thing?"
 (defvar efs-idle-msgs
   "^200 [^0-9]+ \\([0-9]+\\)[^0-9]* max \\([0-9]+\\)")
 ;; Regexp to match the output of a SITE IDLE command.
-;; Match 1 should refer to the current idle time, and match 2 the maximum 
+;; Match 1 should refer to the current idle time, and match 2 the maximum
 ;; idle time.
 
 (defvar efs-write-protect-msgs "^532 ") ; RFC959
@@ -1715,8 +1694,12 @@ See completion-ignored-extensions, inste
 	 ;; and they can be padded on the right with spaces.
 	 ;; weiand: changed: month ends potentially with . or , or .,
 	 ;;old	 (month (concat l l "+ *"))
-	 (month (concat l l "+[.]?,? *"))
-	 (date "[ 0-3][0-9]")
+	 (l-or-quote "\\([A-Za-z']\\|[^\0-\177]\\)")
+	 ;; In some locales, month abbreviations are as short as 2 letters,
+	 ;; and they can be followed by ".".
+	 ;; In Breton, a month name can include a quote character.
+	 (month (concat l-or-quote l-or-quote "+\\.?"))
+	 (date "[ 0-3][0-9]\\.?")
 	 (time "[ 012][0-9]:[0-6][0-9]")
 	 (year (concat
 		"\\("
@@ -1762,7 +1745,7 @@ See completion-ignored-extensions, inste
   (concat
    "\\([^ ][-r][-w][^ ][-r][-w][^ ][-r][-w][^ ]\\)[-+]? *\\([0-9]+\\)"
    " +\\([^ ]+\\) "))
-  
+
 ;;;; ---------------------------------------------------------------
 ;;;; efs-dired variables
 ;;;; ---------------------------------------------------------------
@@ -2153,7 +2136,7 @@ args will be taken from CONT if a list w
 (efs-define-fun efs-relativize-filename (file &optional dir new)
   "Abbreviate the given filename relative to DIR .
 If DIR is nil, use the value of `default-directory' for the currently selected
-window. If the optional parameter NEW is given and the 
+window. If the optional parameter NEW is given and the
 non-directory parts match, only return the directory part of the file."
   (let* ((dir (or dir (save-excursion
 			(set-buffer (window-buffer (selected-window)))
@@ -2292,7 +2275,7 @@ for the local host to send as an anonymo
 The function `system-name' is not returning a fully qualified
 domain name. An attempt to obtain a fully qualified domain name
 with `efs-nslookup-program' (currently set to \"%s\") has
-elicited no response from that program. Consider setting 
+elicited no response from that program. Consider setting
 `efs-generate-anonymous-password' to an email address for anonymous
 ftp passwords.
 
@@ -2315,7 +2298,7 @@ variables `efs-nslookup-program' and `ef
 		  sys))))))
 
 (defun efs-passwd-unique-list (alist)
-  ;; Preserving the relative order of ALIST, remove all entries with duplicate 
+  ;; Preserving the relative order of ALIST, remove all entries with duplicate
   ;; cars.
   (let (result)
     (while alist
@@ -2363,7 +2346,7 @@ variables `efs-nslookup-program' and `ef
 			     tertiaries))))))
        efs-host-user-hashtable 'passwd))
     (efs-passwd-unique-list (nconc primaries secondaries tertiaries))))
-    
+
 (defun efs-get-passwd (host user)
   "Given a HOST and USER, return the FTP password, prompting if it was not
 previously set."
@@ -2372,13 +2355,13 @@ previously set."
   ;; look up password in the hash table first; user might have overriden the
   ;; defaults.
   (cond ((efs-lookup-passwd host user))
-	
+
 	;; see if default user and password set from the .netrc file.
 	((and (stringp efs-default-user)
 	      efs-default-password
 	      (string-equal user efs-default-user))
 	 (copy-sequence efs-default-password))
-	
+
 	;; anonymous ftp password is handled specially since there is an
 	;; unwritten rule about how that is used on the Internet.
 	((and (efs-anonymous-p user)
@@ -2386,7 +2369,7 @@ previously set."
 	 (if (stringp efs-generate-anonymous-password)
 	     (copy-sequence efs-generate-anonymous-password)
 	   (concat (user-login-name) "@" (efs-system-fqdn))))
-	
+
 	;; see if same user has logged in to other hosts; if so then prompt
 	;; with the password that was used there.
 	(t
@@ -2502,7 +2485,7 @@ Does nothing if there is no process buff
 	"efs is unable to identify the following reply code
 from the ftp server " host ":\n\n" line "
 
-Please send a bug report to efs-bugs at hplb.hpl.hp.com.
+Please send a bug report to elisp-code-efs at nongnu.org.
 In your report include a transcript of your\n"
 buff " buffer."))))
   (error "Unable to identify server code."))
@@ -2537,11 +2520,11 @@ is popped up in another window."
 						(match-beginning n)
 						(match-end n)))
 		    -10))))
-	
+
 	((string-match efs-multi-msgs line)
 	 (setq efs-process-result-cont-lines
 	       (concat efs-process-result-cont-lines line "\n")))
-	
+
 	((efs-skip-cmd-msg-p efs-process-cmd line))
 
 	((string-match efs-cmd-ok-msgs line)
@@ -2555,13 +2538,13 @@ is popped up in another window."
 	     (setq efs-process-busy nil
 		   efs-process-result nil
 		   efs-process-result-line line)))
-	
+
 	((string-match efs-bytes-received-msgs line)
 	 (if efs-process-server-confused
 	     (setq efs-process-busy nil
 		   efs-process-result nil
 		   efs-process-result-line line)))
-	
+
 	((string-match efs-server-confused-msgs line)
 	 (setq efs-process-server-confused t))
 
@@ -2576,12 +2559,12 @@ is popped up in another window."
 	 (setq efs-process-busy nil
 	       efs-process-result 'fatal
 	       efs-process-result-line line))
-	
+
 	((string-match efs-failed-msgs line)
 	 (setq efs-process-busy nil
 	       efs-process-result 'failed
 	       efs-process-result-line line))
-	
+
 	((string-match efs-unknown-response-msgs line)
 	 (setq efs-process-busy nil
 	       efs-process-result 'weird
@@ -2648,7 +2631,7 @@ If yes, return element.  Return NIL othe
 		(while (string-match efs-process-prompt-regexp line)
 		  (setq line (substring line (match-end 0))))
 		(efs-process-handle-line line proc)))
-	    
+
 	    ;; has the ftp client finished?  if so then do some clean-up
 	    ;; actions.
 	    (if (not efs-process-busy)
@@ -2664,10 +2647,10 @@ If yes, return element.  Return NIL othe
 
 			(efs-message "%s...done" efs-process-msg)
 			(setq efs-process-msg nil)))
-		  
+
 		  (if (and efs-process-nowait
 			   (null efs-process-cmd-waiting))
-		      
+
 		      (progn
 			;; Is there a continuation we should be calling?
 			;; If so, we'd better call it, making sure we
@@ -2701,7 +2684,7 @@ If yes, return element.  Return NIL othe
 				     efs-process-host
 				     efs-process-user
 				     next))))
-		    
+
 		    (if efs-process-continue
 			(let ((cont efs-process-continue))
 			  (setq efs-process-continue nil)
@@ -2710,7 +2693,7 @@ If yes, return element.  Return NIL othe
 			   efs-process-result
 			   efs-process-result-line
 			   efs-process-result-cont-lines))))
-		  
+
 		  ;; Update the mode line
 		  ;; We can't test nowait to see if we changed the
 		  ;; modeline in the first place, because conts
@@ -3305,23 +3288,23 @@ Create a new process if needed."
   (let ((proc (efs-get-process-internal host user)))
     (if (and proc (memq (process-status proc) '(run open)))
 	proc
-      
+
       ;; Make sure that the process isn't around in some strange state.
 
       (setq host (downcase host))
       (let ((name (concat "*ftp " user "@" host "*")))
 	(if proc (condition-case nil (delete-process proc) (error nil)))
-	
+
 	;; grab a suitable process.
 	(setq proc (efs-start-process host user name))
-	
+
 	(efs-save-match-data
 	  (efs-save-buffer-excursion
 	    (set-buffer (process-buffer proc))
-	    
+
 	    ;; Run any user-specified hooks.
 	    (run-hooks 'efs-ftp-startup-hook)
-	    
+
 	    ;; login to FTP server.
 	    (efs-login host user proc)
 
@@ -3335,7 +3318,7 @@ Create a new process if needed."
 
 		  (if efs-use-passive-mode
 		      (efs-passive-mode host user))
-		  
+
 		  ;; Run any user startup functions
 		  (let ((alist efs-ftp-startup-function-alist)
 			(case-fold-search t))
@@ -3345,10 +3328,10 @@ Create a new process if needed."
 			    (funcall (cdr (car alist)) host user)
 			    (setq alist nil))
 			(setq alist (cdr alist)))))
-		  
+
 		  ;; Guess at the host type.
 		  (efs-guess-host-type host user)
-		  
+
 		  ;; Check the idle time.
 		  (efs-check-idle host user)
 
@@ -3432,12 +3415,12 @@ Key map:
 ;; If PRE-CONT is non-nil, it is called immediately after execution
 ;; of the command starts, but without waiting for it to finish.
 ;; If CONT is non-NIL then it is either a function or a list of function and
-;; some arguments.  The function will be called when the ftp command has 
+;; some arguments.  The function will be called when the ftp command has
 ;; completed.
 ;; If CONT is NIL then this routine will return \( RESULT . LINE \) where
 ;; RESULT is whether the command was successful, and LINE is the line from
 ;; the FTP process that caused the command to complete.
-;; If NOWAIT is nil then we will wait for the command to complete before 
+;; If NOWAIT is nil then we will wait for the command to complete before
 ;; returning. If NOWAIT is 0, then we will wait until the command starts,
 ;; executing before returning. NOWAIT of 1 is like 0, except that the modeline
 ;; will indicate an asynch FTP command.
@@ -3447,7 +3430,7 @@ Key map:
   (if (memq (process-status proc) '(run open))
       (efs-save-buffer-excursion
 	(set-buffer (process-buffer proc))
-	
+
 	(if efs-process-busy
 	    ;; This function will always wait on a busy process.
 	    ;; Queueing is done by efs-send-cmd.
@@ -3498,7 +3481,7 @@ Key map:
 	      (save-excursion
 		(apply (car pre-cont) (cdr pre-cont)))))
 	(prog1
-	    (if nowait 
+	    (if nowait
 		nil
 	      ;; hang around for command to complete
 	      ;; Some clients die after the command is sent, if the server
@@ -3510,7 +3493,7 @@ Key map:
 			    (null efs-process-nowait)
 			    (memq (process-status proc) '(run open)))
 		  (accept-process-output proc)))
-	      
+
 	      ;; cont is called by the process filter
 	      (if cont
 		  ;; Return nil if a cont was called.
@@ -3522,10 +3505,10 @@ Key map:
 		(list efs-process-result
 		      efs-process-result-line
 		      efs-process-result-cont-lines)))
-	  
+
 	  ;; If the process died, the filter would have never got the chance
 	  ;; to call the cont. Try to jump start things.
-	  
+
 	  (if (and (not (memq (process-status proc) '(run open)))
 		   (string-equal efs-process-result-line "")
 		   cont
@@ -3536,7 +3519,7 @@ Key map:
 		;; The process may be in some strange state. Get rid of it.
 		(condition-case nil (delete-process proc) (error nil))
 		(efs-call-cont cont 'fatal "" "")))))
-    
+
     (error "FTP process %s has died." (process-name proc))))
 
 (defun efs-quote-percents (string)
@@ -3612,14 +3595,14 @@ non-nil, this is not done."
   ;; capability. Also, sends umask if nec.
 
   (let ((proc (efs-get-process host user)))
-    
+
     (if (and
 	 (eq nowait t)
 	 (save-excursion
 	   (set-buffer (process-buffer proc))
 	   (or efs-process-busy
 	       efs-process-cmd-waiting)))
-	
+
 	(progn
 	  (efs-add-to-queue
 	   host user
@@ -3631,7 +3614,7 @@ non-nil, this is not done."
 	   ;; side, store nowait as 1.
 	   (list cmd msg pre-cont cont 1 noretry))
 	  nil)
-      
+
       ;; Send a command.
 
       (let (cmd-string afsc-result afsc-line afsc-cont-lines)
@@ -3641,13 +3624,13 @@ non-nil, this is not done."
 	      (cmd1 (nth 1 cmd))
 	      (cmd2 (nth 2 cmd))
 	      (cmd3 (nth 3 cmd)))
-	  
+
 	  (cond
-	   
+
 	   ((eq cmd0 'quote)
 	    ;; QUOTEd commands
 	    (cond
-	     
+
 	     ((eq cmd1 'site)
 	      ;; SITE commands
 	      (cond
@@ -3667,10 +3650,10 @@ non-nil, this is not done."
 					   cmd4))))
 	       (t (error "efs: Don't know how to send %s %s %s %s"
 			 cmd0 cmd1 cmd2 cmd3))))
-	     
+
 	     ((memq cmd1 '(pwd xpwd syst pasv noop))
 	      (setq cmd-string (concat "quote " (symbol-name cmd1))))
-	     
+
 	     ;; PORT command (cmd2 is IP + port address)
 	     ((eq cmd1 'port)
 	      (setq cmd-string (concat "quote port " cmd2)))
@@ -3683,7 +3666,7 @@ non-nil, this is not done."
 					     (efs-fix-path host-type cmd2))
 		      cmd-string (concat "quote " (symbol-name cmd1) " "
 					 cmd2))))
-	     
+
 	     ((eq cmd1 'stor)
 	      (let ((host-type (efs-host-type host user)))
 		(if (memq host-type efs-unix-host-types)
@@ -3693,7 +3676,7 @@ non-nil, this is not done."
 		(setq cmd2 (efs-quote-string host-type
 					     (efs-fix-path host-type cmd2))
 		      cmd-string (concat "quote stor " cmd2))))
-	     
+
 	     ((memq cmd1 '(size mdtm rnfr))
 	      (let ((host-type (efs-host-type host user)))
 		(setq cmd2 (efs-quote-string host-type
@@ -3703,15 +3686,15 @@ non-nil, this is not done."
 
 	     ((memq cmd1 '(pass user))
 	      (setq cmd-string (concat "quote " (symbol-name cmd1) " " cmd2)))
-	     
+
 	     (t
 	      (error "efs: Don't know how to send %s %s %s %s"
 		     cmd0 cmd1 cmd2 cmd3))))
-	   
+
 	   ;; TYPE command
 	   ((eq cmd0 'type)
 	    (setq cmd-string (concat "type " (symbol-name cmd1))))
-     
+
 	   ;; CWD command
 	   ((eq cmd0 'cwd)
 	    (let ((host-type (efs-host-type host user)))
@@ -3737,16 +3720,11 @@ non-nil, this is not done."
 					 (if (eq cmd0 'nlist)
 					     efs-nlist-cmd
 					   "dir")
-					 ;; KLUDGE ALERT:
-					 ;; some ftp clients
-					 ;; (FreeBSD's, notably)
-					 ;; will not handle a null directory
-					 ;; arg correctly.  This will
-					 ;; hopefully work in all
-					 ;; circumstances.
-					 (if (string-equal cmd1 "")
-					     "\" \""
+					 (cond
+					  ((not (string-equal cmd1 ""))
 					   (efs-quote-string host-type cmd1))
+					  ((eq host-type 'vms) "\[\]")
+					  (t efs-ftp-explicit-empty-file-name))
 					 (efs-adjust-local-path cmd2))))
 	       ((setq cmd-string
 		      (format "%s \"%s%s%s\" %s"
@@ -3757,14 +3735,14 @@ non-nil, this is not done."
 			      (if (string-equal cmd1 "") "" " ")
 			      (efs-quote-string host-type cmd1 t)
 			      (efs-adjust-local-path cmd2)))))))
-	   
+
 	   ;; First argument is the remote pathname
 	   ((memq cmd0 '(delete mkdir rmdir cd))
 	    (let ((host-type (efs-host-type host user)))
 	      (setq cmd1 (efs-quote-string host-type
 					   (efs-fix-path host-type cmd1))
 		    cmd-string (concat (symbol-name cmd0) " " cmd1))))
-	   
+
 	   ;; GET command
 	   ((eq cmd0 'get)
 	    (let ((host-type (efs-host-type host user)))
@@ -3776,7 +3754,7 @@ non-nil, this is not done."
 				       cmd1
 				       " "
 				       (efs-adjust-local-path cmd2)))))
-	   
+
 	   ;; PUT command
 	   ((eq cmd0 'put)
 	    (let ((host-type (efs-host-type host user)))
@@ -3801,14 +3779,14 @@ non-nil, this is not done."
 				       (efs-adjust-local-path cmd1)
 				       " "
 				       cmd2))))
-	   
+
 	   ;; CHMOD command
 	   ((eq cmd0 'chmod)
 	    (let ((host-type (efs-host-type host user)))
 	      (setq cmd2 (efs-quote-string host-type
 					   (efs-fix-path host-type cmd2))
 		    cmd-string (concat "chmod " cmd1 " " cmd2))))
-	   
+
 	   ;; Both arguments are remote pathnames
 	   ((eq cmd0 'rename)
 	    (let ((host-type (efs-host-type host user)))
@@ -3817,15 +3795,15 @@ non-nil, this is not done."
 		    cmd2 (efs-quote-string host-type
 					   (efs-fix-path host-type cmd2))
 		    cmd-string (concat "rename " cmd1 " " cmd2))))
-	   
+
 	   ;; passive command
 	   ((eq cmd0 'passive)
 	    (setq cmd-string "passive"))
-	
+
 	   (t
 	    (error "efs: Don't know how to send %s %s %s %s"
 		   cmd0 cmd1 cmd2 cmd3))))
-	  
+
 	;; Actually send the resulting command.
 	;; Why do we use this complicated binding of afsc-{result,line},
 	;; rather then use the fact that efs-raw-send-cmd returns?
@@ -3840,7 +3818,7 @@ non-nil, this is not done."
 	;; Beware, if some of the above FTP commands had to restart
 	;; the process, PROC won't be set to the right process object.
 	(setq proc (efs-get-process host user))
-	
+
 	(efs-raw-send-cmd
 	 proc
 	 cmd-string
@@ -3871,7 +3849,7 @@ non-nil, this is not done."
 			(setq afsc-result (car retry)
 			      afsc-line (nth 1 retry)
 			      afsc-cont-lines (nth 2 retry)))))
-		 
+
 		 (t (if cont
 			(efs-call-cont cont result line cont-lines)
 		      (or nowait
@@ -3879,12 +3857,12 @@ non-nil, this is not done."
 				afsc-line line
 				afsc-cont-lines cont-lines))))))
 	 nowait)
-	
+
 	(prog1
 	    (if (or nowait cont)
 		nil
 	      (list afsc-result afsc-line afsc-cont-lines))
-	  
+
 	  ;; Check the queue
 	  (or nowait
 	      efs-nested-cmd
@@ -3967,15 +3945,15 @@ You must do that yourself."
 	     (setq to (efs-nslookup-host to)))
 	(setq cmd (concat "open " to))
 	(if port (setq cmd (concat cmd " " port)))
-	
+
 	;; Send OPEN command.
 	(setq result (efs-raw-send-cmd proc cmd nil))
-	
+
 	(and (eq gate 'interlock) (string-match "^331 " (nth 1 result))
 	     (setq result (efs-login-send-pass
 			   efs-gateway-host
 			   (efs-get-user efs-gateway-host) proc)))
-	
+
 	;; Analyze result of OPEN.
 	(if (car result)
 	    (progn
@@ -4018,19 +3996,19 @@ RETRY argument specifies to try twice if
 	       (format "quote user \"%s\"" user))))
 	(msg (format "Logging in as user %s%s..." user
 		     (if (memq gate '(proxy sidewinder raptor kerberos))
-			 (concat "@" host) "")))  
-	result code)	 
-	
+			 (concat "@" host) "")))
+	result code)
+
     ;; Send the message by hand so that we can report on the size
     ;; of the MOTD.
     (message msg)
-    
+
     ;; Send USER command.
     (setq result (efs-raw-send-cmd proc cmd nil))
 
 	(if (eq gate 'sidewinder)
 		(setq result (efs-raw-send-cmd proc (format "quote user \"%s\"" user))))
-    
+
     ;; Analyze result of USER (this follows RFC959 strictly)
     (if (< (length (nth 1 result)) 4)
 	(progn
@@ -4040,15 +4018,15 @@ RETRY argument specifies to try twice if
 
       (setq code (substring (nth 1 result) 0 4))
       (cond
-       
+
        ((string-equal "331 " code)
 	;; Need password
 	(setq result (efs-login-send-pass host user proc gate)))
-     
+
        ((string-equal "332 " code)
 	;; Need an account, but no password
 	(setq result (efs-login-send-acct host user proc gate)))
-     
+
        ((null (car result))
 	;; logged in proceed
 	nil)
@@ -4072,11 +4050,11 @@ RETRY argument specifies to try twice if
 		  (efs-login-send-user host user proc gate t)
 		(efs-get-process host user)))
 	  (signal 'quit nil)))
-       
+
        ((and retry (string-equal code "421 "))
 	(setq result nil)
 	(efs-get-process host user))
-       
+
        (t  ; bombed
 	(condition-case nil (delete-process proc) (error nil))
 	;; Wrong username?
@@ -4321,7 +4299,7 @@ optional arg XPWD is given, uses this se
 (defun efs-send-size (host user file)
   "For HOST and USER, get the size of FILE in bytes.
 This returns a list \( SIZE . LINE \), where SIZE is the file size in bytes,
-or nil if this couldn't be determined, and LINE is the output line of the 
+or nil if this couldn't be determined, and LINE is the output line of the
 FTP server."
   (efs-save-match-data
     (let ((result (efs-send-cmd host user (list 'quote 'size file))))
@@ -4430,7 +4408,7 @@ Returns t for success, nil for failure."
 	     (progn
 	       (efs-send-umask host user umask)
 	       t))))))			; Tell the caller that we did something.
-	
+
 (defun efs-modes-from-umask (umask)
   ;; Given the 3 digit octal integer umask, returns the decimal integer
   ;; according to chmod that a file would be written with.
@@ -4511,7 +4489,7 @@ Returns the system type as a string if t
       (and (null (car result))
 	   (string-match efs-syst-msgs line)
 	   (substring line (match-end 0))))))
-  
+
 ;;;; ------------------------------------------------------------
 ;;;; File transfer representation type support
 ;;;; ------------------------------------------------------------
@@ -4728,7 +4706,7 @@ prompting off."
 
 (efs-defun efs-ls-dumb-check unknown (line host file path lsargs
 			       msg noparse noerror nowait cont)
-  ;; Checks to see if the host type might be dumb unix. If so, returns the 
+  ;; Checks to see if the host type might be dumb unix. If so, returns the
   ;; listing otherwise nil.
   (and
    lsargs
@@ -4760,10 +4738,10 @@ prompting off."
 
 ;; With no-error nil, this function returns:
 ;; an error if file is not an efs-path
-;;                      (This should never happen.) 
+;;                      (This should never happen.)
 ;; an error if either the listing is unreadable or there is an ftp error.
 ;; the listing (a string), if everything works.
-;; 
+;;
 ;; With no-error t, it returns:
 ;; an error if not an efs-path
 ;; error if listing is unreable (most likely caused by a slow connection)
@@ -4805,7 +4783,7 @@ argument the listing string."
 		       (t nil)))
 	       (switches lsargs)
 	       cache)
-	  
+
 	  (if (memq host-type efs-dumb-host-types)
 	      (setq lsargs nil))
 	  (if (and (null efs-ls-uncache)
@@ -4837,7 +4815,7 @@ argument the listing string."
 			(setcar (cdr cache) t))))
 		(if cont (efs-call-cont cont listing))
 		listing)
-	    
+
 	    (if cache
 		(efs-del-from-ls-cache file nil nil))
 	    ;; Need to get the listing via FTP.
@@ -4901,7 +4879,7 @@ argument the listing string."
 				    (efs-error host user
 					       (concat "DIR failed: "
 						       line))))
-		       
+
 			    ;; listing worked
 			    (if (efs-ftp-path temp-file)
 				(efs-add-file-entry (efs-host-type efs-gateway-host)
@@ -4994,7 +4972,7 @@ argument the listing string."
 		    (lambda (x)
 		      (let ((f-ent (car x)))
 			(and (not (string-equal file f-ent))
-			     (not (string-equal parent-p f-ent)) 
+			     (not (string-equal parent-p f-ent))
 			     x))))
 		 (function
 		  (lambda (x)
@@ -5199,7 +5177,7 @@ Returns pair of month index (1-based) an
 	      ;; Need to measure wrto the current month
 	      ;; There is a bug here if because of time-zone shifts, the
 	      ;; local machine and the remote one are on different months.
-	      (let* ((month-date (efs-parse-month-date 
+	      (let* ((month-date (efs-parse-month-date
 				  (buffer-substring
 				   (match-beginning efs-month-date-submatch)
 				   (match-end efs-month-date-submatch))))
@@ -5207,7 +5185,7 @@ Returns pair of month index (1-based) an
 				  (car month-date))
 			       12))
 		     (day (cdr month-date))
-		     (year-or-time (buffer-substring 
+		     (year-or-time (buffer-substring
 				    (match-beginning efs-time-or-year-submatch)
 				    (match-end efs-time-or-year-submatch)))
 		     year hour minutes)
@@ -5456,7 +5434,7 @@ Returns pair of month index (1-based) an
 	(if across (setq list (cdr list))))
       (setcar widths (- (car widths) 2))
       (nreverse widths)))))
-  
+
 (defun efs-calculate-columns (list &optional across)
   ;; Returns a list of integers which are the column widths that best pack
   ;; LIST, a list of strings, onto the screen.
@@ -5581,7 +5559,7 @@ Returns pair of month index (1-based) an
 (efs-add-ls-converter "-AltF" "-AlF" 'efs-t-converter)
 (efs-add-ls-converter "-ltF" "-lF" 'efs-t-converter)
 (efs-add-ls-converter "-alt" nil 'efs-t-converter)
-(efs-add-ls-converter "-altF" nil 'efs-t-converter) 
+(efs-add-ls-converter "-altF" nil 'efs-t-converter)
 (efs-add-ls-converter "-Alt" nil 'efs-t-converter)  ; cheating a bit
 (efs-add-ls-converter "-AltF" nil 'efs-t-converter) ; cheating a bit
 
@@ -5800,7 +5778,7 @@ Returns pair of month index (1-based) an
 		    (buffer-substring (match-beginning efs-file-size-submatch)
 				      (match-end efs-file-size-submatch))))
 	(list name size modes nlinks owner)))))
-	      
+
 (defun efs-relist-symlink (host user symlink path switches)
   ;; Does a re-list of a single symlink in efs-data-buffer-name-2,
   ;; HOST = remote host
@@ -6232,7 +6210,7 @@ SWITCHES are the switches passed to ls. 
 dumb \(with dir\) listing has been done."
   (efs-save-match-data
     (cond
-     
+
      ;; look for total line
      ((looking-at "^total [0-9]+$")
       (efs-add-host 'unix host)
@@ -6265,13 +6243,13 @@ dumb \(with dir\) listing has been done.
 	;; Don't know, give unix a try.
 	(efs-add-host 'unix host)
 	nil))
-     
+
      ;; look for ls errors
      ((looking-at "[^\n]+\\( not found\\|: Not a directory\\)\n\\'")
       ;; It's an ls error message.
       (efs-add-host 'unix host)
       nil)
-     
+
      ((eobp) ; i.e. (zerop (buffer-size))
       ;; This could be one of:
       ;; (1) An Ultrix ls error message
@@ -6326,17 +6304,17 @@ dumb \(with dir\) listing has been done.
 	;; Assume (1), an Ultrix error message.
 	(efs-add-host 'unix host)
 	nil)))
-     
+
      ;; unix without a total line
      ((re-search-forward efs-month-and-time-regexp nil t)
       (efs-add-host 'unix host)
       (beginning-of-line)
       (efs-ls-parser 'unix host user dir path switches))
-     
+
      ;; Now we look for host-types, or listing-types which are auto-rec
      ;; by the listing parser, because it's not possible to pick them out
      ;; from a pwd.
-     
+
      ;; check for dumb-unix
      ;; (Guessing of dumb-unix hosts which return an ftp error message is
      ;; done in efs-ls.)
@@ -6353,7 +6331,7 @@ dumb \(with dir\) listing has been done.
      ((re-search-forward efs-dos:microsoft-file-line-regexp nil t)
       (efs-add-host 'dos host)
       (efs-parse-listing 'dos host user dir path))
-     
+
      ;; check for Distinct's DOS ftp server
      ((re-search-forward efs-dos-distinct-date-and-time-regexp nil t)
       (efs-add-host 'dos-distinct host)
@@ -6372,7 +6350,7 @@ dumb \(with dir\) listing has been done.
 				 (efs-relativize-filename path))
 		t))
       (efs-parse-listing 'ka9q host user dir path))
-     
+
      ;; Check for a unix descriptive (dl) listing
      ;; Do this last, because it's hard to guess.
      ((re-search-forward  efs-unix:dl-listing-regexp nil t)
@@ -6410,7 +6388,7 @@ dumb \(with dir\) listing has been done.
   ;;   short-term cache only, as emacs often has sequences of functions
   ;;   doing modtime lookup.  If you really want to be sure of the modtime,
   ;;   use efs-get-file-mdtm, which asks the remote server.
-  
+
   (and (eq type t)
        (setq path (directory-file-name path)))
   (let ((files (efs-get-files-hashtable-entry (file-name-directory path))))
@@ -6431,12 +6409,12 @@ dumb \(with dir\) listing has been done.
 (efs-defun efs-delete-file-entry nil (path &optional dir-p)
   "Delete the file entry for PATH, if its directory info exists."
   (if dir-p
-      (progn 
+      (progn
 	(setq path (file-name-as-directory path))
 	(efs-del-hash-entry (efs-canonize-file-name path)
 			    efs-files-hashtable)
 	;; Note that file-name-as-directory followed by
-	;; (substring path 0 -1) 
+	;; (substring path 0 -1)
 	;; serves to canonicalize directory file names to their unix form.
 	;; i.e. in VMS, FOO.DIR -> FOO/ -> FOO
 	;; PATH is supposed to be s fully expanded efs-style path.
@@ -6540,9 +6518,9 @@ NO-ERROR, if a listing for DIRECTORY can
 
 (defun efs-get-file-entry (path)
   "Return the given file entry for PATH.
-This is a list of the form \(type size owner modes nlinks modtm\), 
+This is a list of the form \(type size owner modes nlinks modtm\),
 where type is nil for a normal file, t for a directory, and a string for a
-symlink, size is the size of the file in bytes, if known, and modes are 
+symlink, size is the size of the file in bytes, if known, and modes are
 the permission modes of the file as a string. modtm is short-term the
 cache of the file modtime.  It is not used by `verify-visited-file-modtime'.
 If the file isn't in the hashtable, this returns nil."
@@ -6605,7 +6583,7 @@ doesn't have any entries for the given H
 ;; functions and macros. Since these are internal, they do NOT
 ;; call efs-save-match-data. This is done by their calling
 ;; function.
-;; 
+;;
 ;; efs-expand-tilde
 ;;   - expands all ~ constructs, both local and remote.
 ;; efs-short-circuit-file-name
@@ -6616,7 +6594,7 @@ doesn't have any entries for the given H
 ;; The following two functions overload existing emacs functions.
 ;; They are the entry points to this filename expansion code, and as such
 ;; call efs-save-match-data.
-;; 
+;;
 ;; efs-expand-file-name
 ;; efs-substitute-in-file-name
 
@@ -6638,18 +6616,18 @@ doesn't have any entries for the given H
 	       lbackskip 2)
        (setq lregexp "//+"
 	     lbackskip 1))
-     
+
      ;; Short circuit /user at mach: roots. It is important to do this
      ;; now to avoid unnecessary ftp connections.
-     
+
      (if efs-short-circuit
 	 (while (string-match efs-path-root-short-circuit-regexp string start)
 	   (setq start (1+ (match-beginning 0)))))
      (or (zerop start) (setq string (substring string start)
 			     start 0))
-     
+
      ;; identify remote root
-     
+
      (if (setq parsed (efs-ftp-path-macro string))
 	 (if (memq (setq string (nth 2 parsed)
 		       host-type
@@ -6662,15 +6640,15 @@ doesn't have any entries for the given H
 		 backskip 1))
        (setq regexp lregexp
 	     backskip lbackskip))
-     
+
      ;; Now short-circuit in an apollo and efs sensitive way.
-     
+
      (if efs-short-circuit
 	 (while (cond ((string-match regexp string start)
 		       (setq start (- (match-end 0) backskip)))
 		      ((string-match  "/~" string start)
 		       (setq start (1- (match-end 0)))))
-       
+
 	   (and host-type
 		(null efs-short-circuit-to-remote-root)
 		(setq host-type nil
@@ -6705,7 +6683,7 @@ doesn't have any entries for the given H
 				      (format "expanding %s" tilde)))))
 		    (setq res
 			  (and (string-match efs-expand-dir-msgs line)
-			       (substring line 
+			       (substring line
 					  (match-beginning 1)
 					  (match-end 1))))
 		    (if res
@@ -6786,20 +6764,20 @@ doesn't have any entries for the given H
 			 (substring string
 				    start (match-beginning 0)))
 	     start (1- (match-end 0))))
-     
+
      (if new (setq string (concat new (substring string start))))
-     
+
      (while (string-match "/[^/]+/\\.\\./" string)
        ;; Is there a way to avoid all this concating and copying?
        (setq string (concat (substring string 0 (1+ (match-beginning 0)))
 			    (substring string (match-end 0)))))
-     
+
      ;; Do /../ and //../ special cases. They should expand to
      ;; / and //, respectively.
      (if (string-match "^\\(/+\\)\\.\\./" string)
 	 (setq string (concat (substring string 0 (match-end 1))
 			      (substring string (match-end 0)))))
-     
+
      (if (and make-dir
 	      (not (string-match "^/+$" string)))
 	 (substring string 0 -1)
@@ -6814,13 +6792,13 @@ doesn't have any entries for the given H
     (let ((start 0)
 	  var new root backskip regexp lbackskip
 	  lregexp parsed fudge-host-type rstart error)
-     
+
       (if efs-local-apollo-unix
 	  (setq lregexp ".//+"
 		lbackskip 2)
 	(setq lregexp "//+"
 	      lbackskip 1))
-      
+
       ;; Subst. existing env variables
       (while (string-match "\\$" string start)
 	(setq new (concat new (substring string start (match-beginning 0)))
@@ -6848,7 +6826,7 @@ doesn't have any entries for the given H
 
       ;; Short circuit /user at mach: roots. It is important to do this
       ;; now to avoid unnecessary ftp connections.
-      
+
       (if efs-short-circuit
 	  (while (string-match efs-path-root-short-circuit-regexp
 			       string start)
@@ -6903,26 +6881,26 @@ doesn't have any entries for the given H
 	;; no root, we're local
 	(setq regexp lregexp
 	      backskip lbackskip))
-     
+
       ;; Now short-circuit in an apollo and efs sensitive way.
-      
+
       (if efs-short-circuit
 	  (while (cond ((string-match regexp string start)
 			(setq start (- (match-end 0) backskip)))
 		       ((string-match  "/~" string start)
 			(setq start (1- (match-end 0)))))
-	    
+
 	    (and root
 		 (null efs-short-circuit-to-remote-root)
 		 (setq root nil
 		       regexp lregexp
 		       backskip lbackskip))))
-      
+
       ;; If we still have a bad root, barf.
       (if (and root error) (error error))
 
       ;; look for non-existent evironment variables in the path
-      
+
       (if (string-match
 	   "\\([^$]\\|^\\)\\(\\$\\$\\)*\\$\\([^$]\\|$\\)" string start)
 	  (progn
@@ -6955,7 +6933,7 @@ doesn't have any entries for the given H
 	 (if (zerop start)
 	     string
 	   (substring string start)))))))
-	      
+
 (defun efs-expand-file-name (name &optional default)
   "Documented as original."
   (let (s-c-res path host user host-type)
@@ -6986,7 +6964,7 @@ doesn't have any entries for the given H
 	       (if (string-equal tilde "/")
 		   (setq path (concat "/" path))
 		 (setq path (concat tilde "/" path))))))
-      
+
       (setq  path (efs-de-dot-file-name path))
       (if host-type
 	  (format efs-path-format-string user host path)
@@ -7027,7 +7005,7 @@ doesn't have any entries for the given H
     name)
    (t
     (concat name "/"))))
- 	
+
 (defun efs-file-name-directory (name)
   ;; file-name-directory for remote files. Takes care not to
   ;; turn /user at host: into /.
@@ -7288,7 +7266,7 @@ of the directory in efs's internal cache
 	 filename args))
 
 (defun efs-insert-file-contents-general
-         (handled-func filename &optional visit &rest args)  
+         (handled-func filename &optional visit &rest args)
   (barf-if-buffer-read-only)
   (unwind-protect
       (let* ((filename (expand-file-name filename))
@@ -7298,7 +7276,7 @@ of the directory in efs's internal cache
 	     (user (nth 1 parsed))
 	     (path (nth 2 parsed))
 	     (buffer (current-buffer)))
-	
+
 	(if (or (file-exists-p filename)
 		(let* ((res (and
 			     (not (efs-get-host-property host 'rnfr-failed))
@@ -7317,14 +7295,14 @@ of the directory in efs's internal cache
 		     (efs-canonize-file-name (file-name-directory filename))
 		     efs-files-hashtable)
 		    (file-exists-p filename))))
-	    
+
 	    (let ((temp (concat
 			 (car (efs-make-tmp-name nil host))
 			 (efs-internal-file-name-extension filename)))
 		  (type (efs-xfer-type host-type filename nil nil))
 		  (abbr (efs-relativize-filename filename))
 		  (i-f-c-size 0))
-	      
+
 	      (unwind-protect
 		  (efs-copy-file-internal
 		   filename parsed temp nil t nil
@@ -7347,7 +7325,7 @@ of the directory in efs's internal cache
 				   (sleep-for efs-retry-time)
 				   ;; Wait for file to hopefully appear.
 				   (file-readable-p temp))
-			       
+
 			       (setq i-f-c-size
 				     (nth 1 (apply handled-func
 						 temp visit args)))
@@ -7853,7 +7831,7 @@ of the directory in efs's internal cache
 	      ((eq efs-buffer-name-case 'up)
 	       (setq buff (upcase buff)))))
     (get-buffer-create (generate-new-buffer-name buff))))
-    
+
 (defun efs-set-buffer-mode ()
   "Set correct modes for the current buffer if it is visiting a remote file."
   (if (and (stringp buffer-file-name)
@@ -7990,7 +7968,7 @@ of the directory in efs's internal cache
 		       (cond (suid-p "s") (sticky-p "t") ("x"))
 		     (cond (suid-p "S") (sticky-p "T") ("-")))))
        (concat read-bit write-bit x-bit))))
-       
+
 (defun efs-mode-string (int)
   ;; Takes an octal integer between 0 and 7777, and returns the 9 character
   ;; mode string.
@@ -8006,7 +7984,7 @@ of the directory in efs's internal cache
     (concat (efs-build-mode-string-element owner-int suid nil)
 	    (efs-build-mode-string-element group-int sgid nil)
 	    (efs-build-mode-string-element other-int nil sticky))))
-  
+
 (defun efs-shell-call-process (command dir &optional in-background)
   ;; Runs shell process on remote hosts.
   (if (not efs-use-remote-shell-internally)
@@ -8526,7 +8504,7 @@ faster user access to newly visited file
   ;; Verifies the modtime for buffers visiting remote files.
   ;; Won't get called for buffer not visiting any file.
   (let ((buff (get-buffer buff)))
-    (null 
+    (null
      (and buff ; return t if no buffer?  Need to beware of multi-threading.
 	  (buffer-file-name buff) ; t if no file
 	  (let ((mdtm (save-excursion
@@ -8751,7 +8729,7 @@ faster user access to newly visited file
 		  (error))))
 	  (efs-real-load file noerror nomessage nosuffix))))))
 
-(defun efs-require (feature &optional filename)
+(defun efs-require (feature &optional filename &rest extra)
   "Documented as original."
   (if (eq feature 'ange-ftp) (efs-require-scream-and-yell))
   (if (featurep feature)
@@ -8779,9 +8757,9 @@ faster user access to newly visited file
 			  (signal 'file-error
 				  (list "efs-require: temp file %s is unreadable" temp)))
 		      (if filename
-			  (efs-real-require feature temp)
+			  (apply 'efs-real-require feature temp extra)
 			(let ((load-path (cons temp-directory load-path)))
-			  (efs-real-require feature))))
+			  (apply 'efs-real-require feature nil extra))))
 		  (condition-case nil
 		      (let (efs-verbose)
 			(delete-file temp))
@@ -8793,8 +8771,9 @@ faster user access to newly visited file
 		      (let (efs-verbose)
 			(delete-directory temp-directory))
 		    (error))))
-	    (efs-real-require feature (if filename
-					  fullpath))))))))
+	    (apply 'efs-real-require feature (if filename
+                                                 fullpath)
+                   extra)))))))
 
 (defun efs-require-scream-and-yell ()
   ;; Complain if something attempts to load ange-ftp.
@@ -8807,7 +8786,7 @@ If the culprit package does need to acce
 then it should be adequate to simply remove the \(require 'ange-ftp\)
 line and let efs handle remote file access.  Otherwise, it will need to
 be ported to efs.  This may already have been done, and you can find out
-by sending an enquiry to efs-help at hplb.hpl.hp.com.
+by sending an enquiry to elisp-code-efs at nongnu.org.
 
 Signalling an error with backtrace will allow you to determine which
 package was requiring ange-ftp.\n"))
@@ -8958,7 +8937,7 @@ minibuffer."
 	     ;; Non-unix machines will probably always insist
 	     ;; that rmdir takes a directory-name as an arg
 	     ;; (as the ftp man page says it should).
-	     (path 
+	     (path
 	      (if (or (memq host-type efs-unix-host-types)
 		      (memq host-type '(os2 dos)))
 		  (efs-internal-directory-file-name (nth 2 parsed))
@@ -8992,7 +8971,7 @@ minibuffer."
   ;; if TEMP is nil, does nothing.
   (and temp
        (efs-del-tmp-name temp)))
-	    
+
 ;;;; ------------------------------------------------------------
 ;;;; File copying support...
 ;;;; ------------------------------------------------------------
@@ -9042,7 +9021,7 @@ minibuffer."
 	  (if (null ent)
 	      (efs-add-file-entry host-type newname nil nil nil))))
     (efs-add-file-entry host-type newname nil size user)))
-  
+
 (defun efs-copy-remote-to-remote (f-host-type f-host f-user f-path filename
 					      t-host-type t-host t-user
 					      t-path newname append msg cont
@@ -9279,9 +9258,9 @@ minibuffer."
       (if (and (eq keep-date t) (null newname-parsed))
 	  ;; f-host must be remote now.
 	  (setq keep-date filename))
-	  
+
       (cond
-       
+
        ;; Check to see if we can do a PUT
        ((or
 	 (and (null f-host)
@@ -9352,7 +9331,7 @@ minibuffer."
 	       (if cont
 		   (efs-call-cont cont result line cont-lines))))
 	   nowait)))
-       
+
        ;; Check to see if we can do a GET
        ((and
 	 ;; I think that giving the append arg, will cause this function
@@ -9500,7 +9479,7 @@ minibuffer."
 	     (if cont
 		 (efs-call-cont cont result line cont-lines))))
 	 nowait xfer-type))
-       
+
        ;; Can't do anything direct. Divide and conquer.
        (t
 	(efs-copy-via-temp filename filename-parsed newname newname-parsed
@@ -9677,7 +9656,7 @@ minibuffer."
 						    '(dos os2)))
 			    (efs-internal-directory-file-name f)
 			  (efs-internal-file-name-as-directory nil f))))
-		
+
 		(efs-send-cmd
 		 host user (list 'rmdir rf)
 		 (concat "Deleting directory " (efs-relativize-filename f))
@@ -9933,7 +9912,7 @@ minibuffer."
 		  (efs-rename-from-remote filename f-parsed newname t-parsed
 					  msg cont nowait)))
 	    ;; local to remote
-	    (efs-rename-local-to-remote 
+	    (efs-rename-local-to-remote
 	     filename newname t-parsed msg cont nowait)))))))
 
 (defun efs-rename-file (filename newname &optional ok-if-already-exists nowait)
@@ -10267,7 +10246,7 @@ to the listing type cache."
 Please report this as a bug. It would be very helpful
 if your bug report contained at least the PWD command
 within the *ftp %s@%s* buffer.
-If you know them, also send the operating system 
+If you know them, also send the operating system
 and ftp server types of the remote host." host user host)))
   (if (y-or-n-p "Would you like to submit a bug report now? ")
       (efs-report-bug host user
@@ -10296,7 +10275,7 @@ and ftp server types of the remote host.
    "[-A-Z0-9$*]?[-A-Z0-9$*]?[-A-Z0-9$*]?\\.[0-9][0-9][0-9A-Z]$\\|"
    ;; For the SFS version of CMS
    "^[-A-Z0-9]+:[-A-Z0-9$*]+\\.$"))
-   
+
 (defconst efs-mvs-path-template "^'?[A-Z][0-9][0-9]?[0-9]?[0-9]?[0-9]?\\.'?")
 
 (defconst efs-guardian-path-template
@@ -10403,10 +10382,10 @@ in file name expansion."
 		 (dir (car result))
 		 (line (cdr result)))
 	    (cond
-	     
+
 	     ;; First sift through process lines to see if we recognize
 	     ;; any pwd errors, or full line messages.
-	     
+
 	     ;; CMS
 	     ((string-match efs-cms-pwd-line-template line)
 	      (setq host-type (efs-add-host 'cms host)
@@ -10418,12 +10397,12 @@ in file name expansion."
 	       "Unable to determine a \"home\" CMS minidisk.  Assuming %s"
 	       dir)
 	      (sit-for 1))
-	     
+
 	     ;; TOPS-20
 	     ((string-match efs-tops-20-pwd-line-template line)
 	      (setq host-type (efs-add-host 'tops-20 host)
 		    dir (car (efs-send-pwd 'tops-20 host user))))
-	     
+
 	     ;; TI-EXPLORER lisp machine. pwd works here, but the output
 	     ;; needs to be specially parsed since spaces separate
 	     ;; hostnames from dirs from filenames.
@@ -10447,7 +10426,7 @@ in file name expansion."
 	     ((string-match efs-coke-pwd-line-template line)
 	      (setq host-type (efs-add-host 'coke host)
 		    dir "/"))
-	     
+
 	     ;; Try to get tilde.
 	     ((null dir)
 	      (let ((tilde (nth 1 (efs-send-cmd
@@ -10463,12 +10442,12 @@ in file name expansion."
 		 ((string-match efs-cms-knet-tilde-regexp tilde)
 		  (setq dir (car (efs-send-pwd 'cms-knet host user))
 			host-type (efs-add-host 'cms-knet host)))
-		 
+
 		 ;; We don't know. Scream and yell.
 		 (efs-scream-and-yell host user))))
-	     
+
 	     ;; Now look at dir to determine host type
-	     
+
 	     ;; try for UN*X-y type stuff
 	     ((string-match efs-unix-path-template dir)
 	      (if
@@ -10489,15 +10468,15 @@ in file name expansion."
 		       ((string-match "^UNIX" syst)
 			(setq host-type (efs-add-host 'unix host))
 			(efs-add-listing-type 'unix:unknown host user)))))))
-	     
+
 	     ;; try for VMS
 	     ((string-match efs-vms-path-template dir)
 	      (setq host-type (efs-add-host 'vms host)))
-	     
+
 	     ;; try for MTS
 	     ((string-match efs-mts-path-template dir)
 	      (setq host-type (efs-add-host 'mts host)))
-	     
+
 	     ;; try for CMS
 	     ((string-match efs-cms-path-template dir)
 	      (setq host-type (efs-add-host 'cms host)))
@@ -10505,12 +10484,12 @@ in file name expansion."
 	     ;; try for Tandem's guardian OS
 	     ((string-match efs-guardian-path-template dir)
 	      (setq host-type (efs-add-host 'guardian host)))
-	     
+
 	     ;; Try for TOPS-20. pwd doesn't usually work for tops-20
 	     ;; But who knows???
 	     ((string-match efs-tops-20-path-template dir)
 	      (setq host-type (efs-add-host 'tops-20 host)))
-	     
+
 	     ;; Try for DOS or OS/2.
 	     ((string-match efs-pc-path-template dir)
 	      (let ((syst (efs-get-syst host user))
@@ -10518,7 +10497,7 @@ in file name expansion."
 		(if (and syst (string-match "^OS/2 " syst))
 		    (setq host-type (efs-add-host 'os2 host))
 		  (setq host-type (efs-add-host 'dos host)))))
-	     
+
 	     ;; try for TI-TWENEX lisp machine
 	     ((string-match efs-ti-twenex-path-template dir)
 	      (setq host-type (efs-add-host 'ti-twenex host)))
@@ -10549,11 +10528,11 @@ in file name expansion."
 	     ;; Try for NOS/VE
 	     ((string-match efs-nos-ve-path-template dir)
 	      (setq host-type (efs-add-host 'nos-ve host)))
-	     
+
 	     ;; We don't know. Scream and yell.
 	     (t
 	      (efs-scream-and-yell host user)))
-	    
+
 	    ;; Now that we have done