changeset 96392:61ba354c1338

* net/tramp.el (tramp-handle-file-modes): Handle symlinks. (tramp-convert-file-attributes): Convert symlinks only when returned from `tramp-handle-file-attributes-with-stat'.
author Michael Albinus <michael.albinus@gmx.de>
date Sat, 28 Jun 2008 10:16:37 +0000
parents c114f6a4c246
children 269a30341454
files lisp/net/tramp.el
diffstat 1 files changed, 8 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/net/tramp.el	Sat Jun 28 10:15:00 2008 +0000
+++ b/lisp/net/tramp.el	Sat Jun 28 10:16:37 2008 +0000
@@ -2675,9 +2675,9 @@
 
 (defun tramp-handle-file-modes (filename)
   "Like `file-modes' for Tramp files."
-  (when (file-exists-p filename)
-    (tramp-mode-string-to-int
-     (nth 8 (file-attributes filename)))))
+  (let ((truename (or (file-truename filename) filename)))
+    (when (file-exists-p truename)
+      (tramp-mode-string-to-int (nth 8 (file-attributes truename))))))
 
 (defun tramp-handle-file-directory-p (filename)
   "Like `file-directory-p' for Tramp files."
@@ -6627,9 +6627,11 @@
   (unless (stringp (nth 8 attr))
     (setcar (nthcdr 8 attr) (tramp-file-mode-from-int (nth 8 attr))))
   ;; Convert directory indication bit.
-  (if (string-match "^d" (nth 8 attr))
-      (setcar attr t)
-    (if (and (listp (car attr)) (stringp (caar attr))
+  (when (string-match "^d" (nth 8 attr))
+    (setcar attr t))
+  ;; Convert symlink from `tramp-handle-file-attributes-with-stat'.
+  (when (consp (car attr))
+    (if (and (stringp (caar attr))
 	     (string-match ".+ -> .\\(.+\\)." (caar attr)))
 	(setcar attr (match-string 1 (caar attr)))
       (setcar attr nil)))