emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 3fa8bdc: * lisp/net/tramp-sh.el (tramp-set-remote-p


From: Michael Albinus
Subject: [Emacs-diffs] master 3fa8bdc: * lisp/net/tramp-sh.el (tramp-set-remote-path): Send a warning, if
Date: Wed, 19 Dec 2018 14:29:36 -0500 (EST)

branch: master
commit 3fa8bdca88153ff442ca22d8c298525c1b716e7e
Author: Michael Albinus <address@hidden>
Commit: Michael Albinus <address@hidden>

    * lisp/net/tramp-sh.el (tramp-set-remote-path): Send a warning, if
    
    $PATH exceeds PATH_MAX on the remote system.
---
 lisp/net/tramp-sh.el | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index e4ec735..14ae2cb 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -3885,10 +3885,22 @@ This function expects to be in the right *tramp* 
buffer."
 I.e., for each directory in `tramp-remote-path', it is tested
 whether it exists and if so, it is added to the environment
 variable PATH."
-  (tramp-message vec 5 "Setting $PATH environment variable")
-  (tramp-send-command
-   vec (format "PATH=%s; export PATH"
-              (mapconcat 'identity (tramp-get-remote-path vec) ":"))))
+  (let ((path (mapconcat 'identity (tramp-get-remote-path vec) ":"))
+       (path-max
+        (with-tramp-connection-property vec "path-max"
+          (tramp-send-command-and-read vec "getconf PATH_MAX /")))
+       index)
+    (tramp-message vec 5 "Setting $PATH environment variable")
+    (unless (< (length path) path-max)
+      (setq index path-max)
+      (while (not (string-equal (substring path (1- index) index) ":"))
+       (setq index (1- index)))
+      ;; FIXME: Is this sufficient? Or shall we raise an error?
+      (tramp-message
+       vec 2 "$PATH environment variable is too long. Ignoring \"%s\""
+       (substring path index))
+      (setq path (substring path 0 (1- index))))
+    (tramp-send-command vec (format "PATH=%s; export PATH" path))))
 
 ;; ------------------------------------------------------------
 ;; -- Communication with external shell --



reply via email to

[Prev in Thread] Current Thread [Next in Thread]