From d9320986e56f1a3761ad8da0f77794fa9c99ef46 Mon Sep 17 00:00:00 2001
From: Michael Albinus <michael.albinus@gmx.de>
Date: Fri, 5 Feb 2010 12:15:28 +0100
Subject: [PATCH] * net/ange-ftp.el (ange-ftp-insert-directory): *
 net/tramp-imap.el (tramp-imap-handle-insert-directory): * net/tramp-smb.el
 (tramp-smb-handle-insert-directory): Handle also directories.  (Bug#5478)

---
 lisp/ChangeLog         |  7 +++++++
 lisp/net/ange-ftp.el   |  3 ++-
 lisp/net/tramp-imap.el | 10 ++++++----
 lisp/net/tramp-smb.el  | 14 ++++++++------
 4 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 77196ad4842..9013caf2026 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
+2010-02-05  Michael Albinus  <michael.albinus@gmx.de>
+
+	* net/ange-ftp.el (ange-ftp-insert-directory):
+	* net/tramp-imap.el (tramp-imap-handle-insert-directory):
+	* net/tramp-smb.el (tramp-smb-handle-insert-directory):
+	Handle also directories.  (Bug#5478)
+
 2010-02-05  Glenn Morris  <rgm@gnu.org>
 
 	* progmodes/f90.el (f90-font-lock-keywords-2): Fix `enum'.
diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
index 127fba3d7fb..97a334a50ff 100644
--- a/lisp/net/ange-ftp.el
+++ b/lisp/net/ange-ftp.el
@@ -4533,9 +4533,10 @@ NEWNAME should be the name to give the new compressed or uncompressed file.")
        (when (string-match "-?d\\'" switches)
          ;; Remove "d" which dired added to `switches'.
          (setq switches (substring switches 0 (match-beginning 0))))
+       (setq file (directory-file-name file))
        (let* ((dirlist (ange-ftp-ls (or (file-name-directory file) ".")
                                     switches 'parse))
-              (filename (file-name-nondirectory (directory-file-name file)))
+              (filename (file-name-nondirectory file))
               (case-fold-search nil))
          ;; FIXME: This presumes a particular output format, which is
          ;; basically Unix.
diff --git a/lisp/net/tramp-imap.el b/lisp/net/tramp-imap.el
index 60c19c1a43c..d36569b5c23 100644
--- a/lisp/net/tramp-imap.el
+++ b/lisp/net/tramp-imap.el
@@ -395,9 +395,10 @@ SIZE MODE WEIRD INODE DEVICE)."
   (filename switches &optional wildcard full-directory-p)
   "Like `insert-directory' for Tramp files."
   (setq filename (expand-file-name filename))
-  (when full-directory-p
-    ;; Called from `dired-add-entry'.
-    (setq filename (file-name-as-directory filename)))
+  (if full-directory-p
+      ;; Called from `dired-add-entry'.
+      (setq filename (file-name-as-directory filename))
+    (setq filename (directory-file-name filename)))
   (with-parsed-tramp-file-name filename nil
     (save-match-data
       (let ((base (file-name-nondirectory localname))
@@ -479,7 +480,8 @@ SIZE MODE WEIRD INODE DEVICE)."
 	       (insert
 		(format
 		 "%s\n"
-		 (file-relative-name (expand-file-name (nth 0 x) filename))))
+		 (file-relative-name
+		  (expand-file-name (nth 0 x) (file-name-directory filename)))))
 	       (put-text-property pos (1- (point)) 'dired-filename t))
 	     (forward-line)
 	     (beginning-of-line)))
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index a8c8345c446..0803a186042 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -651,9 +651,10 @@ PRESERVE-UID-GID is completely ignored."
   (filename switches &optional wildcard full-directory-p)
   "Like `insert-directory' for Tramp files."
   (setq filename (expand-file-name filename))
-  (when full-directory-p
-    ;; Called from `dired-add-entry'.
-    (setq filename (file-name-as-directory filename)))
+  (if full-directory-p
+      ;; Called from `dired-add-entry'.
+      (setq filename (file-name-as-directory filename))
+    (setq filename (directory-file-name filename)))
   (with-parsed-tramp-file-name filename nil
     (save-match-data
       (let ((base (file-name-nondirectory filename))
@@ -715,8 +716,7 @@ PRESERVE-UID-GID is completely ignored."
 	     (let ((attr
 		    (when (tramp-smb-get-stat-capability v)
 		      (ignore-errors
-			(file-attributes
-			 (expand-file-name (nth 0 x) filename) 'string)))))
+			(file-attributes filename 'string)))))
 	       (insert
 		(format
 		 "%10s %3d %-8s %-8s %8s %s "
@@ -739,7 +739,9 @@ PRESERVE-UID-GID is completely ignored."
 		 (insert
 		  (format
 		   "%s\n"
-		   (file-relative-name (expand-file-name (nth 0 x) filename))))
+		   (file-relative-name
+		    (expand-file-name
+		     (nth 0 x) (file-name-directory filename)))))
 		 (put-text-property start (1- (point)) 'dired-filename t))
 	       (forward-line)
 	       (beginning-of-line))))
-- 
2.39.5