changeset 60763:3ba8f94e9cfa

Sync with Tramp 2.0.48.
author Michael Albinus <michael.albinus@gmx.de>
date Sun, 20 Mar 2005 20:00:20 +0000
parents 9d474a03949a
children 7fd2729eec90
files lisp/ChangeLog lisp/net/tramp-smb.el lisp/net/tramp-util.el lisp/net/tramp-vc.el lisp/net/tramp.el lisp/net/trampver.el man/ChangeLog man/tramp.texi man/trampver.texi
diffstat 9 files changed, 282 insertions(+), 226 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sun Mar 20 18:04:41 2005 +0000
+++ b/lisp/ChangeLog	Sun Mar 20 20:00:20 2005 +0000
@@ -1,3 +1,26 @@
+2005-03-20  Michael Albinus  <michael.albinus@gmx.de>
+
+	Sync with Tramp 2.0.48.
+
+	* tramp.el (all): Change all addresses to .gnu.org.
+	(tramp-append-tramp-buffers): New defun.
+	(tramp-bug): Apply `tramp-append-tramp-buffers' as post-hook.
+	Catch `dont-send' signal.
+	(tramp-set-auto-save-file-modes): Set always permissions, because
+	there might be an old auto-saved file belonging to another
+	original file.  This could be a security threat.  Reported by
+	Kjetil Kjernsmo <kjetil@kjernsmo.net>.
+	Check for Emacs 21.3.50 removed.
+
+	* tramp-smb.el (all): Remove debug construct for
+	`with-parsed-tramp-file-name'.
+	(tramp-smb-prompt): Prompt can contain spaces inside directory
+	names.
+	(tramp-smb-handle-delete-directory, tramp-smb-handle-delete-file):
+	No error message if DIRECTORY or FILENAME doesn't exist.
+	(tramp-smb-open-connection): Check existence of
+	`tramp-smb-program'.
+
 2005-03-20  Miles Bader  <miles@gnu.org>
 
 	* progmodes/gdb-ui.el (gdb-put-breakpoint-icon): Use breakpoint faces
--- a/lisp/net/tramp-smb.el	Sun Mar 20 18:04:41 2005 +0000
+++ b/lisp/net/tramp-smb.el	Sun Mar 20 20:00:20 2005 +0000
@@ -1,8 +1,8 @@
 ;;; tramp-smb.el --- Tramp access functions for SMB servers -*- coding: iso-8859-1; -*-
 
-;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
-;; Author: Michael Albinus <Michael.Albinus@alcatel.de>
+;; Author: Michael Albinus <michael.albinus@gmx.de>
 ;; Keywords: comm, processes
 
 ;; This file is part of GNU Emacs.
@@ -75,7 +75,7 @@
   :group 'tramp
   :type 'string)
 
-(defconst tramp-smb-prompt "^smb: \\S-+> \\|^\\s-+Server\\s-+Comment$"
+(defconst tramp-smb-prompt "^smb: .+> \\|^\\s-+Server\\s-+Comment$"
   "Regexp used as prompt in smbclient.")
 
 (defconst tramp-smb-errors
@@ -235,10 +235,7 @@
 		 (file-exists-p newname))
 	(error "copy-file: file %s already exists" newname))
 
