bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#27169: eshell/sudo doesn't work with protected directories


From: npostavs
Subject: bug#27169: eshell/sudo doesn't work with protected directories
Date: Wed, 07 Jun 2017 20:20:47 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux)

tags 27169 = patch
quit

Yegor Timoshenko <address@hidden> writes:

> GNU Emacs 25.2.1 (x86_64-apple-darwin13.4.0, NS appkit-1265.21 Version 10.9.5 
> (Build 13F1911)) of 2017-04-21
>
> Yes, it's reproducible with -Q flag, provided that you execute (require 
> 'em-tramp) in *scratch* buffer.

Hmm, for some reason that doesn't work for me (possibly another bug),
but if I use 'eshell/sudo' instead of plain 'sudo' I can reproduce your problem.

The following fixes it:

>From e3d96af45b85a9ed9b96a12cae3e68eb21a2de47 Mon Sep 17 00:00:00 2001
From: Noam Postavsky <address@hidden>
Date: Wed, 7 Jun 2017 18:48:39 -0400
Subject: [PATCH v1] Let eshell/sudo handle absolute command names (Bug#27167)

* lisp/eshell/esh-ext.el (eshell-find-interpreter): Don't change
absolute paths into relative ones.
---
 lisp/eshell/esh-ext.el | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/lisp/eshell/esh-ext.el b/lisp/eshell/esh-ext.el
index fb1fedc9c5..2a495225dc 100644
--- a/lisp/eshell/esh-ext.el
+++ b/lisp/eshell/esh-ext.el
@@ -299,11 +299,13 @@ (defun eshell-find-interpreter (file args &optional 
no-examine-p)
       (let ((fullname (if (file-name-directory file) file
                        (eshell-search-path file)))
            (suffixes eshell-binary-suffixes))
-       (if (and fullname
-                (not (file-remote-p fullname))
-                (file-remote-p default-directory))
-           (setq fullname (expand-file-name
-                           (concat "./" fullname) default-directory)))
+       (when (and fullname
+                   (not (file-remote-p fullname))
+                   (file-remote-p default-directory))
+          (setq fullname
+                (if (file-name-absolute-p fullname)
+                    (concat (file-remote-p default-directory) fullname)
+                  (expand-file-name fullname default-directory))))
        (if (and fullname (not (or eshell-force-execution
                                   (file-executable-p fullname))))
            (while suffixes
-- 
2.11.1


reply via email to

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