+2012-01-22 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp.el (tramp-action-login): Set connection property "login-as".
+
+ * net/tramp-cache.el (tramp-dump-connection-properties): Do not dump
+ properties, when "login-as" is set.
+
+ * net/tramp-sh.el (tramp-methods): Add user spec to "pscp" and "psftp".
+ (tramp-default-user-alist): Don't add "pscp".
+ (tramp-do-copy-or-rename-file-out-of-band): Use connection
+ property "login-as", if set. (Bug#10530)
+
2012-01-21 Michael Albinus <michael.albinus@gmx.de>
* net/tramp-sh.el (tramp-default-user-alist): Don't add "plink",
(aset key 3 nil))
(let ((hash (or (gethash key tramp-cache-data)
(puthash key (make-hash-table :test 'equal)
- tramp-cache-data))))
+ tramp-cache-data))))
(puthash property value hash)
(setq tramp-cache-data-changed t)
(tramp-message key 7 "%s %s" property value)
tramp-cache-data-changed
(stringp tramp-persistency-file-name))
(let ((cache (copy-hash-table tramp-cache-data)))
- ;; Remove temporary data.
+ ;; Remove temporary data. If there is the key "login-as", we
+ ;; don't save either, because all other properties might
+ ;; depend on the login name, and we want to give the
+ ;; possibility to use another login name later on.
(maphash
(lambda (key value)
- (if (and (vectorp key) (not (tramp-file-name-localname key)))
+ (if (and (vectorp key)
+ (not (tramp-file-name-localname key))
+ (not (gethash "login-as" value)))
(progn
(remhash "process-name" value)
(remhash "process-buffer" value)
(tramp-remote-shell "/bin/sh")
(tramp-remote-shell-args ("-c"))
(tramp-copy-program "pscp")
- (tramp-copy-args (("-P" "%p") ("-scp") ("-p" "%k")
+ (tramp-copy-args (("-l" "%u") ("-P" "%p") ("-scp") ("-p" "%k")
("-q") ("-r")))
(tramp-copy-keep-date t)
(tramp-copy-recursive t)
(tramp-remote-shell "/bin/sh")
(tramp-remote-shell-args ("-c"))
(tramp-copy-program "pscp")
- (tramp-copy-args (("-P" "%p") ("-sftp") ("-p" "%k")
+ (tramp-copy-args (("-l" "%u") ("-P" "%p") ("-sftp") ("-p" "%k")
("-q") ("-r")))
(tramp-copy-keep-date t)
(tramp-copy-recursive t)
`(,(concat "\\`" (regexp-opt '("su" "sudo" "ksu")) "\\'")
nil "root"))
;; Do not add "ssh" based methods, otherwise ~/.ssh/config would be ignored.
-;; Do not add "plink" and "psftp", they ask interactively for the user.
+;; Do not add "plink" based methods, they ask interactively for the user.
;;;###tramp-autoload
(add-to-list 'tramp-default-user-alist
`(,(concat
"\\`"
- (regexp-opt
- '("rcp" "remcp" "rsh" "telnet" "krlogin" "pscp" "fcp"))
+ (regexp-opt '("rcp" "remcp" "rsh" "telnet" "krlogin" "fcp"))
"\\'")
nil ,(user-login-name)))
;; Set variables for computing the prompt for reading
;; password.
(setq tramp-current-method (tramp-file-name-method v)
- tramp-current-user (tramp-file-name-user v)
- tramp-current-host (tramp-file-name-real-host v))
+ tramp-current-user (or (tramp-file-name-user v)
+ (tramp-get-connection-property
+ v "login-as" nil))
+ tramp-current-host (tramp-file-name-real-host v))
;; Expand hops. Might be necessary for gateway methods.
(setq v (car (tramp-compute-multi-hops v)))
(setq port (string-to-number (match-string 2 host))
host (string-to-number (match-string 1 host))))
+ ;; Check for user. There might be an interactive setting.
+ (setq user (or (tramp-file-name-user v)
+ (tramp-get-connection-property v "login-as" nil)))
+
;; Compose copy command.
- (setq spec (format-spec-make
+ (setq host (or host "")
+ user (or user "")
+ port (or port "")
+ spec (format-spec-make
?h host ?u user ?p port
?t (tramp-get-connection-property
(tramp-get-connection-process v) "temp-file" "")
(defun tramp-action-login (proc vec)
"Send the login name."
(when (not (stringp tramp-current-user))
- (save-window-excursion
- (let ((enable-recursive-minibuffers t))
- (pop-to-buffer (tramp-get-connection-buffer vec))
- (setq tramp-current-user (read-string (match-string 0))))))
- (tramp-message vec 3 "Sending login name `%s'" tramp-current-user)
+ (setq tramp-current-user
+ (with-connection-property vec "login-as"
+ (save-window-excursion
+ (let ((enable-recursive-minibuffers t))
+ (pop-to-buffer (tramp-get-connection-buffer vec))
+ (read-string (match-string 0)))))))
(with-current-buffer (tramp-get-connection-buffer vec)
(tramp-message vec 6 "\n%s" (buffer-string)))
+ (tramp-message vec 3 "Sending login name `%s'" tramp-current-user)
(tramp-send-string vec (concat tramp-current-user tramp-local-end-of-line)))
(defun tramp-action-password (proc vec)