changeset 45432:85b978f04df7

(ange-ftp-generate-root-prefixes) (ange-ftp-file-name-completion): Don't cons unnecessarily. (ange-ftp-send-cmd): Always `cd' before doing `ls'.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 20 May 2002 18:51:49 +0000
parents 7505ed4a9b60
children b718fe5a6992
files lisp/net/ange-ftp.el
diffstat 1 files changed, 11 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/net/ange-ftp.el	Mon May 20 18:48:58 2002 +0000
+++ b/lisp/net/ange-ftp.el	Mon May 20 18:51:49 2002 +0000
@@ -1459,13 +1459,11 @@
 	  (if (string-match "^[^/]*\\(/\\).*$" key)
 	      (let ((host (substring key 0 (match-beginning 1)))
 		    (user (substring key (match-end 1))))
-		(setq res (cons (list (concat user "@" host ":"))
-				res))))))
+		(push (concat user "@" host ":") res)))))
        ange-ftp-passwd-hashtable)
       (ange-ftp-map-hashtable
        (function (lambda (host user)
-		   (setq res (cons (list (concat host ":"))
-				   res))))
+		   (push (concat host ":") res)))
        ange-ftp-user-hashtable)
       (or res (list nil)))))
 
@@ -2357,9 +2355,13 @@
 	(setq cmd1 "."))
 
       ;; If the remote ls can take switches, put them in
-      (or (memq host-type ange-ftp-dumb-host-types)
-	  (setq cmd0 'ls
-		cmd1 (format "\"%s %s\"" cmd3 cmd1))))
+      (unless (memq host-type ange-ftp-dumb-host-types)
+	(setq cmd0 'ls)
+	;; We cd and then use `ls' with no directory argument.
+	;; This works around a misfeature of some versions of netbsd ftpd.
+	(unless (equal cmd1 ".")
+	  (setq result (ange-ftp-cd host user (nth 1 cmd) 'noerror)))
+	(setq cmd1 cmd3)))
 
      ;; First argument is the remote name
      ((progn
@@ -4077,9 +4079,8 @@
 	  (try-completion
 	   file
 	   (nconc (ange-ftp-generate-root-prefixes)
-		  (mapcar 'list
-			  (ange-ftp-real-file-name-all-completions
-			   file ange-ftp-this-dir))))
+		  (ange-ftp-real-file-name-all-completions
+		   file ange-ftp-this-dir)))
 	(ange-ftp-real-file-name-completion file ange-ftp-this-dir)))))