changeset 74737:5ac41de0888b

* net/tramp.el (tramp-methods): Introduce new method `scpc'. Remove "ControlMaster" option from the other `scp*' methods. (tramp-default-method): Check for ssh-agent before setting to `scp'.
author Michael Albinus <michael.albinus@gmx.de>
date Tue, 19 Dec 2006 06:56:27 +0000
parents 9bbe624f40b8
children 1f9822a38f41
files lisp/ChangeLog lisp/net/tramp.el
diffstat 2 files changed, 47 insertions(+), 41 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Tue Dec 19 06:49:01 2006 +0000
+++ b/lisp/ChangeLog	Tue Dec 19 06:56:27 2006 +0000
@@ -1,3 +1,10 @@
+2006-12-19  Michael Albinus  <michael.albinus@gmx.de>
+
+	* net/tramp.el (tramp-methods): Introduce new method `scpc'.
+	Remove "ControlMaster" option from the other `scp*' methods.
+	(tramp-default-method): Check for ssh-agent before setting to
+	`scp'.
+
 2006-12-18  Carsten Dominik  <dominik@science.uva.nl>
 
 	* textmodes/org.el (org-mode): Show context after isearch.
--- a/lisp/net/tramp.el	Tue Dec 19 06:49:01 2006 +0000
+++ b/lisp/net/tramp.el	Tue Dec 19 06:56:27 2006 +0000
@@ -326,35 +326,24 @@
               (tramp-login-program        "ssh")
               (tramp-copy-program         "scp")
               (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-o" "ControlPath=%t.%%r@%%h:%%p"
-					   "-o" "ControlMaster=yes"
-					   "-e" "none"))
-              (tramp-copy-args            ("-o" "ControlPath=%t.%%r@%%h:%%p"
-					   "-o" "ControlMaster=auto"))
+              (tramp-login-args           ("-e" "none"))
+              (tramp-copy-args            nil)
               (tramp-copy-keep-date-arg   "-p")
 	      (tramp-password-end-of-line nil))
      ("scp1"  (tramp-connection-function  tramp-open-connection-rsh)
               (tramp-login-program        "ssh")
               (tramp-copy-program         "scp")
               (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-o" "ControlPath=%t.%%r@%%h:%%p"
-					   "-o" "ControlMaster=yes"
-					   "-1" "-e" "none"))
-              (tramp-copy-args            ("-o" "ControlPath=%t.%%r@%%h:%%p"
-					   "-o" "ControlMaster=auto"
-					   "-1"))
+              (tramp-login-args           ("-1" "-e" "none"))
+              (tramp-copy-args            ("-1"))
               (tramp-copy-keep-date-arg   "-p")
 	      (tramp-password-end-of-line nil))
      ("scp2"  (tramp-connection-function  tramp-open-connection-rsh)
               (tramp-login-program        "ssh")
               (tramp-copy-program         "scp")
               (tramp-remote-sh            "/bin/sh")
-              (tramp-login-args           ("-o" "ControlPath=%t.%%r@%%h:%%p"
-					   "-o" "ControlMaster=yes"
-					   "-2" "-e" "none"))
-              (tramp-copy-args            ("-o" "ControlPath=%t.%%r@%%h:%%p"
-					   "-o" "ControlMaster=auto"
-					   "-2"))
+              (tramp-login-args           ("-2" "-e" "none"))
+              (tramp-copy-args            ("-2"))
               (tramp-copy-keep-date-arg   "-p")
 	      (tramp-password-end-of-line nil))
      ("scp1_old"
@@ -483,6 +472,17 @@
               (tramp-copy-args            nil)
               (tramp-copy-keep-date-arg   nil)
 	      (tramp-password-end-of-line nil))
+     ("scpc"  (tramp-connection-function  tramp-open-connection-rsh)
+              (tramp-login-program        "ssh")
+              (tramp-copy-program         "scp")
+              (tramp-remote-sh            "/bin/sh")
+              (tramp-login-args           ("-o" "ControlPath=%t.%%r@%%h:%%p"
+					   "-o" "ControlMaster=yes"
+					   "-e" "none"))
+              (tramp-copy-args            ("-o" "ControlPath=%t.%%r@%%h:%%p"
+					   "-o" "ControlMaster=auto"))
+              (tramp-copy-keep-date-arg   "-p")
+	      (tramp-password-end-of-line nil))
      ("scpx"  (tramp-connection-function  tramp-open-connection-rsh)
               (tramp-login-program        "ssh")
               (tramp-copy-program         "scp")
@@ -684,33 +684,32 @@
   :type '(repeat (list string function string)))
 
 (defcustom tramp-default-method
-  (or
+  (cond
    ;; An external copy method seems to be preferred, because it is
    ;; much more performant for large files, and it hasn't too serious
    ;; delays for small files.  But it must be ensured that there
-   ;; aren't permanent password queries.  Either the copy method shall
-   ;; reuse other channels (ControlMaster of OpenSSH does it), a
-   ;; password agent like "ssh-agent" or "Pageant" shall run, or the
-   ;; optional password.el package shall be active for password caching.
-   (and (fboundp 'executable-find)
-	;; Check whether PuTTY is installed.
-	(executable-find "pscp")
-	(if (or
-	     ;; password.el is loaded.
-	     (fboundp 'password-read)
-	     ;; Pageant is running.
-	     (and (fboundp 'w32-window-exists-p)
-		  (funcall (symbol-function 'w32-window-exists-p)
-			   "Pageant" "Pageant")))
-	    ;; We know that the password will not be retrieved again.
-	    "pscp"
-	  ;; When "pscp" exists, there is also "plink".
-	  "plink"))
-   ;; Under UNIX, ControlMaster is activated.  This does not work
-   ;; under Cygwin, but ssh-agent must be enabled then anyway due to
-   ;; the pseudo-tty problem of Cygwin's OpenSSH implementation.  So
-   ;; it doesn't hurt to use "scp".
-   "scp")
+   ;; aren't permanent password queries.  Either a password agent like
+   ;; "ssh-agent" or "Pageant" shall run, or the optional password.el
+   ;; package shall be active for password caching.
+   ((executable-find "pscp")
+    ;; PuTTY is installed.
+    (if	(or (fboundp 'password-read)
+	    ;; Pageant is running.
+	    (and (fboundp 'w32-window-exists-p)
+		 (funcall (symbol-function 'w32-window-exists-p)
+			  "Pageant" "Pageant")))
+	"pscp"
+      "plink"))
+   ;; There is an ssh installation.
+   ((executable-find "scp")
+    (if	(or (fboundp 'password-read)
+	    ;; ssh-agent is running.
+	    (getenv "SSH_AUTH_SOCK")
+	    (getnev "SSH_AGENT_PID"))
+	"scp"
+      "ssh"))
+   ;; Fallback.
+   (t "ftp"))
   "*Default method to use for transferring files.
 See `tramp-methods' for possibilities.
 Also see `tramp-default-method-alist'."