Function: ange-ftp-insert-file-contents
ange-ftp-insert-file-contents is a byte-compiled function defined in
ange-ftp.el.gz.
Signature
(ange-ftp-insert-file-contents FILENAME &optional VISIT BEG END REPLACE)
Source Code
;; Defined in /usr/src/emacs/lisp/net/ange-ftp.el.gz
(defun ange-ftp-insert-file-contents (filename &optional visit beg end replace)
(barf-if-buffer-read-only)
(setq filename (expand-file-name filename))
(let ((parsed (ange-ftp-ftp-name filename)))
(if parsed
(progn
(if visit
(setq buffer-file-name filename))
(if (or (file-exists-p filename)
(progn
(setq ange-ftp-ls-cache-file nil)
(remhash (file-name-directory filename)
ange-ftp-files-hashtable)
(file-exists-p filename)))
(let* ((host (nth 0 parsed))
(user (nth 1 parsed))
(name (ange-ftp-quote-string (nth 2 parsed)))
(temp (ange-ftp-make-tmp-name host))
(binary (ange-ftp-binary-file filename))
(abbr (ange-ftp-abbreviate-filename filename))
(coding-system-used last-coding-system-used)
size)
(unwind-protect
(progn
(if binary
(ange-ftp-set-binary-mode host user))
(let ((result (ange-ftp-send-cmd host user
(list 'get name temp)
(format "Retrieving %s" abbr))))
(or (car result)
(signal 'ftp-error
(list
"Opening input file"
(format "FTP Error: \"%s\"" (cdr result))
filename))))
(if (or (ange-ftp-real-file-readable-p temp)
(sleep-for ange-ftp-retry-time)
;; Wait for file to hopefully appear.
(ange-ftp-real-file-readable-p temp))
(setq
size
(nth 1 (ange-ftp-real-insert-file-contents
temp visit beg end replace))
coding-system-used last-coding-system-used)
(signal 'ftp-error
(list
"Opening input file:"
(format
"FTP Error: %s not arrived or readable"
filename)))))
(if binary
;; We must keep `last-coding-system-used'
;; unchanged.
(let (last-coding-system-used)
(ange-ftp-set-ascii-mode host user)))
(ange-ftp-del-tmp-name temp))
(if visit
(progn
(set-visited-file-modtime
(ange-ftp-file-modtime filename))
(setq buffer-file-name filename)))
(setq last-coding-system-used coding-system-used)
(list filename size))
(signal 'file-missing
(list
"Opening input file"
"No such file or directory"
filename))))
(ange-ftp-real-insert-file-contents filename visit beg end replace))))