tramp-devel
[Top][All Lists]
Advanced

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

Re: Unexpected "recover" from non-existing tramp-login-program


From: Michael Albinus
Subject: Re: Unexpected "recover" from non-existing tramp-login-program
Date: Fri, 26 Jan 2024 17:56:48 +0100
User-agent: Gnus/5.13 (Gnus v5.13)

Tim Landscheidt <tim@tim-landscheidt.de> writes:

> Hi,

Hi Tim,

> while working with docker-tramp 0.1.1 and not setting
> docker-tramp-docker-executable correctly on a Fedora system,

First of all, docker-tramp from M(?)ELPA is deprecated. Since Tramp 2.6
(Eamcs 29), Tramp has an own implementation for docker containers.

This offers also the method "podman" which you might need on Fedora.

> I noticed this odd behaviour:
>
> | ELISP> (add-to-list 'tramp-methods
> |                     '("test-dne"
> |                       (tramp-login-program "does-not-exist")
> |                       (tramp-login-args (nil ("exec" "-it") ("-u" "%u") 
> ("%h") ("sh")))
> |                       (tramp-remote-shell "/bin/sh")
> |                       (tramp-remote-shell-args ("-i" "-c"))))
> | (("test-dne"
> |   (tramp-login-program "does-not-exist")
> |   (tramp-login-args
> |    (nil
> |     ("exec" "-it")
> |     ("-u" "%u")
> |     ("%h")
> |     ("sh")))
> |   (tramp-remote-shell "/bin/sh")
> |   (tramp-remote-shell-args
> |    ("-i" "-c")))
> |  […])
>
> | ELISP> (find-file "/test-dne:does-not-exist-either:/etc/passwd")
> | #<buffer passwd>
> | ELISP>
>
> The resulting buffer will contain the contents of
> /etc/passwd on the primary system (well, there are no
> others :-)).

I've tried this with Emacs 29.2 (Tramp 2.6.2), and the result is
slightly better: it is an empty buffer #<buffer passwd>, and there is
the error message "Use M-x make-directory RET RET to create the
directory and its parents". Default directory is
"/test-dne:does-not-exist-either:/etc/", which is correct.

> My assumption is that technically this is not an error as
> with the great power that Emacs gives to the user comes
> great responsibility to set one's variables properly :-).

Indeed, as always with Emacs :-)

> I have not debugged where this behaviour is rooted and
> whether it can be "fixed" easily, but if TRAMP can detect
> that the call to tramp-login-program fails, it would be nice
> if it could croak.

Well, we could do something like this. Does this work for you?

diff --git a/lisp/tramp-sh.el b/lisp/tramp-sh.el
index 38925652..1301cd63 100644
--- a/lisp/tramp-sh.el
+++ b/lisp/tramp-sh.el
@@ -5340,7 +5340,7 @@ connection if a previous connection has died for some 
reason."
                            "2>" (tramp-get-remote-null-device previous-hop))
                        ?l (concat remote-shell " " extra-args " -i"))
                       ;; A restricted shell does not allow "exec".
-                      (when r-shell '("&&" "exit" "||" "exit")))
+                      (when r-shell '("&&" "exit")) '("||" "exit"))
                      " "))

                    ;; Send the command.
> Tim

Best regards, Michael.

reply via email to

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