-;      (with-parsed-tramp-file-name newname nil
-      (let (user host localname)
-	(with-parsed-tramp-file-name newname l
-	  (setq user l-user host l-host localname l-localname))
+      (with-parsed-tramp-file-name newname nil
 	(save-excursion
 	  (let ((share (tramp-smb-get-share localname))
 		(file (tramp-smb-get-localname localname t)))
@@ -258,59 +255,46 @@
 (defun tramp-smb-handle-delete-directory (directory)
   "Like `delete-directory' for tramp files."
   (setq directory (directory-file-name (expand-file-name directory)))
-  (unless (file-exists-p directory)
-    (error "Cannot delete non-existing directory `%s'" directory))
-;  (with-parsed-tramp-file-name directory nil
-  (let (user host localname)
-    (with-parsed-tramp-file-name directory l
-      (setq user l-user host l-host localname l-localname))
-    (save-excursion
-      (let ((share (tramp-smb-get-share localname))
-	    (dir (tramp-smb-get-localname (file-name-directory localname) t))
-	    (file (file-name-nondirectory localname)))
-	(tramp-smb-maybe-open-connection user host share)
-	(if (and
-	     (tramp-smb-send-command user host (format "cd \"%s\"" dir))
-	     (tramp-smb-send-command user host (format "rmdir \"%s\"" file)))
-	    ;; Go Home
+  (when (file-exists-p directory)
+    (with-parsed-tramp-file-name directory nil
+      (save-excursion
+	(let ((share (tramp-smb-get-share localname))
+	      (dir (tramp-smb-get-localname (file-name-directory localname) t))
+	      (file (file-name-nondirectory localname)))
+	  (tramp-smb-maybe-open-connection user host share)
+	  (if (and
+	       (tramp-smb-send-command user host (format "cd \"%s\"" dir))
+	       (tramp-smb-send-command user host (format "rmdir \"%s\"" file)))
+	      ;; Go Home
+	      (tramp-smb-send-command user host (format "cd \\"))
+	    ;; Error
 	    (tramp-smb-send-command user host (format "cd \\"))
-	  ;; Error
-	  (tramp-smb-send-command user host (format "cd \\"))
-	  (error "Cannot delete directory `%s'" directory))))))
+	    (error "Cannot delete directory `%s'" directory)))))))
 
 (defun tramp-smb-handle-delete-file (filename)
   "Like `delete-file' for tramp files."
   (setq filename (expand-file-name filename))
-  (unless (file-exists-p filename)
-    (error "Cannot delete non-existing file `%s'" filename))
-;  (with-parsed-tramp-file-name filename nil
-  (let (user host localname)
-    (with-parsed-tramp-file-name filename l
-      (setq user l-user host l-host localname l-localname))
-    (save-excursion
-      (let ((share (tramp-smb-get-share localname))
-	    (dir (tramp-smb-get-localname (file-name-directory localname) t))
-	    (file (file-name-nondirectory localname)))
-	(unless (file-exists-p filename)
-	  (error "Cannot delete non-existing file `%s'" filename))
-	(tramp-smb-maybe-open-connection user host share)
-	(if (and
-	     (tramp-smb-send-command user host (format "cd \"%s\"" dir))
-	     (tramp-smb-send-command user host (format "rm \"%s\"" file)))
-	    ;; Go Home
+  (when (file-exists-p filename)
+    (with-parsed-tramp-file-name filename nil
+      (save-excursion
+	(let ((share (tramp-smb-get-share localname))
+	      (dir (tramp-smb-get-localname (file-name-directory localname) t))
+	      (file (file-name-nondirectory localname)))
+	  (tramp-smb-maybe-open-connection user host share)
+	  (if (and
+	       (tramp-smb-send-command user host (format "cd \"%s\"" dir))
+	       (tramp-smb-send-command user host (format "rm \"%s\"" file)))
+	      ;; Go Home
+	      (tramp-smb-send-command user host (format "cd \\"))
+	    ;; Error
 	    (tramp-smb-send-command user host (format "cd \\"))
-	  ;; Error
-	  (tramp-smb-send-command user host (format "cd \\"))
-	  (error "Cannot delete file `%s'" filename))))))
+	    (error "Cannot delete file `%s'" filename)))))))
 
 (defun tramp-smb-handle-directory-files
   (directory &optional full match nosort)
   "Like `directory-files' for tramp files."
   (setq directory (directory-file-name (expand-file-name directory)))
-;  (with-parsed-tramp-file-name directory nil
-  (let (user host localname)
-    (with-parsed-tramp-file-name directory l
-      (setq user l-user host l-host localname l-localname))
+  (with-parsed-tramp-file-name directory nil
     (save-excursion
       (let* ((share (tramp-smb-get-share localname))
 	     (file (tramp-smb-get-localname localname nil))
@@ -340,17 +324,14 @@
   (mapcar
    (lambda (x)
      ;; We cannot call `file-attributes' for backward compatibility reasons.
-     ;; Its optional parameter ID-FORMAT is introduced with Emacs 22.1.
+     ;; Its optional parameter ID-FORMAT is introduced with Emacs 22.
      (cons x (tramp-smb-handle-file-attributes
 	(if full x (concat (file-name-as-directory directory) x)) id-format)))
    (directory-files directory full match nosort)))
 
 (defun tramp-smb-handle-file-attributes (filename &optional id-format)
   "Like `file-attributes' for tramp files."
-;  (with-parsed-tramp-file-name filename nil
-  (let (user host localname)
-    (with-parsed-tramp-file-name filename l
-      (setq user l-user host l-host localname l-localname))
+  (with-parsed-tramp-file-name filename nil
     (save-excursion
       (let* ((share (tramp-smb-get-share localname))
 	     (file (tramp-smb-get-localname localname nil))
@@ -380,10 +361,7 @@
 
 (defun tramp-smb-handle-file-directory-p (filename)
   "Like `file-directory-p' for tramp files."
-;  (with-parsed-tramp-file-name filename nil
-  (let 	(user host localname)
-    (with-parsed-tramp-file-name filename l
-      (setq user l-user host l-host localname l-localname))
+  (with-parsed-tramp-file-name filename nil
     (save-excursion
       (let* ((share (tramp-smb-get-share localname))
 	     (file (tramp-smb-get-localname localname nil))
@@ -396,10 +374,7 @@
 
 (defun tramp-smb-handle-file-exists-p (filename)
   "Like `file-exists-p' for tramp files."
-;  (with-parsed-tramp-file-name filename nil
-  (let 	(user host localname)
-    (with-parsed-tramp-file-name filename l
-      (setq user l-user host l-host localname l-localname))
+  (with-parsed-tramp-file-name filename nil
     (save-excursion
       (let* ((share (tramp-smb-get-share localname))
 	     (file (tramp-smb-get-localname localname nil))
@@ -433,10 +408,7 @@
 ;; files.
 (defun tramp-smb-handle-file-name-all-completions (filename directory)
   "Like `file-name-all-completions' for tramp files."
-;  (with-parsed-tramp-file-name directory nil
-  (let (user host localname)
-    (with-parsed-tramp-file-name directory l
-      (setq user l-user host l-host localname l-localname))
+  (with-parsed-tramp-file-name directory nil
     (save-match-data
       (save-excursion
 	(let* ((share (tramp-smb-get-share localname))
@@ -467,10 +439,7 @@
       (let ((dir (file-name-directory filename)))
 	(and (file-exists-p dir)
 	     (file-writable-p dir)))
-;    (with-parsed-tramp-file-name filename nil
-    (let (user host localname)
-      (with-parsed-tramp-file-name filename l
-	(setq user l-user host l-host localname l-localname))
+    (with-parsed-tramp-file-name filename nil
       (save-excursion
 	(let* ((share (tramp-smb-get-share localname))
 	       (file (tramp-smb-get-localname localname nil))
@@ -490,10 +459,7 @@
     ;; This check is a little bit strange, but in `dired-add-entry'
     ;; this function is called with a non-directory ...
     (setq filename (file-name-as-directory filename)))
-;  (with-parsed-tramp-file-name filename nil
-  (let 	(user host localname)
-    (with-parsed-tramp-file-name filename l
-      (setq user l-user host l-host localname l-localname))
+  (with-parsed-tramp-file-name filename nil
     (save-match-data
       (let* ((share (tramp-smb-get-share localname))
 	     (file (tramp-smb-get-localname localname nil))
@@ -543,10 +509,7 @@
   (setq dir (directory-file-name (expand-file-name dir)))
   (unless (file-name-absolute-p dir)
     (setq dir (concat default-directory dir)))
-;  (with-parsed-tramp-file-name dir nil
-  (let 	(user host localname)
-    (with-parsed-tramp-file-name dir l
-      (setq user l-user host l-host localname l-localname))
+  (with-parsed-tramp-file-name dir nil
     (save-match-data
       (let* ((share (tramp-smb-get-share localname))
 	     (ldir (file-name-directory dir)))
@@ -564,10 +527,7 @@
   (setq directory (directory-file-name (expand-file-name directory)))
   (unless (file-name-absolute-p directory)
     (setq directory (concat default-directory directory)))
-;  (with-parsed-tramp-file-name directory nil
-  (let 	(user host localname)
-    (with-parsed-tramp-file-name directory l
-      (setq user l-user host l-host localname l-localname))
+  (with-parsed-tramp-file-name directory nil
     (save-match-data
       (let* ((share (tramp-smb-get-share localname))
 	     (file (tramp-smb-get-localname localname nil)))
@@ -597,10 +557,7 @@
 		 (file-exists-p newname))
 	  (error "rename-file: file %s already exists" newname))
 
-;      (with-parsed-tramp-file-name newname nil
-      (let (user host localname)
-	(with-parsed-tramp-file-name newname l
-	  (setq user l-user host l-host localname l-localname))
+      (with-parsed-tramp-file-name newname nil
 	(save-excursion
 	  (let ((share (tramp-smb-get-share localname))
 		(file (tramp-smb-get-localname localname t)))
@@ -636,10 +593,7 @@
     (unless (y-or-n-p (format "File %s exists; overwrite anyway? "
                               filename))
       (error "File not overwritten")))
-;  (with-parsed-tramp-file-name filename nil
-  (let (user host localname)
-    (with-parsed-tramp-file-name filename l
-      (setq user l-user host l-host localname l-localname))
+  (with-parsed-tramp-file-name filename nil
     (save-excursion
       (let ((share (tramp-smb-get-share localname))
 	    (file (tramp-smb-get-localname localname t))
@@ -969,6 +923,10 @@
 
 Domain names in USER and port numbers in HOST are acknowledged."
 
+  (when (and (fboundp 'executable-find)
+	     (not (funcall 'executable-find tramp-smb-program)))
+    (error "Cannot find command %s in %s" tramp-smb-program exec-path))
+
   (save-match-data
     (let* ((buffer (tramp-get-buffer nil tramp-smb-method user host))
 	   (real-user user)
--- a/lisp/net/tramp-util.el	Sun Mar 20 18:04:41 2005 +0000
+++ b/lisp/net/tramp-util.el	Sun Mar 20 20:00:20 2005 +0000
@@ -34,7 +34,7 @@
 
 ;; Define a Tramp minor mode. It's intention is to redefine some keys for Tramp
 ;; specific functions, like compilation.
-;; The key remapping works since Emacs 22.1 only. Unknown for XEmacs.
+;; The key remapping works since Emacs 22 only. Unknown for XEmacs.
 
 (when (fboundp 'define-minor-mode)
 
@@ -59,10 +59,10 @@
 bindings.  Otherwise, only bindings active during invocation are taken
 into account.  XEmacs menubar bindings are not changed by this."
     (if (functionp 'command-remapping)
-	;; Emacs 22.1
+	;; Emacs 22
 	(eval
 	 `(define-key tramp-minor-mode-map [remap ,old-command] new-command))
-      ;; previous Emacs 21 versions.
+      ;; previous Emacs versions.
       (mapcar
        '(lambda (x)
 	  (define-key tramp-minor-mode-map x new-command))
--- a/lisp/net/tramp-vc.el	Sun Mar 20 18:04:41 2005 +0000
+++ b/lisp/net/tramp-vc.el	Sun Mar 20 20:00:20 2005 +0000
@@ -1,6 +1,6 @@
 ;;; tramp-vc.el --- Version control integration for TRAMP.el
 
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004 by Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 by Free Software Foundation, Inc.
 
 ;; Author: Daniel Pittman <daniel@danann.net>
 ;; Keywords: comm, processes
@@ -409,7 +409,7 @@
   ;; boundness-checking into this function?
   (let* ((file (symbol-value 'file))
 	 (remote-uid
-	  ;; With Emacs 22.1, `file-attributes' has got an optional parameter
+	  ;; With Emacs 22, `file-attributes' has got an optional parameter
 	  ;; ID-FORMAT. Handle this case backwards compatible.
 	  (if (and (functionp 'subr-arity)
 		   (= 2 (cdr (funcall (symbol-function 'subr-arity)
--- a/lisp/net/tramp.el	Sun Mar 20 18:04:41 2005 +0000
+++ b/lisp/net/tramp.el	Sun Mar 20 20:00:20 2005 +0000
@@ -47,16 +47,12 @@
 ;; Also see the todo list at the bottom of this file.
 ;;
 ;; The current version of Tramp can be retrieved from the following URL:
-;;            http://savannah.nongnu.org/download/tramp/
+;;            http://ftp.gnu.org/gnu/tramp/
 ;;
 ;; There's a mailing list for this, as well.  Its name is:
-;;            tramp-devel@mail.freesoftware.fsf.org
-;; Send a mail with `help' in the subject (!) to the administration
-;; address for instructions on joining the list.  The administration
-;; address is:
-;;            tramp-devel-request@mail.freesoftware.fsf.org
-;; You can also use the Web to subscribe, under the following URL:
-;;            http://mail.freesoftware.fsf.org/mailman/listinfo/tramp-devel
+;;            tramp-devel@gnu.org
+;; You can use the Web to subscribe, under the following URL:
+;;            http://lists.gnu.org/mailman/listinfo/tramp-devel
 ;;
 ;; For the adventurous, the current development sources are available
 ;; via CVS.  You can find instructions about this at the following URL:
@@ -3501,7 +3497,7 @@
 This will break if COMMAND prints a newline, followed by the value of
 `tramp-end-of-output', followed by another newline."
   ;; Asynchronous processes are far from being perfect.  But it works at least
-  ;; for `find-grep-dired' and `find-name-dired' in Emacs 22.1.
+  ;; for `find-grep-dired' and `find-name-dired' in Emacs 22.
   (if (tramp-tramp-file-p default-directory)
       (with-parsed-tramp-file-name default-directory nil
 	(let ((asynchronous (string-match "[ \t]*&[ \t]*\\'" command))
@@ -4108,7 +4104,7 @@
 	    (list 'dired-call-process
                   ; Emacs only
 		  'shell-command
-                  ; Post Emacs 21.3 only
+                  ; Emacs 22 only
                   'process-file
 	          ; XEmacs only
 		  'dired-print-file 'dired-shell-call-process))
@@ -4213,7 +4209,7 @@
 
 (defun tramp-repair-jka-compr ()
   "If jka-compr is already loaded, move it to the front of
-`file-name-handler-alist'.  On Emacs 22.1 or so this will not be
+`file-name-handler-alist'.  On Emacs 22 or so this will not be
 necessary anymore."
   (let ((jka (rassoc 'jka-compr-handler file-name-handler-alist)))
     (when jka
@@ -6937,8 +6933,8 @@
             (tramp-make-auto-save-file-name (buffer-file-name)))
     ad-do-it))
 
-;; In Emacs < 22.1 and XEmacs < 21.5 autosaved remote files have
-;; permission 666 minus umask. This is a security threat.
+;; In Emacs < 22 and XEmacs < 21.5 autosaved remote files have
+;; permission 0666 minus umask. This is a security threat.
 
 (defun tramp-set-auto-save-file-modes ()
   "Set permissions of autosaved remote files to the original permissions."
@@ -6946,20 +6942,18 @@
     (when (and (stringp bfn)
 	       (tramp-tramp-file-p bfn)
 	       (stringp buffer-auto-save-file-name)
-	       (not (equal bfn buffer-auto-save-file-name))
-	       (not (file-exists-p buffer-auto-save-file-name)))
-      (write-region "" nil buffer-auto-save-file-name)
+	       (not (equal bfn buffer-auto-save-file-name)))
+      (unless (file-exists-p buffer-auto-save-file-name)
+	(write-region "" nil buffer-auto-save-file-name))
+      ;; Permissions should be set always, because there might be an old
+      ;; auto-saved file belonging to another original file.  This could
+      ;; be a security threat.
       (set-file-modes buffer-auto-save-file-name (file-modes bfn)))))
 
 (unless (or (> emacs-major-version 21)
 	    (and (featurep 'xemacs)
 		 (= emacs-major-version 21)
-		 (> emacs-minor-version 4))
-	    (and (not (featurep 'xemacs))
-		 (= emacs-major-version 21)
-		 (or (> emacs-minor-version 3)
-		     (and (string-match "^21\\.3\\.\\([0-9]+\\)" emacs-version)
-			  (>= (string-to-int (match-string 1 emacs-version)) 50)))))
+		 (> emacs-minor-version 4)))
   (add-hook 'auto-save-hook 'tramp-set-auto-save-file-modes))
 
 (defun tramp-subst-strs-in-string (alist string)
@@ -7206,72 +7200,73 @@
   "Submit a bug report to the TRAMP developers."
   (interactive)
   (require 'reporter)
-  (let ((reporter-prompt-for-summary-p	t))
-    (reporter-submit-bug-report
-     tramp-bug-report-address		; to-address
-     (format "tramp (%s)" tramp-version) ; package name and version
-     `(;; Current state
-       tramp-ls-command
-       tramp-test-groks-nt
-       tramp-file-exists-command
-       tramp-current-multi-method
-       tramp-current-method
-       tramp-current-user
-       tramp-current-host
-
-       ;; System defaults
-       tramp-auto-save-directory        ; vars to dump
-       tramp-default-method
-       tramp-rsh-end-of-line
-       tramp-default-password-end-of-line
-       tramp-remote-path
-       tramp-login-prompt-regexp
-       tramp-password-prompt-regexp
-       tramp-wrong-passwd-regexp
-       tramp-yesno-prompt-regexp
-       tramp-yn-prompt-regexp
-       tramp-terminal-prompt-regexp
-       tramp-out-of-band-prompt-regexp
-       tramp-temp-name-prefix
-       tramp-file-name-structure
-       tramp-file-name-regexp
-       tramp-multi-file-name-structure
-       tramp-multi-file-name-hop-structure
-       tramp-multi-methods
-       tramp-multi-connection-function-alist
-       tramp-methods
-       tramp-end-of-output
-       tramp-coding-commands
-       tramp-actions-before-shell
-       tramp-actions-copy-out-of-band
-       tramp-multi-actions
-       tramp-terminal-type
-       tramp-shell-prompt-pattern
-       tramp-chunksize
-       ,(when (boundp 'tramp-backup-directory-alist)
-	  'tramp-backup-directory-alist)
-       ,(when (boundp 'tramp-bkup-backup-directory-info)
-	  'tramp-bkup-backup-directory-info)
-
-       ;; Non-tramp variables of interest
-       shell-prompt-pattern
-       backup-by-copying
-       backup-by-copying-when-linked
-       backup-by-copying-when-mismatch
-       ,(when (boundp 'backup-by-copying-when-privileged-mismatch)
-          'backup-by-copying-when-privileged-mismatch)
-       ,(when (boundp 'password-cache)
-          'password-cache)
-       ,(when (boundp 'password-cache-expiry)
-          'password-cache-expiry)
-       ,(when (boundp 'backup-directory-alist)
-	  'backup-directory-alist)
-       ,(when (boundp 'bkup-backup-directory-info)
-	  'bkup-backup-directory-info)
-       file-name-handler-alist)
-     nil				; pre-hook
-     nil				; post-hook
-     "\
+  (catch 'dont-send
+    (let ((reporter-prompt-for-summary-p	t))
+      (reporter-submit-bug-report
+       tramp-bug-report-address		; to-address
+       (format "tramp (%s)" tramp-version) ; package name and version
+       `(;; Current state
+	 tramp-ls-command
+	 tramp-test-groks-nt
+	 tramp-file-exists-command
+	 tramp-current-multi-method
+	 tramp-current-method
+	 tramp-current-user
+	 tramp-current-host
+
+	 ;; System defaults
+	 tramp-auto-save-directory        ; vars to dump
+	 tramp-default-method
+	 tramp-rsh-end-of-line
+	 tramp-default-password-end-of-line
+	 tramp-remote-path
+	 tramp-login-prompt-regexp
+	 tramp-password-prompt-regexp
+	 tramp-wrong-passwd-regexp
+	 tramp-yesno-prompt-regexp
+	 tramp-yn-prompt-regexp
+	 tramp-terminal-prompt-regexp
+	 tramp-out-of-band-prompt-regexp
+	 tramp-temp-name-prefix
+	 tramp-file-name-structure
+	 tramp-file-name-regexp
+	 tramp-multi-file-name-structure
+	 tramp-multi-file-name-hop-structure
+	 tramp-multi-methods
+	 tramp-multi-connection-function-alist
+	 tramp-methods
+	 tramp-end-of-output
+	 tramp-coding-commands
+	 tramp-actions-before-shell
+	 tramp-actions-copy-out-of-band
+	 tramp-multi-actions
+	 tramp-terminal-type
+	 tramp-shell-prompt-pattern
+	 tramp-chunksize
+	 ,(when (boundp 'tramp-backup-directory-alist)
+	    'tramp-backup-directory-alist)
+	 ,(when (boundp 'tramp-bkup-backup-directory-info)
+	    'tramp-bkup-backup-directory-info)
+
+	 ;; Non-tramp variables of interest
+	 shell-prompt-pattern
+	 backup-by-copying
+	 backup-by-copying-when-linked
+	 backup-by-copying-when-mismatch
+	 ,(when (boundp 'backup-by-copying-when-privileged-mismatch)
+	    'backup-by-copying-when-privileged-mismatch)
+	 ,(when (boundp 'password-cache)
+	    'password-cache)
+	 ,(when (boundp 'password-cache-expiry)
+	    'password-cache-expiry)
+	 ,(when (boundp 'backup-directory-alist)
+	    'backup-directory-alist)
+	 ,(when (boundp 'bkup-backup-directory-info)
+	    'bkup-backup-directory-info)
+	 file-name-handler-alist)
+       nil				; pre-hook
+       'tramp-append-tramp-buffers	; post-hook
+       "\
 Enter your bug report in this message, including as much detail as you
 possibly can about the problem, what you did to cause it and what the
 local and remote machines are.
@@ -7286,7 +7281,73 @@
 report.
 
 --bug report follows this line--
-")))
+"))))
+
+(defun tramp-append-tramp-buffers ()
+  "Append Tramp buffers into the bug report."
+
+  ;; We load mml.el from Gnus.
+  (if (featurep 'xemacs)
+      (load "mml" 'noerror)
+    (require 'mml nil 'noerror))
+
+  (when (and
+	 ;; We don't want to add another dependency.
+	 (functionp 'mml-insert-empty-tag)
+	 ;; 2nd parameter since Emacs 22.
+	 (condition-case nil
+	     (list-buffers-noselect nil nil)
+	   (t nil)))
+    (let ((buffer-list
+	   (delq nil
+	    (mapcar '(lambda (b)
+	     (when (string-match "^\\*\\(debug \\)?tramp/" (buffer-name b)) b))
+	     (buffer-list))))
+	  (curbuf (current-buffer)))
+
+      ;; There is at least one Tramp buffer.
+      (when buffer-list
+	(switch-to-buffer (list-buffers-noselect nil buffer-list))
+	(delete-other-windows)
+	(setq buffer-read-only nil)
+	(goto-char (point-max))
+	(insert "
+The buffer(s) above will be appended to this message.  If you don't want
+to append a buffer because it contains sensible data, or because the buffer
+is too large, you should delete the respective buffer.  The buffer(s) will
+contain user and host names.  Passwords will never be included there.")
+
+	(when (and tramp-debug-buffer (> tramp-verbose 9))
+	  (insert "\n\n")
+	  (let ((start (point)))
+	    (insert "\
+Please note that you have set `tramp-verbose' to a value greater than 9.
+Therefore, the contents of files might be included in the debug buffer(s).")
+	    (add-text-properties start (point) (list 'face 'italic))))
+
+	(set-buffer-modified-p nil)
+	(setq buffer-read-only t)
+	(goto-char (point-min))
+
+	(if (y-or-n-p "Do you want to append the buffer(s)? ")
+	    ;; OK, let's send.  First we delete the buffer list.
+	    (progn
+	      (kill-buffer nil)
+	      (switch-to-buffer curbuf)
+	      (goto-char (point-max))
+	      (insert "\n\n")
+	      (dolist (buffer buffer-list)
+		(mml-insert-empty-tag
+		 'part 'type "text/plain" 'encoding "base64"
+		 'disposition "attachment" 'buffer (buffer-name buffer)
+		 'description (buffer-name buffer)))
+	      (set-buffer-modified-p nil))
+
+	  ;; Don't send.  Delete the message buffer.
+	  (set-buffer curbuf)
+	  (set-buffer-modified-p nil)
+	  (kill-buffer nil)
+	  (throw 'dont-send nil))))))
 
 (defalias 'tramp-submit-bug 'tramp-bug)
 
--- a/lisp/net/trampver.el	Sun Mar 20 18:04:41 2005 +0000
+++ b/lisp/net/trampver.el	Sun Mar 20 20:00:20 2005 +0000
@@ -30,10 +30,10 @@
 ;; are auto-frobbed from configure.ac, so you should edit that file and run
 ;; "autoconf && ./configure" to change them.
 
-(defconst tramp-version "2.0.47"
+(defconst tramp-version "2.0.48"
   "This version of Tramp.")
 
-(defconst tramp-bug-report-address "tramp-devel@mail.freesoftware.fsf.org"
+(defconst tramp-bug-report-address "tramp-devel@gnu.org"
   "Email address to send bug reports to.")
 
 (provide 'trampver)
--- a/man/ChangeLog	Sun Mar 20 18:04:41 2005 +0000
+++ b/man/ChangeLog	Sun Mar 20 20:00:20 2005 +0000
@@ -1,3 +1,14 @@
+2005-03-20  Michael Albinus  <michael.albinus@gmx.de>
+
+	Sync with Tramp 2.0.48.
+
+	* trampver.texi.in: Replace "Emacs" by "GNU Emacs".
+
+	* tramp.texi: Replace "Emacs" by "GNU Emacs".  Replace "Linux" by
+	"GNU/Linux".  Change all addresses to .gnu.org.
+	(Default Method): Offer shortened syntax for "su" and "sudo"
+	methods.
+
 2005-03-19  Chong Yidong  <cyd@stupidchicken.com>
 
 	* ack.texi (Acknowledgments): Update.
@@ -46,7 +57,7 @@
 	(Rmail Display): Mention Mouse-1.
 	(Movemail): Clarify two movemail versions.
 	Clarify rmail-movemail-program.
-	
+
 	* pcl-cvs.texi (About PCL-CVS): Get rid of "Emacs 21".
 	(Installation): Node deleted.
 
--- a/man/tramp.texi	Sun Mar 20 18:04:41 2005 +0000
+++ b/man/tramp.texi	Sun Mar 20 20:00:20 2005 +0000
@@ -88,7 +88,7 @@
 programs, such as @command{ssh}/@command{scp}.
 
 You can find the latest version of this document on the web at
-@uref{http://www.freesoftware.fsf.org/tramp/}.
+@uref{http://www.gnu.org/software/tramp/}.
 
 @c Pointer to the other Emacs flavor is necessary only in case of
 @c standalone installation.
@@ -111,18 +111,18 @@
 @end ifset
 
 The latest release of @value{tramp} is available for
-@uref{http://savannah.nongnu.org/download/tramp/, download}, or you
-may see @ref{Obtaining Tramp} for more details, including the CVS
-server details.
-
-@value{tramp} also has a @uref{http://savannah.nongnu.org/projects/tramp/,
+@uref{http://ftp.gnu.org/gnu/tramp/, download}, or you may see
+@ref{Obtaining Tramp} for more details, including the CVS server
+details.
+
+@value{tramp} also has a @uref{http://savannah.gnu.org/projects/tramp/,
 Savannah Project Page}.
 @end ifhtml
 
 There is a mailing list for @value{tramp}, available at
-@email{tramp-devel@@mail.freesoftware.fsf.org}, and archived at
-@uref{http://savannah.nongnu.org/mail/?group=tramp, Savannah Mail
-Archive}.
+@email{tramp-devel@@gnu.org}, and archived at
+@uref{http://lists.gnu.org/archive/html/tramp-devel/, the
+@value{tramp} Mail Archive}.
 @ifhtml
 Older archives are located at
 @uref{http://sourceforge.net/mailarchive/forum.php?forum=tramp-devel,
@@ -377,14 +377,14 @@
 @chapter Obtaining Tramp.
 @cindex obtaining Tramp
 
-@value{tramp} is freely available on the Internet and the latest release
-may be downloaded from
-@uref{http://savannah.nongnu.org/download/tramp/}. This
-release includes the full documentation and code for @value{tramp},
-suitable for installation.  But Emacs (22.1 or later) includes
-@value{tramp} already, and there is a @value{tramp} package for XEmacs, as well.
-So maybe it is easier to just use those.  But if you want the bleeding
-edge, read on@dots{...}
+@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
+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
+to just use those.  But if you want the bleeding edge, read
+on@dots{...}
 
 For the especially brave, @value{tramp} is available from CVS.  The CVS
 version is the latest version of the code and may contain incomplete
@@ -396,7 +396,7 @@
 at the top.
 
 @noindent
-@uref{http://savannah.nongnu.org/projects/tramp/}
+@uref{http://savannah.gnu.org/projects/tramp/}
 
 @noindent
 Or follow the example session below:
@@ -404,7 +404,7 @@
 @example
 ] @strong{cd ~/@value{emacsdir}}
 ] @strong{export CVS_RSH="ssh"}
-] @strong{cvs -z3 -d:ext:anoncvs@@savannah.nongnu.org:/cvsroot/tramp co tramp}
+] @strong{cvs -z3 -d:ext:anoncvs@@savannah.gnu.org:/cvsroot/tramp co tramp}
 @end example
 
 @noindent
@@ -1112,7 +1112,9 @@
 of @code{ssh}.  Or you use Kerberos and thus like @code{krlogin}.
 
 For the special case of editing files on the local host as another
-user, see the @code{su} or @code{sudo} method.
+user, see the @code{su} or @code{sudo} method.  It offers shortened
+syntax for the @samp{root} account, like
+@file{@value{prefix}su@value{postfixsinglehop}@value{postfix}/etc/motd}.
 
 People who edit large files may want to consider @code{scp} instead of
 @code{ssh}, or @code{pscp} instead of @code{plink}.  These out-of-band
@@ -1603,7 +1605,7 @@
 for @value{tramp} files to the local temporary directory.
 
 On some versions of @value{emacsname}, namely the version built for
-Debian Linux, the variable @code{auto-save-file-name-transforms}
+Debian GNU/Linux, the variable @code{auto-save-file-name-transforms}
 contains the directory where @value{emacsname} was built.  A
 workaround is to manually set the variable to a sane value.
 
@@ -1924,13 +1926,13 @@
 with @value{tramp}, solving problems and general discussion and advice on topics
 relating to the package.
 
-The  mailing list is at @email{tramp-devel@@mail.freesoftware.fsf.org}.
-Messages sent to this address go to all the subscribers. This is
-@emph{not} the address to send subscription requests to.
-
-For help on subscribing to the list, send mail to the administrative
-address, @email{tramp-devel-request@@mail.freesoftware.fsf.org}, with the
-subject @samp{help}.
+The mailing list is at @email{tramp-devel@@gnu.org}.  Messages sent to
+this address go to all the subscribers. This is @emph{not} the address
+to send subscription requests to.
+
+Subscribing to the list is performed via
+@uref{http://lists.gnu.org/mailman/listinfo/tramp-devel/,
+the @value{tramp} Mail Subscription Page}.
 
 To report a bug in @value{tramp}, you should execute @kbd{M-x tramp-bug}. This
 will automatically generate a buffer with the details of your system and
@@ -1956,20 +1958,21 @@
 @value{tramp} is available under the URL below.
 
 @noindent
-@uref{http://savannah.nongnu.org/download/tramp/}
+@uref{http://ftp.gnu.org/gnu/tramp/}
 
 @noindent
 There is also a Savannah project page.
 
 @noindent
-@uref{http://savannah.nongnu.org/projects/tramp/}
+@uref{http://savannah.gnu.org/projects/tramp/}
 
 @item
 Which systems does it work on?
 
-The package has been used successfully on Emacs 20 and Emacs 21, as well
-as XEmacs 21.  XEmacs 20 is more problematic, see the notes in
-@file{tramp.el}.  I don't think anybody has really tried it on Emacs 19.
+The package has been used successfully on GNU Emacs 20, GNU Emacs 21
+and GNU Emacs 22, as well as XEmacs 21.  XEmacs 20 is more
+problematic, see the notes in @file{tramp.el}.  I don't think anybody
+has really tried it on GNU Emacs 19.
 
 The package was intended to work on Unix, and it really expects a
 Unix-like system on the remote end (except the @option{smb} method),
@@ -2336,9 +2339,9 @@
 forward and wishes to implement and test it, please contact me or the
 mailing list.
 
-@item The @value{tramp} filename syntax differs between Emacs and XEmacs.
-
-The Emacs maintainers wish to use a unified filename syntax for
+@item The @value{tramp} filename syntax differs between GNU Emacs and XEmacs.
+
+The GNU Emacs maintainers wish to use a unified filename syntax for
 Ange-FTP and @value{tramp} so that users don't have to learn a new
 syntax.  It is sufficient to learn some extensions to the old syntax.
 
--- a/man/trampver.texi	Sun Mar 20 18:04:41 2005 +0000
+++ b/man/trampver.texi	Sun Mar 20 20:00:20 2005 +0000
@@ -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.47
+@set trampver 2.0.48
 
 @c Other flags from configuration
 @set prefix /usr/local
@@ -25,7 +25,7 @@
 
 @c Emacs values.
 @ifset emacs
-@set emacsname          Emacs
+@set emacsname          GNU Emacs
 @set emacsdir           emacs
 @set ftppackagename     Ange-FTP
 @set prefix             /
@@ -49,7 +49,7 @@
 @set postfix            ]
 @set postfixsinglehop   /
 @set postfixmultihop    :
-@set emacsothername     Emacs
+@set emacsothername     GNU Emacs
 @set emacsotherdir      emacs
 @set emacsotherfilename tramp-emacs.html
 @set japanesemanual     tramp_ja-xemacs.html