aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Albinus2010-12-02 20:34:31 +0100
committerMichael Albinus2010-12-02 20:34:31 +0100
commit66feec8bbe23ad4979905e9f6fae807b27cc33de (patch)
tree771481b70f95ae961dc9f3fb5efa420abcaf244b
parent05907bb3aa0e68c594a0a06c5adaa75fe9817fbf (diff)
downloademacs-66feec8bbe23ad4979905e9f6fae807b27cc33de.tar.gz
emacs-66feec8bbe23ad4979905e9f6fae807b27cc33de.zip
* net/tramp.el (tramp-local-host-regexp): Add "localhost6".
(tramp-file-name-port): Check also for `tramp-default-port'. (tramp-get-connection-name): New defun. (tramp-get-connection-process): Use it. (tramp-debug-message): Extend function exclude list. (tramp-drop-volume-letter): Fix doc string. * net/tramp-cmds.el: Remove solved todo item. * net/tramp-efs.el: * net/tramp-ftp.el: * net/tramp-gvfs.el: * net/tramp-gw.el: * net/tramp-imap.el: * net/tramp-smb.el: Fix regexps added to `tramp-default-method-alist' and `tramp-default-user-alist', respectively. * net/tramp-gw.el (tramp-gw-open-connection): Use `tramp-get-connection-name' and `tramp-get-connection-buffer'. * net/tramp-imap.el (tramp-imap-make-iht): Use just `tramp-file-name-port'. * net/tramp-sh.el (tramp-methods): Add recursive options to "pscp" and "psftp". Exchange "%k" marker with options. (tramp-do-copy-or-rename-file, tramp-sh-handle-file-local-copy): Compute size of link target. (tramp-do-copy-or-rename-file-out-of-band). Move setting of `tramp-current-*' up due to gateway methods. Optimze computing of copy arguments. Use `tramp-get-connection-name' and `tramp-get-connection-buffer'. Improve debug messages. (tramp-compute-multi-hops): Remove port determination. (tramp-maybe-open-connection): Use `tramp-get-connection-name'. * net/trampver.el: Update release number.
-rw-r--r--lisp/ChangeLog38
-rw-r--r--lisp/net/tramp-cmds.el7
-rw-r--r--lisp/net/tramp-ftp.el7
-rw-r--r--lisp/net/tramp-gvfs.el4
-rw-r--r--lisp/net/tramp-gw.el18
-rw-r--r--lisp/net/tramp-imap.el17
-rw-r--r--lisp/net/tramp-sh.el126
-rw-r--r--lisp/net/tramp-smb.el2
-rw-r--r--lisp/net/tramp.el30
-rw-r--r--lisp/net/trampver.el4
10 files changed, 145 insertions, 108 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 502a6c65f42..97bf1606ac7 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,41 @@
12010-12-02 Michael Albinus <michael.albinus@gmx.de>
2
3 * net/tramp.el (tramp-local-host-regexp): Add "localhost6".
4 (tramp-file-name-port): Check also for `tramp-default-port'.
5 (tramp-get-connection-name): New defun.
6 (tramp-get-connection-process): Use it.
7 (tramp-debug-message): Extend function exclude list.
8 (tramp-drop-volume-letter): Fix doc string.
9
10 * net/tramp-cmds.el: Remove solved todo item.
11
12 * net/tramp-efs.el:
13 * net/tramp-ftp.el:
14 * net/tramp-gvfs.el:
15 * net/tramp-gw.el:
16 * net/tramp-imap.el:
17 * net/tramp-smb.el: Fix regexps added to `tramp-default-method-alist'
18 and `tramp-default-user-alist', respectively.
19
20 * net/tramp-gw.el (tramp-gw-open-connection): Use
21 `tramp-get-connection-name' and `tramp-get-connection-buffer'.
22
23 * net/tramp-imap.el (tramp-imap-make-iht): Use just
24 `tramp-file-name-port'.
25
26 * net/tramp-sh.el (tramp-methods): Add recursive options to "pscp"
27 and "psftp". Exchange "%k" marker with options.
28 (tramp-do-copy-or-rename-file, tramp-sh-handle-file-local-copy):
29 Compute size of link target.
30 (tramp-do-copy-or-rename-file-out-of-band). Move setting of
31 `tramp-current-*' up due to gateway methods. Optimze computing of
32 copy arguments. Use `tramp-get-connection-name' and
33 `tramp-get-connection-buffer'. Improve debug messages.
34 (tramp-compute-multi-hops): Remove port determination.
35 (tramp-maybe-open-connection): Use `tramp-get-connection-name'.
36
37 * net/trampver.el: Update release number.
38
12010-12-02 Glenn Morris <rgm@gnu.org> 392010-12-02 Glenn Morris <rgm@gnu.org>
2 40
3 * emacs-lisp/cl-macs.el (cl-parse-loop-clause): 41 * emacs-lisp/cl-macs.el (cl-parse-loop-clause):
diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el
index f4290f6faf3..fac08defefb 100644
--- a/lisp/net/tramp-cmds.el
+++ b/lisp/net/tramp-cmds.el
@@ -363,12 +363,5 @@ please ensure that the buffers are attached to your email.\n\n")
363;; flavor) (Reiner Steib) 363;; flavor) (Reiner Steib)
364;; * Let the user edit the connection properties interactively. 364;; * Let the user edit the connection properties interactively.
365;; Something like `gnus-server-edit-server' in Gnus' *Server* buffer. 365;; Something like `gnus-server-edit-server' in Gnus' *Server* buffer.
366;; * It's just that when I come to Customize `tramp-default-user-alist'
367;; I'm presented with a mismatch and raw lisp for a value. It is my
368;; understanding that a variable declared with defcustom is a User
369;; Option and should not be modified by the code. add-to-list is
370;; called in several places. One way to handle that is to have a new
371;; ordinary variable that gets its initial value from
372;; tramp-default-user-alist and then is added to. (Pete Forman)
373 366
374;;; tramp-cmds.el ends here 367;;; tramp-cmds.el ends here
diff --git a/lisp/net/tramp-ftp.el b/lisp/net/tramp-ftp.el
index 7f8b7454caf..a0db0199412 100644
--- a/lisp/net/tramp-ftp.el
+++ b/lisp/net/tramp-ftp.el
@@ -107,11 +107,11 @@ present for backward compatibility."
107(unless (featurep 'xemacs) 107(unless (featurep 'xemacs)
108 (add-to-list 'tramp-methods (cons tramp-ftp-method nil))) 108 (add-to-list 'tramp-methods (cons tramp-ftp-method nil)))
109 109
110;; Add some defaults for `tramp-default-method-alist' 110;; Add some defaults for `tramp-default-method-alist'.
111(add-to-list 'tramp-default-method-alist 111(add-to-list 'tramp-default-method-alist
112 (list "\\`ftp\\." "" tramp-ftp-method)) 112 (list "\\`ftp\\." nil tramp-ftp-method))
113(add-to-list 'tramp-default-method-alist 113(add-to-list 'tramp-default-method-alist
114 (list "" "\\`\\(anonymous\\|ftp\\)\\'" tramp-ftp-method)) 114 (list nil "\\`\\(anonymous\\|ftp\\)\\'" tramp-ftp-method))
115 115
116;; Add completion function for FTP method. 116;; Add completion function for FTP method.
117(tramp-set-completion-function 117(tramp-set-completion-function
@@ -221,5 +221,4 @@ pass to the OPERATION."
221 221
222;; * There are no backup files on FTP hosts. 222;; * There are no backup files on FTP hosts.
223 223
224;; arch-tag: 759fb338-5c63-4b99-bd36-b4d59db91cff
225;;; tramp-ftp.el ends here 224;;; tramp-ftp.el ends here
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 32322680f14..a87b58a42c2 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -124,8 +124,7 @@
124 124
125;; Add a default for `tramp-default-user-alist'. Rule: For the SYNCE 125;; Add a default for `tramp-default-user-alist'. Rule: For the SYNCE
126;; method, no user is chosen. 126;; method, no user is chosen.
127(add-to-list 'tramp-default-user-alist 127(add-to-list 'tramp-default-user-alist '("\\`synce\\'" nil nil))
128 '("synce" nil nil))
129 128
130(defcustom tramp-gvfs-zeroconf-domain "local" 129(defcustom tramp-gvfs-zeroconf-domain "local"
131 "*Zeroconf domain to be used for discovering services, like host names." 130 "*Zeroconf domain to be used for discovering services, like host names."
@@ -1432,5 +1431,4 @@ They are retrieved from the hal daemon."
1432;; capability. 1431;; capability.
1433;; * Implement obex for other serial communication but bluetooth. 1432;; * Implement obex for other serial communication but bluetooth.
1434 1433
1435;; arch-tag: f7f660ce-77f4-4132-9663-f5c25a47f7ed
1436;;; tramp-gvfs.el ends here 1434;;; tramp-gvfs.el ends here
diff --git a/lisp/net/tramp-gw.el b/lisp/net/tramp-gw.el
index 71a23fd2d07..0fac3935d73 100644
--- a/lisp/net/tramp-gw.el
+++ b/lisp/net/tramp-gw.el
@@ -44,6 +44,9 @@
44 (when (featurep 'xemacs) 44 (when (featurep 'xemacs)
45 (byte-compiler-options (warnings (- unused-vars))))) 45 (byte-compiler-options (warnings (- unused-vars)))))
46 46
47;; We don't add the following methods to `tramp-methods', in order to
48;; exclude them from file name completion.
49
47;; Define HTTP tunnel method ... 50;; Define HTTP tunnel method ...
48;;;###tramp-autoload 51;;;###tramp-autoload
49(defconst tramp-gw-tunnel-method "tunnel" 52(defconst tramp-gw-tunnel-method "tunnel"
@@ -69,10 +72,12 @@
69 (list "Default server" "socks" tramp-gw-default-socks-port 5)) 72 (list "Default server" "socks" tramp-gw-default-socks-port 5))
70 73
71;; Add a default for `tramp-default-user-alist'. Default is the local user. 74;; Add a default for `tramp-default-user-alist'. Default is the local user.
72(add-to-list 'tramp-default-user-alist 75(add-to-list
73 `(,tramp-gw-tunnel-method nil ,(user-login-name))) 76 'tramp-default-user-alist
74(add-to-list 'tramp-default-user-alist 77 (list (concat "\\`"
75 `(,tramp-gw-socks-method nil ,(user-login-name))) 78 (regexp-opt (list tramp-gw-tunnel-method tramp-gw-socks-method))
79 "\\'")
80 nil (user-login-name)))
76 81
77;; Internal file name functions and variables. 82;; Internal file name functions and variables.
78 83
@@ -194,8 +199,8 @@ instead of the host name declared in TARGET-VEC."
194 (setq tramp-gw-gw-proc 199 (setq tramp-gw-gw-proc
195 (funcall 200 (funcall
196 socks-function 201 socks-function
197 (tramp-buffer-name gw-vec) 202 (tramp-get-connection-name gw-vec)
198 (tramp-get-buffer gw-vec) 203 (tramp-get-connection-buffer gw-vec)
199 (tramp-file-name-real-host target-vec) 204 (tramp-file-name-real-host target-vec)
200 (tramp-file-name-port target-vec))) 205 (tramp-file-name-port target-vec)))
201 (set-process-sentinel tramp-gw-gw-proc 'tramp-gw-gw-proc-sentinel) 206 (set-process-sentinel tramp-gw-gw-proc 'tramp-gw-gw-proc-sentinel)
@@ -324,5 +329,4 @@ password in password cache. This is done for the first try only."
324;; * Provide descriptive Commentary. 329;; * Provide descriptive Commentary.
325;; * Enable it for several gateway processes in parallel. 330;; * Enable it for several gateway processes in parallel.
326 331
327;; arch-tag: 277e3a81-fdee-40cf-9e6b-59626292a5e0
328;;; tramp-gw.el ends here 332;;; tramp-gw.el ends here
diff --git a/lisp/net/tramp-imap.el b/lisp/net/tramp-imap.el
index dade2052126..d71583bcd85 100644
--- a/lisp/net/tramp-imap.el
+++ b/lisp/net/tramp-imap.el
@@ -84,10 +84,6 @@
84 (add-to-list 'tramp-methods 84 (add-to-list 'tramp-methods
85 (list tramp-imap-method '(tramp-default-port 143)))) 85 (list tramp-imap-method '(tramp-default-port 143))))
86 86
87;; Add a default for `tramp-default-user-alist'. Default is the local user.
88(add-to-list 'tramp-default-user-alist
89 `(,tramp-imap-method nil ,(user-login-name)))
90
91;; Define Tramp IMAPS method ... 87;; Define Tramp IMAPS method ...
92;;;###tramp-autoload 88;;;###tramp-autoload
93(defconst tramp-imaps-method "imaps" 89(defconst tramp-imaps-method "imaps"
@@ -100,8 +96,12 @@
100 (list tramp-imaps-method '(tramp-default-port 993)))) 96 (list tramp-imaps-method '(tramp-default-port 993))))
101 97
102;; Add a default for `tramp-default-user-alist'. Default is the local user. 98;; Add a default for `tramp-default-user-alist'. Default is the local user.
103(add-to-list 'tramp-default-user-alist 99(add-to-list
104 `(,tramp-imaps-method nil ,(user-login-name))) 100 'tramp-default-user-alist
101 (list (concat "\\`"
102 (regexp-opt (list tramp-imap-method tramp-imaps-method))
103 "\\'")
104 nil (user-login-name)))
105 105
106;; Add completion function for IMAP method. 106;; Add completion function for IMAP method.
107;; (tramp-set-completion-function 107;; (tramp-set-completion-function
@@ -746,8 +746,7 @@ With NEEDED-SUBJECT, alters the imap-hash test accordingly."
746 (method (tramp-file-name-method vec)) 746 (method (tramp-file-name-method vec))
747 (user (tramp-file-name-user vec)) 747 (user (tramp-file-name-user vec))
748 (ssl (string-equal method tramp-imaps-method)) 748 (ssl (string-equal method tramp-imaps-method))
749 (port (or (tramp-file-name-port vec) 749 (port (tramp-file-name-port vec))
750 (tramp-get-method-parameter method 'tramp-default-port)))
751 (result (imap-hash-make server port mbox user nil ssl))) 750 (result (imap-hash-make server port mbox user nil ssl)))
752 ;; Return the IHT with a test override to look for the subject 751 ;; Return the IHT with a test override to look for the subject
753 ;; marker. 752 ;; marker.
@@ -842,5 +841,3 @@ With NEEDED-SUBJECT, alters the imap-hash test accordingly."
842;;; (tramp-imap-make-iht (tramp-dissect-file-name "/imap:yourhosthere.com:/test/welcommen")) 841;;; (tramp-imap-make-iht (tramp-dissect-file-name "/imap:yourhosthere.com:/test/welcommen"))
843;;; (tramp-imap-make-iht (tramp-dissect-file-name "/imap:yourhosthere.com:/INBOX.test/4")) 842;;; (tramp-imap-make-iht (tramp-dissect-file-name "/imap:yourhosthere.com:/INBOX.test/4"))
844;;; (tramp-imap-make-iht (tramp-dissect-file-name "/imap:yourhosthere.com:/INBOX.test/4") "extra") 843;;; (tramp-imap-make-iht (tramp-dissect-file-name "/imap:yourhosthere.com:/INBOX.test/4") "extra")
845
846;; arch-tag: f2723749-58fb-4f29-894e-39708096e850
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 3f503836177..1501868a6b5 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -91,7 +91,7 @@ detected as prompt when being sent on echoing hosts, therefore.")
91 (tramp-login-args (("%h") ("-l" "%u"))) 91 (tramp-login-args (("%h") ("-l" "%u")))
92 (tramp-remote-sh "/bin/sh") 92 (tramp-remote-sh "/bin/sh")
93 (tramp-copy-program "rcp") 93 (tramp-copy-program "rcp")
94 (tramp-copy-args (("-p" "%k") ("-r"))) 94 (tramp-copy-args (("%k" "-p") ("-r")))
95 (tramp-copy-keep-date t) 95 (tramp-copy-keep-date t)
96 (tramp-copy-recursive t))) 96 (tramp-copy-recursive t)))
97;;;###tramp-autoload 97;;;###tramp-autoload
@@ -101,18 +101,17 @@ detected as prompt when being sent on echoing hosts, therefore.")
101 (tramp-login-args (("%h") ("-l" "%u"))) 101 (tramp-login-args (("%h") ("-l" "%u")))
102 (tramp-remote-sh "/bin/sh") 102 (tramp-remote-sh "/bin/sh")
103 (tramp-copy-program "rcp") 103 (tramp-copy-program "rcp")
104 (tramp-copy-args (("-p" "%k"))) 104 (tramp-copy-args (("%k" "-p")))
105 (tramp-copy-keep-date t))) 105 (tramp-copy-keep-date t)))
106;;;###tramp-autoload 106;;;###tramp-autoload
107(add-to-list 107(add-to-list 'tramp-methods
108 'tramp-methods
109 '("scp" 108 '("scp"
110 (tramp-login-program "ssh") 109 (tramp-login-program "ssh")
111 (tramp-login-args (("-l" "%u") ("-p" "%p") ("-e" "none") ("%h"))) 110 (tramp-login-args (("-l" "%u") ("-p" "%p") ("-e" "none") ("%h")))
112 (tramp-async-args (("-q"))) 111 (tramp-async-args (("-q")))
113 (tramp-remote-sh "/bin/sh") 112 (tramp-remote-sh "/bin/sh")
114 (tramp-copy-program "scp") 113 (tramp-copy-program "scp")
115 (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q") ("-r"))) 114 (tramp-copy-args (("-P" "%p") ("%k" "-p") ("-q") ("-r")))
116 (tramp-copy-keep-date t) 115 (tramp-copy-keep-date t)
117 (tramp-copy-recursive t) 116 (tramp-copy-recursive t)
118 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null") 117 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null")
@@ -128,7 +127,7 @@ detected as prompt when being sent on echoing hosts, therefore.")
128 (tramp-async-args (("-q"))) 127 (tramp-async-args (("-q")))
129 (tramp-remote-sh "/bin/sh") 128 (tramp-remote-sh "/bin/sh")
130 (tramp-copy-program "scp") 129 (tramp-copy-program "scp")
131 (tramp-copy-args (("-1") ("-P" "%p") ("-p" "%k") ("-q") ("-r"))) 130 (tramp-copy-args (("-1") ("-P" "%p") ("%k" "-p") ("-q") ("-r")))
132 (tramp-copy-keep-date t) 131 (tramp-copy-keep-date t)
133 (tramp-copy-recursive t) 132 (tramp-copy-recursive t)
134 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null") 133 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null")
@@ -144,7 +143,7 @@ detected as prompt when being sent on echoing hosts, therefore.")
144 (tramp-async-args (("-q"))) 143 (tramp-async-args (("-q")))
145 (tramp-remote-sh "/bin/sh") 144 (tramp-remote-sh "/bin/sh")
146 (tramp-copy-program "scp") 145 (tramp-copy-program "scp")
147 (tramp-copy-args (("-2") ("-P" "%p") ("-p" "%k") ("-q") ("-r"))) 146 (tramp-copy-args (("-2") ("-P" "%p") ("%k" "-p") ("-q") ("-r")))
148 (tramp-copy-keep-date t) 147 (tramp-copy-keep-date t)
149 (tramp-copy-recursive t) 148 (tramp-copy-recursive t)
150 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null") 149 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null")
@@ -162,7 +161,7 @@ detected as prompt when being sent on echoing hosts, therefore.")
162 (tramp-async-args (("-q"))) 161 (tramp-async-args (("-q")))
163 (tramp-remote-sh "/bin/sh") 162 (tramp-remote-sh "/bin/sh")
164 (tramp-copy-program "scp") 163 (tramp-copy-program "scp")
165 (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q") 164 (tramp-copy-args (("-P" "%p") ("%k" "-p") ("-q")
166 ("-o" "ControlPath=%t.%%r@%%h:%%p") 165 ("-o" "ControlPath=%t.%%r@%%h:%%p")
167 ("-o" "ControlMaster=auto"))) 166 ("-o" "ControlMaster=auto")))
168 (tramp-copy-keep-date t) 167 (tramp-copy-keep-date t)
@@ -180,7 +179,7 @@ detected as prompt when being sent on echoing hosts, therefore.")
180 (tramp-async-args (("-q"))) 179 (tramp-async-args (("-q")))
181 (tramp-remote-sh "/bin/sh") 180 (tramp-remote-sh "/bin/sh")
182 (tramp-copy-program "scp") 181 (tramp-copy-program "scp")
183 (tramp-copy-args (("-p" "%k"))) 182 (tramp-copy-args (("%k" "-p")))
184 (tramp-copy-keep-date t) 183 (tramp-copy-keep-date t)
185 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null") 184 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null")
186 ("-o" "UserKnownHostsFile=/dev/null") 185 ("-o" "UserKnownHostsFile=/dev/null")
@@ -202,7 +201,7 @@ detected as prompt when being sent on echoing hosts, therefore.")
202 (tramp-async-args (("-q"))) 201 (tramp-async-args (("-q")))
203 (tramp-remote-sh "/bin/sh") 202 (tramp-remote-sh "/bin/sh")
204 (tramp-copy-program "rsync") 203 (tramp-copy-program "rsync")
205 (tramp-copy-args (("-e" "ssh") ("-t" "%k") ("-r"))) 204 (tramp-copy-args (("-e" "ssh") ("%k" "-t") ("-r")))
206 (tramp-copy-keep-date t) 205 (tramp-copy-keep-date t)
207 (tramp-copy-keep-tmpfile t) 206 (tramp-copy-keep-tmpfile t)
208 (tramp-copy-recursive t))) 207 (tramp-copy-recursive t)))
@@ -217,7 +216,7 @@ detected as prompt when being sent on echoing hosts, therefore.")
217 (tramp-async-args (("-q"))) 216 (tramp-async-args (("-q")))
218 (tramp-remote-sh "/bin/sh") 217 (tramp-remote-sh "/bin/sh")
219 (tramp-copy-program "rsync") 218 (tramp-copy-program "rsync")
220 (tramp-copy-args (("-t" "%k") ("-r"))) 219 (tramp-copy-args (("%k" "-t") ("-r")))
221 (tramp-copy-env (("RSYNC_RSH") 220 (tramp-copy-env (("RSYNC_RSH")
222 (,(concat 221 (,(concat
223 "ssh" 222 "ssh"
@@ -347,8 +346,10 @@ detected as prompt when being sent on echoing hosts, therefore.")
347 (tramp-login-args (("-l" "%u") ("-P" "%p") ("-ssh") ("%h"))) 346 (tramp-login-args (("-l" "%u") ("-P" "%p") ("-ssh") ("%h")))
348 (tramp-remote-sh "/bin/sh") 347 (tramp-remote-sh "/bin/sh")
349 (tramp-copy-program "pscp") 348 (tramp-copy-program "pscp")
350 (tramp-copy-args (("-P" "%p") ("-scp") ("-p" "%k"))) 349 (tramp-copy-args (("-P" "%p") ("-scp") ("%k" "-p")
350 ("-q") ("-r")))
351 (tramp-copy-keep-date t) 351 (tramp-copy-keep-date t)
352 (tramp-copy-recursive t)
352 (tramp-password-end-of-line "xy") ;see docstring for "xy" 353 (tramp-password-end-of-line "xy") ;see docstring for "xy"
353 (tramp-default-port 22))) 354 (tramp-default-port 22)))
354;;;###tramp-autoload 355;;;###tramp-autoload
@@ -358,8 +359,10 @@ detected as prompt when being sent on echoing hosts, therefore.")
358 (tramp-login-args (("-l" "%u") ("-P" "%p") ("-ssh") ("%h"))) 359 (tramp-login-args (("-l" "%u") ("-P" "%p") ("-ssh") ("%h")))
359 (tramp-remote-sh "/bin/sh") 360 (tramp-remote-sh "/bin/sh")
360 (tramp-copy-program "pscp") 361 (tramp-copy-program "pscp")
361 (tramp-copy-args (("-P" "%p") ("-sftp") ("-p" "%k"))) 362 (tramp-copy-args (("-P" "%p") ("-sftp") ("%k" "-p")
363 ("-q") ("-r")))
362 (tramp-copy-keep-date t) 364 (tramp-copy-keep-date t)
365 (tramp-copy-recursive t)
363 (tramp-password-end-of-line "xy"))) ;see docstring for "xy" 366 (tramp-password-end-of-line "xy"))) ;see docstring for "xy"
364;;;###tramp-autoload 367;;;###tramp-autoload
365(add-to-list 'tramp-methods 368(add-to-list 'tramp-methods
@@ -368,7 +371,7 @@ detected as prompt when being sent on echoing hosts, therefore.")
368 (tramp-login-args (("%h") ("-l" "%u") ("sh" "-i"))) 371 (tramp-login-args (("%h") ("-l" "%u") ("sh" "-i")))
369 (tramp-remote-sh "/bin/sh -i") 372 (tramp-remote-sh "/bin/sh -i")
370 (tramp-copy-program "fcp") 373 (tramp-copy-program "fcp")
371 (tramp-copy-args (("-p" "%k"))) 374 (tramp-copy-args (("%k" "-p")))
372 (tramp-copy-keep-date t))) 375 (tramp-copy-keep-date t)))
373 376
374(add-to-list 'tramp-default-method-alist 377(add-to-list 'tramp-default-method-alist
@@ -1943,7 +1946,7 @@ file names."
1943 1946
1944 ;; Try out-of-band operation. 1947 ;; Try out-of-band operation.
1945 ((tramp-method-out-of-band-p 1948 ((tramp-method-out-of-band-p
1946 v1 (nth 7 (file-attributes filename))) 1949 v1 (nth 7 (file-attributes (file-truename filename))))
1947 (tramp-do-copy-or-rename-file-out-of-band 1950 (tramp-do-copy-or-rename-file-out-of-band
1948 op filename newname keep-date)) 1951 op filename newname keep-date))
1949 1952
@@ -1971,7 +1974,8 @@ file names."
1971 1974
1972 ;; If the Tramp file has an out-of-band method, the 1975 ;; If the Tramp file has an out-of-band method, the
1973 ;; corresponding copy-program can be invoked. 1976 ;; corresponding copy-program can be invoked.
1974 ((tramp-method-out-of-band-p v (nth 7 (file-attributes filename))) 1977 ((tramp-method-out-of-band-p
1978 v (nth 7 (file-attributes (file-truename filename))))
1975 (tramp-do-copy-or-rename-file-out-of-band 1979 (tramp-do-copy-or-rename-file-out-of-band
1976 op filename newname keep-date)) 1980 op filename newname keep-date))
1977 1981
@@ -2178,10 +2182,11 @@ the uid and gid from FILENAME."
2178(defun tramp-do-copy-or-rename-file-out-of-band (op filename newname keep-date) 2182(defun tramp-do-copy-or-rename-file-out-of-band (op filename newname keep-date)
2179 "Invoke rcp program to copy. 2183 "Invoke rcp program to copy.
2180The method used must be an out-of-band method." 2184The method used must be an out-of-band method."
2181 (let ((t1 (tramp-tramp-file-p filename)) 2185 (let* ((t1 (tramp-tramp-file-p filename))
2182 (t2 (tramp-tramp-file-p newname)) 2186 (t2 (tramp-tramp-file-p newname))
2183 copy-program copy-args copy-env copy-keep-date port spec 2187 (orig-vec (tramp-dissect-file-name (if t1 filename newname)))
2184 source target) 2188 copy-program copy-args copy-env copy-keep-date port spec
2189 source target)
2185 2190
2186 (with-parsed-tramp-file-name (if t1 filename newname) nil 2191 (with-parsed-tramp-file-name (if t1 filename newname) nil
2187 (if (and t1 t2) 2192 (if (and t1 t2)
@@ -2207,6 +2212,12 @@ The method used must be an out-of-band method."
2207 (expand-file-name ".." tmpfile) 'recursive) 2212 (expand-file-name ".." tmpfile) 'recursive)
2208 (delete-file tmpfile))))) 2213 (delete-file tmpfile)))))
2209 2214
2215 ;; Set variables for computing the prompt for reading
2216 ;; password.
2217 (setq tramp-current-method (tramp-file-name-method v)
2218 tramp-current-user (tramp-file-name-user v)
2219 tramp-current-host (tramp-file-name-host v))
2220
2210 ;; Expand hops. Might be necessary for gateway methods. 2221 ;; Expand hops. Might be necessary for gateway methods.
2211 (setq v (car (tramp-compute-multi-hops v))) 2222 (setq v (car (tramp-compute-multi-hops v)))
2212 (aset v 3 localname) 2223 (aset v 3 localname)
@@ -2239,16 +2250,20 @@ The method used must be an out-of-band method."
2239 copy-keep-date (tramp-get-method-parameter 2250 copy-keep-date (tramp-get-method-parameter
2240 method 'tramp-copy-keep-date) 2251 method 'tramp-copy-keep-date)
2241 copy-args 2252 copy-args
2242 (delq 2253 (delete
2243 nil 2254 ;; " " has either been a replacement of "%k" (when
2244 (mapcar 2255 ;; keep-date argument is non-nil), or a replacemtent
2245 (lambda (x) 2256 ;; for the whole keep-date sublist.
2246 (setq 2257 " "
2247 x 2258 (dolist
2248 ;; " " is indication for keep-date argument. 2259 (x
2249 (delete " " (mapcar (lambda (y) (format-spec y spec)) x))) 2260 (tramp-get-method-parameter method 'tramp-copy-args)
2250 (unless (member "" x) (mapconcat 'identity x " "))) 2261 copy-args)
2251 (tramp-get-method-parameter method 'tramp-copy-args))) 2262 (setq copy-args
2263 (append
2264 copy-args
2265 (let ((y (mapcar (lambda (z) (format-spec z spec)) x)))
2266 (if (zerop (length (car y))) '(" ") y))))))
2252 copy-env 2267 copy-env
2253 (delq 2268 (delq
2254 nil 2269 nil
@@ -2266,14 +2281,8 @@ The method used must be an out-of-band method."
2266 (tramp-error 2281 (tramp-error
2267 v 'file-error "Cannot find copy program: %s" copy-program)) 2282 v 'file-error "Cannot find copy program: %s" copy-program))
2268 2283
2269 ;; Set variables for computing the prompt for reading 2284 (with-temp-buffer
2270 ;; password. 2285 (unwind-protect
2271 (setq tramp-current-method (tramp-file-name-method v)
2272 tramp-current-user (tramp-file-name-user v)
2273 tramp-current-host (tramp-file-name-host v))
2274
2275 (unwind-protect
2276 (with-temp-buffer
2277 ;; The default directory must be remote. 2286 ;; The default directory must be remote.
2278 (let ((default-directory 2287 (let ((default-directory
2279 (file-name-directory (if t1 filename newname))) 2288 (file-name-directory (if t1 filename newname)))
@@ -2284,7 +2293,8 @@ The method used must be an out-of-band method."
2284 (tramp-set-connection-property 2293 (tramp-set-connection-property
2285 v "process-buffer" (current-buffer)) 2294 v "process-buffer" (current-buffer))
2286 (while copy-env 2295 (while copy-env
2287 (tramp-message v 5 "%s=\"%s\"" (car copy-env) (cadr copy-env)) 2296 (tramp-message
2297 orig-vec 5 "%s=\"%s\"" (car copy-env) (cadr copy-env))
2288 (setenv (pop copy-env) (pop copy-env))) 2298 (setenv (pop copy-env) (pop copy-env)))
2289 2299
2290 ;; Use an asynchronous process. By this, password can 2300 ;; Use an asynchronous process. By this, password can
@@ -2295,20 +2305,20 @@ The method used must be an out-of-band method."
2295 (let ((p (let ((default-directory 2305 (let ((p (let ((default-directory
2296 (tramp-compat-temporary-file-directory))) 2306 (tramp-compat-temporary-file-directory)))
2297 (apply 'start-process 2307 (apply 'start-process
2298 (tramp-get-connection-property 2308 (tramp-get-connection-name v)
2299 v "process-name" nil) 2309 (tramp-get-connection-buffer v)
2300 (tramp-get-connection-property
2301 v "process-buffer" nil)
2302 copy-program 2310 copy-program
2303 (append copy-args (list source target)))))) 2311 (append copy-args (list source target))))))
2304 (tramp-message 2312 (tramp-message
2305 v 6 "%s" (mapconcat 'identity (process-command p) " ")) 2313 orig-vec 6 "%s"
2314 (mapconcat 'identity (process-command p) " "))
2306 (tramp-compat-set-process-query-on-exit-flag p nil) 2315 (tramp-compat-set-process-query-on-exit-flag p nil)
2307 (tramp-process-actions p v tramp-actions-copy-out-of-band)))) 2316 (tramp-process-actions p v tramp-actions-copy-out-of-band)))
2308 2317
2309 ;; Reset the transfer process properties. 2318 ;; Reset the transfer process properties.
2310 (tramp-set-connection-property v "process-name" nil) 2319 (tramp-message orig-vec 6 "%s" (buffer-string))
2311 (tramp-set-connection-property v "process-buffer" nil)) 2320 (tramp-set-connection-property v "process-name" nil)
2321 (tramp-set-connection-property v "process-buffer" nil)))
2312 2322
2313 ;; Handle KEEP-DATE argument. 2323 ;; Handle KEEP-DATE argument.
2314 (when (and keep-date (not copy-keep-date)) 2324 (when (and keep-date (not copy-keep-date))
@@ -2895,7 +2905,7 @@ the result will be a local, non-Tramp, filename."
2895 v 'file-error 2905 v 'file-error
2896 "Cannot make local copy of non-existing file `%s'" filename)) 2906 "Cannot make local copy of non-existing file `%s'" filename))
2897 2907
2898 (let* ((size (nth 7 (file-attributes filename))) 2908 (let* ((size (nth 7 (file-attributes (file-truename filename))))
2899 (rem-enc (tramp-get-inline-coding v "remote-encoding" size)) 2909 (rem-enc (tramp-get-inline-coding v "remote-encoding" size))
2900 (loc-dec (tramp-get-inline-coding v "local-decoding" size)) 2910 (loc-dec (tramp-get-inline-coding v "local-decoding" size))
2901 (tmpfile (tramp-compat-make-temp-file filename))) 2911 (tmpfile (tramp-compat-make-temp-file filename)))
@@ -4103,22 +4113,10 @@ Gateway hops are already opened."
4103 (let ((gw (pop target-alist)) 4113 (let ((gw (pop target-alist))
4104 (hop (pop target-alist))) 4114 (hop (pop target-alist)))
4105 ;; Is the method prepared for gateways? 4115 ;; Is the method prepared for gateways?
4106 (unless (tramp-get-method-parameter 4116 (unless (tramp-file-name-port hop)
4107 (tramp-file-name-method hop) 'tramp-default-port)
4108 (tramp-error 4117 (tramp-error
4109 vec 'file-error 4118 vec 'file-error
4110 "Method `%s' is not supported for gateway access." 4119 "Connection `%s' is not supported for gateway access." hop))
4111 (tramp-file-name-method hop)))
4112 ;; Add default port if needed.
4113 (unless
4114 (string-match
4115 tramp-host-with-port-regexp (tramp-file-name-host hop))
4116 (aset hop 2
4117 (concat
4118 (tramp-file-name-host hop) tramp-prefix-port-format
4119 (number-to-string
4120 (tramp-get-method-parameter
4121 (tramp-file-name-method hop) 'tramp-default-port)))))
4122 ;; Open the gateway connection. 4120 ;; Open the gateway connection.
4123 (add-to-list 4121 (add-to-list
4124 'target-alist 4122 'target-alist
@@ -4238,7 +4236,7 @@ connection if a previous connection has died for some reason."
4238 (p (let ((default-directory 4236 (p (let ((default-directory
4239 (tramp-compat-temporary-file-directory))) 4237 (tramp-compat-temporary-file-directory)))
4240 (start-process 4238 (start-process
4241 (or process-name (tramp-buffer-name vec)) 4239 (tramp-get-connection-name vec)
4242 (tramp-get-connection-buffer vec) 4240 (tramp-get-connection-buffer vec)
4243 tramp-encoding-shell)))) 4241 tramp-encoding-shell))))
4244 4242
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index b3c617ba26c..b54bbf1fa56 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -49,7 +49,7 @@
49;; Add a default for `tramp-default-user-alist'. Rule: For the SMB method, 49;; Add a default for `tramp-default-user-alist'. Rule: For the SMB method,
50;; the anonymous user is chosen. 50;; the anonymous user is chosen.
51(add-to-list 'tramp-default-user-alist 51(add-to-list 'tramp-default-user-alist
52 `(,tramp-smb-method nil "")) 52 `(,(concat "\\`" tramp-smb-method "\\'") nil nil))
53 53
54;; Add completion function for SMB method. 54;; Add completion function for SMB method.
55(tramp-set-completion-function 55(tramp-set-completion-function
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 789677ce643..f7d3b81039e 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -386,7 +386,10 @@ interpreted as a regular expression which always matches."
386 386
387(defconst tramp-local-host-regexp 387(defconst tramp-local-host-regexp
388 (concat 388 (concat
389 "^" (regexp-opt (list "localhost" (system-name) "127\.0\.0\.1" "::1") t) "$") 389 "\\`"
390 (regexp-opt
391 (list "localhost" "localhost6" (system-name) "127\.0\.0\.1" "::1") t)
392 "\\'")
390 "*Host names which are regarded as local host.") 393 "*Host names which are regarded as local host.")
391 394
392(defvar tramp-completion-function-alist nil 395(defvar tramp-completion-function-alist nil
@@ -1066,10 +1069,12 @@ calling HANDLER.")
1066(defun tramp-file-name-port (vec) 1069(defun tramp-file-name-port (vec)
1067 "Return the port number of VEC." 1070 "Return the port number of VEC."
1068 (save-match-data 1071 (save-match-data
1069 (let ((host (tramp-file-name-host vec))) 1072 (let ((method (tramp-file-name-method vec))
1070 (and (stringp host) 1073 (host (tramp-file-name-host vec)))
1071 (string-match tramp-host-with-port-regexp host) 1074 (or (and (stringp host)
1072 (string-to-number (match-string 2 host)))))) 1075 (string-match tramp-host-with-port-regexp host)
1076 (string-to-number (match-string 2 host)))
1077 (tramp-get-method-parameter method 'tramp-default-port)))))
1073 1078
1074;;;###tramp-autoload 1079;;;###tramp-autoload
1075(defun tramp-tramp-file-p (name) 1080(defun tramp-tramp-file-p (name)
@@ -1205,13 +1210,18 @@ from `tramp-get-buffer'."
1205 (or (tramp-get-connection-property vec "process-buffer" nil) 1210 (or (tramp-get-connection-property vec "process-buffer" nil)
1206 (tramp-get-buffer vec))) 1211 (tramp-get-buffer vec)))
1207 1212
1213(defun tramp-get-connection-name (vec)
1214 "Get the connection name to be used for VEC.
1215In case a second asynchronous communication has been started, it is different
1216from the default one."
1217 (or (tramp-get-connection-property vec "process-name" nil)
1218 (tramp-buffer-name vec)))
1219
1208(defun tramp-get-connection-process (vec) 1220(defun tramp-get-connection-process (vec)
1209 "Get the connection process to be used for VEC. 1221 "Get the connection process to be used for VEC.
1210In case a second asynchronous communication has been started, it is different 1222In case a second asynchronous communication has been started, it is different
1211from the default one." 1223from the default one."
1212 (get-process 1224 (get-process (tramp-get-connection-name vec)))
1213 (or (tramp-get-connection-property vec "process-name" nil)
1214 (tramp-buffer-name vec))))
1215 1225
1216(defun tramp-debug-buffer-name (vec) 1226(defun tramp-debug-buffer-name (vec)
1217 "A name for the debug buffer for VEC." 1227 "A name for the debug buffer for VEC."
@@ -1284,7 +1294,7 @@ ARGS to actually emit the message (if applicable)."
1284 (setq fn (symbol-name btf)) 1294 (setq fn (symbol-name btf))
1285 (unless (and (string-match "^tramp" fn) 1295 (unless (and (string-match "^tramp" fn)
1286 (not (string-match 1296 (not (string-match
1287 "^tramp\\(-debug\\)?\\(-message\\|-error\\|-compat-funcall\\)$" 1297 "^tramp\\(-debug\\)?\\(-message\\|-error\\|-compat\\(-funcall\\|-with-temp-message\\)\\)$"
1288 fn))) 1298 fn)))
1289 (setq fn nil))) 1299 (setq fn nil)))
1290 (setq btn (1+ btn)))) 1300 (setq btn (1+ btn))))
@@ -1454,7 +1464,7 @@ progress reporter."
1454 (if (memq system-type '(cygwin windows-nt)) 1464 (if (memq system-type '(cygwin windows-nt))
1455 (defun tramp-drop-volume-letter (name) 1465 (defun tramp-drop-volume-letter (name)
1456 "Cut off unnecessary drive letter from file NAME. 1466 "Cut off unnecessary drive letter from file NAME.
1457The function `tramp-handle-expand-file-name' calls `expand-file-name' 1467The functions `tramp-*-handle-expand-file-name' call `expand-file-name'
1458locally on a remote file name. When the local system is a W32 system 1468locally on a remote file name. When the local system is a W32 system
1459but the remote system is Unix, this introduces a superfluous drive 1469but the remote system is Unix, this introduces a superfluous drive
1460letter into the file name. This function removes it." 1470letter into the file name. This function removes it."
diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el
index c66900dfd09..005fbb932a2 100644
--- a/lisp/net/trampver.el
+++ b/lisp/net/trampver.el
@@ -32,7 +32,7 @@
32;; should be changed only there. 32;; should be changed only there.
33 33
34;;;###tramp-autoload 34;;;###tramp-autoload
35(defconst tramp-version "2.2.0" 35(defconst tramp-version "2.2.1-pre"
36 "This version of Tramp.") 36 "This version of Tramp.")
37 37
38;;;###tramp-autoload 38;;;###tramp-autoload
@@ -45,7 +45,7 @@
45 (= emacs-major-version 21) 45 (= emacs-major-version 21)
46 (>= emacs-minor-version 4))) 46 (>= emacs-minor-version 4)))
47 "ok" 47 "ok"
48 (format "Tramp 2.2.0 is not fit for %s" 48 (format "Tramp 2.2.1-pre is not fit for %s"
49 (when (string-match "^.*$" (emacs-version)) 49 (when (string-match "^.*$" (emacs-version))
50 (match-string 0 (emacs-version))))))) 50 (match-string 0 (emacs-version)))))))
51 (unless (string-match "\\`ok\\'" x) (error "%s" x))) 51 (unless (string-match "\\`ok\\'" x) (error "%s" x)))