Function: tramp-accept-process-output
tramp-accept-process-output is a byte-compiled function defined in
tramp.el.gz.
Signature
(tramp-accept-process-output PROC)
Documentation
Like accept-process-output for Tramp processes.
This is needed in order to hide last-coding-system-used, which is set
for process communication also.
If the user quits via C-g, it is propagated up to tramp-file-name-handler.
Source Code
;; Defined in /usr/src/emacs/lisp/net/tramp.el.gz
(defun tramp-accept-process-output (proc &optional _timeout)
"Like `accept-process-output' for Tramp processes.
This is needed in order to hide `last-coding-system-used', which is set
for process communication also.
If the user quits via `C-g', it is propagated up to `tramp-file-name-handler'."
(declare (advertised-calling-convention (proc) "29.2"))
;; There could be other processes which use the same socket for
;; communication. This could block the output for the current
;; process. Read such output first. (Bug#61350)
;; The process property isn't set anymore due to Bug#62194.
(when-let* (((process-get proc 'tramp-shared-socket))
(v (process-get proc 'tramp-vector)))
(dolist (p (delq proc (process-list)))
(when (tramp-file-name-equal-p v (process-get p 'tramp-vector))
(with-tramp-suspended-timers
(with-local-quit (accept-process-output p 0 nil t))))))
(with-current-buffer (process-buffer proc)
(let ((inhibit-read-only t)
last-coding-system-used
result)
;; This must be protected by the "locked" property.
(with-tramp-locked-connection proc
;; JUST-THIS-ONE is set due to Bug#12145. `with-local-quit'
;; returns t in order to report success.
(if (with-local-quit
(setq result (accept-process-output proc 0 nil t)) t)
(tramp-message
proc 10 "%S %S %s\n%s"
proc (process-status proc) result (buffer-string))
;; Propagate quit.
(keyboard-quit)))
result)))