Sync with Tramp 2.0.52.

This commit is contained in:
Michael Albinus 2006-01-22 21:59:55 +00:00
parent 6e36b4ff39
commit a69c01a0b7
9 changed files with 343 additions and 122 deletions

View file

@ -1,3 +1,45 @@
2006-01-22 Michael Albinus <michael.albinus@gmx.de>
Sync with Tramp 2.0.52.
* net/tramp.el, net/tramp-ftp.el, net/tramp-util.el,
net/tramp-vc.el: Add code for unloading Tramp. See comment before
`tramp-unload-tramp' for checklist.
* net/tramp.el: Require `timer-funcs' instead of `timer' if in
XEmacs. Contributed by Steve Youngs <steve@sxemacs.org>.
(tramp-unload-file-name-handler-alist)
(tramp-unload-tramp): New defuns.
(tramp-advice-PC-expand-many-files): New defadvice.
(tramp-save-PC-expand-many-files, tramp-setup-complete) Defuns
removed.
(tramp-handle-expand-file-name): Remove double slash.
(tramp-handle-file-attributes-with-ls): Return t as 9th attribute.
It doesn't matter, because it will be converted later on.
(tramp-handle-file-ownership-preserved-p): Rewritten. The old
implementation was just heuristic.
(tramp-post-connection): Set uid and gid properties.
(tramp-convert-file-attributes): Set file's gid change bit.
(tramp-get-remote-uid, tramp-get-remote-gid): New defuns.
(tramp-handle-expand-file-name): Use "~root" for tilde expansion
in case of su(do)? methods. The home directory of the local user
will be taken else.
(tramp-open-connection-telnet)
(tramp-open-connection-rsh, tramp-open-connection-su)
(tramp-open-connection-multi): Set PS1 to "$ ". Otherwise, a
local shell prompt could hurt. Reported by Romain Francoise
<romain@orebokech.com>.
(tramp-let-maybe): Add `edebug-form-spec' property.
(tramp-handle-expand-file-name): Bind `default-directory' locally
to "/" in order to avoid problems with UNC shares or Cygwin
mounts.
(tramp-md5-function): Fix typo in error message.
* net/tramp-ftp.el (tramp-ftp-enable-ange-ftp): New defun.
* net/tramp-util.el (top): Apply `ignore' instead of `identity'
for byte-compiler pacification.
2006-01-22 Andre Spiegel <spiegel@gnu.org>
* vc-rcs.el (vc-rcs-state-heuristic): Use file-attributes with

View file

