Mercurial > emacs
changeset 14887:11a44a4c4bfe
(ange-ftp-wait-not-busy): New subroutine.
Kill ftp process if user quits.
(ange-ftp-raw-send-cmd): Use that.
(ange-ftp-fix-dir-name-for-cms): Fix error message.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 27 Mar 1996 00:10:38 +0000 |
parents | 96423e733197 |
children | b256ebb2110a |
files | lisp/ange-ftp.el |
diffstat | 1 files changed, 25 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ange-ftp.el Wed Mar 27 00:09:54 1996 +0000 +++ b/lisp/ange-ftp.el Wed Mar 27 00:10:38 1996 +0000 @@ -1711,16 +1711,7 @@ (if (memq (process-status proc) '(run open)) (save-excursion (set-buffer (process-buffer proc)) - (while ange-ftp-process-busy - ;; This is a kludge to let user quit in case ftp gets hung. - ;; It matters because this function can be called from the filter. - ;; It is bad to allow quitting in a filter, but getting hung - ;; is worse. By binding quit-flag to nil, we might avoid - ;; most of the probability of getting screwed because the user - ;; wants to quit some command. - (let ((quit-flag nil) - (inhibit-quit nil)) - (accept-process-output))) + (ange-ftp-wait-not-busy proc) (setq ange-ftp-process-string "" ange-ftp-process-result-line "" ange-ftp-process-busy t @@ -1744,17 +1735,33 @@ (set-marker (process-mark proc) (point)) (if nowait nil - ;; hang around for command to complete - (while ange-ftp-process-busy - ;; This is a kludge to let user quit in case ftp gets hung. - ;; It matters because this function can be called from the filter. - (let ((quit-flag nil) - (inhibit-quit nil)) - (accept-process-output proc))) + (ange-ftp-wait-not-busy proc) (if cont nil ;cont has already been called (cons ange-ftp-process-result ange-ftp-process-result-line)))))) +;; Wait for the ange-ftp process PROC not to be busy. +(defun ange-ftp-wait-not-busy (proc) + (save-excursion + (set-buffer (process-buffer proc)) + (condition-case nil + ;; This is a kludge to let user quit in case ftp gets hung. + ;; It matters because this function can be called from the filter. + ;; It is bad to allow quitting in a filter, but getting hung + ;; is worse. By binding quit-flag to nil, we might avoid + ;; most of the probability of getting screwed because the user + ;; wants to quit some command. + (let ((quit-flag nil) + (inhibit-quit nil)) + (while ange-ftp-process-busy + (accept-process-output proc))) + (quit + ;; If the user does quit out of this, + ;; kill the process. That stops any transfer in progress. + ;; The next operation will open a new ftp connection. + (delete-process proc) + (signal 'quit nil))))) + (defun ange-ftp-nslookup-host (host) "Attempt to resolve the given HOSTNAME using nslookup if possible." (interactive "sHost: ") @@ -5281,7 +5288,7 @@ file ;; give up (ange-ftp-error ange-ftp-this-host ange-ftp-this-user - (format "cd to minidisk %s failed: " + (format "cd to minidisk %s failed: %s" minidisk (cdr result)))))))) (t (error "Invalid CMS file name"))))