Function: ange-ftp-normal-login
ange-ftp-normal-login is a byte-compiled function defined in
ange-ftp.el.gz.
Signature
(ange-ftp-normal-login HOST USER PASSWORD ACCOUNT PROC)
Documentation
Connect to the FTP-server on HOST as USER using PASSWORD and ACCOUNT.
PROC is the process to the FTP-client. HOST may have an optional suffix of the form #PORT to specify a non-default port.
Source Code
;; Defined in /usr/src/emacs/lisp/net/ange-ftp.el.gz
(defun ange-ftp-normal-login (host user password account proc)
"Connect to the FTP-server on HOST as USER using PASSWORD and ACCOUNT.
PROC is the process to the FTP-client. HOST may have an optional
suffix of the form #PORT to specify a non-default port."
(save-match-data
(string-match "\\`\\([^#]+\\)\\(#\\([0-9]+\\)\\)?\\'" host)
(let* ((nshost (ange-ftp-nslookup-host (match-string 1 host)))
(port (match-string 3 host))
(result (ange-ftp-raw-send-cmd
proc
(if port
(format "open %s %s" nshost port)
(format "open %s" nshost))
(format "Opening FTP connection to %s" host))))
(or (car result)
(ange-ftp-error host user
(concat "OPEN request failed: "
(cdr result))))
(if (not (and ange-ftp-raw-login (string< "" account)))
(setq result (ange-ftp-raw-send-cmd
proc
(if (and (ange-ftp-use-smart-gateway-p host)
ange-ftp-gateway-host)
(format "user \"%s\"@%s %s %s"
user nshost password account)
(format "user \"%s\" %s %s" user password account))
(format "Logging in as user %s@%s" user host)))
(let ((good ange-ftp-good-msgs)
(skip ange-ftp-skip-msgs))
(setq ange-ftp-good-msgs (concat ange-ftp-good-msgs
"\\|^331 \\|^332 "))
(if (string-match (regexp-quote "\\|^331 ") ange-ftp-skip-msgs)
(setq ange-ftp-skip-msgs
(replace-match "" t t ange-ftp-skip-msgs)))
(if (string-match (regexp-quote "\\|^332 ") ange-ftp-skip-msgs)
(setq ange-ftp-skip-msgs
(replace-match "" t t ange-ftp-skip-msgs)))
(setq result (ange-ftp-raw-send-cmd
proc
(format "quote \"USER %s\"" user)
(format "Logging in as user %s@%s" user host)))
(and (car result)
(setq result (ange-ftp-raw-send-cmd
proc
(format "quote \"PASS %s\"" password)
(format "Logging in as user %s@%s" user host)))
(and (car result)
(setq result (ange-ftp-raw-send-cmd
proc
(format "quote \"ACCT %s\"" account)
(format "Logging in as user %s@%s" user host)))
))
(setq ange-ftp-good-msgs good
ange-ftp-skip-msgs skip)))
(or (car result)
(progn
(ange-ftp-set-passwd host user nil) ;reset password.
(ange-ftp-set-account host user nil) ;reset account.
(ange-ftp-error host user
(concat "USER request failed: "
(cdr result))))))))