diff options
Diffstat (limited to 'lisp/net/tramp.el')
-rw-r--r-- | lisp/net/tramp.el | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 6c1c09bc371..0260569aa95 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -7,10 +7,6 @@ ;; Maintainer: Michael Albinus <michael.albinus@gmx.de> ;; Keywords: comm, processes ;; Package: tramp -;; Version: 2.5.0-pre -;; Package-Requires: ((emacs "25.1")) -;; Package-Type: multi -;; URL: https://savannah.gnu.org/projects/tramp ;; This file is part of GNU Emacs. @@ -3790,23 +3786,31 @@ It does not support `:stderr'." (unless (or (null stderr) (bufferp stderr)) (signal 'wrong-type-argument (list #'bufferp stderr))) - ;; Quote shell command. - (when (and (= (length command) 3) - (stringp (nth 0 command)) - (string-match-p "sh$" (nth 0 command)) - (stringp (nth 1 command)) - (string-equal "-c" (nth 1 command)) - (stringp (nth 2 command))) - (setcar (cddr command) (tramp-shell-quote-argument (nth 2 command)))) - (let* ((buffer (if buffer (get-buffer-create buffer) ;; BUFFER can be nil. We use a temporary buffer. (generate-new-buffer tramp-temp-buffer-name))) + ;; We use as environment the difference to toplevel + ;; `process-environment'. + (env (mapcar + (lambda (elt) + (unless + (member + elt (default-toplevel-value 'process-environment)) + (when (string-match-p "=" elt) elt))) + process-environment)) + (env (setenv-internal + env "INSIDE_EMACS" + (concat (or (getenv "INSIDE_EMACS") emacs-version) + ",tramp:" tramp-version) + 'keep)) + (env (mapcar #'tramp-shell-quote-argument (delq nil env))) + ;; Quote command. + (command (mapconcat #'tramp-shell-quote-argument command " ")) + ;; Set cwd and environment variables. (command - (mapconcat - #'identity (append `("cd" ,localname "&&") command) " "))) + (append `("cd" ,localname "&&" "(" "env") env `(,command ")")))) ;; Check for `tramp-sh-file-name-handler', because something ;; is different between tramp-adb.el and tramp-sh.el. @@ -3861,7 +3865,7 @@ It does not support `:stderr'." (mapcar (lambda (x) (split-string x " ")) login-args)) p (make-process :name name :buffer buffer - :command (append `(,login-program) login-args `(,command)) + :command (append `(,login-program) login-args command) :coding coding :noquery noquery :connection-type connection-type :filter filter :sentinel sentinel :stderr stderr)) |