branch: externals/tramp commit a67a236571289ae5ee96585453bb517ad1cc2003 Author: Michael Albinus <michael.albi...@gmx.de> Commit: Michael Albinus <michael.albi...@gmx.de>
Tramp ELPA version 2.4.2.1 released --- test/tramp-tests.el | 12 ++- texi/tramp.texi | 51 +++++++------ texi/trampver.texi | 2 +- tramp-adb.el | 21 ++++-- tramp-cache.el | 1 + tramp-cmds.el | 98 ++++++++++++------------- tramp-gvfs.el | 3 + tramp-loaddefs.el | 102 +++++++++++++++++++++++++- tramp-rclone.el | 3 + tramp-sh.el | 69 +++++++++++------- tramp-smb.el | 97 +++++++++++++----------- tramp-sudoedit.el | 2 + tramp.el | 2 +- tramp.info | 207 +++++++++++++++++++++++++++------------------------- trampver.el | 4 +- 15 files changed, 415 insertions(+), 259 deletions(-) diff --git a/test/tramp-tests.el b/test/tramp-tests.el index 3d0faaf..8dbbb2c 100644 --- a/test/tramp-tests.el +++ b/test/tramp-tests.el @@ -2394,7 +2394,10 @@ This checks also `file-name-as-directory', `file-name-directory', (when (and (tramp--test-expensive-test) (tramp--test-emacs26-p)) (should-error (copy-file source target) - :type 'file-already-exists)) + :type 'file-already-exists) + (should-error + (copy-file source target 'ok) + :type 'file-error)) (copy-file source (file-name-as-directory target)) (should (file-exists-p @@ -2508,7 +2511,10 @@ This checks also `file-name-as-directory', `file-name-directory', (when (and (tramp--test-expensive-test) (tramp--test-emacs26-p)) (should-error (rename-file source target) - :type 'file-already-exists)) + :type 'file-already-exists) + (should-error + (rename-file source target 'ok) + :type 'file-error)) (rename-file source (file-name-as-directory target)) (should-not (file-exists-p source)) (should @@ -2821,7 +2827,7 @@ This tests also `file-directory-p' and `file-accessible-directory-p'." (looking-at-p (concat ;; There might be a summary line. - "\\(total.+[[:digit:]]+\n\\)?" + "\\(total.+[[:digit:]]+ ?[kKMGTPEZY]?i?B?\n\\)?" ;; We don't know in which order ".", ".." and "foo" appear. (format "\\(.+ %s\\( ->.+\\)?\n\\)\\{%d\\}" diff --git a/texi/tramp.texi b/texi/tramp.texi index f67ed48..3e8add2 100644 --- a/texi/tramp.texi +++ b/texi/tramp.texi @@ -402,12 +402,15 @@ $ autoconf @end group @end example - +@ifset installchapter @c Installation chapter is necessary only in case of standalone @c installation. -@ifset installchapter @include trampinst.texi @end ifset +@ifclear installchapter +See the file @file{INSTALL} in that directory for further information +how to install @value{tramp}. +@end ifclear @node Quick Start Guide @@ -709,25 +712,28 @@ Inline methods can work in situations where an external transfer program is unavailable. Inline methods also work when transferring files between different @emph{user identities} on the same host. -@cindex @command{uuencode} -@cindex @command{mimencode} @cindex base-64 encoding - +@cindex base-64 encoding +@cindex uu encoding +@vindex tramp-remote-coding-commands @value{tramp} checks the remote host for the availability and -usability of @command{mimencode} (part of the @command{metamail} -package) or @command{uuencode}. @value{tramp} uses the first reliable -command it finds. @value{tramp}'s search path can be customized, see -@ref{Remote programs}. +usability of one of the commands defined in +@code{tramp-remote-coding-commands}. @value{tramp} uses the first +reliable command it finds. @value{tramp}'s search path can be +customized, see @ref{Remote programs}. -In case both @command{mimencode} and @command{uuencode} are -unavailable, @value{tramp} first transfers a small Perl program to the -remote host, and then tries that program for encoding and decoding. +In case none of the commands are unavailable, @value{tramp} first +transfers a small Perl program to the remote host, and then tries that +program for encoding and decoding. @vindex tramp-inline-compress-start-size +@vindex tramp-inline-compress-commands To increase transfer speeds for large text files, use compression before encoding. The user option @code{tramp-inline-compress-start-size} specifies the file size for -such optimization. +such optimization. This feature depends on the availability and +usability of one of the commands defined in +@code{tramp-inline-compress-commands}. @table @asis @item @option{rsh} @@ -3134,9 +3140,9 @@ be achieved by adding the environment variable @env{COLUMNS} to @value{tramp} is integrated into @file{eshell.el}, which enables interactive eshell sessions on remote hosts at the command prompt. -You must add the module @code{em-tramp} to @code{eshell-modules-list}. -Here's a sample interaction after opening @kbd{M-x eshell @key{RET}} -on a remote host: +You must add the module @code{eshell-tramp} to +@code{eshell-modules-list}. Here's a sample interaction after opening +@kbd{M-x eshell @key{RET}} on a remote host: @example @group @@ -3269,10 +3275,13 @@ This command flushes all connection related objects. @option{vec} is the internal representation of a remote connection. When called interactively, this command lists active remote connections in the minibuffer. Each connection is of the format -@file{@trampfn{method,user@@host,}}. Flushing remote connections also -cleans the password cache (@pxref{Password handling}), file cache, -connection cache (@pxref{Connection caching}), recentf cache -(@pxref{File Conveniences, , , emacs}), and connection buffers. +@file{@trampfn{method,user@@host,}}. + +Flushing remote connections also cleans the password cache +(@pxref{Password handling}), file cache, connection cache +(@pxref{Connection caching}), and recentf cache (@pxref{File +Conveniences, , , emacs}). It also deletes session timers +(@pxref{Predefined connection information}) and connection buffers. @end deffn @deffn Command tramp-cleanup-this-connection @@ -3290,7 +3299,7 @@ proxy definitions (@pxref{Ad-hoc multi-hops}). @deffn Command tramp-cleanup-all-buffers Just as for @code{tramp-cleanup-all-connections}, all remote connections and ad-hoc proxy definition are cleaned up in addition to -killing buffers related to that remote connection. +killing all buffers related to remote connections. @end deffn diff --git a/texi/trampver.texi b/texi/trampver.texi index 6cc6429..0254776 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 +@set trampver 2.4.2.1 @set tramp-bug-report-address tramp-devel@@gnu.org @set emacsver 24.4 diff --git a/tramp-adb.el b/tramp-adb.el index 186b67c..fb84aa1 100644 --- a/tramp-adb.el +++ b/tramp-adb.el @@ -35,12 +35,14 @@ (require 'tramp) +;;;###tramp-autoload (defcustom tramp-adb-program "adb" "Name of the Android Debug Bridge program." :group 'tramp :version "24.4" :type 'string) +;;;###tramp-autoload (defcustom tramp-adb-connect-if-not-connected nil "Try to run `adb connect' if provided device is not connected currently. It is used for TCP/IP devices." @@ -52,6 +54,7 @@ It is used for TCP/IP devices." (defconst tramp-adb-method "adb" "When this method name is used, forward all calls to Android Debug Bridge.") +;;;###tramp-autoload (defcustom tramp-adb-prompt "^[[:digit:]]*|?[[:alnum:]\e;[]*@?[[:alnum:]]*[^#\\$]*[#\\$][[:space:]]" "Regexp used as prompt in almquist shell." @@ -706,15 +709,16 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." (let ((t1 (tramp-tramp-file-p filename)) (t2 (tramp-tramp-file-p newname))) (with-parsed-tramp-file-name (if t1 filename newname) nil + (when (and (not ok-if-already-exists) (file-exists-p newname)) + (tramp-error v 'file-already-exists newname)) + (when (and (file-directory-p newname) (not (directory-name-p newname))) + (tramp-error v 'file-error "File is a directory %s" newname)) + (with-tramp-progress-reporter v 0 (format "Copying %s to %s" filename newname) - (if (and t1 t2 (tramp-equal-remote filename newname)) (let ((l1 (tramp-compat-file-local-name filename)) (l2 (tramp-compat-file-local-name newname))) - (when (and (not ok-if-already-exists) - (file-exists-p newname)) - (tramp-error v 'file-already-exists newname)) ;; We must also flush the cache of the directory, ;; because `file-attributes' reads the values from ;; there. @@ -785,17 +789,18 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." (let ((t1 (tramp-tramp-file-p filename)) (t2 (tramp-tramp-file-p newname))) (with-parsed-tramp-file-name (if t1 filename newname) nil + (when (and (not ok-if-already-exists) (file-exists-p newname)) + (tramp-error v 'file-already-exists newname)) + (when (and (file-directory-p newname) (not (directory-name-p newname))) + (tramp-error v 'file-error "File is a directory %s" newname)) + (with-tramp-progress-reporter v 0 (format "Renaming %s to %s" filename newname) - (if (and t1 t2 (tramp-equal-remote filename newname) (not (file-directory-p filename))) (let ((l1 (tramp-compat-file-local-name filename)) (l2 (tramp-compat-file-local-name newname))) - (when (and (not ok-if-already-exists) - (file-exists-p newname)) - (tramp-error v 'file-already-exists newname)) ;; We must also flush the cache of the directory, because ;; `file-attributes' reads the values from there. (tramp-flush-file-properties v (file-name-directory l1)) diff --git a/tramp-cache.el b/tramp-cache.el index a9ff3a7..489f81a 100644 --- a/tramp-cache.el +++ b/tramp-cache.el @@ -86,6 +86,7 @@ details see the info pages." (choice :tag " Property" string) (choice :tag " Value" sexp)))) +;;;###tramp-autoload (defcustom tramp-persistency-file-name (expand-file-name (locate-user-emacs-file "tramp")) "File which keeps connection history for Tramp connections." diff --git a/tramp-cmds.el b/tramp-cmds.el index 007b98f..35bb85b 100644 --- a/tramp-cmds.el +++ b/tramp-cmds.el @@ -212,39 +212,38 @@ This includes password cache, file cache, connection cache, buffers." (defun tramp-bug () "Submit a bug report to the Tramp developers." (interactive) - (catch 'dont-send - (let ((reporter-prompt-for-summary-p t) - ;; In rare cases, it could contain the password. So we make it nil. - tramp-password-save-function) - (reporter-submit-bug-report - tramp-bug-report-address ; to-address - (format "tramp (%s %s/%s)" ; package name and version - tramp-version tramp-repository-branch tramp-repository-version) - (sort - (delq nil (mapcar - (lambda (x) - (and x (boundp x) (cons x 'tramp-reporter-dump-variable))) - (append - (mapcar #'intern (all-completions "tramp-" obarray #'boundp)) - ;; Non-tramp variables of interest. - '(shell-prompt-pattern - backup-by-copying - backup-by-copying-when-linked - backup-by-copying-when-mismatch - backup-by-copying-when-privileged-mismatch - backup-directory-alist - password-cache - password-cache-expiry - remote-file-name-inhibit-cache - connection-local-profile-alist - connection-local-criteria-alist - file-name-handler-alist)))) - (lambda (x y) (string< (symbol-name (car x)) (symbol-name (car y))))) - - 'tramp-load-report-modules ; pre-hook - 'tramp-append-tramp-buffers ; post-hook - (propertize - "\n" 'display "\ + (let ((reporter-prompt-for-summary-p t) + ;; In rare cases, it could contain the password. So we make it nil. + tramp-password-save-function) + (reporter-submit-bug-report + tramp-bug-report-address ; to-address + (format "tramp (%s %s/%s)" ; package name and version + tramp-version tramp-repository-branch tramp-repository-version) + (sort + (delq nil (mapcar + (lambda (x) + (and x (boundp x) (cons x 'tramp-reporter-dump-variable))) + (append + (mapcar #'intern (all-completions "tramp-" obarray #'boundp)) + ;; Non-tramp variables of interest. + '(shell-prompt-pattern + backup-by-copying + backup-by-copying-when-linked + backup-by-copying-when-mismatch + backup-by-copying-when-privileged-mismatch + backup-directory-alist + password-cache + password-cache-expiry + remote-file-name-inhibit-cache + connection-local-profile-alist + connection-local-criteria-alist + file-name-handler-alist)))) + (lambda (x y) (string< (symbol-name (car x)) (symbol-name (car y))))) + + 'tramp-load-report-modules ; pre-hook + 'tramp-append-tramp-buffers ; post-hook + (propertize + "\n" 'display "\ Enter your bug report in this message, including as much detail as you possibly can about the problem, what you did to cause it and what the local and remote machines are. @@ -267,7 +266,7 @@ contents of the *tramp/foo* buffer and the *debug tramp/foo* buffer in your bug report. --bug report follows this line-- -"))))) +")))) (defun tramp-reporter-dump-variable (varsym mailbuf) "Pretty-print the value of the variable in symbol VARSYM." @@ -398,28 +397,21 @@ the debug buffer(s).") (setq buffer-read-only t) (goto-char (point-min)) - (if (y-or-n-p "Do you want to append the buffer(s)? ") - ;; OK, let's send. First we delete the buffer list. - (progn - (kill-buffer nil) - (switch-to-buffer curbuf) - (goto-char (point-max)) - (insert (propertize "\n" 'display "\n\ + (when (y-or-n-p "Do you want to append the buffer(s)? ") + ;; OK, let's send. First we delete the buffer list. + (kill-buffer nil) + (switch-to-buffer curbuf) + (goto-char (point-max)) + (insert (propertize "\n" 'display "\n\ This is a special notion of the `gnus/message' package. If you use another mail agent (by copying the contents of this buffer) please ensure that the buffers are attached to your email.\n\n")) - (dolist (buffer buffer-list) - (mml-insert-empty-tag - 'part 'type "text/plain" - 'encoding "base64" 'disposition "attachment" 'buffer buffer - 'description buffer)) - (set-buffer-modified-p nil)) - - ;; Don't send. Delete the message buffer. - (set-buffer curbuf) - (set-buffer-modified-p nil) - (kill-buffer nil) - (throw 'dont-send nil)))))) + (dolist (buffer buffer-list) + (mml-insert-empty-tag + 'part 'type "text/plain" + 'encoding "base64" 'disposition "attachment" 'buffer buffer + 'description buffer)) + (set-buffer-modified-p nil)))))) (defalias 'tramp-submit-bug #'tramp-bug) diff --git a/tramp-gvfs.el b/tramp-gvfs.el index e3da20a..9d45e6a 100644 --- a/tramp-gvfs.el +++ b/tramp-gvfs.el @@ -161,6 +161,7 @@ (add-to-list 'tramp-default-host-alist '("\\`gdrive\\'" nil ,(match-string 2 user-mail-address))))) +;;;###tramp-autoload (defcustom tramp-gvfs-zeroconf-domain "local" "Zeroconf domain to be used for discovering services, like host names." :group 'tramp @@ -764,6 +765,8 @@ file names." (with-parsed-tramp-file-name (if t1 filename newname) nil (when (and (not ok-if-already-exists) (file-exists-p newname)) (tramp-error v 'file-already-exists newname)) + (when (and (file-directory-p newname) (not (directory-name-p newname))) + (tramp-error v 'file-error "File is a directory %s" newname)) (if (or (and equal-remote (tramp-get-connection-property v "direct-copy-failed" nil)) diff --git a/tramp-loaddefs.el b/tramp-loaddefs.el index 0ddfee3..4e4374b 100644 --- a/tramp-loaddefs.el +++ b/tramp-loaddefs.el @@ -6,9 +6,25 @@ ;;;### (autoloads nil "tramp-adb" "tramp-adb.el" (0 0 0 0)) ;;; Generated autoloads from tramp-adb.el +(defvar tramp-adb-program "adb" "\ +Name of the Android Debug Bridge program.") + +(custom-autoload 'tramp-adb-program "tramp-adb" t) + +(defvar tramp-adb-connect-if-not-connected nil "\ +Try to run `adb connect' if provided device is not connected currently. +It is used for TCP/IP devices.") + +(custom-autoload 'tramp-adb-connect-if-not-connected "tramp-adb" t) + (defconst tramp-adb-method "adb" "\ When this method name is used, forward all calls to Android Debug Bridge.") +(defvar tramp-adb-prompt "^[[:digit:]]*|?[[:alnum:]\33;[]*@?[[:alnum:]]*[^#\\$]*[#\\$][[:space:]]" "\ +Regexp used as prompt in almquist shell.") + +(custom-autoload 'tramp-adb-prompt "tramp-adb" t) + (tramp--with-startup (add-to-list 'tramp-methods `(,tramp-adb-method (tramp-tmpdir "/data/local/tmp") (tramp-default-port 5555))) (add-to-list 'tramp-default-host-alist `(,tramp-adb-method nil "")) (tramp-set-completion-function tramp-adb-method '((tramp-adb-parse-device-names "")))) (defconst tramp-adb-file-name-handler-alist '((access-file . tramp-handle-access-file) (add-name-to-file . tramp-handle-add-name-to-file) (copy-file . tramp-adb-handle-copy-file) (delete-directory . tramp-adb-handle-delete-directory) (delete-file . tramp-adb-handle-delete-file) (directory-file-name . tramp-handle-directory-file-name) (directory-files . tramp-handle-directory-files) (directory-files-and-attributes . tramp-adb-handle-directory-files-and-attributes) (dired-compress-file . i [...] @@ -71,6 +87,11 @@ details see the info pages.") (custom-autoload 'tramp-connection-properties "tramp-cache" t) +(defvar tramp-persistency-file-name (expand-file-name (locate-user-emacs-file "tramp")) "\ +File which keeps connection history for Tramp connections.") + +(custom-autoload 'tramp-persistency-file-name "tramp-cache" t) + (autoload 'tramp-get-file-property "tramp-cache" "\ Get the PROPERTY of FILE from the cache context of KEY. Returns DEFAULT if not set. @@ -243,6 +264,11 @@ List of methods for remote files, accessed with GVFS.") (tramp--with-startup (when (string-match "\\(.+\\)@\\(\\(?:gmail\\|googlemail\\)\\.com\\)" user-mail-address) (add-to-list 'tramp-default-user-alist `("\\`gdrive\\'" nil ,(match-string 1 user-mail-address))) (add-to-list 'tramp-default-host-alist '("\\`gdrive\\'" nil (\, (match-string 2 user-mail-address)))))) +(defvar tramp-gvfs-zeroconf-domain "local" "\ +Zeroconf domain to be used for discovering services, like host names.") + +(custom-autoload 'tramp-gvfs-zeroconf-domain "tramp-gvfs" t) + (when (featurep 'dbusbind) (tramp--with-startup (dolist (elt tramp-gvfs-methods) (unless (assoc elt tramp-methods) (add-to-list 'tramp-methods (cons elt nil)))))) (defconst tramp-goa-service "org.gnome.OnlineAccounts" "\ @@ -272,6 +298,11 @@ pass to the OPERATION. (defconst tramp-rclone-method "rclone" "\ When this method name is used, forward all calls to rclone mounts.") +(defvar tramp-rclone-program "rclone" "\ +Name of the rclone program.") + +(custom-autoload 'tramp-rclone-program "tramp-rclone" t) + (tramp--with-startup (add-to-list 'tramp-methods `(,tramp-rclone-method (tramp-mount-args nil) (tramp-copyto-args nil) (tramp-moveto-args nil) (tramp-about-args ("--full")))) (add-to-list 'tramp-default-host-alist `(,tramp-rclone-method nil "")) (tramp-set-completion-function tramp-rclone-method '((tramp-rclone-parse-device-names "")))) (defconst tramp-rclone-file-name-handler-alist '((access-file . tramp-handle-access-file) (add-name-to-file . tramp-handle-add-name-to-file) (copy-file . tramp-rclone-handle-copy-file) (delete-directory . tramp-rclone-handle-delete-directory) (delete-file . tramp-rclone-handle-delete-file) (directory-file-name . tramp-handle-directory-file-name) (directory-files . tramp-rclone-handle-directory-files) (directory-files-and-attributes . tramp-handle-directory-files-and-attributes) (dired-co [...] @@ -300,6 +331,21 @@ Return a list of (nil host) tuples allowed to access. ;;;### (autoloads nil "tramp-sh" "tramp-sh.el" (0 0 0 0)) ;;; Generated autoloads from tramp-sh.el +(defvar tramp-inline-compress-start-size 4096 "\ +The minimum size of compressing where inline transfer. +When inline transfer, compress transferred data of file whose +size is this value or above (up to `tramp-copy-size-limit' for +out-of-band methods). +If it is nil, no compression at all will be applied.") + +(custom-autoload 'tramp-inline-compress-start-size "tramp-sh" t) + +(defvar tramp-copy-size-limit 10240 "\ +The maximum file size where inline copying is preferred over an out-of-the-band copy. +If it is nil, out-of-the-band copy will be used without a check.") + +(custom-autoload 'tramp-copy-size-limit "tramp-sh" t) + (defvar tramp-terminal-type "dumb" "\ Value of TERM environment variable for logging in to remote host. Because Tramp wants to parse the output of the remote shell, it is easily @@ -308,12 +354,30 @@ files conditionalize this setup based on the TERM environment variable.") (custom-autoload 'tramp-terminal-type "tramp-sh" t) +(defvar tramp-histfile-override "~/.tramp_history" "\ +When invoking a shell, override the HISTFILE with this value. +When setting to a string, it redirects the shell history to that +file. Be careful when setting to \"/dev/null\"; this might +result in undesired results when using \"bash\" as shell. + +The value t unsets any setting of HISTFILE, and sets both +HISTFILESIZE and HISTSIZE to 0. If you set this variable to nil, +however, the *override* is disabled, so the history will go to +the default storage location, e.g. \"$HOME/.sh_history\".") + +(custom-autoload 'tramp-histfile-override "tramp-sh" t) + (defconst tramp-display-escape-sequence-regexp "\33[[;0-9]+m" "\ Terminal control escape sequences for display attributes.") (defconst tramp-initial-end-of-output "#$ " "\ Prompt when establishing a connection.") +(defvar tramp-use-ssh-controlmaster-options t "\ +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 "/bin/sh") (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 "/bin/sh") (tramp-remot [...] (defconst tramp-completion-function-alist-rsh '((tramp-parse-rhosts "/etc/hosts.equiv") (tramp-parse-rhosts "~/.rhosts")) "\ @@ -420,10 +484,46 @@ Method to connect SAMBA and M$ SMB servers.") (tramp--with-startup (add-to-list 'tramp-default-user-alist `(,(concat "\\`" tramp-smb-method "\\'") nil nil)) (tramp-set-completion-function tramp-smb-method '((tramp-parse-netrc "~/.netrc")))) +(defvar tramp-smb-program "smbclient" "\ +Name of SMB client to run.") + +(custom-autoload 'tramp-smb-program "tramp-smb" t) + +(defvar tramp-smb-acl-program "smbcacls" "\ +Name of SMB acls to run.") + +(custom-autoload 'tramp-smb-acl-program "tramp-smb" t) + +(defvar tramp-smb-conf "/dev/null" "\ +Path of the smb.conf file. +If it is nil, no smb.conf will be added to the `tramp-smb-program' +call, letting the SMB client use the default one.") + +(custom-autoload 'tramp-smb-conf "tramp-smb" t) + (defconst tramp-smb-file-name-handler-alist '((access-file . tramp-handle-access-file) (add-name-to-file . tramp-smb-handle-add-name-to-file) (copy-directory . tramp-smb-handle-copy-directory) (copy-file . tramp-smb-handle-copy-file) (delete-directory . tramp-smb-handle-delete-directory) (delete-file . tramp-smb-handle-delete-file) (directory-file-name . tramp-handle-directory-file-name) (directory-files . tramp-smb-handle-directory-files) (directory-files-and-attributes . tramp-handle-d [...] Alist of handler functions for Tramp SMB method. Operations not mentioned here will be handled by the default Emacs primitives.") +(defvar tramp-smb-winexe-program "winexe" "\ +Name of winexe client to run. +If it isn't found in the local $PATH, the absolute path of winexe +shall be given. This is needed for remote processes.") + +(custom-autoload 'tramp-smb-winexe-program "tramp-smb" t) + +(defvar tramp-smb-winexe-shell-command "powershell.exe" "\ +Shell to be used for processes on remote machines. +This must be Powershell V2 compatible.") + +(custom-autoload 'tramp-smb-winexe-shell-command "tramp-smb" t) + +(defvar tramp-smb-winexe-shell-command-switch "-file -" "\ +Command switch used together with `tramp-smb-winexe-shell-command'. +This can be used to disable echo etc.") + +(custom-autoload 'tramp-smb-winexe-shell-command-switch "tramp-smb" t) + (defsubst tramp-smb-file-name-p (filename) "\ Check if it's a filename for SMB servers." (and (tramp-tramp-file-p filename) (string= (tramp-file-name-method (tramp-dissect-file-name filename)) tramp-smb-method))) @@ -477,7 +577,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" "\ +(defconst tramp-version "2.4.2.1" "\ This version of Tramp.") (defconst tramp-bug-report-address "tramp-de...@gnu.org" "\ diff --git a/tramp-rclone.el b/tramp-rclone.el index 9e99493..9b3eab3 100644 --- a/tramp-rclone.el +++ b/tramp-rclone.el @@ -42,6 +42,7 @@ (defconst tramp-rclone-method "rclone" "When this method name is used, forward all calls to rclone mounts.") +;;;###tramp-autoload (defcustom tramp-rclone-program "rclone" "Name of the rclone program." :group 'tramp @@ -214,6 +215,8 @@ file names." (with-parsed-tramp-file-name (if t1 filename newname) nil (when (and (not ok-if-already-exists) (file-exists-p newname)) (tramp-error v 'file-already-exists newname)) + (when (and (file-directory-p newname) (not (directory-name-p newname))) + (tramp-error v 'file-error "File is a directory %s" newname)) (if (or (and t1 (not (tramp-rclone-file-name-p filename))) (and t2 (not (tramp-rclone-file-name-p newname)))) diff --git a/tramp-sh.el b/tramp-sh.el index cee61f1..6a82fef 100644 --- a/tramp-sh.el +++ b/tramp-sh.el @@ -37,14 +37,17 @@ (defvar vc-git-program) (defvar vc-hg-program) +;;;###tramp-autoload (defcustom tramp-inline-compress-start-size 4096 "The minimum size of compressing where inline transfer. -When inline transfer, compress transferred data of file -whose size is this value or above (up to `tramp-copy-size-limit'). +When inline transfer, compress transferred data of file whose +size is this value or above (up to `tramp-copy-size-limit' for +out-of-band methods). If it is nil, no compression at all will be applied." :group 'tramp :type '(choice (const nil) integer)) +;;;###tramp-autoload (defcustom tramp-copy-size-limit 10240 "The maximum file size where inline copying is preferred over an \ out-of-the-band copy. @@ -61,6 +64,7 @@ files conditionalize this setup based on the TERM environment variable." :group 'tramp :type 'string) +;;;###tramp-autoload (defcustom tramp-histfile-override "~/.tramp_history" "When invoking a shell, override the HISTFILE with this value. When setting to a string, it redirects the shell history to that @@ -103,6 +107,7 @@ detected as prompt when being sent on echoing hosts, therefore.") (defconst tramp-end-of-heredoc (md5 tramp-end-of-output) "String used to recognize end of heredoc strings.") +;;;###tramp-autoload (defcustom tramp-use-ssh-controlmaster-options t "Whether to use `tramp-ssh-controlmaster-options'." :group 'tramp @@ -261,11 +266,13 @@ The string is used in `tramp-methods'.") (add-to-list 'tramp-methods '("sudo" (tramp-login-program "sudo") - ;; The password template must be masked. Otherwise, it could be - ;; interpreted as password prompt if the remote host echoes the command. + ;; The password template must be masked. Otherwise, + ;; 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. + ;; Local $SHELL could be a nasty one, like zsh or + ;; fish. Let's override it. (tramp-login-env (("SHELL") ("/bin/sh"))) (tramp-remote-shell "/bin/sh") (tramp-remote-shell-login ("-l")) @@ -1991,6 +1998,8 @@ file names." (with-parsed-tramp-file-name (if t1 filename newname) nil (when (and (not ok-if-already-exists) (file-exists-p newname)) (tramp-error v 'file-already-exists newname)) + (when (and (file-directory-p newname) (not (directory-name-p newname))) + (tramp-error v 'file-error "File is a directory %s" newname)) (with-tramp-progress-reporter v 0 (format "%s %s to %s" @@ -2297,7 +2306,8 @@ The method used must be an out-of-band method." ;; Check which ones of source and target are Tramp files. (setq source (funcall - (if (and (file-directory-p filename) + (if (and (string-equal method "rsync") + (file-directory-p filename) (not (file-exists-p newname))) #'file-name-as-directory #'identity) @@ -3694,7 +3704,7 @@ Fall back to normal file name handler if no Tramp handler exists." ;; once. Therefore, we apply the handler directly. (when (member (cl-caadr object) events) (tramp-compat-funcall - 'file-notify-handle-event + (lookup-key special-event-map [file-notify]) `(file-notify ,object file-notify-callback))))) ;; Save rest of the string. @@ -3745,7 +3755,7 @@ file-notify events." ;; once. Therefore, we apply the handler directly. (when (member (cl-caadr object) events) (tramp-compat-funcall - 'file-notify-handle-event + (lookup-key special-event-map [file-notify]) `(file-notify ,object file-notify-callback))))) ;; Save rest of the string. @@ -3781,7 +3791,7 @@ file-notify events." ;; once. Therefore, we apply the handler directly. (when (member (cl-caadr object) events) (tramp-compat-funcall - 'file-notify-handle-event + (lookup-key special-event-map [file-notify]) `(file-notify ,object file-notify-callback))))))) (defun tramp-sh-handle-file-system-info (filename) @@ -4549,29 +4559,36 @@ Goes through the list `tramp-inline-compress-commands'." vec 5 "Checking local compress commands `%s', `%s' for sanity" compress decompress) - (unless - (zerop - (tramp-call-local-coding-command - (format - "echo %s | %s | %s" magic - ;; Windows shells need the program file name after - ;; the pipe symbol be quoted if they use forward - ;; slashes as directory separators. - (mapconcat - #'tramp-unquote-shell-quote-argument - (split-string compress) " ") - (mapconcat - #'tramp-unquote-shell-quote-argument - (split-string decompress) " ")) - nil nil)) - (throw 'next nil)) - (tramp-message + (with-temp-buffer + (unless (zerop + (tramp-call-local-coding-command + (format + "echo %s | %s | %s" magic + ;; Windows shells need the program file name + ;; after the pipe symbol be quoted if they use + ;; forward slashes as directory separators. + (mapconcat + #'tramp-unquote-shell-quote-argument + (split-string compress) " ") + (mapconcat + #'tramp-unquote-shell-quote-argument + (split-string decompress) " ")) + nil t)) + (throw 'next nil)) + (goto-char (point-min)) + (unless (looking-at-p (regexp-quote magic)) + (throw 'next nil))) + (tramp-message vec 5 "Checking remote compress commands `%s', `%s' for sanity" compress decompress) (unless (tramp-send-command-and-check vec (format "echo %s | %s | %s" magic compress decompress) t) (throw 'next nil)) + (with-current-buffer (tramp-get-buffer vec) + (goto-char (point-min)) + (unless (looking-at-p (regexp-quote magic)) + (throw 'next nil))) (setq found t))) ;; Did we find something? diff --git a/tramp-smb.el b/tramp-smb.el index 695f552..9b87ed4 100644 --- a/tramp-smb.el +++ b/tramp-smb.el @@ -60,17 +60,20 @@ tramp-smb-method '((tramp-parse-netrc "~/.netrc")))) +;;;###tramp-autoload (defcustom tramp-smb-program "smbclient" "Name of SMB client to run." :group 'tramp :type 'string) +;;;###tramp-autoload (defcustom tramp-smb-acl-program "smbcacls" "Name of SMB acls to run." :group 'tramp :type 'string :version "24.4") +;;;###tramp-autoload (defcustom tramp-smb-conf "/dev/null" "Path of the smb.conf file. If it is nil, no smb.conf will be added to the `tramp-smb-program' @@ -287,6 +290,7 @@ See `tramp-actions-before-shell' for more info.") Operations not mentioned here will be handled by the default Emacs primitives.") ;; Options for remote processes via winexe. +;;;###tramp-autoload (defcustom tramp-smb-winexe-program "winexe" "Name of winexe client to run. If it isn't found in the local $PATH, the absolute path of winexe @@ -295,6 +299,7 @@ shall be given. This is needed for remote processes." :type 'string :version "24.3") +;;;###tramp-autoload (defcustom tramp-smb-winexe-shell-command "powershell.exe" "Shell to be used for processes on remote machines. This must be Powershell V2 compatible." @@ -302,6 +307,7 @@ This must be Powershell V2 compatible." :type 'string :version "24.3") +;;;###tramp-autoload (defcustom tramp-smb-winexe-shell-command-switch "-file -" "Command switch used together with `tramp-smb-winexe-shell-command'. This can be used to disable echo etc." @@ -582,9 +588,11 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." (expand-file-name (file-name-nondirectory filename) newname))) (with-parsed-tramp-file-name newname nil - (when (and (not ok-if-already-exists) - (file-exists-p newname)) + (when (and (not ok-if-already-exists) (file-exists-p newname)) (tramp-error v 'file-already-exists newname)) + (when (and (file-directory-p newname) + (not (directory-name-p newname))) + (tramp-error v 'file-error "File is a directory %s" newname)) ;; We must also flush the cache of the directory, because ;; `file-attributes' reads the values from there. @@ -1329,48 +1337,49 @@ component is used as the target of the symlink." (setq filename (expand-file-name filename) newname (expand-file-name newname)) - (when (and (not ok-if-already-exists) - (file-exists-p newname)) - (tramp-error - (tramp-dissect-file-name - (if (tramp-tramp-file-p filename) filename newname)) - 'file-already-exists newname)) - - (with-tramp-progress-reporter - (tramp-dissect-file-name - (if (tramp-tramp-file-p filename) filename newname)) - 0 (format "Renaming %s to %s" filename newname) - - (if (and (not (file-exists-p newname)) - (tramp-equal-remote filename newname) - (string-equal - (tramp-smb-get-share (tramp-dissect-file-name filename)) - (tramp-smb-get-share (tramp-dissect-file-name newname)))) - ;; We can rename directly. - (with-parsed-tramp-file-name filename v1 - (with-parsed-tramp-file-name newname v2 - - ;; We must also flush the cache of the directory, because - ;; `file-attributes' reads the values from there. - (tramp-flush-file-properties v1 (file-name-directory v1-localname)) - (tramp-flush-file-properties v1 v1-localname) - (tramp-flush-file-properties v2 (file-name-directory v2-localname)) - (tramp-flush-file-properties v2 v2-localname) - (unless (tramp-smb-get-share v2) - (tramp-error - v2 'file-error "Target `%s' must contain a share name" newname)) - (unless (tramp-smb-send-command - v2 (format "rename \"%s\" \"%s\"" - (tramp-smb-get-localname v1) - (tramp-smb-get-localname v2))) - (tramp-error v2 'file-error "Cannot rename `%s'" filename)))) - - ;; We must rename via copy. - (copy-file - filename newname ok-if-already-exists 'keep-time 'preserve-uid-gid) - (if (file-directory-p filename) - (delete-directory filename 'recursive) - (delete-file filename))))) + (with-parsed-tramp-file-name + (if (tramp-tramp-file-p filename) filename newname) nil + (when (and (not ok-if-already-exists) (file-exists-p newname)) + (tramp-error v 'file-already-exists newname)) + (when (and (file-directory-p newname) (not (directory-name-p newname))) + (tramp-error v 'file-error "File is a directory %s" newname)) + + (with-tramp-progress-reporter + v 0 (format "Renaming %s to %s" filename newname) + + (if (and (not (file-exists-p newname)) + (tramp-equal-remote filename newname) + (string-equal + (tramp-smb-get-share (tramp-dissect-file-name filename)) + (tramp-smb-get-share (tramp-dissect-file-name newname)))) + ;; We can rename directly. + (with-parsed-tramp-file-name filename v1 + (with-parsed-tramp-file-name newname v2 + + ;; We must also flush the cache of the directory, because + ;; `file-attributes' reads the values from there. + (tramp-flush-file-properties + v1 (file-name-directory v1-localname)) + (tramp-flush-file-properties v1 v1-localname) + (tramp-flush-file-properties + v2 (file-name-directory v2-localname)) + (tramp-flush-file-properties v2 v2-localname) + (unless (tramp-smb-get-share v2) + (tramp-error + v2 'file-error + "Target `%s' must contain a share name" newname)) + (unless (tramp-smb-send-command + v2 (format "rename \"%s\" \"%s\"" + (tramp-smb-get-localname v1) + (tramp-smb-get-localname v2))) + (tramp-error v2 'file-error "Cannot rename `%s'" filename)))) + + ;; We must rename via copy. + (copy-file + filename newname ok-if-already-exists 'keep-time 'preserve-uid-gid) + (if (file-directory-p filename) + (delete-directory filename 'recursive) + (delete-file filename)))))) (defun tramp-smb-action-set-acl (proc vec) "Set ACL data." diff --git a/tramp-sudoedit.el b/tramp-sudoedit.el index bbe7800..0ded85f 100644 --- a/tramp-sudoedit.el +++ b/tramp-sudoedit.el @@ -244,6 +244,8 @@ absolute file names." (with-parsed-tramp-file-name (if t1 filename newname) nil (when (and (not ok-if-already-exists) (file-exists-p newname)) (tramp-error v 'file-already-exists newname)) + (when (and (file-directory-p newname) (not (directory-name-p newname))) + (tramp-error v 'file-error "File is a directory %s" newname)) (if (or (and (file-remote-p filename) (not t1)) (and (file-remote-p newname) (not t2))) diff --git a/tramp.el b/tramp.el index 667dc1d..2556034 100644 --- a/tramp.el +++ b/tramp.el @@ -7,7 +7,7 @@ ;; Maintainer: Michael Albinus <michael.albi...@gmx.de> ;; Keywords: comm, processes ;; Package: tramp -;; Version: 2.4.2 +;; Version: 2.4.2.1 ;; Package-Requires: ((emacs "24.4")) ;; URL: https://savannah.gnu.org/projects/tramp diff --git a/tramp.info b/tramp.info index 1f416c9..2024eca 100644 --- a/tramp.info +++ b/tramp.info @@ -21,10 +21,10 @@ END-INFO-DIR-ENTRY File: tramp.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir) -TRAMP 2.4.2 User Manual -*********************** +TRAMP 2.4.2.1 User Manual +************************* -This file documents TRAMP 2.4.2, a remote file editing package for +This file documents TRAMP 2.4.2.1, a remote file editing package for Emacs. TRAMP stands for “Transparent Remote (file) Access, Multiple @@ -301,6 +301,9 @@ Run ‘autoconf’ as follows to generate an up-to-date ‘configure’ script: $ cd ~/emacs/tramp $ autoconf + See the file ‘INSTALL’ in that directory for further information how +to install TRAMP. + File: tramp.info, Node: Quick Start Guide, Next: Configuration, Prev: Obtaining TRAMP, Up: Top @@ -527,17 +530,19 @@ program is unavailable. Inline methods also work when transferring files between different _user identities_ on the same host. TRAMP checks the remote host for the availability and usability of -‘mimencode’ (part of the ‘metamail’ package) or ‘uuencode’. TRAMP uses -the first reliable command it finds. TRAMP’s search path can be +one of the commands defined in ‘tramp-remote-coding-commands’. TRAMP +uses the first reliable command it finds. TRAMP’s search path can be customized, see *note Remote programs::. - In case both ‘mimencode’ and ‘uuencode’ are unavailable, TRAMP first -transfers a small Perl program to the remote host, and then tries that -program for encoding and decoding. + In case none of the commands are unavailable, TRAMP first transfers a +small Perl program to the remote host, and then tries that program for +encoding and decoding. To increase transfer speeds for large text files, use compression before encoding. The user option ‘tramp-inline-compress-start-size’ -specifies the file size for such optimization. +specifies the file size for such optimization. This feature depends on +the availability and usability of one of the commands defined in +‘tramp-inline-compress-commands’. ‘rsh’ @@ -2350,8 +2355,8 @@ achieved by adding the environment variable ‘COLUMNS’ to TRAMP is integrated into ‘eshell.el’, which enables interactive eshell sessions on remote hosts at the command prompt. You must add the module -‘em-tramp’ to ‘eshell-modules-list’. Here’s a sample interaction after -opening ‘M-x eshell <RET>’ on a remote host: +‘eshell-tramp’ to ‘eshell-modules-list’. Here’s a sample interaction +after opening ‘M-x eshell <RET>’ on a remote host: ~ $ cd /sudo::/etc <RET> /sudo:root@host:/etc $ hostname <RET> @@ -2444,10 +2449,12 @@ TRAMP provides several ways to flush remote connections. internal representation of a remote connection. When called interactively, this command lists active remote connections in the minibuffer. Each connection is of the format ‘/method:user@host:’. + Flushing remote connections also cleans the password cache (*note Password handling::), file cache, connection cache (*note - Connection caching::), recentf cache (*note (emacs)File - Conveniences::), and connection buffers. + Connection caching::), and recentf cache (*note (emacs)File + Conveniences::). It also deletes session timers (*note Predefined + connection information::) and connection buffers. -- Command: tramp-cleanup-this-connection Flushes only the current buffer’s remote connection objects, the @@ -2461,7 +2468,7 @@ TRAMP provides several ways to flush remote connections. -- Command: tramp-cleanup-all-buffers Just as for ‘tramp-cleanup-all-connections’, all remote connections and ad-hoc proxy definition are cleaned up in addition to killing - buffers related to that remote connection. + all buffers related to remote connections. File: tramp.info, Node: Archive file names, Prev: Cleanup remote connections, Up: Usage @@ -3857,13 +3864,13 @@ Function Index * tramp-change-syntax: Change file name syntax. (line 10) * tramp-cleanup-all-buffers: Cleanup remote connections. - (line 27) + (line 29) * tramp-cleanup-all-connections: Cleanup remote connections. - (line 22) + (line 24) * tramp-cleanup-connection: Cleanup remote connections. (line 8) * tramp-cleanup-this-connection: Cleanup remote connections. - (line 18) + (line 20) * tramp-get-completion-function: Customizing Completion. (line 16) * tramp-parse-etc-group: Customizing Completion. @@ -3967,6 +3974,7 @@ Variable Index (line 277) * tramp-ignored-file-name-regexp: Frequently Asked Questions. (line 580) +* tramp-inline-compress-commands: Inline methods. (line 25) * tramp-inline-compress-start-size: Inline methods. (line 25) * tramp-local-host-regexp: Frequently Asked Questions. (line 161) @@ -3977,6 +3985,7 @@ Variable Index * tramp-password-prompt-regexp: Remote shell setup. (line 33) * tramp-persistency-file-name: Connection caching. (line 6) * tramp-rclone-program: External methods. (line 212) +* tramp-remote-coding-commands: Inline methods. (line 16) * tramp-remote-path: Remote programs. (line 15) * tramp-remote-process-environment: Remote processes. (line 38) * tramp-restricted-shell-hosts-alist: Multi-hops. (line 84) @@ -4023,6 +4032,7 @@ Concept Index * backup: Auto-save and Backup. (line 6) * base-64 encoding: Inline methods. (line 16) +* base-64 encoding <1>: Inline methods. (line 16) * behind the scenes: Overview. (line 44) * bug reports: Bug Reports. (line 6) * cab file archive suffix: Archive file names. (line 39) @@ -4056,7 +4066,7 @@ Concept Index * default user: Default User. (line 6) * depot file archive suffix: Archive file names. (line 45) * details of operation: Overview. (line 44) -* doas method: Inline methods. (line 66) +* doas method: Inline methods. (line 68) * docker method: Customizing Methods. (line 15) * eshell: Remote processes. (line 175) * exe file archive suffix: Archive file names. (line 47) @@ -4132,10 +4142,10 @@ Concept Index * inline methods: Inline methods. (line 6) * iso file archive suffix: Archive file names. (line 49) * jar file archive suffix: Archive file names. (line 51) -* kerberos (with krlogin method): Inline methods. (line 98) -* kerberos (with ksu method): Inline methods. (line 103) -* krlogin method: Inline methods. (line 98) -* ksu method: Inline methods. (line 103) +* kerberos (with krlogin method): Inline methods. (line 100) +* kerberos (with ksu method): Inline methods. (line 105) +* krlogin method: Inline methods. (line 100) +* ksu method: Inline methods. (line 105) * kubectl method: Customizing Methods. (line 21) * lxc method: Customizing Methods. (line 27) * lxd method: Customizing Methods. (line 32) @@ -4150,7 +4160,7 @@ Concept Index * method dav <1>: GVFS based methods. (line 24) * method davs: Quick Start Guide. (line 95) * method davs <1>: GVFS based methods. (line 24) -* method doas: Inline methods. (line 66) +* method doas: Inline methods. (line 68) * method docker: Customizing Methods. (line 15) * method fcp: External methods. (line 73) * method fsh: External methods. (line 83) @@ -4159,8 +4169,8 @@ Concept Index * method gdrive <1>: GVFS based methods. (line 34) * method git: Customizing Methods. (line 37) * method hdfs: Customizing Methods. (line 43) -* method krlogin: Inline methods. (line 98) -* method ksu: Inline methods. (line 103) +* method krlogin: Inline methods. (line 100) +* method ksu: Inline methods. (line 105) * method kubectl: Customizing Methods. (line 21) * method lxc: Customizing Methods. (line 27) * method lxd: Customizing Methods. (line 32) @@ -4169,14 +4179,14 @@ Concept Index * method nextcloud <1>: GVFS based methods. (line 47) * method plink: Quick Start Guide. (line 44) * method plink <1>: Quick Start Guide. (line 68) -* method plink <2>: Inline methods. (line 108) -* method plinkx: Inline methods. (line 119) +* method plink <2>: Inline methods. (line 110) +* method plinkx: Inline methods. (line 121) * method pscp: External methods. (line 61) * method psftp: External methods. (line 61) * method rclone: Quick Start Guide. (line 122) * method rclone <1>: External methods. (line 211) * method rcp: External methods. (line 17) -* method rsh: Inline methods. (line 30) +* method rsh: Inline methods. (line 32) * method rsync: External methods. (line 37) * method scp: External methods. (line 25) * method scpx: External methods. (line 48) @@ -4184,29 +4194,28 @@ Concept Index * method sftp: Quick Start Guide. (line 95) * method sftp <1>: GVFS based methods. (line 55) * method sg: Quick Start Guide. (line 56) -* method sg <1>: Inline methods. (line 72) +* method sg <1>: Inline methods. (line 74) * method smb: Quick Start Guide. (line 87) * method smb <1>: External methods. (line 121) * method ssh: Quick Start Guide. (line 44) * method ssh <1>: Quick Start Guide. (line 68) -* method ssh <2>: Inline methods. (line 35) -* method sshx: Inline methods. (line 80) +* method ssh <2>: Inline methods. (line 37) +* method sshx: Inline methods. (line 82) * method sshx with cygwin: Windows setup hints. (line 8) * method su: Quick Start Guide. (line 56) * method su <1>: Quick Start Guide. (line 68) -* method su <2>: Inline methods. (line 50) +* method su <2>: Inline methods. (line 52) * method sudo: Quick Start Guide. (line 56) * method sudo <1>: Quick Start Guide. (line 68) -* method sudo <2>: Inline methods. (line 57) +* method sudo <2>: Inline methods. (line 59) * method sudoedit: Quick Start Guide. (line 78) * method sudoedit <1>: External methods. (line 95) -* method telnet: Inline methods. (line 45) +* method telnet: Inline methods. (line 47) * method vagrant: Customizing Methods. (line 48) * methods, external: External methods. (line 6) * methods, gvfs: Quick Start Guide. (line 95) * methods, gvfs <1>: GVFS based methods. (line 6) * methods, inline: Inline methods. (line 6) -* mimencode: Inline methods. (line 16) * ms windows (with smb method): Quick Start Guide. (line 87) * ms windows (with smb method) <1>: External methods. (line 121) * msu file archive suffix: Archive file names. (line 55) @@ -4235,8 +4244,8 @@ Concept Index * plink (with psftp method): External methods. (line 61) * plink method: Quick Start Guide. (line 44) * plink method <1>: Quick Start Guide. (line 68) -* plink method <2>: Inline methods. (line 108) -* plinkx method: Inline methods. (line 119) +* plink method <2>: Inline methods. (line 110) +* plinkx method: Inline methods. (line 121) * powershell: Remote processes. (line 239) * proxy hosts: Multi-hops. (line 6) * proxy hosts, ad-hoc: Ad-hoc multi-hops. (line 6) @@ -4254,7 +4263,7 @@ Concept Index * remote shell setup: Remote shell setup. (line 6) * rpm file archive suffix: Archive file names. (line 66) * rsh (with rcp method): External methods. (line 17) -* rsh method: Inline methods. (line 30) +* rsh method: Inline methods. (line 32) * rsync method: External methods. (line 37) * scp method: External methods. (line 25) * scpx method: External methods. (line 48) @@ -4266,7 +4275,7 @@ Concept Index * sftp method: Quick Start Guide. (line 95) * sftp method <1>: GVFS based methods. (line 55) * sg method: Quick Start Guide. (line 56) -* sg method <1>: Inline methods. (line 72) +* 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 6) @@ -4282,22 +4291,22 @@ Concept Index * ssh (with scpx method): External methods. (line 48) * ssh method: Quick Start Guide. (line 44) * ssh method <1>: Quick Start Guide. (line 68) -* ssh method <2>: Inline methods. (line 35) -* sshx method: Inline methods. (line 80) +* ssh method <2>: Inline methods. (line 37) +* sshx method: Inline methods. (line 82) * sshx method with cygwin: Windows setup hints. (line 8) * SSH_AUTH_SOCK and emacs on ms windows: Windows setup hints. (line 29) * su method: Quick Start Guide. (line 56) * su method <1>: Quick Start Guide. (line 68) -* su method <2>: Inline methods. (line 50) +* su method <2>: Inline methods. (line 52) * sudo method: Quick Start Guide. (line 56) * sudo method <1>: Quick Start Guide. (line 68) -* sudo method <2>: Inline methods. (line 57) +* sudo method <2>: Inline methods. (line 59) * sudoedit method: Quick Start Guide. (line 78) * sudoedit method <1>: External methods. (line 95) * tar file archive suffix: Archive file names. (line 71) * tbz file archive suffix: Archive file names. (line 71) * telnet (with nc method): External methods. (line 88) -* telnet method: Inline methods. (line 45) +* telnet method: Inline methods. (line 47) * tgz file archive suffix: Archive file names. (line 71) * tlz file archive suffix: Archive file names. (line 71) * TRAMP theme: Frequently Asked Questions. @@ -4310,7 +4319,7 @@ Concept Index * unix command tset: Remote shell setup. (line 92) * using non-standard methods: Customizing Methods. (line 6) * using TRAMP: Usage. (line 6) -* uuencode: Inline methods. (line 16) +* uu encoding: Inline methods. (line 16) * vagrant method: Customizing Methods. (line 48) * warc file archive suffix: Archive file names. (line 73) * winexe: Remote processes. (line 239) @@ -4324,60 +4333,60 @@ Concept Index Tag Table: Node: Top933 -Node: Overview5360 -Node: Obtaining TRAMP10694 -Node: Quick Start Guide13046 -Ref: Quick Start Guide: File name syntax13823 -Ref: Quick Start Guide: ssh and plink methods14925 -Ref: Quick Start Guide: su, sudo and sg methods15469 -Ref: Quick Start Guide: ssh, plink, su, sudo and sg methods16033 -Ref: Quick Start Guide: sudoedit method16563 -Ref: Quick Start Guide: smb method16974 -Ref: Quick Start Guide: GVFS-based methods17305 -Ref: Quick Start Guide: GNOME Online Accounts based methods17717 -Ref: Quick Start Guide: Android18259 -Ref: Quick Start Guide: rclone method18491 -Node: Configuration18818 -Node: Connection types21290 -Node: Inline methods22704 -Node: External methods27367 -Node: GVFS based methods37886 -Node: Default Method40776 -Node: Default User43793 -Node: Default Host45316 -Node: Multi-hops46448 -Node: Firewalls50640 -Node: Customizing Methods52097 -Node: Customizing Completion54437 -Node: Password handling57927 -Ref: Using an authentication file58397 -Ref: Caching passwords59899 -Node: Connection caching60417 -Node: Predefined connection information61347 -Node: Remote programs63692 -Node: Remote shell setup66613 -Node: Android shell setup74823 -Node: Auto-save and Backup77210 -Node: Windows setup hints80285 -Node: Usage81905 -Node: File name syntax83203 -Node: Change file name syntax85210 -Node: File name completion86641 -Node: Ad-hoc multi-hops89714 -Node: Remote processes91780 -Ref: Running a debugger on a remote host100534 -Node: Cleanup remote connections102504 -Node: Archive file names103952 -Node: Bug Reports108340 -Node: Frequently Asked Questions110722 -Node: Files directories and localnames133006 -Node: Localname deconstruction133442 -Node: External packages134095 -Node: Traces and Profiles136140 -Node: GNU Free Documentation License138109 -Node: Function Index163480 -Node: Variable Index166084 -Node: Concept Index173127 +Node: Overview5366 +Node: Obtaining TRAMP10700 +Node: Quick Start Guide13147 +Ref: Quick Start Guide: File name syntax13924 +Ref: Quick Start Guide: ssh and plink methods15026 +Ref: Quick Start Guide: su, sudo and sg methods15570 +Ref: Quick Start Guide: ssh, plink, su, sudo and sg methods16134 +Ref: Quick Start Guide: sudoedit method16664 +Ref: Quick Start Guide: smb method17075 +Ref: Quick Start Guide: GVFS-based methods17406 +Ref: Quick Start Guide: GNOME Online Accounts based methods17818 +Ref: Quick Start Guide: Android18360 +Ref: Quick Start Guide: rclone method18592 +Node: Configuration18919 +Node: Connection types21391 +Node: Inline methods22805 +Node: External methods27572 +Node: GVFS based methods38091 +Node: Default Method40981 +Node: Default User43998 +Node: Default Host45521 +Node: Multi-hops46653 +Node: Firewalls50845 +Node: Customizing Methods52302 +Node: Customizing Completion54642 +Node: Password handling58132 +Ref: Using an authentication file58602 +Ref: Caching passwords60104 +Node: Connection caching60622 +Node: Predefined connection information61552 +Node: Remote programs63897 +Node: Remote shell setup66818 +Node: Android shell setup75028 +Node: Auto-save and Backup77415 +Node: Windows setup hints80490 +Node: Usage82110 +Node: File name syntax83408 +Node: Change file name syntax85415 +Node: File name completion86846 +Node: Ad-hoc multi-hops89919 +Node: Remote processes91985 +Ref: Running a debugger on a remote host100743 +Node: Cleanup remote connections102713 +Node: Archive file names104247 +Node: Bug Reports108635 +Node: Frequently Asked Questions111017 +Node: Files directories and localnames133301 +Node: Localname deconstruction133737 +Node: External packages134390 +Node: Traces and Profiles136435 +Node: GNU Free Documentation License138404 +Node: Function Index163775 +Node: Variable Index166379 +Node: Concept Index173568 End Tag Table diff --git a/trampver.el b/trampver.el index e3de54b..05b5965 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" +(defconst tramp-version "2.4.2.1" "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 is not fit for %s" + (format "Tramp 2.4.2.1 is not fit for %s" (replace-regexp-in-string "\n" "" (emacs-version)))))) (unless (string-equal "ok" x) (error "%s" x)))