emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/net/ange-ftp.el


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/lisp/net/ange-ftp.el
Date: Wed, 14 Sep 2005 17:03:57 -0400

Index: emacs/lisp/net/ange-ftp.el
diff -c emacs/lisp/net/ange-ftp.el:1.71 emacs/lisp/net/ange-ftp.el:1.72
*** emacs/lisp/net/ange-ftp.el:1.71     Thu Aug 11 10:24:48 2005
--- emacs/lisp/net/ange-ftp.el  Wed Sep 14 21:03:56 2005
***************
*** 1641,1721 ****
  ;; on to ange-ftp-process-handle-line to deal with.
  
  (defun ange-ftp-process-filter (proc str)
!   (let ((buffer (process-buffer proc))
!       (old-buffer (current-buffer)))
! 
!     ;; Eliminate nulls.
!     (while (string-match "\000+" str)
!       (setq str (replace-match "" nil nil str)))
! 
!     ;; see if the buffer is still around... it could have been deleted.
!     (if (buffer-name buffer)
!       (unwind-protect
!           (progn
!             (set-buffer (process-buffer proc))
! 
!             ;; handle hash mark printing
!             (and ange-ftp-process-busy
!                  (string-match "\\`#+\\'" str)
!                  (setq str (ange-ftp-process-handle-hash str)))
!             (comint-output-filter proc str)
!             ;; Replace STR by the result of the comint processing.
!             (setq str (buffer-substring comint-last-output-start
!                                         (process-mark proc)))
!             (if ange-ftp-process-busy
!                 (progn
!                   (setq ange-ftp-process-string (concat 
ange-ftp-process-string
!                                                         str))
! 
!                   ;; if we gave an empty password to the USER command earlier
!                   ;; then we should send a null password now.
!                   (if (string-match "Password: *$" ange-ftp-process-string)
!                       (process-send-string proc "\n"))))
!             (while (and ange-ftp-process-busy
!                         (string-match "\n" ange-ftp-process-string))
!               (let ((line (substring ange-ftp-process-string
!                                      0
!                                      (match-beginning 0)))
!                       (seen-prompt nil))
!                 (setq ange-ftp-process-string (substring 
ange-ftp-process-string
!                                                          (match-end 0)))
!                 (while (string-match "\\`ftp> *" line)
!                     (setq seen-prompt t)
!                   (setq line (substring line (match-end 0))))
!                   (if (not (and seen-prompt ange-ftp-pending-error-line))
!                       (ange-ftp-process-handle-line line proc)
!                     ;; If we've seen a potential error message and it
!                     ;; hasn't been cancelled by a good message before
!                     ;; seeing a propt, then the error was real.
!                     (delete-process proc)
!                     (setq ange-ftp-process-busy nil
!                           ange-ftp-process-result-line 
ange-ftp-pending-error-line))))
! 
!             ;; has the ftp client finished?  if so then do some clean-up
!             ;; actions.
!             (if (not ange-ftp-process-busy)
!                 (progn
!                   ;; reset the xfer size
!                   (setq ange-ftp-xfer-size 0)
! 
!                   ;; issue the "done" message since we've finished.
!                   (if (and ange-ftp-process-msg
!                            ange-ftp-process-verbose
!                            ange-ftp-process-result)
!                       (progn
!                         (ange-ftp-message "%s...done" ange-ftp-process-msg)
!                         (ange-ftp-repaint-minibuffer)
!                         (setq ange-ftp-process-msg nil)))
! 
!                   ;; is there a continuation we should be calling?  if so,
!                   ;; we'd better call it, making sure we only call it once.
!                   (if ange-ftp-process-continue
!                       (let ((cont ange-ftp-process-continue))
!                         (setq ange-ftp-process-continue nil)
!                         (ange-ftp-call-cont cont
!                                             ange-ftp-process-result
!                                             ange-ftp-process-result-line))))))
!         (set-buffer old-buffer)))))
  
  (defun ange-ftp-process-sentinel (proc str)
    "When ftp process changes state, nuke all file-entries in cache."
--- 1641,1715 ----
  ;; on to ange-ftp-process-handle-line to deal with.
  
  (defun ange-ftp-process-filter (proc str)
!   ;; Eliminate nulls.
!   (while (string-match "\000+" str)
!     (setq str (replace-match "" nil nil str)))
! 
!   ;; see if the buffer is still around... it could have been deleted.
!   (when (buffer-live-p (process-buffer proc))
!     (with-current-buffer (process-buffer proc)
! 
!       ;; handle hash mark printing
!       (and ange-ftp-process-busy
!            (string-match "^#+$" str)
!            (setq str (ange-ftp-process-handle-hash str)))
!       (comint-output-filter proc str)
!       ;; Replace STR by the result of the comint processing.
!       (setq str (buffer-substring comint-last-output-start
!                                   (process-mark proc)))
!       (if ange-ftp-process-busy
!           (progn
!             (setq ange-ftp-process-string (concat ange-ftp-process-string
!                                                   str))
! 
!             ;; if we gave an empty password to the USER command earlier
!             ;; then we should send a null password now.
!             (if (string-match "Password: *$" ange-ftp-process-string)
!                 (process-send-string proc "\n"))))
!       (while (and ange-ftp-process-busy
!                   (string-match "\n" ange-ftp-process-string))
!         (let ((line (substring ange-ftp-process-string
!                                0
!                                (match-beginning 0)))
!               (seen-prompt nil))
!           (setq ange-ftp-process-string (substring ange-ftp-process-string
!                                                    (match-end 0)))
!           (while (string-match "\\`ftp> *" line)
!             (setq seen-prompt t)
!             (setq line (substring line (match-end 0))))
!           (if (not (and seen-prompt ange-ftp-pending-error-line))
!               (ange-ftp-process-handle-line line proc)
!             ;; If we've seen a potential error message and it
!             ;; hasn't been cancelled by a good message before
!             ;; seeing a propt, then the error was real.
!             (delete-process proc)
!             (setq ange-ftp-process-busy nil
!                   ange-ftp-process-result-line ange-ftp-pending-error-line))))
! 
!       ;; has the ftp client finished?  if so then do some clean-up
!       ;; actions.
!       (if (not ange-ftp-process-busy)
!           (progn
!             ;; reset the xfer size
!             (setq ange-ftp-xfer-size 0)
! 
!             ;; issue the "done" message since we've finished.
!             (if (and ange-ftp-process-msg
!                      ange-ftp-process-verbose
!                      ange-ftp-process-result)
!                 (progn
!                   (ange-ftp-message "%s...done" ange-ftp-process-msg)
!                   (ange-ftp-repaint-minibuffer)
!                   (setq ange-ftp-process-msg nil)))
! 
!             ;; is there a continuation we should be calling?  if so,
!             ;; we'd better call it, making sure we only call it once.
!             (if ange-ftp-process-continue
!                 (let ((cont ange-ftp-process-continue))
!                   (setq ange-ftp-process-continue nil)
!                   (ange-ftp-call-cont cont
!                                       ange-ftp-process-result
!                                       ange-ftp-process-result-line))))))))
  
  (defun ange-ftp-process-sentinel (proc str)
    "When ftp process changes state, nuke all file-entries in cache."
***************
*** 1795,1802 ****
  
  (defun ange-ftp-gwp-start (host user name args)
    "Login to the gateway machine and fire up an ftp process."
!   (let* ((gw-user (ange-ftp-get-user ange-ftp-gateway-host))
!        ;; It would be nice to make process-connection-type nil,
         ;; but that doesn't work: ftp never responds.
         ;; Can anyone find a fix for that?
         (proc (let ((process-connection-type t))
--- 1789,1795 ----
  
  (defun ange-ftp-gwp-start (host user name args)
    "Login to the gateway machine and fire up an ftp process."
!   (let* (;; It would be nice to make process-connection-type nil,
         ;; but that doesn't work: ftp never responds.
         ;; Can anyone find a fix for that?
         (proc (let ((process-connection-type t))
***************
*** 2137,2143 ****
        (save-excursion
        (set-buffer (process-buffer proc))
        (let* ((status (ange-ftp-raw-send-cmd proc "hash"))
-              (result (car status))
               (line (cdr status)))
          (save-match-data
            (if (string-match ange-ftp-hash-mark-msgs line)
--- 2130,2135 ----
***************
*** 4484,4491 ****
  ;; `ange-ftp-ls' handles this.
  
  (defun ange-ftp-insert-directory (file switches &optional wildcard full)
!   (let ((short (ange-ftp-abbreviate-filename file))
!       (parsed (ange-ftp-ftp-name (expand-file-name file)))
        tem)
      (if parsed
        (if (and (not wildcard)
--- 4476,4482 ----
  ;; `ange-ftp-ls' handles this.
  
  (defun ange-ftp-insert-directory (file switches &optional wildcard full)
!   (let ((parsed (ange-ftp-ftp-name (expand-file-name file)))
        tem)
      (if parsed
        (if (and (not wildcard)
***************
*** 4511,4520 ****
  (defun ange-ftp-file-name-sans-versions (file keep-backup-version)
    (let* ((short (ange-ftp-abbreviate-filename file))
         (parsed (ange-ftp-ftp-name short))
!        host-type func)
      (if parsed
!       (setq host-type (ange-ftp-host-type (car parsed))
!             func (cdr (assq (ange-ftp-host-type (car parsed))
                              ange-ftp-sans-version-alist))))
      (if func (funcall func file keep-backup-version)
        (ange-ftp-real-file-name-sans-versions file keep-backup-version))))
--- 4502,4510 ----
  (defun ange-ftp-file-name-sans-versions (file keep-backup-version)
    (let* ((short (ange-ftp-abbreviate-filename file))
         (parsed (ange-ftp-ftp-name short))
!        func)
      (if parsed
!       (setq func (cdr (assq (ange-ftp-host-type (car parsed))
                              ange-ftp-sans-version-alist))))
      (if func (funcall func file keep-backup-version)
        (ange-ftp-real-file-name-sans-versions file keep-backup-version))))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]