changeset 47205:8a2bf9dded0f

* net/tramp.el: Version 2.0.15 released. (require 'base64): Most modern Emacsen have the base64 encode/decode functions built in, so test to see if they are bound before we go blindly requiring base64.el. From Steve Youngs <youngs@xemacs.org>. (tramp-feature-write-region-fix): XEmacs doesn't have a 'find-operation-coding-system' and this variable doesn't seem to be used anywhere so wrap it in (unless (featurep 'xemacs)). From Steve Youngs <youngs@xemacs.org>. (tramp-methods): Remove duplicate definition of ssh1-old and ssh2-old. (tramp-open-connection-su): Use user name "root" if no user name is given. From Michael Albinus <Michael.Albinus@alcatel.de>: * net/tramp.el (tramp-invoke-ange-ftp): (tramp-ange-ftp-file-name-p): Check for Xemacs. (tramp-do-copy-or-rename-file): Don't pass KEEP-DATE to tramp-invoke-ange-ftp 'rename. (tramp-handle-write-region): Don't pass LOCKNAME and CONFIRM to tramp-invoke-ange-ftp 'write-region. (tramp-handle-set-file-modes): Change order of FILENAME and MODE passing to tramp-invoke-ange-ftp 'set-file-modes. (tramp-invoke-ange-ftp): `tramp-disable-ange-ftp' must be called again after activating `ange-ftp'.
author Kai Großjohann <kgrossjo@eu.uu.net>
date Mon, 02 Sep 2002 12:53:12 +0000
parents 539aabdebd62
children 49fb7a41adff
files lisp/ChangeLog lisp/net/tramp.el
diffstat 2 files changed, 61 insertions(+), 241 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Mon Sep 02 10:41:25 2002 +0000
+++ b/lisp/ChangeLog	Mon Sep 02 12:53:12 2002 +0000
@@ -1,3 +1,31 @@
+2002-09-02  Kai Gro,b_(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* net/tramp.el: Version 2.0.15 released.
+	(require 'base64): Most modern Emacsen have the base64
+	encode/decode functions built in, so test to see if they are bound
+	before we go blindly requiring base64.el.  From Steve Youngs
+	<youngs@xemacs.org>.
+	(tramp-feature-write-region-fix): XEmacs doesn't have a
+	'find-operation-coding-system' and this variable doesn't seem to
+	be used anywhere so wrap it in (unless (featurep 'xemacs)).  From
+	Steve Youngs <youngs@xemacs.org>.
+	(tramp-methods): Remove duplicate definition of ssh1-old and
+	ssh2-old.
+	(tramp-open-connection-su): Use user name "root" if no user name
+	is given.
+
+	From Michael Albinus <Michael.Albinus@alcatel.de>:
+	* net/tramp.el (tramp-invoke-ange-ftp):
+	(tramp-ange-ftp-file-name-p): Check for Xemacs.
+	(tramp-do-copy-or-rename-file): Don't pass KEEP-DATE to
+	tramp-invoke-ange-ftp 'rename.
+	(tramp-handle-write-region): Don't pass LOCKNAME and CONFIRM to
+	tramp-invoke-ange-ftp 'write-region.
+	(tramp-handle-set-file-modes): Change order of FILENAME and MODE
+	passing to tramp-invoke-ange-ftp 'set-file-modes.
+	(tramp-invoke-ange-ftp): `tramp-disable-ange-ftp' must be called
+	again after activating `ange-ftp'.
+	
 2002-09-02  Kim F. Storm  <storm@cua.dk>
 
 	* ido.el (ido-ignore-item-temp-list): New variable.
--- a/lisp/net/tramp.el	Mon Sep 02 10:41:25 2002 +0000
+++ b/lisp/net/tramp.el	Mon Sep 02 12:53:12 2002 +0000
@@ -1,4 +1,4 @@
-;;; tramp.el --- Transparent Remote Access, Multiple Protocol -*- coding: iso-8859-1; -*- 
+;;; tramp.el --- Transparent Remote Access, Multiple Protocol -*- coding: iso-8859-1; -*-
 
 ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
 
@@ -72,7 +72,7 @@
 ;; In the Tramp CVS repository, the version numer is auto-frobbed from
 ;; the Makefile, so you should edit the top-level Makefile to change
 ;; the version number.
-(defconst tramp-version "2.0.14"
+(defconst tramp-version "2.0.15"
   "This version of tramp.")
 
 (defconst tramp-bug-report-address "tramp-devel@mail.freesoftware.fsf.org"
@@ -80,7 +80,12 @@
 
 (require 'timer)
 (require 'format-spec)                  ;from Gnus 5.8, also in tar ball
-(require 'base64)                       ;for the mimencode methods
+;; The explicit check is not necessary in Emacs, which provides the
+;; feature even if implemented in C, but it appears to be necessary
+;; in XEmacs.
+(unless (and (fboundp 'base64-encode-region)
+	     (fboundp 'base64-decode-region))
+  (require 'base64))                       ;for the mimencode methods
 (require 'shell)
 (require 'advice)
 
@@ -317,30 +322,6 @@
               (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)
@@ -1414,10 +1395,13 @@
 This variable is buffer-local in every buffer.")
 (make-variable-buffer-local 'tramp-last-cmd-time)
 
+;; This variable does not have the right value in XEmacs.  What should
+;; I use instead of find-operation-coding-system in XEmacs?
 (defvar tramp-feature-write-region-fix
-  (let ((file-coding-system-alist '(("test" emacs-mule))))
-    (find-operation-coding-system 'write-region 0 0 "" nil "test"))
-  "Internal variable to say if `write-region' chooses the right coding.
+  (unless (featurep 'xemacs)
+    (let ((file-coding-system-alist '(("test" emacs-mule))))
+      (find-operation-coding-system 'write-region 0 0 "" nil "test")))
+    "Internal variable to say if `write-region' chooses the right coding.
 Older versions of Emacs chose the coding system for `write-region' based
 on the FILENAME argument, even if VISIT was a string.")
 
@@ -1975,7 +1959,7 @@
   "Like `set-file-modes' for tramp files."
   (with-parsed-tramp-file-name filename nil
     (when (tramp-ange-ftp-file-name-p multi-method method)
-      (tramp-invoke-ange-ftp 'set-file-modes filename mode))
+      (tramp-invoke-ange-ftp 'set-file-modes mode filename))
     (save-excursion
       (unless (zerop (tramp-send-command-and-check
 		      multi-method method user host
@@ -2374,9 +2358,11 @@
 	  ;; Possibly invoke Ange-FTP.
 	  (when (and (tramp-ange-ftp-file-name-p v1-multi-method v1-method)
 		     (tramp-ange-ftp-file-name-p v2-multi-method v2-method))
-	    (tramp-invoke-ange-ftp
-	     (if (eq op 'copy) 'copy-file 'rename-file)
-	     filename newname ok-if-already-exists keep-date))
+	    (if (eq op 'copy)
+		(tramp-invoke-ange-ftp
+		 'copy-file filename newname ok-if-already-exists keep-date)
+	      (tramp-invoke-ange-ftp
+	       'rename-file filename newname ok-if-already-exists)))
 	  ;; Check if we can use a shortcut.
 	  (if (and (equal v1-multi-method v2-multi-method)
 		   (equal v1-method v2-method)
@@ -2956,7 +2942,7 @@
   (with-parsed-tramp-file-name filename nil
     (when (tramp-ange-ftp-file-name-p multi-method method)
       (tramp-invoke-ange-ftp 'write-region
-			     start end filename append visit lockname confirm))
+			     start end filename append visit))
     (let ((curbuf (current-buffer))
 	  (rcp-program (tramp-get-rcp-program multi-method method))
 	  (rcp-args (tramp-get-rcp-args multi-method method))
@@ -3228,7 +3214,9 @@
 
 (defun tramp-invoke-ange-ftp (operation &rest args)
   "Invoke the Ange-FTP handler function and throw."
-  (or (boundp 'ange-ftp-name-format) (require 'ange-ftp))
+  (or (boundp 'ange-ftp-name-format)
+      (and (require 'ange-ftp)
+	   (tramp-disable-ange-ftp)))
   (let ((ange-ftp-name-format
 	 (list (nth 0 tramp-file-name-structure)
 	       (nth 3 tramp-file-name-structure)
@@ -3240,7 +3228,9 @@
 
 (defun tramp-ange-ftp-file-name-p (multi-method method)
   "Check if it's a filename that should be forwarded to Ange-FTP."
-  (and (null multi-method) (string= method tramp-ftp-method)))
+  (and (not (featurep 'xemacs))
+       (null multi-method)
+       (string= method tramp-ftp-method)))
 
 
 ;;; Interactions with other packages:
@@ -3836,42 +3826,6 @@
 	(erase-buffer)
 	(tramp-process-actions p multi-method method user host
 			       tramp-actions-before-shell)
-
-;;         (tramp-message 9 "Waiting for login prompt...")
-;;         (unless (tramp-wait-for-regexp p nil tramp-login-prompt-regexp)
-;;           (pop-to-buffer (buffer-name))
-;;           (kill-process p)
-;;           (error "Couldn't find remote login prompt"))
-;;         (erase-buffer)
-;;         ;; Remote login defaults to local one.
-;;         (tramp-message 9 "Sending login name %s" (or user (user-login-name)))
-;;         (process-send-string p (concat (or user (user-login-name)) 
-;;                                        tramp-rsh-end-of-line))
-;;         (tramp-message 9 "Waiting for password prompt...")
-;;         (unless (setq found (tramp-wait-for-regexp
-;;                              p nil tramp-password-prompt-regexp))
-;;           (pop-to-buffer (buffer-name))
-;;           (kill-process p)
-;;           (error "Couldn't find remote password prompt"))
-;;         (erase-buffer)
-;;         (setq pw (tramp-read-passwd (car found)))
-;;         (tramp-message 9 "Sending password")
-;;         (process-send-string p (concat pw tramp-rsh-end-of-line))
-;;         (tramp-message 9 "Waiting 30s for remote shell to come up...")
-;;         (unless (setq found
-;;                       (tramp-wait-for-regexp
-;;                        p 30 (format "\\(%s\\)\\|\\(%s\\)\\|\\(%s\\)\\'"
-;;                                     tramp-wrong-passwd-regexp
-;;                                     shell-prompt-pattern
-;;                                     tramp-shell-prompt-pattern)))
-;;           (pop-to-buffer (buffer-name))
-;;           (kill-process p)
-;;           (error "Couldn't find remote shell prompt"))
-;;         (when (nth 1 found)
-;;           (pop-to-buffer (buffer-name))
-;;           (kill-process p)
-;;           (error "Login failed: %s" (nth 1 found)))
-
         (tramp-open-connection-setup-interactive-shell
          p multi-method method user host)
         (tramp-post-connection multi-method method user host)))))
@@ -3936,45 +3890,6 @@
 	(set-buffer buf)
 	(tramp-process-actions p multi-method method user host
 			       tramp-actions-before-shell)
-
-;;         (tramp-message 9 "Waiting 60s for shell or passwd prompt from %s" host)
-;;         (setq found
-;;               (tramp-wait-for-regexp
-;;                p 60
-;;                (format
-;;                 "\\(%s\\)\\|\\(%s\\)\\|\\(%s\\)\\'"
-;;                 tramp-password-prompt-regexp
-;;                 shell-prompt-pattern tramp-shell-prompt-pattern)))
-;;         (unless found
-;;           (pop-to-buffer (buffer-name))
-;;           (kill-process p)
-;;           (error "Couldn't find remote shell or passwd prompt"))
-;;         (when (nth 1 found)
-;;           (when (tramp-method-out-of-band-p multi-method method)
-;;             (pop-to-buffer (buffer-name))
-;;             (kill-process p)
-;;             (error (concat "Out of band method `%s' not applicable"
-;;                            " for remote shell asking for a password")
-;;                    method))
-;;           (erase-buffer)
-;;           (tramp-message 9 "Sending password...")
-;;           (tramp-enter-password p (nth 1 found))
-;;           (tramp-message 9 "Sent password, waiting 60s for remote shell prompt")
-;;           (setq found (tramp-wait-for-regexp
-;;                        p 60
-;;                        (format "\\(%s\\)\\|\\(%s\\)\\|\\(%s\\)\\'"
-;;                                tramp-wrong-passwd-regexp
-;;                                shell-prompt-pattern
-;;                                tramp-shell-prompt-pattern))))
-;;         (unless found
-;;           (pop-to-buffer (buffer-name))
-;;           (kill-process p)
-;;           (error "Couldn't find remote shell prompt"))
-;;         (when (nth 1 found)
-;;           (pop-to-buffer (buffer-name))
-;;           (kill-process p)
-;;           (error "Login failed: %s" (nth 1 found)))
-
         (tramp-message 7 "Initializing remote shell")
         (tramp-open-connection-setup-interactive-shell
          p multi-method method user host)
@@ -4003,10 +3918,9 @@
        "Cannot connect to different host `%s' with `su' connection method"
        host))
     (when (not user)
-      (error "Must give user name for `su' connection method"))
+      (setq user "root"))
     (tramp-pre-connection multi-method method user host)
-    (tramp-message 7 "Opening connection for `%s' using `%s'..." 
-		   (or user (user-login-name)) method)
+    (tramp-message 7 "Opening connection for `%s' using `%s'..." user method)
     (let ((process-environment (copy-sequence process-environment)))
       (setenv "TERM" tramp-terminal-type)
       (let* ((default-directory (tramp-temporary-file-directory))
@@ -4027,37 +3941,6 @@
 	(set-buffer (tramp-get-buffer multi-method method user host))
 	(tramp-process-actions p multi-method method user host
 			       tramp-actions-before-shell)
-
-;;         (tramp-message 9 "Waiting 30s for shell or password prompt...")
-;;         (unless (setq found (tramp-wait-for-regexp
-;;                              p 30
-;;                              (format "\\(%s\\)\\|\\(%s\\)\\|\\(%s\\)\\'"
-;;                                      tramp-password-prompt-regexp
-;;                                      shell-prompt-pattern
-;;                                      tramp-shell-prompt-pattern)))
-;;           (pop-to-buffer (buffer-name))
-;;           (kill-process p)
-;;           (error "Couldn't find shell or password prompt"))
-;;         (when (nth 1 found)
-;;           (erase-buffer)
-;;           (setq pw (tramp-read-passwd (car found)))
-;;           (tramp-message 9 "Sending password")
-;;           (process-send-string p (concat pw tramp-rsh-end-of-line))
-;;           (tramp-message 9 "Waiting 30s for remote shell to come up...")
-;;           (unless (setq found
-;;                         (tramp-wait-for-regexp
-;;                          p 30 (format "\\(%s\\)\\|\\(%s\\)\\|\\(%s\\)\\'"
-;;                                       tramp-wrong-passwd-regexp
-;;                                       shell-prompt-pattern
-;;                                       tramp-shell-prompt-pattern)))
-;;             (pop-to-buffer (buffer-name))
-;;             (kill-process p)
-;;             (error "Couldn't find remote shell prompt"))
-;;           (when (nth 1 found)
-;;             (pop-to-buffer (buffer-name))
-;;             (kill-process p)
-;;             (error "`su' failed: %s" (nth 1 found))))
-
         (tramp-open-connection-setup-interactive-shell
          p multi-method method user host)
         (tramp-post-connection multi-method method 
@@ -4120,7 +4003,7 @@
                  (entry (assoc m tramp-multi-connection-function-alist))
                  (multi-func (nth 1 entry))
                  (command (nth 2 entry)))
-          ;; The multi-funcs don't need to do save-match-data, as that
+	    ;; The multi-funcs don't need to do save-match-data, as that
             ;; is done here.
             (funcall multi-func p m u h command)
             (erase-buffer)
@@ -4150,40 +4033,7 @@
     (tramp-message 9 "Sending telnet command `%s'" cmd1)
     (process-send-string p cmd)
     (tramp-process-multi-actions p method user host
-				 tramp-multi-actions)
-
-;;     (tramp-message 9 "Waiting 30s for login prompt from %s" host)
-;;     (unless (tramp-wait-for-regexp p 30 tramp-login-prompt-regexp)
-;;       (pop-to-buffer (buffer-name))
-;;       (kill-process p)
-;;       (error "Couldn't find login prompt from host %s" host))
-;;     (erase-buffer)
-;;     (tramp-message 9 "Sending login name %s" (or user (user-login-name)))
-;;     (process-send-string p (concat (or user (user-login-name)) tramp-rsh-end-of-line))
-;;     (tramp-message 9 "Waiting for password prompt")
-;;     (unless (setq found (tramp-wait-for-regexp p nil tramp-password-prompt-regexp))
-;;       (pop-to-buffer (buffer-name))
-;;       (kill-process p)
-;;       (error "Couldn't find password prompt from host %s" host))
-;;     (erase-buffer)
-;;     (setq pw (tramp-read-passwd
-;;               (format "Password for %s@%s, %s" (or user (user-login-name)) host found)))
-;;     (tramp-message 9 "Sending password")
-;;     (process-send-string p (concat pw tramp-rsh-end-of-line))
-;;     (tramp-message 9 "Waiting 60s for remote shell to come up...")
-;;     (unless (setq found (tramp-wait-for-regexp
-;;                          p 60 (format "\\(%s\\)\\|\\(%s\\)\\|\\(%s\\)\\'"
-;;                                       tramp-wrong-passwd-regexp
-;;                                       shell-prompt-pattern
-;;                                       tramp-shell-prompt-pattern)))
-;;       (pop-to-buffer (buffer-name))
-;;       (kill-process p)
-;;       (error "Couldn't find shell prompt from host %s" host))
-;;     (when (nth 1 found)
-;;       (pop-to-buffer (buffer-name))
-;;       (kill-process p)
-;;       (error "Login to %s failed: %s" (nth 2 found)))
-    ))
+				 tramp-multi-actions)))
 
 ;; HHH: Changed.  Multi method.  Don't know how to handle this in the case 
 ;;      of no user name provided.  Hack to make it work as it did before:  
@@ -4209,36 +4059,7 @@
     (tramp-message 9 "Sending rlogin command `%s'" cmd1)
     (process-send-string p cmd)
     (tramp-process-multi-actions p method user host
-				 tramp-multi-actions)
-;;     (tramp-message 9 "Waiting 60s for shell or passwd prompt from %s" host)
-;;     (unless (setq found
-;;                   (tramp-wait-for-regexp p 60
-;;                                        (format "\\(%s\\)\\|\\(%s\\)\\|\\(%s\\)\\'"
-;;                                                tramp-password-prompt-regexp
-;;                                                shell-prompt-pattern
-;;                                                tramp-shell-prompt-pattern)))
-;;       (pop-to-buffer (buffer-name))
-;;       (kill-process p)
-;;       (error "Couldn't find remote shell or passwd prompt"))
-;;     (when (nth 1 found)
-;;       (erase-buffer)
-;;       (tramp-message 9 "Sending password...")
-;;       (tramp-enter-password p (nth 1 found))
-;;       (tramp-message 9 "Sent password, waiting 60s for remote shell prompt")
-;;       (setq found (tramp-wait-for-regexp p 60
-;;                                          (format "\\(%s\\)\\|\\(%s\\)\\|\\(%s\\)\\'"
-;;                                                  tramp-wrong-passwd-regexp
-;;                                                  shell-prompt-pattern
-;;                                                  tramp-shell-prompt-pattern))))
-;;     (unless found
-;;       (pop-to-buffer (buffer-name))
-;;       (kill-process p)
-;;       (error "Couldn't find remote shell prompt"))
-;;     (when (nth 1 found)
-;;       (pop-to-buffer (buffer-name))
-;;       (kill-process p)
-;;       (error "Login failed: %s" (nth 1 found)))
-    ))
+				 tramp-multi-actions)))
 
 ;; HHH: Changed.  Multi method.  Don't know how to handle this in the case 
 ;;      of no user name provided.  Hack to make it work as it did before:  
@@ -4265,36 +4086,7 @@
     (tramp-message 9 "Sending su command `%s'" cmd1)
     (process-send-string p cmd)
     (tramp-process-multi-actions p method user host
-				 tramp-multi-actions)
-;;     (tramp-message 9 "Waiting 60s for shell or passwd prompt for %s" (or user (user-login-name)))
-;;     (unless (setq found (tramp-wait-for-regexp
-;;                          p 60 (format "\\(%s\\)\\|\\(%s\\)\\|\\(%s\\)\\'"
-;;                                       tramp-password-prompt-regexp
-;;                                       shell-prompt-pattern
-;;                                       tramp-shell-prompt-pattern)))
-;;       (pop-to-buffer (buffer-name))
-;;       (kill-process p)
-;;       (error "Couldn't find shell or passwd prompt for %s" 
-;; 	     (or user (user-login-name))))
-;;     (when (nth 1 found)
-;;       (tramp-message 9 "Sending password...")
-;;       (tramp-enter-password p (nth 1 found))
-;;       (erase-buffer)
-;;       (tramp-message 9 "Sent password, waiting 60s for remote shell prompt")
-;;       (setq found (tramp-wait-for-regexp p 60
-;;                                        (format "\\(%s\\)\\|\\(%s\\)\\|\\(%s\\)\\'"
-;;                                                tramp-wrong-passwd-regexp
-;;                                                shell-prompt-pattern
-;;                                                tramp-shell-prompt-pattern))))
-;;     (unless found
-;;       (pop-to-buffer (buffer-name))
-;;       (kill-process p)
-;;       (error "Couldn't find remote shell prompt"))
-;;     (when (nth 1 found)
-;;       (pop-to-buffer (buffer-name))
-;;       (kill-process p)
-;;       (error "Login failed: %s" (nth 1 found)))
-    ))
+				 tramp-multi-actions)))
 
 ;; Utility functions.