summaryrefslogtreecommitdiff
path: root/lisp/net/tramp.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/net/tramp.el')
-rw-r--r--lisp/net/tramp.el36
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))