1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-29 11:02:01 +00:00

* 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'.
This commit is contained in:
Kai Großjohann 2002-09-02 12:53:12 +00:00
parent 52698d459a
commit dba28077d3
2 changed files with 61 additions and 241 deletions

View File

@ -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.

View File

@ -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 @@ This variable defaults to CMD.EXE on Windows NT, and to the value of
(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 is used to map a mode number to a permission string.")
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 @@ if the remote host can't provide the modtime."
"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 @@ and `rename'. FILENAME and NEWNAME must be absolute file names."
;; 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 @@ This will break if COMMAND prints a newline, followed by the value of
(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 @@ necessary anymore."
(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 @@ necessary anymore."
(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 @@ Maybe the different regular expressions need to be tuned.
(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 @@ arguments, and xx will be used as the host name to connect to.
(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 @@ prompt than you do, so it is not at all unlikely that the variable
"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 @@ prompt than you do, so it is not at all unlikely that the variable
(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 @@ log in as u2 to h2."
(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 @@ If USER is nil, uses the return value of (user-login-name) instead."
(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 @@ If USER is nil, uses the return value of (user-login-name) instead."
(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 @@ character."
(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.