emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/tramp 6bf0300: Tramp ELPA version 2.4.2.4 released


From: Michael Albinus
Subject: [elpa] externals/tramp 6bf0300: Tramp ELPA version 2.4.2.4 released
Date: Wed, 30 Oct 2019 04:36:06 -0400 (EDT)

branch: externals/tramp
commit 6bf03007701119916fad8835c2baf4c95ee5a944
Author: Michael Albinus <address@hidden>
Commit: Michael Albinus <address@hidden>

    Tramp ELPA version 2.4.2.4 released
---
 test/tramp-tests.el |  31 ++++---
 texi/tramp.texi     | 132 ++++++++++++++++++++---------
 texi/trampver.texi  |   2 +-
 tramp-archive.el    |   2 +-
 tramp-cache.el      |   2 +-
 tramp-compat.el     |   2 +-
 tramp-gvfs.el       |  16 +++-
 tramp-loaddefs.el   |   6 +-
 tramp-sh.el         |  47 +++--------
 tramp-smb.el        |  21 +++--
 tramp.el            | 119 +++++++++++---------------
 tramp.info          | 238 ++++++++++++++++++++++++++++++++--------------------
 trampver.el         |   4 +-
 13 files changed, 352 insertions(+), 270 deletions(-)

diff --git a/test/tramp-tests.el b/test/tramp-tests.el
index bfaf12f..4537017 100644
--- a/test/tramp-tests.el
+++ b/test/tramp-tests.el
@@ -100,11 +100,12 @@
 
 (setq auth-source-save-behavior nil
       password-cache-expiry nil
-      tramp-verbose 0
+      remote-file-name-inhibit-cache nil
       tramp-cache-read-persistent-data t ;; For auth-sources.
       tramp-copy-size-limit nil
       tramp-message-show-message nil
-      tramp-persistency-file-name nil)
+      tramp-persistency-file-name nil
+      tramp-verbose 0)
 
 ;; This should happen on hydra only.
 (when (getenv "EMACS_HYDRA_CI")
@@ -3265,7 +3266,8 @@ This tests also `make-symbolic-link', `file-truename' and 
`add-name-to-file'."
           (tmp-name3 (tramp--test-make-temp-name 'local quoted))
           (tmp-name4 (tramp--test-make-temp-name nil quoted))
           (tmp-name5
-           (expand-file-name (file-name-nondirectory tmp-name1) tmp-name4)))
+           (expand-file-name (file-name-nondirectory tmp-name1) tmp-name4))
+          (tmp-name6 (tramp--test-make-temp-name nil quoted)))
       ;; Check `make-symbolic-link'.
       (unwind-protect
          (tramp--test-ignore-make-symbolic-link-error
@@ -3333,17 +3335,20 @@ This tests also `make-symbolic-link', `file-truename' 
and `add-name-to-file'."
               (if quoted #'tramp-compat-file-name-unquote #'identity)
               (file-remote-p tmp-name1 'localname))
              (file-symlink-p tmp-name5)))
-           ;; `smbclient' does not show symlinks in directories, so
-           ;; we cannot delete a non-empty directory.  We delete the
-           ;; file explicitly.
-           (delete-file tmp-name5))
+           ;; Check, that files in symlinked directories still work.
+           (make-symbolic-link tmp-name4 tmp-name6)
+           (write-region "foo" nil (expand-file-name "foo" tmp-name6))
+           (delete-file (expand-file-name "foo" tmp-name6))
+           (should-not (file-exists-p (expand-file-name "foo" tmp-name4)))
+           (should-not (file-exists-p (expand-file-name "foo" tmp-name6))))
 
        ;; Cleanup.
-       (ignore-errors
-         (delete-file tmp-name1)
-         (delete-file tmp-name2)
-         (delete-file tmp-name3)
-         (delete-directory tmp-name4 'recursive)))
+       (ignore-errors (delete-file tmp-name1))
+       (ignore-errors (delete-file tmp-name2))
+       (ignore-errors (delete-file tmp-name3))
+       (ignore-errors (delete-file tmp-name5))
+       (ignore-errors (delete-file tmp-name6))
+       (ignore-errors (delete-directory tmp-name4 'recursive)))
 
       ;; Check `add-name-to-file'.
       (unwind-protect
@@ -4005,7 +4010,7 @@ This tests also `make-symbolic-link', `file-truename' and 
`add-name-to-file'."
   (let ((proc (get-buffer-process (current-buffer))))
     (when (processp proc)
       (tramp--test-message
-       "cmd: %s\n%s" (process-command proc) (buffer-string))))
+       "cmd: %s\nbuf:\n%s\n---" (process-command proc) (buffer-string))))
   (ert-fail (format "`%s' timed out" (ert-test-name (ert-running-test)))))
 
 (ert-deftest tramp-test29-start-file-process ()
diff --git a/texi/tramp.texi b/texi/tramp.texi
index 4cb390c..c84cbb5 100644
--- a/texi/tramp.texi
+++ b/texi/tramp.texi
@@ -1170,8 +1170,8 @@ of the configured system storage.
 
 Optional flags to the different @option{rclone} operations could be
 passed as connection property, @xref{Predefined connection
-information}.  Supported properties are @samp{mount-args},
-@samp{copyto-args} and @samp{moveto-args}.
+information}.  Supported properties are @t{"mount-args"},
+@t{"copyto-args"} and @t{"moveto-args"}.
 
 Access via @option{rclone} is slow.  If you have an alternative method
 for accessing the system storage, you shall prefer this.
@@ -1954,7 +1954,7 @@ property's value.
 @var{property} is any method specific parameter contained in
 @code{tramp-methods}.  The parameter key in @code{tramp-methods} is a
 symbol name @code{tramp-<foo>}.  To overwrite that property, use the
-string @samp{<foo>} for @var{property}.  For example, this changes the
+string @t{"<foo>"} for @var{property}.  For example, this changes the
 remote shell:
 
 @lisp
@@ -1975,37 +1975,73 @@ The parameters @code{tramp-remote-shell} and
 @code{tramp-remote-shell-login} in @code{tramp-methods} now have new
 values for the remote host.
 
-A common use case is to override the session timeout of a connection,
-that is the time (in seconds) after a connection is disabled, and must
-be reestablished.  This can be set for any connection; for the
-@option{sudo} and @option{doas} methods there exist predefined values.
-A value of @code{nil} disables this feature.  For example:
+@var{property} could also be any property found in
+@code{tramp-persistency-file-name}.
 
-@lisp
-@group
-(add-to-list 'tramp-connection-properties
-             (list (regexp-quote "@trampfn{sudo,root@@system-name,}")
-                   "session-timeout" 30))
-@end group
-@end lisp
 
-@noindent
-@samp{system-name} stands here for the host returned by the function
-@command{(system-name)}.
+@subsection Relevant connection properties to override
 
-@var{property} could also be any property found in
-@code{tramp-persistency-file-name}.
+Not all connection properties need to be changed.  The most relevant
+properties are listed here:
 
-To get around how restricted shells randomly drop connections, set the
-special property @samp{busybox}.  For example:
+@itemize
+@item @t{"login-program"}
 
-@lisp
-@group
-(add-to-list 'tramp-connection-properties
-             (list (regexp-quote "@trampfn{ssh,user@@randomhost.your.domain,}")
-                   "busybox" t))
-@end group
-@end lisp
+The property @t{"login-program"} keeps the program to be called in
+order to connect the remote host.  Sometimes, the program might have
+another name on your host, or it is located on another path.  In this
+case, you can overwrite the default value, which is special for every
+connection method.  It is used in all connection methods of
+@file{tramp-sh.el}.
+
+@item @t{"login-args"}
+
+@t{"login-args"} specifies a list of lists of arguments to pass to
+@t{"login-program"}.  Read the docstring of @code{tramp-methods} how
+to construct these lists.
+
+@item @t{"remote-shell"}
+
+This property tells Tramp which remote shell to apply on the remote
+host.  It is used in all connection methods of @file{tramp-sh.el}.
+The default value is @t{"/bin/sh"}.
+
+@item @t{"remote-shell-login"}
+
+A property to be used in conjunction with @t{"remote-shell"}.  It
+specifies, which shell argument triggers a login shell.  Its default
+value is @t{"-l"}, but some shells, like @command{ksh}, prefer
+@t{"-"}.
+
+@item @t{"session-timeout"}
+
+All @file{tramp-sh.el} based methods accept the property
+@t{"session-timeout"}.  This is the time (in seconds) after a
+connection is disabled for security reasons, and must be
+reestablished.  A value of @code{nil} disables this feature.  Most of
+the methods do not set this property except the @option{sudo} and
+@option{doas} methods, which use predefined values.
+
+@item @t{"posix"}
+
+Connections using the @option{smb} method check, whether the remote
+host supports posix commands.  If the remote host runs Samba, it
+confirms this capability.  However, some very old Samba versions have
+errors in their implementation.  In order to suppress the posix
+commands for those hosts, the property @t{"posix"} shall be set to
+@code{nil}.
+
+The default value of this property is @code{t} (not specified in
+@code{tramp-methods}).  If the remote host runs native MS Windows,
+there is no effect of this property.
+
+@item @t{"mount-args"}@*
+@t{"copyto-args"}@*
+@t{"moveto-args"}
+
+These properties keep optional flags to the different @option{rclone}
+operations.  Their default value is @code{nil}.
+@end itemize
 
 
 @node Remote programs
@@ -2101,12 +2137,12 @@ be recomputed.  To force @value{tramp} to recompute 
afresh, call
 @section Remote shell setup hints
 
 
-@subsection Changing the default remote shell
+@subsection Changing the default remote or local shell
 @cindex zsh setup
 
 Per default, @value{tramp} uses the command @command{/bin/sh} for
 starting a shell on the remote host.  This can be changed by setting
-the connection property @option{remote-shell}, see @xref{Predefined
+the connection property @t{"remote-shell"}, see @xref{Predefined
 connection information}.  If you want, for example, use
 @command{/usr/bin/zsh} on a remote host, you might apply
 
@@ -2123,9 +2159,22 @@ remote login shell, like @option{sshx} or 
@option{plink}.  See
 @ref{Inline methods} and @ref{External methods} for connection methods
 which support this.
 
+@vindex tramp-sh-extra-args
 This approach has also the advantage, that settings in
-@code{tramp-sh-extra-args} will be applied.  For zsh, the trouble
-with the shell prompt due to set zle options will be avoided.
+@code{tramp-sh-extra-args} will be applied.  For @command{zsh}, the
+trouble with the shell prompt due to set zle options will be avoided.
+
+Similar problems can happen with the local shell Tramp uses to create
+a process.  Per default, it uses the command @command{/bin/sh} for
+this, which could also be a link to another shell.  In order to
+overwrite this, you might apply
+
+@vindex tramp-encoding-shell
+@lisp
+(customize-set-variable 'tramp-encoding-shell "/usr/bin/zsh")
+@end lisp
+
+This uses also the settings in @code{tramp-sh-extra-args}.
 
 
 @subsection Other remote shell setup hints
@@ -2202,7 +2251,7 @@ prompts, for which @value{tramp} uses 
@code{tramp-wrong-passwd-regexp}.
 
 @value{tramp} uses the user option @code{tramp-terminal-type} to set
 the remote environment variable @env{TERM} for the shells it runs.
-Per default, it is @samp{"dumb"}, but this could be changed.  A dumb
+Per default, it is @t{"dumb"}, but this could be changed.  A dumb
 terminal is best suited to run the background sessions of
 @value{tramp}.  However, running interactive remote shells might
 require a different setting.  This could be achieved by tweaking the
@@ -2785,10 +2834,11 @@ much more appropriate.
 
 @value{tramp} can complete the following @value{tramp} file name
 components: method names, user names, host names, and file names
-located on remote hosts.  Enable this by activating partial completion
-in @file{.emacs}.
+located on remote hosts.  User name and host name completion is
+activated only, if file name completion has one of the styles
+@code{basic}, @code{emacs21}, or @code{emacs22}.
 @ifinfo
-@xref{Completion Options, , , emacs}.
+@xref{Completion Styles, , , emacs}.
 @end ifinfo
 
 For example, type @kbd{C-x C-f @value{prefixwithspace} s @key{TAB}},
@@ -3769,10 +3819,10 @@ following line to @file{~/.zshrc}:
 [[ $TERM == "dumb" ]] && unsetopt zle && PS1='$ ' && return
 @end example
 
-This uses the default value of @code{tramp-terminal-type},
-@samp{"dumb"}, as value of the @env{TERM} environment variable.  If
-you want to use another value for @env{TERM}, change
-@code{tramp-terminal-type} and this line accordingly.
+This uses the default value of @code{tramp-terminal-type}, @t{"dumb"},
+as value of the @env{TERM} environment variable.  If you want to use
+another value for @env{TERM}, change @code{tramp-terminal-type} and
+this line accordingly.
 
 Alternatively, you could set the remote login shell explicitly.  See
 @ref{Remote shell setup} for discussion of this technique,
diff --git a/texi/trampver.texi b/texi/trampver.texi
index a8a89c9..61c69af 100644
--- a/texi/trampver.texi
+++ b/texi/trampver.texi
@@ -8,7 +8,7 @@
 @c In the Tramp GIT, the version numbers are auto-frobbed from
 @c tramp.el, and the bug report address is auto-frobbed from
 @c configure.ac.
-@set trampver 2.4.2.3
+@set trampver 2.4.2.4
 @set tramp-bug-report-address tramp-devel@@gnu.org
 @set emacsver 24.4
 
diff --git a/tramp-archive.el b/tramp-archive.el
index 82fd327..84dba32 100644
--- a/tramp-archive.el
+++ b/tramp-archive.el
@@ -409,7 +409,7 @@ used `tramp-file-name' structure for tramp-gvfs, and the 
file
 name of a local copy, if any.")
 
 (defsubst tramp-archive-gvfs-host (archive)
-  "Return host name of ARCHIVE as used in GVFS for mounting"
+  "Return host name of ARCHIVE as used in GVFS for mounting."
   (url-hexify-string (tramp-gvfs-url-file-name archive)))
 
 (defun tramp-archive-dissect-file-name (name)
diff --git a/tramp-cache.el b/tramp-cache.el
index 6e15469..014d87d 100644
--- a/tramp-cache.el
+++ b/tramp-cache.el
@@ -97,7 +97,7 @@ details see the info pages."
   "Whether persistent cache data have been changed.")
 
 (defun tramp-get-hash-table (key)
-  "Returns the hash table for KEY.
+  "Return the hash table for KEY.
 If it doesn't exist yet, it is created and initialized with
 matching entries of `tramp-connection-properties'."
   (or (gethash key tramp-cache-data)
diff --git a/tramp-compat.el b/tramp-compat.el
index 2f50c0f..2d44654 100644
--- a/tramp-compat.el
+++ b/tramp-compat.el
@@ -75,7 +75,7 @@ Add the extension of F, if existing."
     #'tramp-handle-temporary-file-directory))
 
 (defun tramp-compat-process-running-p (process-name)
-  "Returns t if system process PROCESS-NAME is running for `user-login-name'."
+  "Return t if system process PROCESS-NAME is running for `user-login-name'."
   (when (stringp process-name)
     (cond
      ;; GNU Emacs 22 on w32.
diff --git a/tramp-gvfs.el b/tramp-gvfs.el
index 1036865..4843c63 100644
--- a/tramp-gvfs.el
+++ b/tramp-gvfs.el
@@ -481,6 +481,7 @@ It has been changed in GVFS 1.14.")
     "type"
     "standard::display-name"
     "standard::symlink-target"
+    "standard::is-volatile"
     "unix::nlink"
     "unix::uid"
     "owner::user"
@@ -937,8 +938,9 @@ file names."
        (tramp-message v 5 "directory gvfs attributes: %s" localname)
        ;; Send command.
        (tramp-gvfs-send-command
-        v "gvfs-ls" "-h" "-n" "-a"
-        (string-join tramp-gvfs-file-attributes ",")
+        v "gvfs-ls" "-h"
+        (unless (string-equal (file-remote-p directory 'method) "gdrive") "-n")
+        "-a" (string-join tramp-gvfs-file-attributes ",")
         (tramp-gvfs-url-file-name directory))
        ;; Parse output.
        (with-current-buffer (tramp-get-connection-buffer v)
@@ -1021,7 +1023,12 @@ If FILE-SYSTEM is non-nil, return file system 
attributes."
       ;; ... directory or symlink
       (setq dirp (if (equal "directory" (cdr (assoc "type" attributes))) t))
       (setq res-symlink-target
-           (cdr (assoc "standard::symlink-target" attributes)))
+           ;; Google-drive creates file blobs and links to them.  We
+           ;; don't want to see them.
+           (and
+            (not
+             (equal (cdr (assoc "standard::is-volatile" attributes)) "TRUE"))
+            (cdr (assoc "standard::symlink-target" attributes))))
       (when (stringp res-symlink-target)
        (setq res-symlink-target
              ;; Parse unibyte codes "\xNN".  We assume they are
@@ -1941,7 +1948,8 @@ is applied, and it returns t if the return code is zero."
           process-environment)))
     (when (tramp-gvfs-gio-tool-p vec)
       ;; Use gio tool.
-      (setq args (cons (cdr (assoc command tramp-gvfs-gio-mapping)) args)
+      (setq args (cons (cdr (assoc command tramp-gvfs-gio-mapping))
+                      (delq nil args))
            command "gio"))
 
     (with-current-buffer (tramp-get-connection-buffer vec)
diff --git a/tramp-loaddefs.el b/tramp-loaddefs.el
index 302fe2d..18b2427 100644
--- a/tramp-loaddefs.el
+++ b/tramp-loaddefs.el
@@ -381,7 +381,7 @@ Whether to use `tramp-ssh-controlmaster-options'.")
 
 (custom-autoload 'tramp-use-ssh-controlmaster-options "tramp-sh" t)
 
-(tramp--with-startup (add-to-list 'tramp-methods `("rcp" (tramp-login-program 
"rsh") (tramp-login-args (("%h") ("-l" "%u"))) (tramp-remote-shell 
,tramp-default-remote-shell) (tramp-remote-shell-login ("-l")) 
(tramp-remote-shell-args ("-c")) (tramp-copy-program "rcp") (tramp-copy-args 
(("-p" "%k") ("-r"))) (tramp-copy-keep-date t) (tramp-copy-recursive t))) 
(add-to-list 'tramp-methods `("remcp" (tramp-login-program "remsh") 
(tramp-login-args (("%h") ("-l" "%u"))) (tramp-remote-shell ,tram [...]
+(tramp--with-startup (add-to-list 'tramp-methods `("rcp" (tramp-login-program 
"rsh") (tramp-login-args (("%h") ("-l" "%u"))) (tramp-remote-shell 
,tramp-default-remote-shell) (tramp-remote-shell-login ("-l")) 
(tramp-remote-shell-args ("-c")) (tramp-copy-program "rcp") (tramp-copy-args 
(("-p" "%k") ("-r"))) (tramp-copy-keep-date t) (tramp-copy-recursive t))) 
(add-to-list 'tramp-methods `("remcp" (tramp-login-program "remsh") 
(tramp-login-args (("%h") ("-l" "%u"))) (tramp-remote-shell ,tram [...]
 
 (defconst tramp-completion-function-alist-rsh '((tramp-parse-rhosts 
"/etc/hosts.equiv") (tramp-parse-rhosts "~/.rhosts")) "\
 Default list of (FUNCTION FILE) pairs to be examined for rsh methods.")
@@ -444,7 +444,7 @@ based on the Tramp and Emacs versions, and should not be 
set here.")
 
 (custom-autoload 'tramp-remote-process-environment "tramp-sh" t)
 
-(defvar tramp-sh-extra-args '(("/bash\\'" . "-norc -noprofile") ("/zsh\\'" . 
"-f +Z")) "\
+(defvar tramp-sh-extra-args '(("/bash\\'" . "-norc -noprofile") ("/zsh\\'" . 
"-f +Z -V")) "\
 Alist specifying extra arguments to pass to the remote shell.
 Entries are (REGEXP . ARGS) where REGEXP is a regular expression
 matching the shell file name and ARGS is a string specifying the
@@ -580,7 +580,7 @@ UU-encode the region between BEG and END.
 ;;;### (autoloads nil "trampver" "trampver.el" (0 0 0 0))
 ;;; Generated autoloads from trampver.el
 
-(defconst tramp-version "2.4.2.3" "\
+(defconst tramp-version "2.4.2.4" "\
 This version of Tramp.")
 
 (defconst tramp-bug-report-address "address@hidden" "\
diff --git a/tramp-sh.el b/tramp-sh.el
index a53eea4..3c80c58 100644
--- a/tramp-sh.el
+++ b/tramp-sh.el
@@ -279,11 +279,8 @@ The string is used in `tramp-methods'.")
                 ;; it could be interpreted as password prompt if the
                 ;; remote host echoes the command.
                 (tramp-login-args           (("-u" "%u") ("-s") ("-H")
-                                            ("-p" 
"P\"\"a\"\"s\"\"s\"\"w\"\"o\"\"r\"\"d\"\":")))
-                ;; Local $SHELL could be a nasty one, like zsh or
-                ;; fish.  Let's override it.
-                (tramp-login-env            (("SHELL")
-                                            (,tramp-default-remote-shell)))
+                                            ("-p" 
"P\"\"a\"\"s\"\"s\"\"w\"\"o\"\"r\"\"d\"\":")
+                                             ("%l")))
                 (tramp-remote-shell         ,tramp-default-remote-shell)
                 (tramp-remote-shell-login   ("-l"))
                 (tramp-remote-shell-args    ("-c"))
@@ -537,7 +534,7 @@ based on the Tramp and Emacs versions, and should not be 
set here."
 ;;;###tramp-autoload
 (defcustom tramp-sh-extra-args
   '(("/bash\\'" . "-norc -noprofile")
-    ("/zsh\\'" . "-f +Z"))
+    ("/zsh\\'" . "-f +Z -V"))
   "Alist specifying extra arguments to pass to the remote shell.
 Entries are (REGEXP . ARGS) where REGEXP is a regular expression
 matching the shell file name and ARGS is a string specifying the
@@ -547,6 +544,7 @@ This variable is only used when Tramp needs to start up 
another shell
 for tilde expansion.  The extra arguments should typically prevent the
 shell from reading its init file."
   :group 'tramp
+  :version "27.1"
   :type '(alist :key-type regexp :value-type string))
 
 (defconst tramp-actions-before-shell
@@ -558,6 +556,7 @@ shell from reading its init file."
     (tramp-yesno-prompt-regexp tramp-action-yesno)
     (tramp-yn-prompt-regexp tramp-action-yn)
     (tramp-terminal-prompt-regexp tramp-action-terminal)
+    (tramp-antispoof-regexp tramp-action-confirm-message)
     (tramp-process-alive-regexp tramp-action-process-alive))
   "List of pattern/action pairs.
 Whenever a pattern matches, the corresponding action is performed.
@@ -4661,13 +4660,11 @@ Goes through the list `tramp-inline-compress-commands'."
             ;; Host.
             (string-match-p
              (or (eval (nth 0 item)) "")
-             (or (tramp-file-name-host-port (car target-alist))
-                 ""))
+             (or (tramp-file-name-host-port (car target-alist)) ""))
             ;; User.
             (string-match-p
              (or (eval (nth 1 item)) "")
-             (or (tramp-file-name-user-domain (car target-alist))
-                 "")))
+             (or (tramp-file-name-user-domain (car target-alist)) "")))
        (if (null proxy)
            ;; No more hops needed.
            (setq choices nil)
@@ -4869,6 +4866,7 @@ connection if a previous connection has died for some 
reason."
                     ;; W32 systems.
                     (process-coding-system-alist nil)
                     (coding-system-for-read nil)
+                    (extra-args (tramp-get-sh-extra-args tramp-encoding-shell))
                     ;; This must be done in order to avoid our file
                     ;; name handler.
                     (p (let ((default-directory
@@ -4877,10 +4875,11 @@ connection if a previous connection has died for some 
reason."
                           #'start-process
                           (tramp-get-connection-name vec)
                           (tramp-get-connection-buffer vec)
-                          (if tramp-encoding-command-interactive
-                              (list tramp-encoding-shell
-                                    tramp-encoding-command-interactive)
-                            (list tramp-encoding-shell))))))
+                          (append
+                           (list tramp-encoding-shell)
+                           (and extra-args (split-string extra-args))
+                           (and tramp-encoding-command-interactive
+                                (list tramp-encoding-command-interactive)))))))
 
                ;; Set sentinel and query flag.  Initialize variables.
                (set-process-sentinel p #'tramp-process-sentinel)
@@ -4911,8 +4910,6 @@ connection if a previous connection has died for some 
reason."
                         (remote-shell
                          (tramp-get-method-parameter hop 'tramp-remote-shell))
                         (extra-args (tramp-get-sh-extra-args remote-shell))
-                        (login-env
-                         (tramp-get-method-parameter hop 'tramp-login-env))
                         (async-args
                          (tramp-get-method-parameter hop 'tramp-async-args))
                         (connection-timeout
@@ -4962,24 +4959,6 @@ connection if a previous connection has died for some 
reason."
                       (tramp-get-method-parameter
                        hop 'tramp-session-timeout)))
 
-                   ;; Add login environment.
-                   (when login-env
-                     (setq
-                      login-env
-                      (mapcar
-                       (lambda (x)
-                         (setq x (mapcar (lambda (y) (format-spec y spec)) x))
-                         (unless (member "" x) (string-join x " ")))
-                       login-env))
-                     (while login-env
-                       (setq command
-                             (format
-                              "%s=%s %s"
-                              (pop login-env)
-                              (tramp-shell-quote-argument (pop login-env))
-                              command)))
-                     (setq command (concat "env " command)))
-
                    ;; Replace `login-args' place holders.
                    (setq
                     l-host (or l-host "")
diff --git a/tramp-smb.el b/tramp-smb.el
index b008e6b..27c321b 100644
--- a/tramp-smb.el
+++ b/tramp-smb.el
@@ -1577,14 +1577,14 @@ errors for shares like \"C$/\", which are common in 
Microsoft Windows."
 ;; Internal file name functions.
 
 (defun tramp-smb-get-share (vec)
-  "Returns the share name of LOCALNAME."
+  "Return the share name of LOCALNAME."
   (save-match-data
     (let ((localname (tramp-file-name-unquote-localname vec)))
       (when (string-match "^/?\\([^/]+\\)/" localname)
        (match-string 1 localname)))))
 
 (defun tramp-smb-get-localname (vec)
-  "Returns the file name of LOCALNAME.
+  "Return the file name of LOCALNAME.
 If VEC has no cifs capabilities, exchange \"/\" by \"\\\\\"."
   (save-match-data
     (let ((localname (tramp-file-name-unquote-localname vec)))
@@ -1717,8 +1717,8 @@ Result is a list of (LOCALNAME MODE SIZE MONTH DAY TIME 
YEAR)."
 ;; So we try to analyze backwards.
 (defun tramp-smb-read-file-entry (share)
   "Parse entry in SMB output buffer.
-If SHARE is result, entries are of type dir. Otherwise, shares are listed.
-Result is the list (LOCALNAME MODE SIZE MTIME)."
+If SHARE is result, entries are of type dir.  Otherwise, shares
+are listed.  Result is the list (LOCALNAME MODE SIZE MTIME)."
 ;; We are called from `tramp-smb-get-file-entries', which sets the
 ;; current buffer.
   (let ((line (buffer-substring (point) (point-at-eol)))
@@ -1813,9 +1813,14 @@ Result is the list (LOCALNAME MODE SIZE MTIME)."
       (list localname mode size mtime))))
 
 (defun tramp-smb-get-cifs-capabilities (vec)
-  "Check, whether the SMB server supports POSIX commands."
-  ;; When we are not logged in yet, we return nil.
-  (if (process-live-p (tramp-get-connection-process vec))
+  "Check whether the SMB server supports POSIX commands."
+  ;; When we are not logged in yet, we return nil.  The
+  ;; connection-local property "posix" is not set explicitly; it is
+  ;; just checked in order to let a user configure it to nil on hosts
+  ;; which return cifs properties, but lack a proper implementation.
+  ;; Very old Samba implementations, for example.
+  (if (and (process-live-p (tramp-get-connection-process vec))
+          (tramp-get-connection-property vec "posix" t))
       (with-tramp-connection-property
          (tramp-get-connection-process vec) "cifs-capabilities"
        (save-match-data
@@ -1830,7 +1835,7 @@ Result is the list (LOCALNAME MODE SIZE MTIME)."
                  (buffer-substring (point) (point-at-eol)) nil 'omit)))))))))
 
 (defun tramp-smb-get-stat-capability (vec)
-  "Check, whether the SMB server supports the STAT command."
+  "Check whether the SMB server supports the STAT command."
   ;; When we are not logged in yet, we return nil.
   (if (and (tramp-smb-get-share vec)
           (process-live-p (tramp-get-connection-process vec)))
diff --git a/tramp.el b/tramp.el
index f0e600c..606c5c0 100644
--- a/tramp.el
+++ b/tramp.el
@@ -7,7 +7,7 @@
 ;; Maintainer: Michael Albinus <address@hidden>
 ;; Keywords: comm, processes
 ;; Package: tramp
-;; Version: 2.4.2.3
+;; Version: 2.4.2.4
 ;; Package-Requires: ((emacs "24.4"))
 ;; URL: https://savannah.gnu.org/projects/tramp
 
@@ -64,7 +64,6 @@
 (require 'cl-lib)
 (declare-function netrc-parse "netrc")
 (defvar auto-save-file-name-transforms)
-(defvar outline-regexp)
 
 ;;; User Customizable Internal Variables:
 
@@ -90,7 +89,6 @@
 (defcustom tramp-mode t
   "Whether Tramp is enabled.
 If it is set to nil, all remote file names are used literally."
-  :group 'tramp
   :type 'boolean)
 
 (defcustom tramp-verbose 3
@@ -108,7 +106,6 @@ Any level x includes messages for all levels 1 .. x-1.  The 
levels are
  8  connection properties
  9  test commands
 10  traces (huge)."
-  :group 'tramp
   :type 'integer)
 
 (defcustom tramp-backup-directory-alist nil
@@ -122,7 +119,6 @@ name prefix \(method, user, host) of file.
 
 gives the same backup policy for Tramp files on their hosts like the
 policy for local files."
-  :group 'tramp
   :type '(repeat (cons (regexp :tag "Regexp matching filename")
                       (directory :tag "Backup directory name"))))
 
@@ -130,7 +126,6 @@ policy for local files."
   "Put auto-save files in this directory, if set.
 The idea is to use a local directory so that auto-saving is faster.
 This setting has precedence over `auto-save-file-name-transforms'."
-  :group 'tramp
   :type '(choice (const :tag "Use default" nil)
                 (directory :tag "Auto save directory name")))
 
@@ -140,8 +135,8 @@ This setting has precedence over 
`auto-save-file-name-transforms'."
     (or (tramp-compat-funcall 'w32-shell-name) "/bin/sh"))
   "Use this program for encoding and decoding commands on the local host.
 This shell is used to execute the encoding and decoding command on the
-local host, so if you want to use `~' in those commands, you should
-choose a shell here which groks tilde expansion.  `/bin/sh' normally
+local host, so if you want to use \"~\" in those commands, you should
+choose a shell here which groks tilde expansion.  \"/bin/sh\" normally
 does not understand tilde expansion.
 
 For encoding and decoding, commands like the following are executed:
@@ -157,7 +152,6 @@ If the shell must be forced to be interactive, see
 Note that this variable is not used for remote commands.  There are
 mechanisms in tramp.el which automatically determine the right shell to
 use for the remote host."
-  :group 'tramp
   :type '(file :must-match t))
 
 ;; Suppress `shell-file-name' for w32 systems.
@@ -166,7 +160,6 @@ use for the remote host."
     (if (tramp-compat-funcall 'w32-shell-dos-semantics) "/c" "-c"))
   "Use this switch together with `tramp-encoding-shell' for local commands.
 See the variable `tramp-encoding-shell' for more information."
-  :group 'tramp
   :type 'string)
 
 ;; Suppress `shell-file-name' for w32 systems.
@@ -176,7 +169,6 @@ See the variable `tramp-encoding-shell' for more 
information."
   "Use this switch together with `tramp-encoding-shell' for interactive shells.
 See the variable `tramp-encoding-shell' for more information."
   :version "24.1"
-  :group 'tramp
   :type '(choice (const nil) string))
 
 (defvar tramp-methods nil
@@ -247,10 +239,6 @@ pair of the form (KEY VALUE).  The following KEYs are 
defined:
     absence of `tramp-copy-args', is an indication that the
     method is capable of multi-hops.
 
-  * `tramp-login-env'
-     A list of environment variables and their values, which will
-     be set when calling `tramp-login-program'.
-
   * `tramp-async-args'
     When an asynchronous process is started, we know already that
     the connection works.  Therefore, we can pass additional
@@ -377,7 +365,6 @@ useful only in combination with 
`tramp-default-proxies-alist'.")
   "Default method to use for transferring files.
 See `tramp-methods' for possibilities.
 Also see `tramp-default-method-alist'."
-  :group 'tramp
   :type 'string)
 
 (defcustom tramp-default-method-alist nil
@@ -392,7 +379,6 @@ If the file name does not specify the user, lookup is done 
using the
 empty string for the user name.
 
 See `tramp-methods' for a list of possibilities for METHOD."
-  :group 'tramp
   :type '(repeat (list (choice :tag "Host regexp" regexp sexp)
                       (choice :tag "User regexp" regexp sexp)
                       (choice :tag "Method name" string (const nil)))))
@@ -406,7 +392,6 @@ It is nil by default; otherwise settings in configuration 
files like
 \"~/.ssh/config\" would be overwritten.  Also see `tramp-default-user-alist'.
 
 This variable is regarded as obsolete, and will be removed soon."
-  :group 'tramp
   :type '(choice (const nil) string))
 
 (defcustom tramp-default-user-alist nil
@@ -419,7 +404,6 @@ matches, the variable `tramp-default-user' takes effect.
 
 If the file name does not specify the method, lookup is done using the
 empty string for the method name."
-  :group 'tramp
   :type '(repeat (list (choice :tag "Method regexp" regexp sexp)
                       (choice :tag "  Host regexp" regexp sexp)
                       (choice :tag "    User name" string (const nil)))))
@@ -427,7 +411,6 @@ empty string for the method name."
 (defcustom tramp-default-host (system-name)
   "Default host to use for transferring files.
 Useful for su and sudo methods mostly."
-  :group 'tramp
   :type 'string)
 
 (defcustom tramp-default-host-alist nil
@@ -440,7 +423,6 @@ matches, the variable `tramp-default-host' takes effect.
 
 If the file name does not specify the method, lookup is done using the
 empty string for the method name."
-  :group 'tramp
   :version "24.4"
   :type '(repeat (list (choice :tag "Method regexp" regexp sexp)
                       (choice :tag "  User regexp" regexp sexp)
@@ -466,14 +448,12 @@ carries the non-nil text property `tramp-ad-hoc'.
 HOST, USER or PROXY could also be Lisp forms, which will be
 evaluated.  The result must be a string or nil, which is
 interpreted as a regular expression which always matches."
-  :group 'tramp
   :type '(repeat (list (choice :tag "Host regexp" regexp sexp)
                       (choice :tag "User regexp" regexp sexp)
                       (choice :tag " Proxy name" string (const nil)))))
 
 (defcustom tramp-save-ad-hoc-proxies nil
   "Whether to save ad-hoc proxies persistently."
-  :group 'tramp
   :version "24.3"
   :type 'boolean)
 
@@ -486,7 +466,6 @@ a registered shell like \"rbash\".  Those hosts can be used 
as
 proxies only, see `tramp-default-proxies-alist'.  If the local
 host runs a registered shell, it shall be added to this list, too."
   :version "24.3"
-  :group 'tramp
   :type '(repeat (regexp :tag "Host regexp")))
 
 (defcustom tramp-local-host-regexp
@@ -498,7 +477,6 @@ host runs a registered shell, it shall be added to this 
list, too."
   "Host names which are regarded as local host.
 If the local host runs a chrooted environment, set this to nil."
   :version "27.1"
-  :group 'tramp
   :type '(choice (const :tag "Chrooted environment" nil)
                 (regexp :tag "Host regexp")))
 
@@ -551,14 +529,12 @@ the remote shell.")
   (if (memq system-type '(windows-nt)) "\r\n" "\n")
   "String used for end of line in local processes."
   :version "24.1"
-  :group 'tramp
   :type 'string)
 
 (defcustom tramp-rsh-end-of-line "\n"
   "String used for end of line in rsh connections.
 I don't think this ever needs to be changed, so please tell me about it
 if you need to change this."
-  :group 'tramp
   :type 'string)
 
 (defcustom tramp-login-prompt-regexp
@@ -567,7 +543,6 @@ if you need to change this."
 The regexp should match at end of buffer.
 
 Sometimes the prompt is reported to look like \"login as:\"."
-  :group 'tramp
   :type 'regexp)
 
 (defcustom tramp-shell-prompt-pattern
@@ -589,7 +564,6 @@ which should work well in many cases.
 
 This regexp must match both `tramp-initial-end-of-output' and
 `tramp-end-of-output'."
-  :group 'tramp
   :type 'regexp)
 
 (defcustom tramp-password-prompt-regexp
@@ -599,7 +573,6 @@ The regexp should match at end of buffer.
 
 The `sudo' program appears to insert a `^@' character into the prompt."
   :version "24.4"
-  :group 'tramp
   :type 'regexp)
 
 (defcustom tramp-wrong-passwd-regexp
@@ -624,7 +597,6 @@ The `sudo' program appears to insert a `^@' character into 
the prompt."
          "\\).*")
   "Regexp matching a `login failed' message.
 The regexp should match at end of buffer."
-  :group 'tramp
   :type 'regexp)
 
 (defcustom tramp-yesno-prompt-regexp
@@ -638,7 +610,6 @@ The regexp should match at end of buffer."
 The confirmation should be done with yes or no.
 The regexp should match at end of buffer.
 See also `tramp-yn-prompt-regexp'."
-  :group 'tramp
   :type 'regexp)
 
 (defcustom tramp-yn-prompt-regexp
@@ -651,7 +622,6 @@ See also `tramp-yn-prompt-regexp'."
 The confirmation should be done with y or n.
 The regexp should match at end of buffer.
 See also `tramp-yesno-prompt-regexp'."
-  :group 'tramp
   :type 'regexp)
 
 (defcustom tramp-terminal-prompt-regexp
@@ -663,7 +633,17 @@ See also `tramp-yesno-prompt-regexp'."
   "Regular expression matching all terminal setting prompts.
 The regexp should match at end of buffer.
 The answer will be provided by `tramp-action-terminal', which see."
-  :group 'tramp
+  :type 'regexp)
+
+;; Plink 0.71 has added an additional anti-spoofing prompt after
+;; authentication.  This could be discarded with the argument
+;; "-no-antispoof".  However, since we don't know which PuTTY
+;; version is installed, we must react interactively.
+(defcustom tramp-antispoof-regexp
+  (regexp-quote "Access granted. Press Return to begin session. ")
+  "Regular expression matching plink's anti-spoofing message.
+The regexp should match at end of buffer."
+  :version "27.1"
   :type 'regexp)
 
 (defcustom tramp-operation-not-permitted-regexp
@@ -672,7 +652,6 @@ The answer will be provided by `tramp-action-terminal', 
which see."
   "Regular expression matching keep-date problems in (s)cp operations.
 Copying has been performed successfully already, so this message can
 be ignored safely."
-  :group 'tramp
   :type 'regexp)
 
 (defcustom tramp-copy-failed-regexp
@@ -684,7 +663,6 @@ be ignored safely."
                       t)
           "\\)\\s-*")
   "Regular expression matching copy problems in (s)cp operations."
-  :group 'tramp
   :type 'regexp)
 
 (defcustom tramp-process-alive-regexp
@@ -694,7 +672,6 @@ In fact this expression is empty by intention, it will be 
used only to
 check regularly the status of the associated process.
 The answer will be provided by `tramp-action-process-alive',
 `tramp-action-out-of-band', which see."
-  :group 'tramp
   :type 'regexp)
 
 (defconst tramp-temp-name-prefix "tramp."
@@ -726,7 +703,6 @@ It can have the following values:
 
 Do not change the value by `setq', it must be changed only via
 Customize.  See also `tramp-change-syntax'."
-  :group 'tramp
   :version "26.1"
   :package-version '(Tramp . "2.3.3")
   :type '(choice (const :tag "Default" default)
@@ -1041,7 +1017,6 @@ initial value is overwritten by the car of 
`tramp-file-name-structure'.")
 (defcustom tramp-ignored-file-name-regexp nil
   "Regular expression matching file names that are not under Tramp’s control."
   :version "27.1"
-  :group 'tramp
   :type '(choice (const nil) regexp))
 
 (defconst tramp-completion-file-name-regexp-default
@@ -1186,7 +1161,6 @@ in the third line of the code.
 
 Please raise a bug report via \"M-x tramp-bug\" if your system needs
 this variable to be set as well."
-  :group 'tramp
   :type '(choice (const nil) integer))
 
 ;; Logging in to a remote host normally requires obtaining a pty.  But
@@ -1197,7 +1171,6 @@ this variable to be set as well."
   "Overrides `process-connection-type' for connections from Tramp.
 Tramp binds `process-connection-type' to the value given here before
 opening a connection to a remote host."
-  :group 'tramp
   :type '(choice (const nil) (const t) (const pty)))
 
 (defcustom tramp-connection-timeout 60
@@ -1205,7 +1178,6 @@ opening a connection to a remote host."
 This can be overwritten for different connection types in `tramp-methods'.
 
 The timeout does not include the time reading a password."
-  :group 'tramp
   :version "24.4"
   :type 'integer)
 
@@ -1219,7 +1191,6 @@ necessary, when several out-of-order copy operations are
 performed, or when several asynchronous processes will be started
 in a short time frame.  In those cases it is recommended to
 let-bind this variable."
-  :group 'tramp
   :version "24.4"
   :type '(choice (const nil) integer))
 
@@ -1232,7 +1203,6 @@ more than `tramp-completion-reread-directory-timeout' 
seconds
 have been gone since last remote command execution.  A value of t
 would require an immediate reread during filename completion, nil
 means to use always cached values for the directory contents."
-  :group 'tramp
   :type '(choice (const nil) (const t) integer))
 
 ;;; Internal Variables:
@@ -1855,7 +1825,8 @@ signal identifier to be raised, remaining arguments 
passed to
        (list signal
              (get signal 'error-message)
              (apply #'format-message fmt-string arguments)))))
-    (signal signal (list (apply #'format-message fmt-string arguments)))))
+    (signal signal (list (substring-no-properties
+                         (apply #'format-message fmt-string arguments))))))
 
 (defsubst tramp-error-with-buffer
   (buf vec-or-proc signal fmt-string &rest arguments)
@@ -1974,7 +1945,7 @@ If VAR is nil, then we bind `v' to the structure and 
`method', `user',
       (tramp-compat-progress-reporter-update reporter value suffix))))
 
 (defmacro with-tramp-progress-reporter (vec level message &rest body)
-  "Executes BODY, spinning a progress reporter with MESSAGE.
+  "Execute BODY, spinning a progress reporter with MESSAGE.
 If LEVEL does not fit for visible messages, there are only traces
 without a visible progress reporter."
   (declare (indent 3) (debug t))
@@ -2050,7 +2021,7 @@ letter into the file name.  This function removes it."
 ;;; Config Manipulation Functions:
 
 (defun tramp-set-completion-function (method function-list)
-  "Sets the list of completion functions for METHOD.
+  "Set the list of completion functions for METHOD.
 FUNCTION-LIST is a list of entries of the form (FUNCTION FILE).
 The FUNCTION is intended to parse FILE according its syntax.
 It might be a predefined FUNCTION, or a user defined FUNCTION.
@@ -2094,7 +2065,7 @@ Example:
                   (cons method r)))))
 
 (defun tramp-get-completion-function (method)
-  "Returns a list of completion functions for METHOD.
+  "Return a list of completion functions for METHOD.
 For definition of that list see `tramp-set-completion-function'."
   (append
    `(;; Default settings are taken into account.
@@ -2316,7 +2287,7 @@ preventing reentrant calls of Tramp.")
 ;; Main function.
 (defun tramp-file-name-handler (operation &rest args)
   "Invoke Tramp file name handler.
-Falls back to normal file name handler if no Tramp file name handler exists.
+Fall back to normal file name handler if no Tramp file name handler exists.
 If Emacs is compiled --with-threads, the body is protected by a mutex."
   (let ((filename (apply #'tramp-file-name-for-operation operation args))
        ;; `file-remote-p' is called for everything, even for symbolic
@@ -2674,11 +2645,13 @@ not in completion mode."
 (defun tramp-completion-handle-file-name-completion
   (filename directory &optional predicate)
   "Like `file-name-completion' for Tramp files."
-  (try-completion
-   filename
-   (mapcar #'list (file-name-all-completions filename directory))
-   (when (and predicate (tramp-connectable-p directory))
-     (lambda (x) (funcall predicate (expand-file-name (car x) directory))))))
+  ;; Suppress eager completion on not connected hosts.
+  (let ((non-essential t))
+    (try-completion
+     filename
+     (mapcar #'list (file-name-all-completions filename directory))
+     (when (and predicate (tramp-connectable-p directory))
+       (lambda (x) (funcall predicate (expand-file-name (car x) 
directory)))))))
 
 ;; I misuse a little bit the `tramp-file-name' structure in order to
 ;; handle completion possibilities for partial methods / user names /
@@ -2698,7 +2671,7 @@ not in completion mode."
 ;; "/x:y@""/[x/y@"      "/x:y@z" "/[x/y@z"   "/x:y@z:" "/[x/y@z]"
 ;;["x" "y" nil nil]     ["x" "y" "z" nil]    ["x" "y" "z" ""]
 (defun tramp-completion-dissect-file-name (name)
-  "Returns a list of `tramp-file-name' structures.
+  "Return a list of `tramp-file-name' structures.
 They are collected by `tramp-completion-dissect-file-name1'."
   (let* ((x-nil "\\|\\(\\)")
         (tramp-completion-ipv6-regexp
@@ -2771,7 +2744,7 @@ They are collected by 
`tramp-completion-dissect-file-name1'."
        tramp-completion-file-name-structure6)))))
 
 (defun tramp-completion-dissect-file-name1 (structure name)
-  "Returns a `tramp-file-name' structure matching STRUCTURE.
+  "Return a `tramp-file-name' structure matching STRUCTURE.
 The structure consists of remote method, remote user,
 remote host and localname (filename on remote host)."
   (save-match-data
@@ -2787,7 +2760,7 @@ remote host and localname (filename on remote host)."
 ;; This function returns all possible method completions, adding the
 ;; trailing method delimiter.
 (defun tramp-get-completion-methods (partial-method)
-  "Returns all method completions for PARTIAL-METHOD."
+  "Return all method completions for PARTIAL-METHOD."
   (mapcar
    (lambda (method)
      (and method
@@ -2798,7 +2771,7 @@ remote host and localname (filename on remote host)."
 ;; Compares partial user and host names with possible completions.
 (defun tramp-get-completion-user-host
   (method partial-user partial-host user host)
-  "Returns the most expanded string for user and host name completion.
+  "Return the most expanded string for user and host name completion.
 PARTIAL-USER must match USER, PARTIAL-HOST must match HOST."
   (cond
 
@@ -2840,7 +2813,6 @@ for all methods.  Resulting data are derived from default 
settings."
   "Whether to use `auth-source-search' for completion of user and host names.
 This could be disturbing, if it requires a password / passphrase,
 as for \"~/.authinfo.gpg\"."
-  :group 'tramp
   :version "27.1"
   :type 'boolean)
 
@@ -3048,7 +3020,7 @@ User is always nil."
 
 (defun tramp-handle-access-file (filename string)
   "Like `access-file' for Tramp files."
-  (unless (file-readable-p filename)
+  (unless (file-readable-p (file-truename filename))
     (tramp-error
      (tramp-dissect-file-name filename) tramp-file-missing
      "%s: No such file or directory %s" string filename)))
@@ -4015,6 +3987,13 @@ The terminal type can be configured with 
`tramp-terminal-type'."
   (tramp-send-string vec (concat tramp-terminal-type tramp-local-end-of-line))
   t)
 
+(defun tramp-action-confirm-message (_proc vec)
+  "Return RET in order to confirm the message."
+  (with-current-buffer (tramp-get-connection-buffer vec)
+    (tramp-message vec 6 "\n%s" (buffer-string)))
+  (tramp-send-string vec tramp-local-end-of-line)
+  t)
+
 (defun tramp-action-process-alive (proc _vec)
   "Check, whether a process has finished."
   (unless (process-live-p proc)
@@ -4291,13 +4270,13 @@ the remote host use line-endings as defined in the 
variable
          (delete-region (point) (point-max)))))))
 
 (defun tramp-get-inode (vec)
-  "Returns the virtual inode number.
+  "Return the virtual inode number.
 If it doesn't exist, generate a new one."
   (with-tramp-file-property vec (tramp-file-name-localname vec) "inode"
     (setq tramp-inodes (1+ tramp-inodes))))
 
 (defun tramp-get-device (vec)
-  "Returns the virtual device number.
+  "Return the virtual device number.
 If it doesn't exist, generate a new one."
   (with-tramp-connection-property (tramp-get-connection-process vec) "device"
     (cons -1 (setq tramp-devices (1+ tramp-devices)))))
@@ -4324,7 +4303,7 @@ If both files are local, the function returns t."
           (string-equal (file-remote-p file1) (file-remote-p file2)))))
 
 (defun tramp-mode-string-to-int (mode-string)
-  "Converts a ten-letter `drwxrwxrwx'-style mode string into mode bits."
+  "Convert a ten-letter `drwxrwxrwx'-style mode string into mode bits."
   (let* (case-fold-search
         (mode-chars (string-to-vector mode-string))
          (owner-read (aref mode-chars 1))
@@ -4694,7 +4673,7 @@ ALIST is of the form ((FROM . TO) ...)."
 
 (defun tramp-call-process
   (vec program &optional infile destination display &rest args)
-  "Calls `call-process' on the local host.
+  "Call `call-process' on the local host.
 It always returns a return code.  The Lisp error raised when
 PROGRAM is nil is trapped also, returning 1.  Furthermore, traces
 are written with verbosity of 6."
@@ -4722,13 +4701,13 @@ are written with verbosity of 6."
        (setq error (error-message-string err)
             result 1)))
     (if (zerop (length error))
-       (tramp-message vec 6 "%d\n%s" result output)
-      (tramp-message vec 6 "%d\n%s\n%s" result output error))
+       (tramp-message vec 6 "%s\n%s" result output)
+      (tramp-message vec 6 "%s\n%s\n%s" result output error))
     result))
 
 (defun tramp-call-process-region
   (vec start end program &optional delete buffer display &rest args)
-  "Calls `call-process-region' on the local host.
+  "Call `call-process-region' on the local host.
 It always returns a return code.  The Lisp error raised when
 PROGRAM is nil is trapped also, returning 1.  Furthermore, traces
 are written with verbosity of 6."
@@ -4759,7 +4738,7 @@ are written with verbosity of 6."
 
 (defun tramp-process-lines
   (vec program &rest args)
-  "Calls `process-lines' on the local host.
+  "Call `process-lines' on the local host.
 If an error occurs, it returns nil.  Traces are written with
 verbosity of 6."
   (let ((default-directory (tramp-compat-temporary-file-directory))
@@ -4915,7 +4894,9 @@ Only works for Bourne-like shells."
 ;;; the process property `remote-pid'.
 
 (defun tramp-interrupt-process (&optional process _current-group)
-  "Interrupt remote process PROC."
+  "Interrupt remote PROCESS.
+PROCESS can be a process, a buffer with an associated process, the
+name of a process or buffer, or nil to default to the current buffer."
   ;; CURRENT-GROUP is not implemented yet.
   (let ((proc (cond
               ((processp process) process)
diff --git a/tramp.info b/tramp.info
index 4f9fa10..9ba957a 100644
--- a/tramp.info
+++ b/tramp.info
@@ -1,4 +1,4 @@
-This is tramp.info, produced by makeinfo version 6.5 from tramp.texi.
+This is tramp.info, produced by makeinfo version 6.6 from tramp.texi.
 
 Copyright © 1999–2019 Free Software Foundation, Inc.
 
@@ -21,10 +21,10 @@ END-INFO-DIR-ENTRY
 
 File: tramp.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)
 
-TRAMP 2.4.2.3 User Manual
+TRAMP 2.4.2.4 User Manual
 *************************
 
-This file documents TRAMP 2.4.2.3, a remote file editing package for
+This file documents TRAMP 2.4.2.4, a remote file editing package for
 Emacs.
 
    TRAMP stands for “Transparent Remote (file) Access, Multiple
@@ -883,8 +883,8 @@ files smaller than ‘tramp-copy-size-limit’ still use inline 
methods.
 
      Optional flags to the different ‘rclone’ operations could be passed
      as connection property, *Note Predefined connection information::.
-     Supported properties are ‘mount-args’, ‘copyto-args’ and
-     ‘moveto-args’.
+     Supported properties are "mount-args", "copyto-args" and
+     "moveto-args".
 
      Access via ‘rclone’ is slow.  If you have an alternative method for
      accessing the system storage, you shall prefer this.  *note
@@ -1491,7 +1491,7 @@ value.
 
    PROPERTY is any method specific parameter contained in
 ‘tramp-methods’.  The parameter key in ‘tramp-methods’ is a symbol name
-‘tramp-<foo>’.  To overwrite that property, use the string ‘<foo>’ for
+‘tramp-<foo>’.  To overwrite that property, use the string "<foo>" for
 PROPERTY.  For example, this changes the remote shell:
 
      (add-to-list 'tramp-connection-properties
@@ -1505,28 +1505,70 @@ PROPERTY.  For example, this changes the remote shell:
    The parameters ‘tramp-remote-shell’ and ‘tramp-remote-shell-login’ in
 ‘tramp-methods’ now have new values for the remote host.
 
-   A common use case is to override the session timeout of a connection,
-that is the time (in seconds) after a connection is disabled, and must
-be reestablished.  This can be set for any connection; for the ‘sudo’
-and ‘doas’ methods there exist predefined values.  A value of ‘nil’
-disables this feature.  For example:
+   PROPERTY could also be any property found in
+‘tramp-persistency-file-name’.
 
-     (add-to-list 'tramp-connection-properties
-                  (list (regexp-quote "/sudo:root@system-name:")
-                        "session-timeout" 30))
+4.14.1 Relevant connection properties to override
+-------------------------------------------------
 
-‘system-name’ stands here for the host returned by the function
-‘(system-name)’.
+Not all connection properties need to be changed.  The most relevant
+properties are listed here:
 
-   PROPERTY could also be any property found in
-‘tramp-persistency-file-name’.
+   • "login-program"
 
-   To get around how restricted shells randomly drop connections, set
-the special property ‘busybox’.  For example:
+     The property "login-program" keeps the program to be called in
+     order to connect the remote host.  Sometimes, the program might
+     have another name on your host, or it is located on another path.
+     In this case, you can overwrite the default value, which is special
+     for every connection method.  It is used in all connection methods
+     of ‘tramp-sh.el’.
 
-     (add-to-list 'tramp-connection-properties
-                  (list (regexp-quote "/ssh:address@hidden.domain:")
-                        "busybox" t))
+   • "login-args"
+
+     "login-args" specifies a list of lists of arguments to pass to
+     "login-program".  Read the docstring of ‘tramp-methods’ how to
+     construct these lists.
+
+   • "remote-shell"
+
+     This property tells Tramp which remote shell to apply on the remote
+     host.  It is used in all connection methods of ‘tramp-sh.el’.  The
+     default value is "/bin/sh".
+
+   • "remote-shell-login"
+
+     A property to be used in conjunction with "remote-shell".  It
+     specifies, which shell argument triggers a login shell.  Its
+     default value is "-l", but some shells, like ‘ksh’, prefer "-".
+
+   • "session-timeout"
+
+     All ‘tramp-sh.el’ based methods accept the property
+     "session-timeout".  This is the time (in seconds) after a
+     connection is disabled for security reasons, and must be
+     reestablished.  A value of ‘nil’ disables this feature.  Most of
+     the methods do not set this property except the ‘sudo’ and ‘doas’
+     methods, which use predefined values.
+
+   • "posix"
+
+     Connections using the ‘smb’ method check, whether the remote host
+     supports posix commands.  If the remote host runs Samba, it
+     confirms this capability.  However, some very old Samba versions
+     have errors in their implementation.  In order to suppress the
+     posix commands for those hosts, the property "posix" shall be set
+     to ‘nil’.
+
+     The default value of this property is ‘t’ (not specified in
+     ‘tramp-methods’).  If the remote host runs native MS Windows, there
+     is no effect of this property.
+
+   • "mount-args"
+     "copyto-args"
+     "moveto-args"
+
+     These properties keep optional flags to the different ‘rclone’
+     operations.  Their default value is ‘nil’.
 
 
 File: tramp.info,  Node: Remote programs,  Next: Remote shell setup,  Prev: 
Predefined connection information,  Up: Configuration
@@ -1599,12 +1641,12 @@ File: tramp.info,  Node: Remote shell setup,  Next: 
Android shell setup,  Prev:
 4.16 Remote shell setup hints
 =============================
 
-4.16.1 Changing the default remote shell
-----------------------------------------
+4.16.1 Changing the default remote or local shell
+-------------------------------------------------
 
 Per default, TRAMP uses the command ‘/bin/sh’ for starting a shell on
 the remote host.  This can be changed by setting the connection property
-‘remote-shell’, see *Note Predefined connection information::.  If you
+"remote-shell", see *Note Predefined connection information::.  If you
 want, for example, use ‘/usr/bin/zsh’ on a remote host, you might apply
 
      (add-to-list 'tramp-connection-properties
@@ -1616,9 +1658,18 @@ remote login shell, like ‘sshx’ or ‘plink’.  See *note 
Inline methods::
 and *note External methods:: for connection methods which support this.
 
    This approach has also the advantage, that settings in
-‘tramp-sh-extra-args’ will be applied.  For zsh, the trouble with the
+‘tramp-sh-extra-args’ will be applied.  For ‘zsh’, the trouble with the
 shell prompt due to set zle options will be avoided.
 
+   Similar problems can happen with the local shell Tramp uses to create
+a process.  Per default, it uses the command ‘/bin/sh’ for this, which
+could also be a link to another shell.  In order to overwrite this, you
+might apply
+
+     (customize-set-variable 'tramp-encoding-shell "/usr/bin/zsh")
+
+   This uses also the settings in ‘tramp-sh-extra-args’.
+
 4.16.2 Other remote shell setup hints
 -------------------------------------
 
@@ -1677,7 +1728,7 @@ a few tweaks to address the most common ones.
 
      TRAMP uses the user option ‘tramp-terminal-type’ to set the remote
      environment variable ‘TERM’ for the shells it runs.  Per default,
-     it is ‘"dumb"’, but this could be changed.  A dumb terminal is best
+     it is "dumb", but this could be changed.  A dumb terminal is best
      suited to run the background sessions of TRAMP.  However, running
      interactive remote shells might require a different setting.  This
      could be achieved by tweaking the ‘TERM’ environment variable in
@@ -2103,8 +2154,9 @@ File: tramp.info,  Node: File name completion,  Next: 
Ad-hoc multi-hops,  Prev:
 
 TRAMP can complete the following TRAMP file name components: method
 names, user names, host names, and file names located on remote hosts.
-Enable this by activating partial completion in ‘.emacs’.  *Note
-(emacs)Completion Options::.
+User name and host name completion is activated only, if file name
+completion has one of the styles ‘basic’, ‘emacs21’, or ‘emacs22’.
+*Note (emacs)Completion Styles::.
 
    For example, type ‘C-x C-f / s <TAB>’, TRAMP completion choices show
 up as
@@ -2774,10 +2826,10 @@ File: tramp.info,  Node: Frequently Asked Questions,  
Next: Files directories an
 
                [[ $TERM == "dumb" ]] && unsetopt zle && PS1='$ ' && return
 
-          This uses the default value of ‘tramp-terminal-type’,
-          ‘"dumb"’, as value of the ‘TERM’ environment variable.  If you
-          want to use another value for ‘TERM’, change
-          ‘tramp-terminal-type’ and this line accordingly.
+          This uses the default value of ‘tramp-terminal-type’, "dumb",
+          as value of the ‘TERM’ environment variable.  If you want to
+          use another value for ‘TERM’, change ‘tramp-terminal-type’ and
+          this line accordingly.
 
           Alternatively, you could set the remote login shell
           explicitly.  See *note Remote shell setup:: for discussion of
@@ -3959,7 +4011,7 @@ Variable Index
 * EDITOR, environment variable:          Frequently Asked Questions.
                                                               (line 540)
 * ENV, environment variable:             Remote processes.    (line  64)
-* ESHELL, environment variable:          Remote shell setup.  (line 178)
+* ESHELL, environment variable:          Remote shell setup.  (line 187)
 * HGPLAIN, environment variable:         Remote processes.    (line  82)
 * HISTFILE, environment variable:        Frequently Asked Questions.
                                                               (line 281)
@@ -3968,8 +4020,8 @@ Variable Index
 * HISTORY, environment variable:         Remote processes.    (line  52)
 * HISTSIZE, environment variable:        Frequently Asked Questions.
                                                               (line 281)
-* INSIDE_EMACS, environment variable:    Remote shell setup.  (line  95)
-* INSIDE_EMACS, environment variable <1>: Remote shell setup. (line 178)
+* INSIDE_EMACS, environment variable:    Remote shell setup.  (line 104)
+* INSIDE_EMACS, environment variable <1>: Remote shell setup. (line 187)
 * non-essential:                         External packages.   (line   9)
 * password-cache:                        Password handling.   (line  57)
 * password-cache-expiry:                 Password handling.   (line  52)
@@ -3978,11 +4030,11 @@ Variable Index
                                                               (line  40)
 * shell-command-switch:                  Remote processes.    (line 158)
 * shell-file-name:                       Remote processes.    (line 158)
-* SHELLNAME, environment variable:       Remote shell setup.  (line 178)
+* SHELLNAME, environment variable:       Remote shell setup.  (line 187)
 * SSH_AUTH_SOCK, environment variable:   Windows setup hints. (line  29)
-* TERM, environment variable:            Remote shell setup.  (line  81)
-* TERM, environment variable <1>:        Remote shell setup.  (line  95)
-* tramp-actions-before-shell:            Remote shell setup.  (line 125)
+* TERM, environment variable:            Remote shell setup.  (line  90)
+* TERM, environment variable <1>:        Remote shell setup.  (line 104)
+* tramp-actions-before-shell:            Remote shell setup.  (line 134)
 * tramp-adb-connect-if-not-connected:    External methods.    (line 193)
 * tramp-adb-program:                     External methods.    (line 185)
 * tramp-archive-all-gvfs-methods:        Archive file names.  (line  91)
@@ -3995,9 +4047,9 @@ Variable Index
 * tramp-completion-function-alist:       Customizing Completion.
                                                               (line   6)
 * tramp-completion-reread-directory-timeout: File name completion.
-                                                              (line  69)
+                                                              (line  70)
 * tramp-completion-use-auth-sources:     File name completion.
-                                                              (line  36)
+                                                              (line  37)
 * tramp-connection-properties:           Predefined connection information.
                                                               (line   9)
 * tramp-default-host:                    Default Host.        (line   6)
@@ -4008,6 +4060,7 @@ Variable Index
 * tramp-default-remote-path:             Remote programs.     (line  19)
 * tramp-default-user:                    Default User.        (line   6)
 * tramp-default-user-alist:              Default User.        (line  14)
+* tramp-encoding-shell:                  Remote shell setup.  (line  31)
 * tramp-file-name-regexp:                Change file name syntax.
                                                               (line  28)
 * tramp-gvfs-methods:                    GVFS-based methods.  (line  60)
@@ -4023,7 +4076,7 @@ Variable Index
 * tramp-mode:                            Frequently Asked Questions.
                                                               (line 578)
 * tramp-own-remote-path:                 Remote programs.     (line  32)
-* tramp-password-prompt-regexp:          Remote shell setup.  (line  56)
+* tramp-password-prompt-regexp:          Remote shell setup.  (line  65)
 * tramp-persistency-file-name:           Connection caching.  (line   6)
 * tramp-rclone-program:                  External methods.    (line 215)
 * tramp-remote-coding-commands:          Inline methods.      (line  16)
@@ -4031,17 +4084,18 @@ Variable Index
 * tramp-remote-process-environment:      Remote processes.    (line  38)
 * tramp-restricted-shell-hosts-alist:    Multi-hops.          (line  84)
 * tramp-save-ad-hoc-proxies:             Ad-hoc multi-hops.   (line  29)
-* tramp-shell-prompt-pattern:            Remote shell setup.  (line  48)
+* tramp-sh-extra-args:                   Remote shell setup.  (line  22)
+* tramp-shell-prompt-pattern:            Remote shell setup.  (line  57)
 * tramp-ssh-controlmaster-options:       Frequently Asked Questions.
                                                               (line 188)
-* tramp-terminal-type:                   Remote shell setup.  (line  81)
+* tramp-terminal-type:                   Remote shell setup.  (line  90)
 * tramp-theme-face-remapping-alist:      Frequently Asked Questions.
                                                               (line 261)
 * tramp-use-ssh-controlmaster-options:   Frequently Asked Questions.
                                                               (line 201)
 * tramp-verbose:                         Traces and Profiles. (line   6)
 * tramp-version:                         Obtaining TRAMP.     (line   6)
-* tramp-wrong-passwd-regexp:             Remote shell setup.  (line  56)
+* tramp-wrong-passwd-regexp:             Remote shell setup.  (line  65)
 
 
 File: tramp.info,  Node: Concept Index,  Prev: Variable Index,  Up: Top
@@ -4052,8 +4106,8 @@ Concept Index
 [index]
 * Menu:
 
-* .login file:                           Remote shell setup.  (line  29)
-* .profile file:                         Remote shell setup.  (line  29)
+* .login file:                           Remote shell setup.  (line  38)
+* .profile file:                         Remote shell setup.  (line  38)
 * 7z file archive suffix:                Archive file names.  (line  33)
 * adb method:                            Quick Start Guide.   (line 115)
 * adb method <1>:                        External methods.    (line 184)
@@ -4265,7 +4319,7 @@ Concept Index
 * multi-hop:                             Multi-hops.          (line   6)
 * multi-hop, ad-hoc:                     Ad-hoc multi-hops.   (line   6)
 * nc method:                             External methods.    (line  91)
-* nc unix command:                       Remote shell setup.  (line 203)
+* nc unix command:                       Remote shell setup.  (line 212)
 * nextcloud:                             Quick Start Guide.   (line 104)
 * nextcloud <1>:                         GVFS-based methods.  (line  47)
 * nextcloud method:                      Quick Start Guide.   (line 104)
@@ -4301,7 +4355,7 @@ Concept Index
 * rclone method <1>:                     External methods.    (line 214)
 * rcp method:                            External methods.    (line  17)
 * recompile:                             Remote processes.    (line   6)
-* remote shell setup:                    Remote shell setup.  (line  29)
+* remote shell setup:                    Remote shell setup.  (line  38)
 * rpm file archive suffix:               Archive file names.  (line  66)
 * rsh (with rcp method):                 External methods.    (line  17)
 * rsh method:                            Inline methods.      (line  32)
@@ -4319,7 +4373,7 @@ Concept Index
 * sg method <1>:                         Inline methods.      (line  74)
 * shar file archive suffix:              Archive file names.  (line  68)
 * shell:                                 Remote processes.    (line 112)
-* shell init files:                      Remote shell setup.  (line  29)
+* shell init files:                      Remote shell setup.  (line  38)
 * shell-command:                         Remote processes.    (line 146)
 * simplified syntax:                     Change file name syntax.
                                                               (line  14)
@@ -4352,12 +4406,12 @@ Concept Index
 * tlz file archive suffix:               Archive file names.  (line  71)
 * TRAMP theme:                           Frequently Asked Questions.
                                                               (line 261)
-* tset unix command:                     Remote shell setup.  (line 115)
+* tset unix command:                     Remote shell setup.  (line 124)
 * txz file archive suffix:               Archive file names.  (line  71)
 * type-ahead:                            Usage.               (line  12)
 * tzst file archive suffix:              Archive file names.  (line  71)
-* unix command nc:                       Remote shell setup.  (line 203)
-* unix command tset:                     Remote shell setup.  (line 115)
+* unix command nc:                       Remote shell setup.  (line 212)
+* unix command tset:                     Remote shell setup.  (line 124)
 * using non-standard methods:            Customizing Methods. (line   6)
 * using TRAMP:                           Usage.               (line   6)
 * uu encoding:                           Inline methods.      (line  16)
@@ -4392,43 +4446,43 @@ Node: Configuration18903
 Node: Connection types21375
 Node: Inline methods22789
 Node: External methods27751
-Node: GVFS-based methods38401
-Node: Default Method41670
-Node: Default User44687
-Node: Default Host46210
-Node: Multi-hops47342
-Node: Firewalls51534
-Node: Customizing Methods52991
-Node: Customizing Completion55331
-Node: Password handling58821
-Ref: Using an authentication file59291
-Ref: Caching passwords60793
-Node: Connection caching61311
-Node: Predefined connection information62241
-Node: Remote programs64586
-Node: Remote shell setup67507
-Node: Android shell setup76746
-Node: Auto-save and Backup79133
-Node: Windows setup hints82208
-Node: Usage83828
-Node: File name syntax85126
-Node: Change file name syntax87133
-Node: File name completion88564
-Node: Ad-hoc multi-hops91637
-Node: Remote processes93703
-Ref: Running a debugger on a remote host102461
-Node: Cleanup remote connections104431
-Node: Archive file names105965
-Node: Bug Reports110338
-Node: Frequently Asked Questions112720
-Node: Files directories and localnames135165
-Node: Localname deconstruction135601
-Node: External packages136254
-Node: Traces and Profiles138299
-Node: GNU Free Documentation License140268
-Node: Function Index165639
-Node: Variable Index168243
-Node: Concept Index175432
+Node: GVFS-based methods38389
+Node: Default Method41658
+Node: Default User44675
+Node: Default Host46198
+Node: Multi-hops47330
+Node: Firewalls51522
+Node: Customizing Methods52979
+Node: Customizing Completion55319
+Node: Password handling58809
+Ref: Using an authentication file59279
+Ref: Caching passwords60781
+Node: Connection caching61299
+Node: Predefined connection information62229
+Node: Remote programs66103
+Node: Remote shell setup69024
+Node: Android shell setup78640
+Node: Auto-save and Backup81027
+Node: Windows setup hints84102
+Node: Usage85722
+Node: File name syntax87020
+Node: Change file name syntax89027
+Node: File name completion90458
+Node: Ad-hoc multi-hops93613
+Node: Remote processes95679
+Ref: Running a debugger on a remote host104437
+Node: Cleanup remote connections106407
+Node: Archive file names107941
+Node: Bug Reports112314
+Node: Frequently Asked Questions114696
+Node: Files directories and localnames137135
+Node: Localname deconstruction137571
+Node: External packages138224
+Node: Traces and Profiles140269
+Node: GNU Free Documentation License142238
+Node: Function Index167609
+Node: Variable Index170213
+Node: Concept Index177548
 
 End Tag Table
 
diff --git a/trampver.el b/trampver.el
index c6cda03..977210f 100644
--- a/trampver.el
+++ b/trampver.el
@@ -31,7 +31,7 @@
 ;; aclocal.m4; should be changed only there.
 
 ;;;###tramp-autoload
-(defconst tramp-version "2.4.2.3"
+(defconst tramp-version "2.4.2.4"
   "This version of Tramp.")
 
 ;;;###tramp-autoload
@@ -65,7 +65,7 @@
 ;; Check for Emacs version.
 (let ((x   (if (not (string-lessp emacs-version "24.4"))
       "ok"
-    (format "Tramp 2.4.2.3 is not fit for %s"
+    (format "Tramp 2.4.2.4 is not fit for %s"
             (replace-regexp-in-string "\n" "" (emacs-version))))))
   (unless (string-equal "ok" x) (error "%s" x)))
 



reply via email to

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