From b14b7f431fe9cfcdcb23eecf105992d1c276dc69 Mon Sep 17 00:00:00 2001 From: Wolfgang Jenkner Date: Sat, 1 Nov 2014 15:08:00 +0100 Subject: [PATCH] * net/tramp-sh.el (tramp-send-command): Fix the case where the remote-echo connection property is non-nil. Fixes: debbugs:18858 --- lisp/ChangeLog | 5 +++++ lisp/net/tramp-sh.el | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2577f7fe02f..731a71a9f49 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2014-11-01 Wolfgang Jenkner + + * net/tramp-sh.el (tramp-send-command): Fix the case where the + remote-echo connection property is non-nil (bug#18858). + 2014-11-01 Michael Albinus Backport Tramp changes from trunk. diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 1976e0e7f66..186a51c5bb8 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -4769,6 +4769,17 @@ function waits for output unless NOOUTPUT is set." (when (tramp-get-connection-property p "remote-echo" nil) ;; We mark the command string that it can be erased in the output buffer. (tramp-set-connection-property p "check-remote-echo" t) + ;; If we put `tramp-echo-mark' after a trailing newline (which + ;; is assumed to be unquoted) `tramp-send-string' doesn't see + ;; that newline and adds `tramp-rsh-end-of-line' right after + ;; `tramp-echo-mark', so the remote shell sees two consecutive + ;; trailing line endings and sends two prompts after executing + ;; the command, which confuses `tramp-wait-for-output'. + (when (and (not (string= command "")) + (string-equal (substring command -1) "\n")) + (setq command (substring command 0 -1))) + ;; No need to restore a trailing newline here since `tramp-send-string' + ;; makes sure that the string ends in `tramp-rsh-end-of-line', anyway. (setq command (format "%s%s%s" tramp-echo-mark command tramp-echo-mark))) ;; Send the command. (tramp-message vec 6 "%s" command) -- 2.11.4.GIT