]> code.delx.au - gnu-emacs/commitdiff
* net/tramp.el (tramp-methods): Introduce new method `scpc'.
authorMichael Albinus <michael.albinus@gmx.de>
Tue, 19 Dec 2006 06:56:27 +0000 (06:56 +0000)
committerMichael Albinus <michael.albinus@gmx.de>
Tue, 19 Dec 2006 06:56:27 +0000 (06:56 +0000)
Remove "ControlMaster" option from the other `scp*' methods.
(tramp-default-method): Check for ssh-agent before setting to
`scp'.

lisp/ChangeLog
lisp/net/tramp.el

index 58bbab45b05901883578e44f5ffd31cb1d40428f..d0edd5da954c895bbbfa47e4ef9718a6ffb274ad 100644 (file)
@@ -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.
index b2e4ec814fdbdb62ef8647b44e1659cde68a8d10..fa4dcfbf63cf0f1ba1875e7225fbbad9fa85faa7 100644 (file)
@@ -326,35 +326,24 @@ This variable defaults to the value of `tramp-encoding-shell'."
               (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 @@ This variable defaults to the value of `tramp-encoding-shell'."
               (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 @@ various functions for details."
   :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'."