emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/net/tramp.el


From: Kai Großjohann
Subject: [Emacs-diffs] Changes to emacs/lisp/net/tramp.el
Date: Sat, 24 May 2003 10:10:16 -0400

Index: emacs/lisp/net/tramp.el
diff -c emacs/lisp/net/tramp.el:1.36 emacs/lisp/net/tramp.el:1.37
*** emacs/lisp/net/tramp.el:1.36        Tue Apr  8 16:06:11 2003
--- emacs/lisp/net/tramp.el     Sat May 24 10:10:15 2003
***************
*** 87,95 ****
  (unless (fboundp 'uudecode-decode-region)
    (autoload 'uudecode-decode-region "uudecode"))
  
! ;; ;; It does not work to load EFS after loading TRAMP.  
! ;; (when (fboundp 'efs-file-handler-function)
! ;;   (require 'efs))
  
  ;; Load foreign methods.  Because they do require Tramp internally, this
  ;; must be done with the `eval-after-load' trick.
--- 87,104 ----
  (unless (fboundp 'uudecode-decode-region)
    (autoload 'uudecode-decode-region "uudecode"))
  
! ;; XEmacs is distributed with few Lisp packages.  Further packages are
! ;; installed using EFS.  If we use a unified filename format, then
! ;; Tramp is required in addition to EFS.  (But why can't Tramp just
! ;; disable EFS when Tramp is loaded?  Then XEmacs can ship with EFS
! ;; just like before.)  Another reason for using a separate filename
! ;; syntax on XEmacs is that EFS hooks into XEmacs in many places, but
! ;; Tramp only knows how to deal with `file-name-handler-alist', not
! ;; the other places.
! ;;;###autoload
! (defvar tramp-unified-filenames (not (featurep 'xemacs))
!   "Non-nil means to use unified Ange-FTP/Tramp filename syntax.
! Nil means to use a separate filename syntax for Tramp.")
  
  ;; Load foreign methods.  Because they do require Tramp internally, this
  ;; must be done with the `eval-after-load' trick.
***************
*** 98,103 ****
--- 107,115 ----
  (unless (featurep 'xemacs)
    (eval-after-load "tramp"
      '(require 'tramp-ftp)))
+ (when (and tramp-unified-filenames (featurep 'xemacs))
+   (eval-after-load "tramp"
+     '(require 'tramp-efs)))
  
  ;; tramp-smb uses "smbclient" from Samba.
  ;; Not available under Cygwin and Windows, because they don't offer
***************
*** 123,141 ****
    (when (fboundp 'byte-compiler-options)
      (byte-compiler-options (warnings (- unused-vars)))))
  
- ;; XEmacs is distributed with few Lisp packages.  Further packages are
- ;; installed using EFS.  If we use a unified filename format, then
- ;; Tramp is required in addition to EFS.  (But why can't Tramp just
- ;; disable EFS when Tramp is loaded?  Then XEmacs can ship with EFS
- ;; just like before.)  Another reason for using a separate filename
- ;; syntax on XEmacs is that EFS hooks into XEmacs in many places, but
- ;; Tramp only knows how to deal with `file-name-handler-alist', not
- ;; the other places.
- ;;;###autoload
- (defvar tramp-unified-filenames (not (featurep 'xemacs))
-   "Non-nil means to use unified Ange-FTP/Tramp filename syntax.
- Nil means to use a separate filename syntax for Tramp.")
- 
  ;;; User Customizable Internal Variables:
  
  (defgroup tramp nil
--- 135,140 ----
***************
*** 234,498 ****
  
  (defcustom tramp-methods
    '( ("rcp"   (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-rsh-program          "rsh")
!               (tramp-rcp-program          "rcp")
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             nil)
!               (tramp-rcp-args             nil)
!               (tramp-rcp-keep-date-arg    "-p")
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("scp"   (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-rsh-program          "ssh")
!               (tramp-rcp-program          "scp")
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             ("-e" "none"))
!               (tramp-rcp-args             nil)
!               (tramp-rcp-keep-date-arg    "-p")
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("scp1"  (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-rsh-program          "ssh")
!               (tramp-rcp-program          "scp")
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             ("-1" "-e" "none"))
!               (tramp-rcp-args             ("-1"))
!               (tramp-rcp-keep-date-arg    "-p")
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("scp2"  (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-rsh-program          "ssh")
!               (tramp-rcp-program          "scp")
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             ("-2" "-e" "none"))
!               (tramp-rcp-args             ("-2"))
!               (tramp-rcp-keep-date-arg    "-p")
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("scp1_old"
                (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-rsh-program          "ssh1")
!               (tramp-rcp-program          "scp1")
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             ("-e" "none"))
!               (tramp-rcp-args             nil)
!               (tramp-rcp-keep-date-arg    "-p")
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("scp2_old"
                (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-rsh-program          "ssh2")
!               (tramp-rcp-program          "scp2")
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             ("-e" "none"))
!               (tramp-rcp-args             nil)
!               (tramp-rcp-keep-date-arg    "-p")
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("rsync" (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-rsh-program          "ssh")
!               (tramp-rcp-program          "rsync")
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             ("-e" "none"))
!               (tramp-rcp-args             ("-e" "ssh"))
!               (tramp-rcp-keep-date-arg    "-t")
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("rsh"   (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-rsh-program          "rsh")
!               (tramp-rcp-program          nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             nil)
!               (tramp-rcp-args             nil)
!               (tramp-rcp-keep-date-arg    nil)
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("ssh"   (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-rsh-program          "ssh")
!               (tramp-rcp-program          nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             ("-e" "none"))
!               (tramp-rcp-args             nil)
!               (tramp-rcp-keep-date-arg    nil)
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("ssh1"  (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-rsh-program          "ssh")
!               (tramp-rcp-program          nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             ("-1" "-e" "none"))
!               (tramp-rcp-args             ("-1"))
!               (tramp-rcp-keep-date-arg    nil)
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("ssh2"  (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-rsh-program          "ssh")
!               (tramp-rcp-program          nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             ("-2" "-e" "none"))
!               (tramp-rcp-args             ("-2"))
!               (tramp-rcp-keep-date-arg    nil)
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("ssh1_old"
                (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-rsh-program          "ssh1")
!               (tramp-rcp-program          nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             ("-e" "none"))
!               (tramp-rcp-args             nil)
!               (tramp-rcp-keep-date-arg    nil)
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("ssh2_old"
                (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-rsh-program          "ssh2")
!               (tramp-rcp-program          nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             ("-e" "none"))
!               (tramp-rcp-args             nil)
!               (tramp-rcp-keep-date-arg    nil)
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("telnet"
                (tramp-connection-function  tramp-open-connection-telnet)
!               (tramp-rsh-program          nil)
!               (tramp-rcp-program          nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             nil)
!               (tramp-rcp-args             nil)
!               (tramp-rcp-keep-date-arg    nil)
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       "telnet")
!               (tramp-telnet-args          nil))
       ("su"    (tramp-connection-function  tramp-open-connection-su)
!               (tramp-rsh-program          nil)
!               (tramp-rcp-program          nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             nil)
!               (tramp-rcp-args             nil)
!               (tramp-rcp-keep-date-arg    nil)
!               (tramp-su-program           "su")
!               (tramp-su-args              ("-" "%u"))
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("sudo"  (tramp-connection-function  tramp-open-connection-su)
!               (tramp-rsh-program          nil)
!               (tramp-rcp-program          nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             nil)
!               (tramp-rcp-args             nil)
!               (tramp-rcp-keep-date-arg    nil)
!               (tramp-su-program           "sudo")
!               (tramp-su-args              ("-u" "%u" "-s"))
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("multi" (tramp-connection-function  tramp-open-connection-multi)
!               (tramp-rsh-program          nil)
!               (tramp-rcp-program          nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             nil)
!               (tramp-rcp-args             nil)
!               (tramp-rcp-keep-date-arg    nil)
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("scpx"  (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-rsh-program          "ssh")
!               (tramp-rcp-program          "scp")
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             ("-e" "none" "-t" "-t" "/bin/sh"))
!               (tramp-rcp-args             nil)
!               (tramp-rcp-keep-date-arg    "-p")
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("sshx"  (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-rsh-program          "ssh")
!               (tramp-rcp-program          nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-rsh-args             ("-e" "none" "-t" "-t" "/bin/sh"))
!               (tramp-rcp-args             nil)
!               (tramp-rcp-keep-date-arg    nil)
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("krlogin"
                (tramp-connection-function  tramp-open-connection-rsh)
!             (tramp-rsh-program          "krlogin")
!             (tramp-rcp-program          nil)
              (tramp-remote-sh            "/bin/sh")
!             (tramp-rsh-args             ("-x"))
!             (tramp-rcp-args             nil)
!             (tramp-rcp-keep-date-arg    nil)
!             (tramp-su-program           nil)
!             (tramp-su-args              nil)
!             (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("plink"
                (tramp-connection-function  tramp-open-connection-rsh)
!             (tramp-rsh-program          "plink")
!             (tramp-rcp-program          nil)
              (tramp-remote-sh            "/bin/sh")
!             (tramp-rsh-args             ("-ssh")) ;optionally add "-v"
!             (tramp-rcp-args             nil)
!             (tramp-rcp-keep-date-arg    nil)
!             (tramp-su-program           nil)
!             (tramp-su-args              nil)
!             (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("pscp"
                (tramp-connection-function  tramp-open-connection-rsh)
!             (tramp-rsh-program          "plink")
!             (tramp-rcp-program          "pscp")
              (tramp-remote-sh            "/bin/sh")
!             (tramp-rsh-args             ("-ssh"))
!             (tramp-rcp-args             nil)
!             (tramp-rcp-keep-date-arg    "-p")
!             (tramp-su-program           nil)
!             (tramp-su-args              nil)
!             (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       ("fcp"   
              (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-rsh-program          "fsh")
!               (tramp-rcp-program          "fcp")
                (tramp-remote-sh            "/bin/sh -i")
!               (tramp-rsh-args             ("sh" "-i"))
!               (tramp-rcp-args             nil)
!               (tramp-rcp-keep-date-arg    "-p")
!               (tramp-su-program           nil)
!               (tramp-su-args              nil)
!               (tramp-telnet-program       nil)
!               (tramp-telnet-args          nil))
       )
    "*Alist of methods for remote files.
  This is a list of entries of the form (NAME PARAM1 PARAM2 ...).
--- 233,430 ----
  
  (defcustom tramp-methods
    '( ("rcp"   (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "rsh")
!               (tramp-copy-program         "rcp")
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           nil)
!               (tramp-copy-args            nil)
!               (tramp-copy-keep-date-arg    "-p"))
       ("scp"   (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "ssh")
!               (tramp-copy-program         "scp")
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           ("-e" "none"))
!               (tramp-copy-args             nil)
!               (tramp-copy-keep-date-arg    "-p"))
       ("scp1"  (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "ssh")
!               (tramp-copy-program         "scp")
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           ("-1" "-e" "none"))
!               (tramp-copy-args            ("-1"))
!               (tramp-copy-keep-date-arg    "-p"))
       ("scp2"  (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "ssh")
!               (tramp-copy-program         "scp")
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           ("-2" "-e" "none"))
!               (tramp-copy-args            ("-2"))
!               (tramp-copy-keep-date-arg    "-p"))
       ("scp1_old"
                (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "ssh1")
!               (tramp-copy-program         "scp1")
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           ("-e" "none"))
!               (tramp-copy-args            nil)
!               (tramp-copy-keep-date-arg    "-p"))
       ("scp2_old"
                (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "ssh2")
!               (tramp-copy-program         "scp2")
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           ("-e" "none"))
!               (tramp-copy-args            nil)
!               (tramp-copy-keep-date-arg    "-p"))
       ("rsync" (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "ssh")
!               (tramp-copy-program         "rsync")
!               (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           ("-e" "none"))
!               (tramp-copy-args            ("-e" "ssh"))
!               (tramp-copy-keep-date-arg    "-t"))
!      ("remcp" (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "remsh")
!               (tramp-copy-program         "rcp")
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           nil)
!               (tramp-copy-args            nil)
!               (tramp-copy-keep-date-arg    "-p"))
       ("rsh"   (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "rsh")
!               (tramp-copy-program         nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           nil)
!               (tramp-copy-args             nil)
!               (tramp-copy-keep-date-arg    nil))
       ("ssh"   (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "ssh")
!               (tramp-copy-program         nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           ("-e" "none"))
!               (tramp-copy-args             nil)
!               (tramp-copy-keep-date-arg    nil))
       ("ssh1"  (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "ssh")
!               (tramp-copy-program         nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           ("-1" "-e" "none"))
!               (tramp-copy-args            ("-1"))
!               (tramp-copy-keep-date-arg    nil))
       ("ssh2"  (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "ssh")
!               (tramp-copy-program         nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           ("-2" "-e" "none"))
!               (tramp-copy-args            ("-2"))
!               (tramp-copy-keep-date-arg    nil))
       ("ssh1_old"
                (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "ssh1")
!               (tramp-copy-program         nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           ("-e" "none"))
!               (tramp-copy-args            nil)
!               (tramp-copy-keep-date-arg    nil))
       ("ssh2_old"
                (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "ssh2")
!               (tramp-copy-program         nil)
!               (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           ("-e" "none"))
!               (tramp-copy-args            nil)
!               (tramp-copy-keep-date-arg    nil))
!      ("remsh" (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "remsh")
!               (tramp-copy-program         nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           nil)
!               (tramp-copy-args            nil)
!               (tramp-copy-keep-date-arg    nil))
       ("telnet"
                (tramp-connection-function  tramp-open-connection-telnet)
!               (tramp-login-program        "telnet")
!               (tramp-copy-program         nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           nil)
!               (tramp-copy-args            nil)
!               (tramp-copy-keep-date-arg    nil))
       ("su"    (tramp-connection-function  tramp-open-connection-su)
!               (tramp-login-program        "su")
!               (tramp-copy-program         nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           ("-" "%u"))
!               (tramp-copy-args            nil)
!               (tramp-copy-keep-date-arg    nil))
       ("sudo"  (tramp-connection-function  tramp-open-connection-su)
!               (tramp-login-program        "sudo")
!               (tramp-copy-program         nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           ("-u" "%u" "-s"
!                                          "-p" "Password:"))
!               (tramp-copy-args            nil)
!               (tramp-copy-keep-date-arg    nil))
       ("multi" (tramp-connection-function  tramp-open-connection-multi)
!               (tramp-login-program        nil)
!               (tramp-copy-program         nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           nil)
!               (tramp-copy-args            nil)
!               (tramp-copy-keep-date-arg    nil))
       ("scpx"  (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "ssh")
!               (tramp-copy-program         "scp")
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           ("-e" "none" "-t" "-t" "/bin/sh"))
!               (tramp-copy-args            nil)
!               (tramp-copy-keep-date-arg    "-p"))
       ("sshx"  (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "ssh")
!               (tramp-copy-program         nil)
                (tramp-remote-sh            "/bin/sh")
!               (tramp-login-args           ("-e" "none" "-t" "-t" "/bin/sh"))
!               (tramp-copy-args            nil)
!               (tramp-copy-keep-date-arg    nil))
       ("krlogin"
                (tramp-connection-function  tramp-open-connection-rsh)
!             (tramp-login-program        "krlogin")
!             (tramp-copy-program         nil)
              (tramp-remote-sh            "/bin/sh")
!             (tramp-login-args           ("-x"))
!             (tramp-copy-args            nil)
!             (tramp-copy-keep-date-arg    nil))
       ("plink"
                (tramp-connection-function  tramp-open-connection-rsh)
!             (tramp-login-program        "plink")
!             (tramp-copy-program         nil)
              (tramp-remote-sh            "/bin/sh")
!             (tramp-login-args           ("-ssh")) ;optionally add "-v"
!             (tramp-copy-args            nil)
!             (tramp-copy-keep-date-arg    nil))
!      ("plink1"
!               (tramp-connection-function  tramp-open-connection-rsh)
!             (tramp-login-program        "plink")
!             (tramp-copy-program         nil)
!             (tramp-remote-sh            "/bin/sh")
!             (tramp-login-args           ("-1" "-ssh")) ;optionally add "-v"
!             (tramp-copy-args            nil)
!             (tramp-copy-keep-date-arg    nil))
       ("pscp"
                (tramp-connection-function  tramp-open-connection-rsh)
!             (tramp-login-program        "plink")
!             (tramp-copy-program         "pscp")
              (tramp-remote-sh            "/bin/sh")
!             (tramp-login-args           ("-ssh"))
!             (tramp-copy-args            nil)
!             (tramp-copy-keep-date-arg    "-p"))
       ("fcp"   
              (tramp-connection-function  tramp-open-connection-rsh)
!               (tramp-login-program        "fsh")
!               (tramp-copy-program         "fcp")
                (tramp-remote-sh            "/bin/sh -i")
!               (tramp-login-args           ("sh" "-i"))
!               (tramp-copy-args            nil)
!               (tramp-copy-keep-date-arg    "-p"))
       )
    "*Alist of methods for remote files.
  This is a list of entries of the form (NAME PARAM1 PARAM2 ...).
***************
*** 510,566 ****
      which groks tilde expansion, but it can search for it.  Also note
      that \"/bin/sh\" exists on all Unixen, this might not be true for
      the value that you decide to use.  You Have Been Warned.
!   * `tramp-rsh-program'
!     This specifies the name of the program to use for rsh; this might be
!     the absolute filename of rsh or the name of a workalike program.
!   * `tramp-rsh-args'
      This specifies the list of arguments to pass to the above
      mentioned program.  Please note that this is a list of arguments,
      that is, normally you don't want to put \"-a -b\" or \"-f foo\"
      here.  Instead, you want two list elements, one for \"-a\" and one
      for \"-b\", or one for \"-f\" and one for \"foo\".
!   * `tramp-rcp-program'
!     This specifies the name of the program to use for rcp; this might be
!     the absolute filename of rcp or the name of a workalike program.
!   * `tramp-rcp-args'
      This specifies the list of parameters to pass to the above mentioned
!     program, the hints for `tramp-rsh-args' also apply here.
!   * `tramp-rcp-keep-date-arg'
!     This specifies the parameter to use for `rcp' when the timestamp
!     of the original file should be kept.  For `rcp', use `-p', for
      `rsync', use `-t'.
!   * `tramp-su-program'
!     This specifies the name of the program to use for `su'.
!   * `tramp-su-args'
!     This specifies the list of arguments to pass to `su'.
!     \"%u\" is replaced by the user name, use \"%%\" for a literal
!     percent character.
!   * `tramp-telnet-program'
!     Specifies the telnet program to use when using
!     `tramp-open-connection-telnet' to log in.
!   * `tramp-telnet-args'
!     Specifies list of arguments to pass to `telnet'.  The hints for
!     `tramp-rsh-args' also apply here.
! 
! What does all this mean?  Well, you should specify `tramp-rsh-program',
! `tramp-telnet-program' or `tramp-su-program' for all methods; this program
! is used to log in to the remote site.  Then, there are two ways to
! actually transfer the files between the local and the remote side.
! One way is using an additional rcp-like program.  If you want to do
! this, set `tramp-rcp-program' in the method.
  
  Another possibility for file transfer is inline transfer, i.e. the
! file is passed through the same buffer used by `tramp-rsh-program'.  In
  this case, the file contents need to be protected since the
! `tramp-rsh-program' might use escape codes or the connection might not
  be eight-bit clean.  Therefore, file contents are encoded for transit.
  See the variable `tramp-coding-commands' for details.
  
  So, to summarize: if the method is an out-of-band method, then you
! must specify `tramp-rcp-program' and `tramp-rcp-args'.  If it is an
  inline method, then these two parameters should be nil.  Every method,
  inline or out of band, must specify `tramp-connection-function' plus
! the associated arguments (for example, the telnet program if you chose
  `tramp-open-connection-telnet').
  
  Notes:
--- 442,493 ----
      which groks tilde expansion, but it can search for it.  Also note
      that \"/bin/sh\" exists on all Unixen, this might not be true for
      the value that you decide to use.  You Have Been Warned.
!   * `tramp-login-program'
!     This specifies the name of the program to use for logging in to the
!     remote host.  Depending on `tramp-connection-function', this may be
!     the name of rsh or a workalike program (when
!     `tramp-connection-function' is `tramp-open-connection-rsh'), or the
!     name of telnet or a workalike (for `tramp-open-connection-telnet'),
!     or the name of su or a workalike (for `tramp-open-connection-su').
!   * `tramp-login-args'
      This specifies the list of arguments to pass to the above
      mentioned program.  Please note that this is a list of arguments,
      that is, normally you don't want to put \"-a -b\" or \"-f foo\"
      here.  Instead, you want two list elements, one for \"-a\" and one
      for \"-b\", or one for \"-f\" and one for \"foo\".
!     If `tramp-connection-function' is `tramp-open-connection-su', then
!     \"%u\" in this list is replaced by the user name, and \"%%\" can
!     be used to obtain a literal percent character.
!   * `tramp-copy-program'
!     This specifies the name of the program to use for remotely copying
!     the file; this might be the absolute filename of rcp or the name of
!     a workalike program.
!   * `tramp-copy-args'
      This specifies the list of parameters to pass to the above mentioned
!     program, the hints for `tramp-login-args' also apply here.
!   * `tramp-copy-keep-date-arg'
!     This specifies the parameter to use for the copying program when the
!     timestamp of the original file should be kept.  For `rcp', use `-p', for
      `rsync', use `-t'.
! 
! What does all this mean?  Well, you should specify `tramp-login-program'
! for all methods; this program is used to log in to the remote site.  Then,
! there are two ways to actually transfer the files between the local and the
! remote side.  One way is using an additional rcp-like program.  If you want
! to do this, set `tramp-copy-program' in the method.
  
  Another possibility for file transfer is inline transfer, i.e. the
! file is passed through the same buffer used by `tramp-login-program'.  In
  this case, the file contents need to be protected since the
! `tramp-login-program' might use escape codes or the connection might not
  be eight-bit clean.  Therefore, file contents are encoded for transit.
  See the variable `tramp-coding-commands' for details.
  
  So, to summarize: if the method is an out-of-band method, then you
! must specify `tramp-copy-program' and `tramp-copy-args'.  If it is an
  inline method, then these two parameters should be nil.  Every method,
  inline or out of band, must specify `tramp-connection-function' plus
! the associated arguments (for example, the login program if you chose
  `tramp-open-connection-telnet').
  
  Notes:
***************
*** 574,592 ****
    :type '(repeat
            (cons string
                  (set (list (const tramp-connection-function) function)
!                      (list (const tramp-rsh-program)
                           (choice (const nil) string))
!                      (list (const tramp-rcp-program)
                           (choice (const nil) string))
                       (list (const tramp-remote-sh)
                           (choice (const nil) string))
!                      (list (const tramp-rsh-args) (repeat string))
!                      (list (const tramp-rcp-args) (repeat string))
!                      (list (const tramp-rcp-keep-date-arg)
                           (choice (const nil) string))
-                      (list (const tramp-su-program)
-                          (choice (const nil) string))
-                      (list (const tramp-su-args) (repeat string))
                       (list (const tramp-encoding-command)
                           (choice (const nil) string))
                       (list (const tramp-decoding-command)
--- 501,516 ----
    :type '(repeat
            (cons string
                  (set (list (const tramp-connection-function) function)
!                      (list (const tramp-login-program)
                           (choice (const nil) string))
!                      (list (const tramp-copy-program)
                           (choice (const nil) string))
                       (list (const tramp-remote-sh)
                           (choice (const nil) string))
!                      (list (const tramp-login-args) (repeat string))
!                      (list (const tramp-copy-args) (repeat string))
!                      (list (const tramp-copy-keep-date-arg)
                           (choice (const nil) string))
                       (list (const tramp-encoding-command)
                           (choice (const nil) string))
                       (list (const tramp-decoding-command)
***************
*** 594,603 ****
                       (list (const tramp-encoding-function)
                           (choice (const nil) function))
                       (list (const tramp-decoding-function)
!                          (choice (const nil) function))
!                      (list (const tramp-telnet-program)
!                          (choice (const nil) string))
!                      (list (const tramp-telnet-args) (repeat string))))))
  
  (defcustom tramp-multi-methods '("multi" "multiu")
    "*List of multi-hop methods.
--- 518,524 ----
                       (list (const tramp-encoding-function)
                           (choice (const nil) function))
                       (list (const tramp-decoding-function)
!                          (choice (const nil) function))))))
  
  (defcustom tramp-multi-methods '("multi" "multiu")
    "*List of multi-hop methods.
***************
*** 609,617 ****
  (defcustom tramp-multi-connection-function-alist
    '(("telnet" tramp-multi-connect-telnet "telnet %h%n")
      ("rsh"    tramp-multi-connect-rlogin "rsh %h -l %u%n")
      ("ssh"    tramp-multi-connect-rlogin "ssh %h -l %u%n")
      ("su"     tramp-multi-connect-su     "su - %u%n")
!     ("sudo"   tramp-multi-connect-su     "sudo -u %u -s%n"))
    "*List of connection functions for multi-hop methods.
  Each list item is a list of three items (METHOD FUNCTION COMMAND),
  where METHOD is the name as used in the file name, FUNCTION is the
--- 530,539 ----
  (defcustom tramp-multi-connection-function-alist
    '(("telnet" tramp-multi-connect-telnet "telnet %h%n")
      ("rsh"    tramp-multi-connect-rlogin "rsh %h -l %u%n")
+     ("remsh"  tramp-multi-connect-rlogin "remsh %h -l %u%n")
      ("ssh"    tramp-multi-connect-rlogin "ssh %h -l %u%n")
      ("su"     tramp-multi-connect-su     "su - %u%n")
!     ("sudo"   tramp-multi-connect-su     "sudo -u %u -s -p Password:%n"))
    "*List of connection functions for multi-hop methods.
  Each list item is a list of three items (METHOD FUNCTION COMMAND),
  where METHOD is the name as used in the file name, FUNCTION is the
***************
*** 629,635 ****
    :group 'tramp
    :type '(repeat (list string function string)))
  
! (defcustom tramp-default-method "ssh"
    "*Default method to use for transferring files.
  See `tramp-methods' for possibilities.
  Also see `tramp-default-method-alist'."
--- 551,561 ----
    :group 'tramp
    :type '(repeat (list string function string)))
  
! (defcustom tramp-default-method
!   (if (and (fboundp 'executable-find)
!          (executable-find "plink"))
!       "plink"
!     "ssh")
    "*Default method to use for transferring files.
  See `tramp-methods' for possibilities.
  Also see `tramp-default-method-alist'."
***************
*** 659,666 ****
    (unless (memq system-type '(windows-nt))
      '((tramp-parse-rhosts "/etc/hosts.equiv")
        (tramp-parse-rhosts "~/.rhosts")))
!   "Default list of (FUNCTION FILE) pairs to be examined for rsh methods."
! )
  
  ;; Default values for non-Unices seeked
  (defconst tramp-completion-function-alist-ssh
--- 585,591 ----
    (unless (memq system-type '(windows-nt))
      '((tramp-parse-rhosts "/etc/hosts.equiv")
        (tramp-parse-rhosts "~/.rhosts")))
!   "Default list of (FUNCTION FILE) pairs to be examined for rsh methods.")
  
  ;; Default values for non-Unices seeked
  (defconst tramp-completion-function-alist-ssh
***************
*** 673,694 ****
        (tramp-parse-rhosts  "~/.shosts")
        (tramp-parse-shosts  "~/.ssh/known_hosts")
        (tramp-parse-sconfig "~/.ssh/config")))
!   "Default list of (FUNCTION FILE) pairs to be examined for ssh methods."
! )
  
  ;; Default values for non-Unices seeked
  (defconst tramp-completion-function-alist-telnet
    (unless (memq system-type '(windows-nt))
      '((tramp-parse-hosts "/etc/hosts")))
!   "Default list of (FUNCTION FILE) pairs to be examined for telnet methods."
! )
  
  ;; Default values for non-Unices seeked
  (defconst tramp-completion-function-alist-su
    (unless (memq system-type '(windows-nt))
      '((tramp-parse-passwd "/etc/passwd")))
!   "Default list of (FUNCTION FILE) pairs to be examined for su methods."
! )
  
  (defcustom tramp-completion-function-alist
    (list (cons "rcp"      tramp-completion-function-alist-rsh)
--- 598,616 ----
        (tramp-parse-rhosts  "~/.shosts")
        (tramp-parse-shosts  "~/.ssh/known_hosts")
        (tramp-parse-sconfig "~/.ssh/config")))
!   "Default list of (FUNCTION FILE) pairs to be examined for ssh methods.")
  
  ;; Default values for non-Unices seeked
  (defconst tramp-completion-function-alist-telnet
    (unless (memq system-type '(windows-nt))
      '((tramp-parse-hosts "/etc/hosts")))
!   "Default list of (FUNCTION FILE) pairs to be examined for telnet methods.")
  
  ;; Default values for non-Unices seeked
  (defconst tramp-completion-function-alist-su
    (unless (memq system-type '(windows-nt))
      '((tramp-parse-passwd "/etc/passwd")))
!   "Default list of (FUNCTION FILE) pairs to be examined for su methods.")
  
  (defcustom tramp-completion-function-alist
    (list (cons "rcp"      tramp-completion-function-alist-rsh)
***************
*** 774,787 ****
    :type 'regexp)
  
  (defcustom tramp-shell-prompt-pattern
!   "^[^#$%>\n]*[#$%>] *"
    "Regexp to match prompts from remote shell.
  Normally, Tramp expects you to configure `shell-prompt-pattern'
  correctly, but sometimes it happens that you are connecting to a
  remote host which sends a different kind of shell prompt.  Therefore,
  Tramp recognizes things matched by `shell-prompt-pattern' as prompt,
  and also things matched by this variable.  The default value of this
! variable is the same as the default value of `shell-prompt-pattern',
  which should work well in many cases."
    :group 'tramp
    :type 'regexp)
--- 696,709 ----
    :type 'regexp)
  
  (defcustom tramp-shell-prompt-pattern
!   "^[^#$%>\n]*[#$%>] *\\(\e\\[[0-9;]*[a-zA-Z]\\)?"
    "Regexp to match prompts from remote shell.
  Normally, Tramp expects you to configure `shell-prompt-pattern'
  correctly, but sometimes it happens that you are connecting to a
  remote host which sends a different kind of shell prompt.  Therefore,
  Tramp recognizes things matched by `shell-prompt-pattern' as prompt,
  and also things matched by this variable.  The default value of this
! variable is similar to the default value of `shell-prompt-pattern',
  which should work well in many cases."
    :group 'tramp
    :type 'regexp)
***************
*** 1315,1341 ****
  In the connection buffer, this variable has the value of the like-named
  method parameter, as specified in `tramp-methods' (which see).")
  
! (defvar tramp-rsh-program nil
    "This internal variable holds a parameter for `tramp-methods'.
  In the connection buffer, this variable has the value of the like-named
  method parameter, as specified in `tramp-methods' (which see).")
  
! (defvar tramp-rsh-args nil
    "This internal variable holds a parameter for `tramp-methods'.
  In the connection buffer, this variable has the value of the like-named
  method parameter, as specified in `tramp-methods' (which see).")
  
! (defvar tramp-rcp-program nil
    "This internal variable holds a parameter for `tramp-methods'.
  In the connection buffer, this variable has the value of the like-named
  method parameter, as specified in `tramp-methods' (which see).")
  
! (defvar tramp-rcp-args nil
    "This internal variable holds a parameter for `tramp-methods'.
  In the connection buffer, this variable has the value of the like-named
  method parameter, as specified in `tramp-methods' (which see).")
  
! (defvar tramp-rcp-keep-date-arg nil
    "This internal variable holds a parameter for `tramp-methods'.
  In the connection buffer, this variable has the value of the like-named
  method parameter, as specified in `tramp-methods' (which see).")
--- 1237,1263 ----
  In the connection buffer, this variable has the value of the like-named
  method parameter, as specified in `tramp-methods' (which see).")
  
! (defvar tramp-login-program nil
    "This internal variable holds a parameter for `tramp-methods'.
  In the connection buffer, this variable has the value of the like-named
  method parameter, as specified in `tramp-methods' (which see).")
  
! (defvar tramp-login-args nil
    "This internal variable holds a parameter for `tramp-methods'.
  In the connection buffer, this variable has the value of the like-named
  method parameter, as specified in `tramp-methods' (which see).")
  
! (defvar tramp-copy-program nil
    "This internal variable holds a parameter for `tramp-methods'.
  In the connection buffer, this variable has the value of the like-named
  method parameter, as specified in `tramp-methods' (which see).")
  
! (defvar tramp-copy-args nil
    "This internal variable holds a parameter for `tramp-methods'.
  In the connection buffer, this variable has the value of the like-named
  method parameter, as specified in `tramp-methods' (which see).")
  
! (defvar tramp-copy-keep-date-arg nil
    "This internal variable holds a parameter for `tramp-methods'.
  In the connection buffer, this variable has the value of the like-named
  method parameter, as specified in `tramp-methods' (which see).")
***************
*** 1360,1380 ****
  In the connection buffer, this variable has the value of the like-named
  method parameter, as specified in `tramp-methods' (which see).")
  
- (defvar tramp-telnet-program nil
-   "This internal variable holds a parameter for `tramp-methods'.
- In the connection buffer, this variable has the value of the like-named
- method parameter, as specified in `tramp-methods' (which see).")
- 
- (defvar tramp-telnet-args nil
-   "This internal variable holds a parameter for `tramp-methods'.
- In the connection buffer, this variable has the value of the like-named
- method parameter, as specified in `tramp-methods' (which see).")
- 
- (defvar tramp-su-program nil
-   "This internal variable holds a parameter for `tramp-methods'.
- In the connection buffer, this variable has the value of the like-named
- method parameter, as specified in `tramp-methods' (which see).")
- 
  ;; CCC `local in each buffer'?
  (defvar tramp-ls-command nil
    "This command is used to get a long listing with numeric user and group ids.
--- 1282,1287 ----
***************
*** 1944,1949 ****
--- 1851,1867 ----
               (setq numchase (1+ numchase))
               (when (file-name-absolute-p symlink-target)
                 (setq result nil))
+              ;; If the symlink was absolute, we'll get a string like
+              ;; "/address@hidden:/some/target"; extract the
+              ;; "/some/target" part from it.
+              (when (tramp-tramp-file-p symlink-target)
+                (with-parsed-tramp-file-name symlink-target sym
+                  (unless (equal (list multi-method method user host)
+                                 (list sym-multi-method sym-method
+                                       sym-user sym-host))
+                    (error "Symlink target `%s' on wrong host"
+                           symlink-target))
+                  (setq symlink-target localname)))
               (setq steps
                     (append (tramp-split-string symlink-target "/") steps)))
              (t
***************
*** 2321,2327 ****
    "Like `file-symlink-p' for tramp files."
    (with-parsed-tramp-file-name filename nil
      (let ((x (car (tramp-handle-file-attributes filename))))
!       (when (stringp x) x))))
  
  (defun tramp-handle-file-writable-p (filename)
    "Like `file-writable-p' for tramp files."
--- 2239,2251 ----
    "Like `file-symlink-p' for tramp files."
    (with-parsed-tramp-file-name filename nil
      (let ((x (car (tramp-handle-file-attributes filename))))
!       (when (stringp x)
!       ;; When Tramp is running on VMS, then `file-name-absolute-p'
!       ;; might do weird things.
!       (if (file-name-absolute-p x)
!           (tramp-make-tramp-file-name
!            multi-method method user host x)
!         x)))))
  
  (defun tramp-handle-file-writable-p (filename)
    "Like `file-writable-p' for tramp files."
***************
*** 2604,2610 ****
            ;; source and target file.
  
            ;; CCC: If both source and target are Tramp files,
!           ;; and both are using the same rcp-program, then we
            ;; can invoke rcp directly.  Note that
            ;; default-directory should point to a local
            ;; directory if we want to invoke rcp.
--- 2528,2534 ----
            ;; source and target file.
  
            ;; CCC: If both source and target are Tramp files,
!           ;; and both are using the same copy-program, then we
            ;; can invoke rcp directly.  Note that
            ;; default-directory should point to a local
            ;; directory if we want to invoke rcp.
***************
*** 2922,2928 ****
        ;; would otherwise use backslash.
        (let ((directory-sep-char ?/))
          (tramp-make-tramp-file-name
!          multi-method method user host
           (tramp-drop-volume-letter
            (tramp-run-real-handler 'expand-file-name
                                    (list localname)))))))))
--- 2846,2853 ----
        ;; would otherwise use backslash.
        (let ((directory-sep-char ?/))
          (tramp-make-tramp-file-name
!          multi-method (or method (tramp-find-default-method user host))
!          user host
           (tramp-drop-volume-letter
            (tramp-run-real-handler 'expand-file-name
                                    (list localname)))))))))
***************
*** 3012,3025 ****
    (with-parsed-tramp-file-name filename nil
      (let ((output-buf (get-buffer-create "*tramp output*"))
          (tramp-buf (tramp-get-buffer multi-method method user host))
!         (rcp-program (tramp-get-rcp-program
!                       multi-method
!                       (tramp-find-method multi-method method user host)
!                       user host))
!         (rcp-args (tramp-get-rcp-args
!                    multi-method
!                    (tramp-find-method multi-method method user host)
!                    user host))
          ;; We used to bind the following as late as possible.
          ;; loc-enc and loc-dec were bound directly before the if
          ;; statement that checks them.  But the functions
--- 2937,2950 ----
    (with-parsed-tramp-file-name filename nil
      (let ((output-buf (get-buffer-create "*tramp output*"))
          (tramp-buf (tramp-get-buffer multi-method method user host))
!         (copy-program (tramp-get-copy-program
!                        multi-method
!                        (tramp-find-method multi-method method user host)
!                        user host))
!         (copy-args (tramp-get-copy-args
!                     multi-method
!                     (tramp-find-method multi-method method user host)
!                     user host))
          ;; We used to bind the following as late as possible.
          ;; loc-enc and loc-dec were bound directly before the if
          ;; statement that checks them.  But the functions
***************
*** 3035,3041 ****
        (error "Cannot make local copy of non-existing file `%s'"
               filename))
        (setq tmpfil (tramp-make-temp-file))
!       (cond (rcp-program
             ;; Use rcp-like program for file transfer.
             (tramp-message-for-buffer
              multi-method method user host
--- 2960,2966 ----
        (error "Cannot make local copy of non-existing file `%s'"
               filename))
        (setq tmpfil (tramp-make-temp-file))
!       (cond (copy-program
             ;; Use rcp-like program for file transfer.
             (tramp-message-for-buffer
              multi-method method user host
***************
*** 3044,3054 ****
             (unless (equal
                      0
                      (apply #'call-process
!                            rcp-program
                             nil output-buf nil
!                            (append rcp-args
                                     (list
!                                     (tramp-make-rcp-program-file-name
                                       user host
                                       (tramp-shell-quote-argument localname))
                                      tmpfil))))
--- 2969,2979 ----
             (unless (equal
                      0
                      (apply #'call-process
!                            copy-program
                             nil output-buf nil
!                            (append copy-args
                                     (list
!                                     (tramp-make-copy-program-file-name
                                       user host
                                       (tramp-shell-quote-argument localname))
                                      tmpfil))))
***************
*** 3056,3062 ****
               (error
                (concat "tramp-handle-file-local-copy: `%s' didn't work, "
                        "see buffer `%s' for details")
!               rcp-program output-buf))
             (tramp-message-for-buffer
              multi-method method user host
              5 "Fetching %s to tmp file %s...done" filename tmpfil))
--- 2981,2987 ----
               (error
                (concat "tramp-handle-file-local-copy: `%s' didn't work, "
                        "see buffer `%s' for details")
!               copy-program output-buf))
             (tramp-message-for-buffer
              multi-method method user host
              5 "Fetching %s to tmp file %s...done" filename tmpfil))
***************
*** 3180,3189 ****
        (error "File not overwritten")))
    (with-parsed-tramp-file-name filename nil
      (let ((curbuf (current-buffer))
!         (rcp-program (tramp-get-rcp-program
!                       multi-method (tramp-find-method multi-method method 
user host)
!                       user host))
!         (rcp-args (tramp-get-rcp-args
                     multi-method
                     (tramp-find-method multi-method method user host)
                     user host))
--- 3105,3115 ----
        (error "File not overwritten")))
    (with-parsed-tramp-file-name filename nil
      (let ((curbuf (current-buffer))
!         (copy-program (tramp-get-copy-program
!                        multi-method
!                        (tramp-find-method multi-method method user host)
!                        user host))
!         (copy-args (tramp-get-copy-args
                     multi-method
                     (tramp-find-method multi-method method user host)
                     user host))
***************
*** 3221,3237 ****
        ;; decoding command must be specified.  However, if the method
        ;; _also_ specifies an encoding function, then that is used for
        ;; encoding the contents of the tmp file.
!       (cond (rcp-program
             ;; use rcp-like program for file transfer
!            (let ((argl (append rcp-args
                                 (list
                                  tmpfil
!                                 (tramp-make-rcp-program-file-name
                                   user host
                                   (tramp-shell-quote-argument localname))))))
               (tramp-message-for-buffer
                multi-method method user host
!               6 "Writing tmp file using `%s'..." rcp-program)
               (save-excursion (set-buffer trampbuf) (erase-buffer))
               (when tramp-debug-buffer
                 (save-excursion
--- 3147,3163 ----
        ;; decoding command must be specified.  However, if the method
        ;; _also_ specifies an encoding function, then that is used for
        ;; encoding the contents of the tmp file.
!       (cond (copy-program
             ;; use rcp-like program for file transfer
!            (let ((argl (append copy-args
                                 (list
                                  tmpfil
!                                 (tramp-make-copy-program-file-name
                                   user host
                                   (tramp-shell-quote-argument localname))))))
               (tramp-message-for-buffer
                multi-method method user host
!               6 "Writing tmp file using `%s'..." copy-program)
               (save-excursion (set-buffer trampbuf) (erase-buffer))
               (when tramp-debug-buffer
                 (save-excursion
***************
*** 3239,3257 ****
                                                       method user host))
                   (goto-char (point-max))
                   (tramp-insert-with-face
!                   'bold (format "$ %s %s\n" rcp-program
                                  (mapconcat 'identity argl " ")))))
               (unless (equal 0
                              (apply #'call-process
!                                    rcp-program nil trampbuf nil argl))
                 (pop-to-buffer trampbuf)
                 (error
                  "Cannot write region to file `%s', command `%s' failed"
!                 filename rcp-program))
               (tramp-message-for-buffer
                multi-method method user host
                6 "Transferring file using `%s'...done"
!               rcp-program)))
            ((and rem-enc rem-dec)
             ;; Use inline file transfer
             (let ((tmpbuf (get-buffer-create " *tramp file transfer*")))
--- 3165,3183 ----
                                                       method user host))
                   (goto-char (point-max))
                   (tramp-insert-with-face
!                   'bold (format "$ %s %s\n" copy-program
                                  (mapconcat 'identity argl " ")))))
               (unless (equal 0
                              (apply #'call-process
!                                    copy-program nil trampbuf nil argl))
                 (pop-to-buffer trampbuf)
                 (error
                  "Cannot write region to file `%s', command `%s' failed"
!                 filename copy-program))
               (tramp-message-for-buffer
                multi-method method user host
                6 "Transferring file using `%s'...done"
!               copy-program)))
            ((and rem-enc rem-dec)
             ;; Use inline file transfer
             (let ((tmpbuf (get-buffer-create " *tramp file transfer*")))
***************
*** 3505,3510 ****
--- 3431,3437 ----
         (fn (apply (cdr fn) args))
         (t (tramp-run-real-handler operation args))))))
  
+ ;;;###autoload
  (put 'tramp-file-name-handler 'file-remote-p t)       ;for file-remote-p
  
  ;;;###autoload
***************
*** 3520,3525 ****
--- 3447,3455 ----
        (save-match-data (apply (cdr fn) args))
        (tramp-completion-run-real-handler operation args))))
  
+ ;;;###autoload
+ (put 'tramp-completion-file-name-handler 'safe-magic t)
+ 
  ;; Register in file name handler alist
  ;;;###autoload
  (add-to-list 'file-name-handler-alist
***************
*** 4608,4619 ****
               (p (apply 'start-process
                         (tramp-buffer-name multi-method method user host)
                         (tramp-get-buffer multi-method method user host)
!                      (tramp-get-telnet-program
                        multi-method
                        (tramp-find-method multi-method method user host)
                        user host)
                         host
!                      (tramp-get-telnet-args
                        multi-method
                        (tramp-find-method multi-method method user host)
                        user host)))
--- 4538,4549 ----
               (p (apply 'start-process
                         (tramp-buffer-name multi-method method user host)
                         (tramp-get-buffer multi-method method user host)
!                      (tramp-get-login-program
                        multi-method
                        (tramp-find-method multi-method method user host)
                        user host)
                         host
!                      (tramp-get-login-args
                        multi-method
                        (tramp-find-method multi-method method user host)
                        user host)))
***************
*** 4665,4682 ****
      (let ((process-environment (copy-sequence process-environment))
          (bufnam (tramp-buffer-name multi-method method user host))
          (buf (tramp-get-buffer multi-method method user host))
!         (rsh-program (tramp-get-rsh-program
                        multi-method
                        (tramp-find-method multi-method method user host)
                        user host))
!         (rsh-args (tramp-get-rsh-args
                     multi-method
                     (tramp-find-method multi-method method user host)
                     user host)))
        ;; The following should be changed.  We need a more general
        ;; mechanism to parse extra host args.
        (when (string-match "\\([^#]*\\)#\\(.*\\)" host)
!       (setq rsh-args (cons "-p" (cons (match-string 2 host) rsh-args)))
        (setq host (match-string 1 host)))
        (setenv "TERM" tramp-terminal-type)
        (let* ((default-directory (tramp-temporary-file-directory))
--- 4595,4612 ----
      (let ((process-environment (copy-sequence process-environment))
          (bufnam (tramp-buffer-name multi-method method user host))
          (buf (tramp-get-buffer multi-method method user host))
!         (login-program (tramp-get-login-program
                        multi-method
                        (tramp-find-method multi-method method user host)
                        user host))
!         (login-args (tramp-get-login-args
                     multi-method
                     (tramp-find-method multi-method method user host)
                     user host)))
        ;; The following should be changed.  We need a more general
        ;; mechanism to parse extra host args.
        (when (string-match "\\([^#]*\\)#\\(.*\\)" host)
!       (setq login-args (cons "-p" (cons (match-string 2 host) rsh-args)))
        (setq host (match-string 1 host)))
        (setenv "TERM" tramp-terminal-type)
        (let* ((default-directory (tramp-temporary-file-directory))
***************
*** 4687,4696 ****
                                                    (> emacs-major-version 20))
                                         tramp-dos-coding-system))
               (p (if (and user (not (string= user "")))
!                     (apply #'start-process bufnam buf rsh-program  
!                            host "-l" user rsh-args)
!                   (apply #'start-process bufnam buf rsh-program 
!                          host rsh-args)))
               (found nil))
          (process-kill-without-query p)
  
--- 4617,4626 ----
                                                    (> emacs-major-version 20))
                                         tramp-dos-coding-system))
               (p (if (and user (not (string= user "")))
!                     (apply #'start-process bufnam buf login-program  
!                            host "-l" user login-args)
!                   (apply #'start-process bufnam buf login-program 
!                          host login-args)))
               (found nil))
          (process-kill-without-query p)
  
***************
*** 4740,4753 ****
               (p (apply 'start-process
                         (tramp-buffer-name multi-method method user host)
                         (tramp-get-buffer multi-method method user host)
!                      (tramp-get-su-program
                        multi-method
                        (tramp-find-method multi-method method user host)
                        user host)
                         (mapcar
                          (lambda (x)
                          (format-spec x `((?u . ,(or user "root")))))
!                         (tramp-get-su-args
                         multi-method
                         (tramp-find-method multi-method method user host)
                         user host))))
--- 4670,4683 ----
               (p (apply 'start-process
                         (tramp-buffer-name multi-method method user host)
                         (tramp-get-buffer multi-method method user host)
!                      (tramp-get-login-program
                        multi-method
                        (tramp-find-method multi-method method user host)
                        user host)
                         (mapcar
                          (lambda (x)
                          (format-spec x `((?u . ,(or user "root")))))
!                         (tramp-get-login-args
                         multi-method
                         (tramp-find-method multi-method method user host)
                         user host))))
***************
*** 4951,4956 ****
--- 4881,4904 ----
                    "]]"))))
      found))
  
+ (defun tramp-wait-for-shell-prompt (proc timeout)
+   "Wait for the shell prompt to appear from process PROC within TIMEOUT 
seconds.
+ See `tramp-wait-for-regexp' for more details.
+ Shell prompt pattern is determined by variables `shell-prompt-pattern'
+ and `tramp-shell-prompt-pattern'."
+   (tramp-wait-for-regexp
+    proc timeout
+    (format "\\(%s\\|%s\\)\\'"
+          shell-prompt-pattern tramp-shell-prompt-pattern)))
+ 
+ (defun tramp-barf-if-no-shell-prompt (proc timeout &rest error-args)
+   "Wait for shell prompt and barf if none appears.
+ Looks at process PROC to see if a shell prompt appears in TIMEOUT
+ seconds.  If not, it produces an error message with the given ERROR-ARGS."
+   (unless (tramp-wait-for-shell-prompt proc timeout)
+     (pop-to-buffer (buffer-name))
+     (apply 'error error-args)))
+ 
  (defun tramp-enter-password (p prompt)
    "Prompt for a password and send it to the remote end.
  Uses PROMPT as a prompt and sends the password to process P."
***************
*** 4994,5048 ****
    ;; because that is read by some sh implementations (eg, bash when
    ;; called as sh) on startup; this way, we avoid the startup file
    ;; clobbering $PS1.
!   (process-send-string nil (format "exec env 'ENV=' 'PS1=$ ' %s%s"
!                                    (tramp-get-remote-sh
!                                   multi-method method user host)
!                                    tramp-rsh-end-of-line))
!   (when tramp-debug-buffer
!     (save-excursion
!       (set-buffer (tramp-get-debug-buffer multi-method method user host))
!       (goto-char (point-max))
!       (tramp-insert-with-face
!        'bold (format "$ exec env PS1='$ ' %s\n"
!                    (tramp-get-remote-sh multi-method method user host)))))
!   (tramp-message 9 "Waiting 30s for remote `%s' to come up..."
!                (tramp-get-remote-sh multi-method method user host))
!   (unless (tramp-wait-for-regexp
!          p 30 (format "\\(%s\\|%s\\)\\'"
!                       shell-prompt-pattern tramp-shell-prompt-pattern))
!     (pop-to-buffer (buffer-name))
!     (error "Remote `%s' didn't come up.  See buffer `%s' for details"
!            (tramp-get-remote-sh multi-method method user host)
!          (buffer-name)))
!   (tramp-message 9 "Setting up remote shell environment")
    (tramp-discard-garbage-erase-buffer p multi-method method user host)
!   (process-send-string
!    nil (format "stty -inlcr -echo kill '^U'%s" tramp-rsh-end-of-line))
!   (unless (tramp-wait-for-regexp
!          p 30 (format "\\(%s\\|%s\\)\\'"
!                       shell-prompt-pattern tramp-shell-prompt-pattern))
!     (pop-to-buffer (buffer-name))
!     (error "Couldn't `stty -echo', see buffer `%s'" (buffer-name)))
    (erase-buffer)
!   (process-send-string nil (format "TERM=dumb; export TERM%s"
!                                    tramp-rsh-end-of-line))
!   (unless (tramp-wait-for-regexp
!          p 30 (format "\\(%s\\|%s\\)\\'"
!                       shell-prompt-pattern tramp-shell-prompt-pattern))
!     (pop-to-buffer (buffer-name))
!     (error "Couldn't `TERM=dumb; export TERM', see buffer `%s'" 
(buffer-name)))
    ;; Try to set up the coding system correctly.
    ;; CCC this can't be the right way to do it.  Hm.
    (save-excursion
      (erase-buffer)
      (tramp-message 9 "Determining coding system")
!     (process-send-string nil (format "echo foo ; echo bar %s"
!                                      tramp-rsh-end-of-line))
!     (unless (tramp-wait-for-regexp
!              p 30 (format "\\(%s\\|%s\\)\\'"
!                         shell-prompt-pattern tramp-shell-prompt-pattern))
!       (pop-to-buffer (buffer-name))
!       (error "Couldn't `echo foo; echo bar' to determine line endings'"))
      (goto-char (point-min))
      (if (featurep 'mule)
          ;; Use MULE to select the right EOL convention for communicating
--- 4942,4972 ----
    ;; because that is read by some sh implementations (eg, bash when
    ;; called as sh) on startup; this way, we avoid the startup file
    ;; clobbering $PS1.
!   (tramp-send-command-internal
!    multi-method method user host
!    (format "exec env 'ENV=' 'PS1=$ ' %s"
!          (tramp-get-remote-sh multi-method method user host))
!    (format "remote `%s' to come up"
!          (tramp-get-remote-sh multi-method method user host)))
!   (tramp-barf-if-no-shell-prompt
!    p 30
!    "Remote `%s' didn't come up.  See buffer `%s' for details"
!    (tramp-get-remote-sh multi-method method user host)
!    (buffer-name))
!   (tramp-message 8 "Setting up remote shell environment")
    (tramp-discard-garbage-erase-buffer p multi-method method user host)
!   (tramp-send-command-internal multi-method method user host
!                              "stty -inlcr -echo kill '^U'")
    (erase-buffer)
!   (tramp-send-command-internal multi-method method user host
!                              "TERM=dumb; export TERM")
    ;; Try to set up the coding system correctly.
    ;; CCC this can't be the right way to do it.  Hm.
    (save-excursion
      (erase-buffer)
      (tramp-message 9 "Determining coding system")
!     (tramp-send-command-internal multi-method method user host
!                                "echo foo ; echo bar")
      (goto-char (point-min))
      (if (featurep 'mule)
          ;; Use MULE to select the right EOL convention for communicating
***************
*** 5066,5122 ****
          ;; because we're running on a non-MULE Emacs.  Let's try
          ;; stty, instead.
          (tramp-message 9 "Trying `stty -onlcr'")
!         (process-send-string nil (format "stty -onlcr%s" 
tramp-rsh-end-of-line))
!         (unless (tramp-wait-for-regexp
!                  p 30 (format "\\(%s\\|%s\\)\\'"
!                             shell-prompt-pattern tramp-shell-prompt-pattern))
!           (pop-to-buffer (buffer-name))
!           (error "Couldn't `stty -onlcr', see buffer `%s'" (buffer-name))))))
    (erase-buffer)
    (tramp-message
     9 "Waiting 30s for `HISTFILE=$HOME/.tramp_history; HISTSIZE=1'")
!   (process-send-string
!    nil (format "HISTFILE=$HOME/.tramp_history; HISTSIZE=1%s"
!                tramp-rsh-end-of-line))
!   (unless (tramp-wait-for-regexp
!            p 30 (format "\\(%s\\|%s\\)\\'"
!                       shell-prompt-pattern tramp-shell-prompt-pattern))
!     (pop-to-buffer (buffer-name))
!     (error (concat "Couldn't `HISTFILE=$HOME/.tramp_history; "
!                    "HISTSIZE=1', see buffer `%s'")
!            (buffer-name)))
    (erase-buffer)
    (tramp-message 9 "Waiting 30s for `set +o vi +o emacs'")
!   (process-send-string
!    nil (format "set +o vi +o emacs%s"      ;mustn't `>/dev/null' with AIX?
!                tramp-rsh-end-of-line))
!   (unless (tramp-wait-for-regexp
!            p 30 (format "\\(%s\\|%s\\)\\'"
!                       shell-prompt-pattern tramp-shell-prompt-pattern))
!     (pop-to-buffer (buffer-name))
!     (error "Couldn't `set +o vi +o emacs', see buffer `%s'"
!            (buffer-name)))
    (erase-buffer)
    (tramp-message 9 "Waiting 30s for `unset MAIL MAILCHECK MAILPATH'")
!   (process-send-string
!    nil (format "unset MAIL MAILCHECK MAILPATH 1>/dev/null 2>/dev/null%s"
!                tramp-rsh-end-of-line))
!   (unless (tramp-wait-for-regexp
!            p 30 (format "\\(%s\\|%s\\)\\'"
!                       shell-prompt-pattern tramp-shell-prompt-pattern))
!     (pop-to-buffer (buffer-name))
!     (error "Couldn't `unset MAIL MAILCHECK MAILPATH', see buffer `%s'"
!            (buffer-name)))
    (erase-buffer)
    (tramp-message 9 "Waiting 30s for `unset CDPATH'")
!   (process-send-string
!    nil (format "unset CDPATH%s" tramp-rsh-end-of-line))
!   (unless (tramp-wait-for-regexp
!            p 30 (format "\\(%s\\|%s\\)\\'"
!                       shell-prompt-pattern tramp-shell-prompt-pattern))
!     (pop-to-buffer (buffer-name))
!     (error "Couldn't `unset CDPATH', see buffer `%s'"
!            (buffer-name)))
    (erase-buffer)
    (tramp-message 9 "Setting shell prompt")
    ;; Douglas Gray Stephens <address@hidden> says that we must
--- 4990,5015 ----
          ;; because we're running on a non-MULE Emacs.  Let's try
          ;; stty, instead.
          (tramp-message 9 "Trying `stty -onlcr'")
!       (tramp-send-command-internal multi-method method user host
!                                    "stty -onlcr"))))
    (erase-buffer)
    (tramp-message
     9 "Waiting 30s for `HISTFILE=$HOME/.tramp_history; HISTSIZE=1'")
!   (tramp-send-command-internal multi-method method user host
!                              "HISTFILE=$HOME/.tramp_history; HISTSIZE=1")
    (erase-buffer)
    (tramp-message 9 "Waiting 30s for `set +o vi +o emacs'")
!   (tramp-send-command-internal multi-method method user host
!                              "set +o vi +o emacs")
    (erase-buffer)
    (tramp-message 9 "Waiting 30s for `unset MAIL MAILCHECK MAILPATH'")
!   (tramp-send-command-internal
!    multi-method method user host
!    "unset MAIL MAILCHECK MAILPATH 1>/dev/null 2>/dev/null")
    (erase-buffer)
    (tramp-message 9 "Waiting 30s for `unset CDPATH'")
!   (tramp-send-command-internal multi-method method user host
!                              "unset CDPATH")
    (erase-buffer)
    (tramp-message 9 "Setting shell prompt")
    ;; Douglas Gray Stephens <address@hidden> says that we must
***************
*** 5240,5246 ****
                 " -e '" tramp-perl-file-attributes "' $1 2>/dev/null\n"
                 "}"))
        (tramp-wait-for-output)
!       (unless (tramp-get-rcp-program
                 multi-method
                 (tramp-find-method multi-method method user host)
                 user host)
--- 5133,5139 ----
                 " -e '" tramp-perl-file-attributes "' $1 2>/dev/null\n"
                 "}"))
        (tramp-wait-for-output)
!       (unless (tramp-get-copy-program
                 multi-method
                 (tramp-find-method multi-method method user host)
                 user host)
***************
*** 5282,5288 ****
        (tramp-set-connection-property "ln" ln multi-method method user host)))
    (erase-buffer)
    ;; Find the right encoding/decoding commands to use.
!   (unless (tramp-get-rcp-program
           multi-method
           (tramp-find-method multi-method method user host)
           user host)
--- 5175,5181 ----
        (tramp-set-connection-property "ln" ln multi-method method user host)))
    (erase-buffer)
    ;; Find the right encoding/decoding commands to use.
!   (unless (tramp-get-copy-program
           multi-method
           (tramp-find-method multi-method method user host)
           user host)
***************
*** 5527,5532 ****
--- 5420,5436 ----
      (process-send-string proc
                           (concat command tramp-rsh-end-of-line))))
  
+ (defun tramp-send-command-internal
+   (multi-method method user host command &optional msg)
+   "Send command to remote host and wait for success.
+ Sends COMMAND, then waits 30 seconds for shell prompt."
+   (tramp-send-command multi-method method user host command t t)
+   (when msg
+     (tramp-message 9 "Waiting 30s for %s..." msg))
+   (tramp-barf-if-no-shell-prompt
+    nil 30
+    "Couldn't `%s', see buffer `%s'" command (buffer-name)))
+   
  (defun tramp-wait-for-output (&optional timeout)
    "Wait for output from remote rsh command."
    (let ((proc (get-buffer-process (current-buffer)))
***************
*** 5964,5971 ****
          (incf i)))
      (concat prefix hops localname)))
  
! (defun tramp-make-rcp-program-file-name (user host localname)
!   "Create a file name suitable to be passed to `rcp'."
    (if user
        (format "address@hidden:%s" user host localname)
      (format "%s:%s" host localname)))
--- 5868,5875 ----
          (incf i)))
      (concat prefix hops localname)))
  
! (defun tramp-make-copy-program-file-name (user host localname)
!   "Create a file name suitable to be passed to `rcp' and workalikes."
    (if user
        (format "address@hidden:%s" user host localname)
      (format "%s:%s" host localname)))
***************
*** 5973,5980 ****
  (defun tramp-method-out-of-band-p (multi-method method user host)
    "Return t if this is an out-of-band method, nil otherwise.
  It is important to check for this condition, since it is not possible
! to enter a password for the `tramp-rcp-program'."
!   (tramp-get-rcp-program
     multi-method
     (tramp-find-method multi-method method user host)
     user host))
--- 5877,5884 ----
  (defun tramp-method-out-of-band-p (multi-method method user host)
    "Return t if this is an out-of-band method, nil otherwise.
  It is important to check for this condition, since it is not possible
! to enter a password for the `tramp-copy-program'."
!   (tramp-get-copy-program
     multi-method
     (tramp-find-method multi-method method user host)
     user host))
***************
*** 6072,6140 ****
                (error "Method `%s' didn't specify a remote shell"
                       (or multi-method method)))))
  
! (defun tramp-get-rsh-program (multi-method method user host)
!   (second (or (assoc 'tramp-rsh-program
                       (assoc (tramp-find-method multi-method method user host)
                              tramp-methods))
!               (error "Method `%s' didn't specify an rsh program"
                       (or multi-method method)))))
  
! (defun tramp-get-rsh-args (multi-method method user host)
!   (second (or (assoc 'tramp-rsh-args
                       (assoc (tramp-find-method multi-method method user host)
                              tramp-methods))
!               (error "Method `%s' didn't specify rsh args"
                       (or multi-method method)))))
  
! (defun tramp-get-rcp-program (multi-method method user host)
!   (second (or (assoc 'tramp-rcp-program
                       (assoc (tramp-find-method multi-method method user host)
                              tramp-methods))
!               (error "Method `%s' didn't specify an rcp program"
                       (or multi-method method)))))
  
! (defun tramp-get-rcp-args (multi-method method user host)
!   (second (or (assoc 'tramp-rcp-args
                       (assoc (tramp-find-method multi-method method user host)
                              tramp-methods))
!               (error "Method `%s' didn't specify rcp args"
                       (or multi-method method)))))
  
! (defun tramp-get-rcp-keep-date-arg (multi-method method user host)
!   (second (or (assoc 'tramp-rcp-keep-date-arg
                       (assoc (tramp-find-method multi-method method user host)
                              tramp-methods))
                (error "Method `%s' didn't specify `keep-date' arg for tramp"
                       (or multi-method method)))))
- 
- (defun tramp-get-su-program (multi-method method user host)
-   (second (or (assoc 'tramp-su-program
-                      (assoc (tramp-find-method multi-method method user host)
-                             tramp-methods))
-               (error "Method `%s' didn't specify a su program"
-                      (or multi-method method)))))
- 
- (defun tramp-get-su-args (multi-method method user host)
-   (second (or (assoc 'tramp-su-args
-                      (assoc (tramp-find-method multi-method method user host)
-                             tramp-methods))
-               (error "Method `%s' didn't specify su args"
-                      (or multi-method method)))))
- 
- (defun tramp-get-telnet-program (multi-method method user host)
-   (second (or (assoc 'tramp-telnet-program
-                      (assoc (tramp-find-method multi-method method user host)
-                             tramp-methods))
-               (error "Method `%s' didn't specify a telnet program"
-                      (or multi-method method)))))
- 
- (defun tramp-get-telnet-args (multi-method method user host)
-   (second (or (assoc 'tramp-telnet-args
-                      (assoc (tramp-find-method multi-method method user host)
-                             tramp-methods))
-               (error "Method `%s' didn't specify telnet args"
-                      (or multi-method method)))))
- 
  
  ;; Auto saving to a special directory.
  
--- 5976,6015 ----
                (error "Method `%s' didn't specify a remote shell"
                       (or multi-method method)))))
  
! (defun tramp-get-login-program (multi-method method user host)
!   (second (or (assoc 'tramp-login-program
                       (assoc (tramp-find-method multi-method method user host)
                              tramp-methods))
!               (error "Method `%s' didn't specify a login program"
                       (or multi-method method)))))
  
! (defun tramp-get-login-args (multi-method method user host)
!   (second (or (assoc 'tramp-login-args
                       (assoc (tramp-find-method multi-method method user host)
                              tramp-methods))
!               (error "Method `%s' didn't specify login args"
                       (or multi-method method)))))
  
! (defun tramp-get-copy-program (multi-method method user host)
!   (second (or (assoc 'tramp-copy-program
                       (assoc (tramp-find-method multi-method method user host)
                              tramp-methods))
!               (error "Method `%s' didn't specify a copy program"
                       (or multi-method method)))))
  
! (defun tramp-get-copy-args (multi-method method user host)
!   (second (or (assoc 'tramp-copy-args
                       (assoc (tramp-find-method multi-method method user host)
                              tramp-methods))
!               (error "Method `%s' didn't specify copy args"
                       (or multi-method method)))))
  
! (defun tramp-get-copy-keep-date-arg (multi-method method user host)
!   (second (or (assoc 'tramp-copy-keep-date-arg
                       (assoc (tramp-find-method multi-method method user host)
                              tramp-methods))
                (error "Method `%s' didn't specify `keep-date' arg for tramp"
                       (or multi-method method)))))
  
  ;; Auto saving to a special directory.
  




reply via email to

[Prev in Thread] Current Thread [Next in Thread]