@ -1,6 +1,6 @@
;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP -*- coding: iso-8859-1; -*-
;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
;; Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
;; Author: Michael Albinus <michael.albinus@gmx.de>
;; Keywords: comm, processes
@ -63,8 +63,40 @@ present for backward compatibility."
(a2 (rassq 'ange-ftp-completion-hook-function file-name-handler-alist)))
(setq file-name-handler-alist
(delete a1 (delete a2 file-name-handler-alist)))))
(tramp-disable-ange-ftp)
(eval-after-load "ange-ftp" '(tramp-disable-ange-ftp))
(eval-after-load "ange-ftp"
'(when (functionp 'tramp-disable-ange-ftp)
(tramp-disable-ange-ftp)))
;;;###autoload
(defun tramp-ftp-enable-ange-ftp ()
;; The following code is commented out in Ange-FTP.
;;; This regexp takes care of real ange-ftp file names (with a slash
;;; and colon).
;;; Don't allow the host name to end in a period--some systems use /.:
(or (assoc "^/[^/:]*[^/:.]:" file-name-handler-alist)
(setq file-name-handler-alist
(cons '("^/[^/:]*[^/:.]:" . ange-ftp-hook-function)
file-name-handler-alist)))
;;; This regexp recognizes absolute filenames with only one component,
;;; for the sake of hostname completion.
(or (assoc "^/[^/:]*\\'" file-name-handler-alist)
(setq file-name-handler-alist
(cons '("^/[^/:]*\\'" . ange-ftp-completion-hook-function)
file-name-handler-alist)))
;;; This regexp recognizes absolute filenames with only one component
;;; on Windows, for the sake of hostname completion.
(and (memq system-type '(ms-dos windows-nt))
(or (assoc "^[a-zA-Z]:/[^/:]*\\'" file-name-handler-alist)
(setq file-name-handler-alist
(cons '("^[a-zA-Z]:/[^/:]*\\'" .
ange-ftp-completion-hook-function)
file-name-handler-alist)))))
(add-hook 'tramp-ftp-unload-hook 'tramp-ftp-enable-ange-ftp)
;; Define FTP method ...
(defcustom tramp-ftp-method "ftp"

View file

@ -1,7 +1,8 @@
;;; -*- coding: iso-2022-7bit; -*-
;;; tramp-util.el --- Misc utility functions to use with Tramp
;; Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
;; Copyright (C) 2001, 2002, 2003, 2004, 2005,
;; 2006 Free Software Foundation, Inc.
;; Author: kai.grossjohann@gmx.net
;; Keywords: comm, extensions, processes
@ -31,6 +32,10 @@
(eval-when-compile (require 'cl))
(require 'compile)
(require 'tramp)
(add-hook 'tramp-util-unload-hook
'(lambda ()
(when (featurep 'tramp)
(unload-feature 'tramp 'force))))
;; Define a Tramp minor mode. It's intention is to redefine some keys for Tramp
;; specific functions, like compilation.
@ -42,7 +47,7 @@
(defalias 'define-minor-mode 'identity)
(defvar tramp-minor-mode))
(unless (featurep 'xemacs)
(defalias 'add-menu-button 'identity)))
(defalias 'add-menu-button 'ignore)))
(defvar tramp-minor-mode-map (make-sparse-keymap)
"Keymap for Tramp minor mode.")
@ -57,7 +62,14 @@
(and tramp-minor-mode (tramp-tramp-file-p default-directory))))
(add-hook 'find-file-hooks 'tramp-minor-mode t)
(add-hook 'tramp-util-unload-hook
'(lambda ()
(remove-hook 'find-file-hooks 'tramp-minor-mode)))
(add-hook 'dired-mode-hook 'tramp-minor-mode t)
(add-hook 'tramp-util-unload-hook
'(lambda ()
(remove-hook 'dired-mode-hook 'tramp-minor-mode)))
(defun tramp-remap-command (old-command new-command)
"Replaces bindings of OLD-COMMAND by NEW-COMMAND.

View file

@ -1,7 +1,7 @@
;;; tramp-vc.el --- Version control integration for TRAMP.el
;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
;; 2005 Free Software Foundation, Inc.
;; 2005, 2006 Free Software Foundation, Inc.
;; Author: Daniel Pittman <daniel@danann.net>
;; Keywords: comm, processes
@ -220,34 +220,37 @@ Since TRAMP doesn't do async commands yet, this function doesn't, either."
;; Daniel Pittman <daniel@danann.net>
;;-(if (fboundp 'vc-call-backend)
;;- () ;; This is the new VC for which we don't have an appropriate advice yet
;;-)
(unless (fboundp 'process-file)
(if (fboundp 'vc-call-backend)
(if (fboundp 'vc-call-backend)
(defadvice vc-do-command
(around tramp-advice-vc-do-command
(buffer okstatus command file &rest flags)
activate)
"Invoke tramp-vc-do-command for tramp files."
(let ((file (symbol-value 'file))) ;pacify byte-compiler
(if (or (and (stringp file) (tramp-tramp-file-p file))
(and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
(setq ad-return-value
(apply 'tramp-vc-do-command-new buffer okstatus command
file ;(or file (buffer-file-name))
flags))
ad-do-it)))
(defadvice vc-do-command
(around tramp-advice-vc-do-command
(buffer okstatus command file &rest flags)
activate)
(buffer okstatus command file last &rest flags)
activate)
"Invoke tramp-vc-do-command for tramp files."
(let ((file (symbol-value 'file))) ;pacify byte-compiler
(if (or (and (stringp file) (tramp-tramp-file-p file))
(and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
(setq ad-return-value
(apply 'tramp-vc-do-command-new buffer okstatus command
file ;(or file (buffer-file-name))
flags))
ad-do-it)))
(defadvice vc-do-command
(around tramp-advice-vc-do-command
(buffer okstatus command file last &rest flags)
activate)
"Invoke tramp-vc-do-command for tramp files."
(let ((file (symbol-value 'file))) ;pacify byte-compiler
(if (or (and (stringp file) (tramp-tramp-file-p file))
(and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
(setq ad-return-value
(apply 'tramp-vc-do-command buffer okstatus command
(or file (buffer-file-name)) last flags))
ad-do-it)))))
;;-)
(let ((file (symbol-value 'file))) ;pacify byte-compiler
(if (or (and (stringp file) (tramp-tramp-file-p file))
(and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
(setq ad-return-value
(apply 'tramp-vc-do-command buffer okstatus command
(or file (buffer-file-name)) last flags))
ad-do-it))))
(add-hook 'tramp-unload-hook
'(lambda () (ad-unadvise 'vc-do-command))))
;; XEmacs uses this to do some of its work. Like vc-do-command, we
@ -324,6 +327,9 @@ Since TRAMP doesn't do async commands yet, this function doesn't, either."
(or file (buffer-file-name)) args))
ad-do-it)))
(add-hook 'tramp-unload-hook
'(lambda () (ad-unadvise 'vc-simple-command)))
;; `vc-workfile-unchanged-p'
;; This function does not deal well with remote files, so we do the
@ -364,6 +370,9 @@ Since TRAMP doesn't do async commands yet, this function doesn't, either."
(tramp-vc-workfile-unchanged-p filename want-differences-if-changed))
ad-do-it))
(add-hook 'tramp-unload-hook
'(lambda () (ad-unadvise 'vc-workfile-unchanged-p)))
;; Redefine a function from vc.el -- allow tramp files.
;; `save-match-data' seems not to be required -- it isn't in
@ -445,6 +454,9 @@ filename we are thinking about..."
(tramp-handle-vc-user-login-name uid)))) ; get the owner name
ad-do-it))) ; else call the original
(add-hook 'tramp-unload-hook
'(lambda () (ad-unadvise 'vc-user-login-name)))
;; Determine the name of the user owning a file.
(defun tramp-file-owner (filename)
@ -486,6 +498,9 @@ filename we are thinking about..."
(tramp-file-owner filename)))) ; get the owner name
ad-do-it))) ; else call the original
(add-hook 'tramp-unload-hook
'(lambda () (ad-unadvise 'vc-file-owner)))
;; We need to make the version control software backend version
;; information local to the current buffer. This is because each TRAMP
@ -506,7 +521,11 @@ This makes remote VC work correctly at the cost of some processing time."
(tramp-tramp-file-p (buffer-file-name)))
(make-local-variable 'vc-rcs-release)
(setq vc-rcs-release nil)))
(add-hook 'find-file-hooks 'tramp-vc-setup-for-remote t)
(add-hook 'tramp-unload-hook
'(lambda ()
(remove-hook 'find-file-hooks 'tramp-vc-setup-for-remote)))
;; No need to load this again if anyone asks.
(provide 'tramp-vc)

View file

@ -2,7 +2,7 @@
;;; tramp.el --- Transparent Remote Access, Multiple Protocol
;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
;; 2005 Free Software Foundation, Inc.
;; 2005, 2006 Free Software Foundation, Inc.
;; Author: Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net>
;; Michael Albinus <michael.albinus@gmx.de>
@ -67,8 +67,15 @@
;; The Tramp version number and bug report address, as prepared by configure.
(require 'trampver)
(add-hook 'tramp-unload-hook
'(lambda ()
(when (featurep 'trampver)
(unload-feature 'trampver 'force))))
(if (featurep 'xemacs)
(require 'timer-funcs)
(require 'timer))
(require 'timer)
(require 'format-spec) ;from Gnus 5.8, also in tar ball
;; As long as password.el is not part of (X)Emacs, it shouldn't
;; be mandatory
@ -87,6 +94,10 @@
(autoload 'tramp-uuencode-region "tramp-uu"
"Implementation of `uuencode' in Lisp.")
(add-hook 'tramp-unload-hook
'(lambda ()
(when (featurep 'tramp-uu)
(unload-feature 'tramp-uu 'force))))
(unless (fboundp 'uudecode-decode-region)
(autoload 'uudecode-decode-region "uudecode"))
@ -110,10 +121,20 @@ Nil means to use a separate filename syntax for Tramp.")
;; tramp-ftp supports Ange-FTP only. Not suited for XEmacs therefore.
(unless (featurep 'xemacs)
(eval-after-load "tramp"
'(require 'tramp-ftp)))
'(progn
(require 'tramp-ftp)
(add-hook 'tramp-unload-hook
'(lambda ()
(when (featurep 'tramp-ftp)
(unload-feature 'tramp-ftp 'force)))))))
(when (and tramp-unified-filenames (featurep 'xemacs))
(eval-after-load "tramp"
'(require 'tramp-efs)))
'(progn
(require 'tramp-efs)
(add-hook 'tramp-unload-hook
'(lambda ()
(when (featurep 'tramp-efs)
(unload-feature 'tramp-efs 'force)))))))
;; tramp-smb uses "smbclient" from Samba.
;; Not available under Cygwin and Windows, because they don't offer
@ -121,7 +142,12 @@ Nil means to use a separate filename syntax for Tramp.")
;; UNC file names like "//host/share/localname".
(unless (memq system-type '(cygwin windows-nt))
(eval-after-load "tramp"
'(require 'tramp-smb)))
'(progn
(require 'tramp-smb)
(add-hook 'tramp-unload-hook
'(lambda ()
(when (featurep 'tramp-smb)
(unload-feature 'tramp-smb 'force)))))))
(eval-when-compile
(require 'cl)
@ -1445,7 +1471,7 @@ the visited file modtime.")
((fboundp 'md5-encode)
(lambda (x) (base64-encode-string
(funcall (symbol-function 'md5-encode) x))))
(t (error "Coulnd't find an `md5' function")))
(t (error "Couldn't find an `md5' function")))
"Function to call for running the MD5 algorithm.")
(defvar tramp-end-of-output
@ -2012,6 +2038,7 @@ The intent is to protect against `obsolete variable' warnings."
(let ((,variable ,value))
,@body)))
(put 'tramp-let-maybe 'lisp-indent-function 2)
(put 'tramp-let-maybe 'edebug-form-spec t)
;;; Config Manipulation Functions:
@ -2370,8 +2397,8 @@ target of the symlink differ."
;; 8. File modes, as a string of ten letters or dashes as in ls -l.
res-filemodes
;; 9. t iff file's gid would change if file were deleted and
;; recreated.
nil ;hm?
;; recreated. Will be set in `tramp-convert-file-attributes'
t
;; 10. inode number.
res-inode
;; 11. Device number. Will be replaced by a virtual device number.
@ -2627,9 +2654,12 @@ of."
(defun tramp-handle-file-ownership-preserved-p (filename)
"Like `file-ownership-preserved-p' for tramp files."
(with-parsed-tramp-file-name filename nil
(or (not (file-exists-p filename))
;; Existing files must be writable.
(zerop (tramp-run-test "-O" filename)))))
(let ((attributes (file-attributes filename)))
;; Return t if the file doesn't exist, since it's true that no
;; information would be lost by an (attempted) delete and create.
(or (null attributes)
(= (nth 2 attributes)
(tramp-get-remote-uid multi-method method user host))))))
;; Other file name ops.
@ -3487,6 +3517,17 @@ the result will be a local, non-Tramp, filename."
(when (string-match "\\`\\(~[^/]*\\)\\(.*\\)\\'" localname)
(let ((uname (match-string 1 localname))
(fname (match-string 2 localname)))
;; We cannot simply apply "~/", because under sudo "~/" is
;; expanded to the local user home directory but to the
;; root home directory. On the other hand, using always
;; the default user name for tilde expansion is not
;; appropriate either, because ssh and companions might
;; use a user name from the config file.
(when (and (string-equal uname "~")
(string-match
"\\`su\\(do\\)?\\'"
(tramp-find-method multi-method method user host)))
(setq uname (concat uname (or user "root"))))
;; CCC fanatic error checking?
(set-buffer (tramp-get-buffer multi-method method user host))
(erase-buffer)
@ -3499,17 +3540,24 @@ the result will be a local, non-Tramp, filename."
(setq uname (buffer-substring (point) (tramp-line-end-position)))
(setq localname (concat uname fname))
(erase-buffer)))
;; There might be a double slash, for example when "~/"
;; expands to "/". Remove this.
(while (string-match "//" localname)
(setq localname (replace-match "/" t t localname)))
;; No tilde characters in file name, do normal
;; expand-file-name (this does "/./" and "/../"). We bind
;; directory-sep-char here for XEmacs on Windows, which
;; would otherwise use backslash.
;; directory-sep-char here for XEmacs on Windows, which would
;; otherwise use backslash. `default-directory' is bound to
;; "/", because on Windows there would be problems with UNC
;; shares or Cygwin mounts.
(tramp-let-maybe 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)))))))))
(let ((default-directory "/"))
(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))))))))))
;; old version follows. it uses ".." to cross file handler
;; boundaries.
@ -4294,6 +4342,17 @@ Falls back to normal file name handler if no tramp file name handler exists."
(cons tramp-completion-file-name-regexp
'tramp-completion-file-name-handler))
;;;###autoload
(defun tramp-unload-file-name-handler-alist ()
(setq file-name-handler-alist
(delete (rassoc 'tramp-file-name-handler
file-name-handler-alist)
(delete (rassoc 'tramp-completion-file-name-handler
file-name-handler-alist)
file-name-handler-alist))))
(add-hook 'tramp-unload-hook 'tramp-unload-file-name-handler-alist)
(defun tramp-repair-jka-compr ()
"If jka-compr is already loaded, move it to the front of
`file-name-handler-alist'. On Emacs 22 or so this will not be
@ -4353,22 +4412,16 @@ necessary anymore."
(read (current-buffer))))))
(list (expand-file-name name))))))
;; Check for complete.el and override PC-expand-many-files if appropriate.
(eval-and-compile
(defun tramp-save-PC-expand-many-files (name))); avoid compiler warning
(defun tramp-setup-complete ()
(fset 'tramp-save-PC-expand-many-files
(symbol-function 'PC-expand-many-files))
(defun PC-expand-many-files (name)
(if (tramp-tramp-file-p name)
(funcall (symbol-function 'expand-many-files) name)
(tramp-save-PC-expand-many-files name))))
;; Why isn't eval-after-load sufficient?
(if (fboundp 'PC-expand-many-files)
(tramp-setup-complete)
(eval-after-load "complete" '(tramp-setup-complete)))
(eval-after-load "complete"
'(progn
(defadvice PC-expand-many-files
(around tramp-advice-PC-expand-many-files (name) activate)
"Invoke `tramp-handle-expand-many-files' for tramp files."
(if (tramp-tramp-file-p name)
(setq ad-return-value (tramp-handle-expand-many-files name))
ad-do-it))
(add-hook 'tramp-unload-hook
'(lambda () (ad-unadvise 'PC-expand-many-files)))))
;;; File name handler functions for completion mode
@ -4940,6 +4993,9 @@ Function may have 0-3 parameters."
auto-save-default)
(auto-save-mode 1)))
(add-hook 'find-file-hooks 'tramp-set-auto-save t)
(add-hook 'tramp-unload-hook
'(lambda ()
(remove-hook 'find-file-hooks 'tramp-set-auto-save)))
(defun tramp-run-test (switch filename)
"Run `test' on the remote system, given a SWITCH and a FILENAME.
@ -5532,6 +5588,7 @@ Maybe the different regular expressions need to be tuned.
(or user (user-login-name)) host method)
(let ((process-environment (copy-sequence process-environment)))
(setenv "TERM" tramp-terminal-type)
(setenv "PS1" "$ ")
(let* ((default-directory (tramp-temporary-file-directory))
;; If we omit the conditional here, then we would use
;; `undecided-dos' in some cases. With the conditional,
@ -5608,6 +5665,7 @@ arguments, and xx will be used as the host name to connect to.
(setq login-args (cons "-p" (cons (match-string 2 host) login-args)))
(setq real-host (match-string 1 host)))
(setenv "TERM" tramp-terminal-type)
(setenv "PS1" "$ ")
(let* ((default-directory (tramp-temporary-file-directory))
;; If we omit the conditional, we would use
;; `undecided-dos' in some cases. With the conditional,
@ -5659,6 +5717,7 @@ prompt than you do, so it is not at all unlikely that the variable
(or user "<root>") method)
(let ((process-environment (copy-sequence process-environment)))
(setenv "TERM" tramp-terminal-type)
(setenv "PS1" "$ ")
(let* ((default-directory (tramp-temporary-file-directory))
;; If we omit the conditional, we use `undecided-dos' in
;; some cases. With the conditional, we use nil in these
@ -5723,6 +5782,7 @@ log in as u2 to h2."
(tramp-message 7 "Opening `%s' connection..." multi-method)
(let ((process-environment (copy-sequence process-environment)))
(setenv "TERM" tramp-terminal-type)
(setenv "PS1" "$ ")
(let* ((default-directory (tramp-temporary-file-directory))
;; If we omit the conditional, we use `undecided-dos' in
;; some cases. With the conditional, we use nil in these
@ -6203,8 +6263,17 @@ locale to C and sets up the remote shell search path."
"ln" tramp-remote-path nil)))
(when ln
(tramp-set-connection-property "ln" ln multi-method method user host)))
;; Set uid and gid.
(erase-buffer)
(tramp-send-command multi-method method user host "id -u; id -g")
(tramp-wait-for-output)
(goto-char (point-min))
(tramp-set-connection-property
"uid" (read (current-buffer)) multi-method method user host)
(tramp-set-connection-property
"gid" (read (current-buffer)) multi-method method user host)
;; Find the right encoding/decoding commands to use.
(erase-buffer)
(unless (tramp-method-out-of-band-p multi-method method user host)
(tramp-find-inline-encoding multi-method method user host))
;; If encoding/decoding command are given, test to see if they work.
@ -6700,6 +6769,10 @@ Return ATTR."
(unless (stringp (nth 8 attr))
;; Convert file mode bits to string.
(setcar (nthcdr 8 attr) (tramp-file-mode-from-int (nth 8 attr))))
;; Set file's gid change bit.
(setcar (nthcdr 9 attr)
(not (= (nth 3 attr)
(tramp-get-remote-gid multi-method method user host))))
;; Set virtual device number.
(setcar (nthcdr 11 attr)
(tramp-get-device multi-method method user host))
@ -6957,6 +7030,12 @@ If both MULTI-METHOD and METHOD are nil, do a lookup in
(defun tramp-get-remote-ln (multi-method method user host)
(tramp-get-connection-property "ln" nil multi-method method user host))
(defun tramp-get-remote-uid (multi-method method user host)
(tramp-get-connection-property "uid" nil multi-method method user host))
(defun tramp-get-remote-gid (multi-method method user host)
(tramp-get-connection-property "gid" nil multi-method method user host))
;; Get a property of a TRAMP connection.
(defun tramp-get-connection-property
(property default multi-method method user host)
@ -6967,7 +7046,7 @@ If the value is not set for the connection, return `default'"
(let (error)
(condition-case nil
(symbol-value (intern (concat "tramp-connection-property-" property)))
(error default)))))
(error default)))))
;; Set a property of a TRAMP connection.
(defun tramp-set-connection-property
@ -7045,7 +7124,9 @@ as default."
"Invoke `tramp-handle-make-auto-save-file-name' for tramp files."
(if (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name)))
(setq ad-return-value (tramp-handle-make-auto-save-file-name))
ad-do-it)))
ad-do-it))
(add-hook 'tramp-unload-hook
'(lambda () (ad-unadvise 'make-auto-save-file-name))))
;; In Emacs < 22 and XEmacs < 21.5 autosaved remote files have
;; permission 0666 minus umask. This is a security threat.
@ -7069,7 +7150,10 @@ as default."
(and (featurep 'xemacs)
(= emacs-major-version 21)
(> emacs-minor-version 4)))
(add-hook 'auto-save-hook 'tramp-set-auto-save-file-modes))
(add-hook 'auto-save-hook 'tramp-set-auto-save-file-modes)
(add-hook 'tramp-unload-hook
'(lambda ()
(remove-hook 'auto-save-hook 'tramp-set-auto-save-file-modes))))
(defun tramp-subst-strs-in-string (alist string)
"Replace all occurrences of the string FROM with TO in STRING.
@ -7296,7 +7380,9 @@ Only works for Bourne-like shells."
(setq ad-return-value (list name))))
;; If it is not a Tramp file, just run the original function.
(let ((res ad-do-it))
(setq ad-return-value (or res (list name))))))))
(setq ad-return-value (or res (list name)))))))
(add-hook 'tramp-unload-hook
'(lambda () (ad-unadvise 'file-expand-wildcards))))
;; Tramp version is useful in a number of situations.
@ -7521,6 +7607,25 @@ Therefore, the contents of files might be included in the debug buffer(s).")
(defalias 'tramp-submit-bug 'tramp-bug)
;; Checklist for `tramp-unload-hook'
;; - Unload all `tramp-*' packages
;; - Reset `file-name-handler-alist'
;; - Cleanup hooks where Tramp functions are in
;; - Cleanup advised functions
;; - Cleanup autoloads
;;;###autoload
(defun tramp-unload-tramp ()
(interactive)
;; When Tramp is not loaded yet, its autoloads are still active.
(tramp-unload-file-name-handler-alist)
;; ange-ftp settings must be enabled.
(when (functionp 'tramp-ftp-enable-ange-ftp)
(funcall (symbol-function 'tramp-ftp-enable-ange-ftp)))
;; `tramp-util' unloads also `tramp'.
(condition-case nil ;; maybe its not loaded yet.
(unload-feature (if (featurep 'tramp-util) 'tramp-util 'tramp) 'force)
(error nil)))
(provide 'tramp)
;; Make sure that we get integration with the VC package.
@ -7528,7 +7633,12 @@ Therefore, the contents of files might be included in the debug buffer(s).")
;; This must come after (provide 'tramp) because tramp-vc.el
;; requires tramp.
(eval-after-load "vc"
'(require 'tramp-vc))
'(progn
(require 'tramp-vc)
(add-hook 'tramp-unload-hook
'(lambda ()
(when (featurep 'tramp-vc)
(unload-feature 'tramp-vc 'force))))))
;;; TODO:

View file

@ -30,7 +30,7 @@
;; are auto-frobbed from configure.ac, so you should edit that file and run
;; "autoconf && ./configure" to change them.
(defconst tramp-version "2.0.51"
(defconst tramp-version "2.0.52"
"This version of Tramp.")
(defconst tramp-bug-report-address "tramp-devel@gnu.org"

View file

@ -1,3 +1,13 @@
2006-01-22 Michael Albinus <michael.albinus@gmx.de>
Sync with Tramp 2.0.52.
* tramp.texi (Frequently Asked Questions): Remove Ange-FTP item.
Add Tramp disabling item. New item for common connection
problems.
(various): Apply "ftp" as method for the download URL.
(Bug Reports): Refer to FAQ for common problems.
2006-01-21 Eli Zaretskii <eliz@gnu.org>
* widget.texi (User Interface): Use @key for TAB.

View file

@ -25,8 +25,8 @@
@end macro
@copying
Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004,
2005 Free Software Foundation, Inc.
Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@ -111,7 +111,7 @@ Japanese translation}.
@end ifset
The latest release of @value{tramp} is available for
@uref{http://ftp.gnu.org/gnu/tramp/, download}, or you may see
@uref{ftp://ftp.gnu.org/gnu/tramp/, download}, or you may see
@ref{Obtaining Tramp} for more details, including the CVS server
details.
@ -378,7 +378,7 @@ behind the scenes when you open a file with @value{tramp}.
@value{tramp} is freely available on the Internet and the latest
release may be downloaded from
@uref{http://ftp.gnu.org/gnu/tramp/}. This release includes the full
@uref{ftp://ftp.gnu.org/gnu/tramp/}. This release includes the full
documentation and code for @value{tramp}, suitable for installation.
But GNU Emacs (22 or later) includes @value{tramp} already, and there
is a @value{tramp} package for XEmacs, as well. So maybe it is easier
@ -1946,7 +1946,9 @@ will automatically generate a buffer with the details of your system and
When submitting a bug report, please try to describe in excruciating
detail the steps required to reproduce the problem, the setup of the
remote machine and any special conditions that exist.
remote machine and any special conditions that exist. You should also
check that your problem is not described already in @xref{Frequently
Asked Questions}.
If you can identify a minimal test case that reproduces the problem,
include that with your bug report. This will make it much easier for the
@ -1964,7 +1966,7 @@ Where can I get the latest @value{tramp}?
@value{tramp} is available under the URL below.
@noindent
@uref{http://ftp.gnu.org/gnu/tramp/}
@uref{ftp://ftp.gnu.org/gnu/tramp/}
@noindent
There is also a Savannah project page.
@ -1972,6 +1974,7 @@ There is also a Savannah project page.
@noindent
@uref{http://savannah.gnu.org/projects/tramp/}
@item
Which systems does it work on?
@ -2003,49 +2006,32 @@ Emacs? I think there was some issue with @command{ssh}?
@item
I can't stop @value{ftppackagename} starting with @value{emacsname}
@value{tramp} does not connect to the remote host
@ifset emacs
@value{ftppackagename} is loaded from @value{tramp} automatically if you
require a file by the ftp method. Unfortunately, there are some Lisp
packages which make @value{ftppackagename} file name handlers active.
You can see it applying @kbd{C-h v file-name-handler-alist}:
When @value{tramp} does not connect to the remote host, there are two
reasons heading the bug mailing list:
@example
file-name-handler-alist's value is
(("^/[^/:]*\\'" . ange-ftp-completion-hook-function)
("^/[^/:]*[^/:.]:" . ange-ftp-hook-function)
("^/[^/]*$" . tramp-completion-file-name-handler)
("\\`/[^/:]+:" . tramp-file-name-handler)
("\\`/:" . file-name-non-special))
@end example
@itemize @minus
Please try to find out which package is responsible for loading
@value{ftppackagename}, and raise a bug report.
@item
Unknown characters in the prompt
A workaround is to require @value{ftppackagename} before @value{tramp} in
your @file{~/.emacs}, because @value{tramp} cleans up the entries in
@code{file-name-handler-alist}:
@value{tramp} needs to recognize the prompt on the remote machine
after execution any command. This is not possible, when the prompt
contains unknown characters like escape sequences for coloring. This
should be avoided on the remote side. @xref{Remote shell setup}. for
setting the regular expression detecting the prompt.
@lisp
;; @value{ftppackagename} temporarily required
(require 'ange-ftp)
;; @value{tramp} cleans up @code{file-name-handler-alist}
(require 'tramp)
@end lisp
@end ifset
@item
@value{tramp} doesn't transfer strings with more than 500 characters
correctly
@ifset xemacs
Not all the older versions of @value{tramp} supported @value{emacsname}
correctly. The first thing to do is to make sure that you have the
latest version of @value{tramp} installed.
If you do, please try and find out exactly the conditions required for
the @value{ftppackagename} handlers to fire. If you can, putting a
breakpoint on @code{efs-ftp-path} and sending in the stack trace along
with your bug report would make it easier for the developers to work out
what is going wrong.
@end ifset
On some few systems, the implementation of @code{process-send-string}
seems to be broken for longer strings. This case, you should
customize the variable @code{tramp-chunksize} to 500. For a
description how to determine whether this is necessary see the
documentation of @code{tramp-chunksize}.
@end itemize
@item
@ -2132,14 +2118,24 @@ fi
@item
@value{tramp} doesn't transfer strings with more than 500 characters
correctly
How can I disable @value{tramp}?
On some few systems, the implementation of @code{process-send-string}
seems to be broken for longer strings. This case, you should
customize the variable @code{tramp-chunksize} to 500. For a
description how to determine whether this is necessary see the
documentation of @code{tramp-chunksize}.
Shame on you, why did you read until now?
@ifset emacs
If you just want to have @value{ftppackagename} as default remote
files access package, you should apply the following code:
@lisp
(setq tramp-default-method "ftp")
@end lisp
@end ifset
Unloading @value{tramp} can be achieved by applying @kbd{M-x
tramp-unload-tramp}.
@ifset emacs
This resets also the @value{ftppackagename} plugins.
@end ifset
@end itemize

View file

@ -4,7 +4,7 @@
@c In the Tramp CVS, the version number is auto-frobbed from
@c configure.ac, so you should edit that file and run
@c "autoconf && ./configure" to change the version number.
@set trampver 2.0.51
@set trampver 2.0.52
@c Other flags from configuration
@set prefix /usr/local