]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/net/tramp-sh.el (tramp-set-remote-path): Send a warning, if
authorMichael Albinus <michael.albinus@gmx.de>
Wed, 19 Dec 2018 19:29:29 +0000 (20:29 +0100)
committerMichael Albinus <michael.albinus@gmx.de>
Wed, 19 Dec 2018 19:29:29 +0000 (20:29 +0100)
$PATH exceeds PATH_MAX on the remote system.

lisp/net/tramp-sh.el

index e4ec735a96c5ec7a32a16a6fc73917f3de8fbf6c..14ae2cb51b4f6c680097e8ce2b34f1a727d89812 100644 (file)
@@ -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 --