Function: ange-ftp-gwp-start
ange-ftp-gwp-start is a byte-compiled function defined in
ange-ftp.el.gz.
Signature
(ange-ftp-gwp-start HOST USER NAME ARGS)
Documentation
Login to the gateway machine and fire up an FTP process.
Source Code
;; Defined in /usr/src/emacs/lisp/net/ange-ftp.el.gz
(defun ange-ftp-gwp-start (host user name args)
"Login to the gateway machine and fire up an FTP process."
;; If `non-essential' is non-nil, don't reopen a new connection. It
;; will be caught in Tramp.
(when non-essential
(throw 'non-essential 'non-essential))
(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))
(start-process name name
ange-ftp-gateway-program
ange-ftp-gateway-host)))
(ftp (mapconcat 'identity args " ")))
(set-process-query-on-exit-flag proc nil)
(set-process-sentinel proc 'ange-ftp-gwp-sentinel)
(set-process-filter proc 'ange-ftp-gwp-filter)
(with-current-buffer (process-buffer proc)
(goto-char (point-max))
(set-marker (process-mark proc) (point)))
(setq ange-ftp-gwp-running t
ange-ftp-gwp-status nil)
(ange-ftp-message "Connecting to gateway %s..." ange-ftp-gateway-host)
(while ange-ftp-gwp-running ;perform login sequence
(accept-process-output proc))
(unless ange-ftp-gwp-status
(ange-ftp-error host user "unable to login to gateway"))
(ange-ftp-message "Connecting to gateway %s...done" ange-ftp-gateway-host)
(setq ange-ftp-gwp-running t
ange-ftp-gwp-status nil)
(process-send-string proc ange-ftp-gateway-setup-term-command)
(while ange-ftp-gwp-running ;zap ^M's and double echoing.
(accept-process-output proc))
(unless ange-ftp-gwp-status
(ange-ftp-error host user "unable to set terminal modes on gateway"))
(setq ange-ftp-gwp-running t
ange-ftp-gwp-status nil)
(process-send-string proc (concat "exec " ftp "\n")) ;spawn ftp process
proc))