all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Michael Albinus <michael.albinus@gmx.de>
To: Eli Zaretskii <eliz@gnu.org>
Cc: Jordan Wilson <jordan.t.wilson@gmx.com>, 33791@debbugs.gnu.org
Subject: bug#33791: 26.1; Eshell on Windows connecting to GNU/Linux machine using TRAMP and plink: env: ‘c:/home/jordan/test.sh’: No such file or directory
Date: Sat, 29 Dec 2018 10:25:37 +0100	[thread overview]
Message-ID: <87sgygr8fi.fsf@gmx.de> (raw)
In-Reply-To: <83ftug66lf.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 29 Dec 2018 11:10:52 +0200")

Eli Zaretskii <eliz@gnu.org> writes:

Hi Eli,

> Michael, I need your help here.  The problem is in this part of
> eshell-gather-process-output:
>
>     (cond
>      ((fboundp 'start-file-process)
>       (setq proc
> 	    (let ((process-connection-type
> 		   (unless (eshell-needs-pipe-p command)
> 		     process-connection-type))
> 		  (command (file-local-name command)))
> 	      (apply 'start-file-process
> 		     (file-name-nondirectory command) nil
> 		     ;; `start-process' can't deal with relative filenames.
> 		     (append (list (expand-file-name command)) args))))
>
> The problem is that file-local-name returns a Unix-style absolute file
> name /foo/bar/baz, and the following expand-file-name call then
> prepends a drive letter on Windows, because there's no longer any sign
> of COMMAND being a remote file, and so expand-file-name doesn't invoke
> the Tramp handler.

This is fixed in the master branch already:

--8<---------------cut here---------------start------------->8---
    (cond
     ((fboundp 'start-file-process)
      (setq proc
	    (let ((process-connection-type
		   (unless (eshell-needs-pipe-p command)
		     process-connection-type))
		  ;; `start-process' can't deal with relative filenames.
		  (command (file-local-name (expand-file-name command))))
	      (apply 'start-file-process
		     (file-name-nondirectory command) nil command args)))
--8<---------------cut here---------------end--------------->8---

The respective commit is

--8<---------------cut here---------------start------------->8---
commit bca35315e16cb53415649e5c0ac2ec0cc1368679
Author: Michael Albinus <michael.albinus@gmx.de>
Date:   Thu Sep 6 12:16:00 2018 +0200

    Fix Bug#31704
    
    * lisp/eshell/esh-proc.el (eshell-gather-process-output): Do not
    let `expand-file-name' prefix remote file names with MS Windows
    volume letter.
    
    * lisp/net/tramp.el (tramp-eshell-directory-change):
    Use `path-separator' as it does eshell.  (Bug#31704)
--8<---------------cut here---------------end--------------->8---

As you see, it requires two changes, in esh-proc.el and tramp.el.

> Btw, isn't it confusing that start-file-process needs only the "local"
> part of COMMAND?  Why cannot its handler DTRT internally instead?

What do you do, if COMMAND is another remote location than
default-directory?

And more general, there could also be file names in the PROGRAM-ARGS
part of start-file-process. Who decides, which of them is a remote file
name to be stripped to the local part, and which offers remote file name
syntax to be used literally?

That's why we have decided (long ago), to not allow remote arguments for
both start-file-process and process-file.

> Thanks.

Best regards, Michael.





  reply	other threads:[~2018-12-29  9:25 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-18 15:00 bug#33791: 26.1; Eshell on Windows connecting to GNU/Linux machine using TRAMP and plink: env: ‘c:/home/jordan/test.sh’: No such file or directory Jordan Wilson
2018-12-22  9:23 ` Eli Zaretskii
2018-12-22 10:25   ` Michael Albinus
2018-12-22 10:38     ` Eli Zaretskii
2018-12-22 12:35       ` Michael Albinus
2018-12-22 14:36         ` Eli Zaretskii
2018-12-22 15:54       ` Jordan Wilson
2018-12-23 12:40       ` Jordan Wilson
2018-12-23 15:58         ` Eli Zaretskii
2018-12-23 16:42           ` Michael Albinus
2018-12-23 16:51             ` Eli Zaretskii
2018-12-27 13:33           ` Michael Albinus
2018-12-28  8:15             ` Eli Zaretskii
2018-12-28 17:23               ` Jordan Wilson
2018-12-28 18:48                 ` Eli Zaretskii
2018-12-28 19:25                   ` Jordan Wilson
2018-12-29  9:10                     ` Eli Zaretskii
2018-12-29  9:25                       ` Michael Albinus [this message]
2018-12-29 10:00                         ` Eli Zaretskii
2018-12-29 11:12                           ` Michael Albinus
2018-12-29 13:43                             ` Jordan Wilson
2018-12-29 14:19                               ` Michael Albinus
2018-12-29 15:36                             ` Eli Zaretskii
2018-12-29  9:14                     ` Michael Albinus
2018-12-29  8:18             ` Eli Zaretskii
2018-12-29  8:38               ` Michael Albinus
2018-12-29  9:48                 ` Eli Zaretskii
2018-12-29 10:40                   ` Michael Albinus
2018-12-22 15:45   ` Jordan Wilson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87sgygr8fi.fsf@gmx.de \
    --to=michael.albinus@gmx.de \
    --cc=33791@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=jordan.t.wilson@gmx.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.