From 929df0e72251a48d1cf9b329f594ac3fe64a7b35 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Fri, 29 Jun 2012 09:14:36 +0200 Subject: [PATCH] * net/ange-ftp.el (ange-ftp-get-passwd): Throw if `non-essential' is non-nil. (ange-ftp-ignore-errors-if-non-essential): New defmacro. (ange-ftp-file-name-all-completions): Use it. (Bug#11808) --- lisp/ChangeLog | 7 +++++++ lisp/net/ange-ftp.el | 12 +++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0f293be18c9..788a94e01b3 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2012-06-29 Michael Albinus + + * net/ange-ftp.el (ange-ftp-get-passwd): Throw if `non-essential' + is non-nil. + (ange-ftp-ignore-errors-if-non-essential): New defmacro. + (ange-ftp-file-name-all-completions): Use it. (Bug#11808) + 2012-06-29 Andreas Schwab * calendar/cal-dst.el (calendar-current-time-zone): diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el index 6ac01a1cd69..16ebff1cce5 100644 --- a/lisp/net/ange-ftp.el +++ b/lisp/net/ange-ftp.el @@ -1200,6 +1200,11 @@ only return the directory part of FILE." (defun ange-ftp-get-passwd (host user) "Return the password for specified HOST and USER, asking user if necessary." + ;; If `non-essential' is non-nil, don't ask for a password. It will + ;; be catched in Tramp. + (when non-essential + (throw 'non-essential 'non-essential)) + (ange-ftp-parse-netrc) ;; look up password in the hash table first; user might have overridden the @@ -3969,10 +3974,15 @@ E.g., (string-match "\\`[a-zA-Z]:[/\\]\\'" dir)) (string-equal "/" dir))) +(defmacro ange-ftp-ignore-errors-if-non-essential (&rest body) + `(if non-essential + (ignore-errors ,@body) + (progn ,@body))) + (defun ange-ftp-file-name-all-completions (file dir) (let ((ange-ftp-this-dir (expand-file-name dir))) (if (ange-ftp-ftp-name ange-ftp-this-dir) - (progn + (ange-ftp-ignore-errors-if-non-essential (ange-ftp-barf-if-not-directory ange-ftp-this-dir) (setq ange-ftp-this-dir (ange-ftp-real-file-name-as-directory ange-ftp-this-dir))