diff lisp/net/tramp-ftp.el @ 50494:5b6aaf393205

Version 2.0.33 released. Change coding cookie to `iso-2022-7bit' for XEmacs compatibility. (From Steve Youngs <youngs@xemacs.org>.)
author Kai Großjohann <kgrossjo@eu.uu.net>
date Tue, 08 Apr 2003 20:06:12 +0000
parents 407d6516031a
children 6234a4fe96f9
line wrap: on
line diff
--- a/lisp/net/tramp-ftp.el	Tue Apr 08 17:11:00 2003 +0000
+++ b/lisp/net/tramp-ftp.el	Tue Apr 08 20:06:12 2003 +0000
@@ -94,18 +94,25 @@
   (save-match-data
     (or (boundp 'ange-ftp-name-format)
 	(require 'ange-ftp))
-    (let* ((ange-ftp-name-format
-	    (list (nth 0 tramp-file-name-structure)
-		  (nth 3 tramp-file-name-structure)
-		  (nth 2 tramp-file-name-structure)
-		  (nth 4 tramp-file-name-structure)))
-	   (inhibit-file-name-handlers
-	    (list 'tramp-file-name-handler
-		  'tramp-completion-file-name-handler
-		  (and (eq inhibit-file-name-operation operation)
-		       inhibit-file-name-handlers)))
-	   (inhibit-file-name-operation operation))
-      (apply 'ange-ftp-hook-function operation args))))
+    (let ((ange-ftp-name-format
+	   (list (nth 0 tramp-file-name-structure)
+		 (nth 3 tramp-file-name-structure)
+		 (nth 2 tramp-file-name-structure)
+		 (nth 4 tramp-file-name-structure))))
+      (cond
+       ;; If argument is a symlink, 'file-directory-p` and 'file-exists-p`
+       ;; call the traversed file recursively. So we cannot disable the
+       ;;file-name-handler this case.
+       ((memq operation '(file-directory-p file-exists-p))
+	(apply 'ange-ftp-hook-function operation args))
+	;; Normally, the handlers must be discarded
+	(t (let* ((inhibit-file-name-handlers
+		   (list 'tramp-file-name-handler
+			 'tramp-completion-file-name-handler
+			 (and (eq inhibit-file-name-operation operation)
+			      inhibit-file-name-handlers)))
+		  (inhibit-file-name-operation operation))
+	     (apply 'ange-ftp-hook-function operation args)))))))
 
 (defun tramp-ftp-file-name-p (filename)
   "Check if it's a filename that should be forwarded to Ange-FTP."
@@ -127,10 +134,8 @@
 
 ;; * In case of "/ftp:host:file" this works only for functions which
 ;;   are defined in `tramp-file-name-handler-alist'.  Call has to be
-;;   pretended in `tramp-file-name-handler' otherwise.  Looks like
-;;   `ange-ftp-completion-hook-function' and `ange-ftp-hook-function'
-;;   are active temporarily in `file-name-handler-alist'.
-;;   Furthermore, there are no backup files on FTP hosts this case.
+;;   pretended in `tramp-file-name-handler' otherwise.
+;;   Furthermore, there are no backup files on FTP hosts.
 ;;   Worth further investigations.
 
 ;;; tramp-ftp.el ends here