Commits

Anonymous committed 7739831

2002-01-21 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* tramp.el (top-level, tramp-run-real-handler, efs-ftp-path):
Disable special handling for ange-ftp and EFS. This was only
needed when Tramp names also matched the ange-ftp filename regexp.
This experimental change only comments out the relevant sections.

2002-01-20 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* tramp.el: Remove some todo items which are done.
(tramp-methods): Use doubled `-t -t' for `scpx' and `smx'
methods.

2002-01-20 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* tramp.el (tramp-handle-write-region): When calling
`write-region' to write the temp file, pass `no-message' for
VISIT. If our own VISIT arg is true, we explicitly call
`set-visited-file-modtime' later on. If we pass VISIT=t when
writing the temp file, the visited-file-modtime information of
the buffer is clobbered by a local time, which will bite us when
the local and remote times are out of sync.
(tramp-handle-write-region): Make sure to set
`last-coding-system-used' at the very end of the function. In
particular, don't allow `set-visited-file-modtime' to clobber it.
(tramp-handle-set-visited-file-modtime): Take care to not clobber
`last-coding-system-used' -- it would confuse jka-compr.

2002-01-19 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* tramp.el (clear-visited-file-modtime): Advise this function; it
does not support filename handlers. Set the Lisp variable that
we use for emulating modtime back to nil.
(tramp-handle-set-visited-file-modtime): If time-list is
provided, call real handler with that data.
(tramp-handle-verify-visited-file-modtime): Allow 1 sec
difference between times.
(tramp-time-diff): `itimer-time-difference' expects three-element
lists; pad short lists when calling that function. Reported by
Skip Montanaro <skip@pobox.com>.
Also swap preference order of `itimer-time-difference' and
`subtract-time': prefer the latter.

2002-01-10 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* tramp.el (tramp-handle-expand-file-name): Bind
directory-sep-char to "/" so that XEmacs on Windows does the
right thing.
(tramp-handle-file-truename): Return trailing "/" if input had
trailing "/".

2002-01-06 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* tramp.el (tramp-handle-file-truename): Use
`tramp-method-for-buffer' to make sure that log messages end up
in the right buffer. Correct braino in symlink handling.

2002-01-05 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* tramp.el (tramp-split-string): New compat function.
(tramp-handle-file-truename): Use it.

2002-01-04 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* tramp.el (tramp-find-shell): If starting bash for tilde
expansion, provide `--norc' argument.
(tramp-handle-file-truename): More debugging output. More Obiwan
errors.

2002-01-03 Steve Youngs <youngs@xemacs.org>

* tramp.el (tramp-find-shell): Change order for choice of shell,
put bash first.

2002-01-02 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* tramp.el (tramp-handle-file-truename): Another Obiwan error.
For relative symlinks "/a/b" pointing to "c/d", the "b" part
should not be part of the truename.

2002-01-01 Kai Grossjohann <kai@ls6.informatik.uni-dortmund.de>

* tramp.el (tramp-handle-file-truename): Obiwan error.
(tramp-process-actions): New function. Doesn't do anything yet.

2001-12-30 Kai Großjohann <grossjoh@ls6.informatik.uni-dortmund.de>

* base64.el: Moved to contrib directory.
* format-spec.el: Ditto.

2001-12-30 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* tramp.el (tramp-post-connection): Use parens around "test / -nt
/" command to find out if `test' supports the `-nt' switch.
Without the parens, /bin/sh as of BSD/OS 4.x crashes.
Reported by Jason Mastaler.
(tramp-remote-path): Add /usr/contrib/bin.
Reported by Jason Mastaler.

2001-12-29 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* Makefile (tramp.elc): Remove superfluous dependencies.

* tramp-vc.el (tramp-vc-workfile-unchanged-p): Supply two args to
vc-default-workfile-unchanged-p.

* tramp-util.el (tramp): Require tramp.

* tramp.el (tramp-check-ls-command): Return status of command to
check if ls supports the `-n' option should be zero, not non-nil.
(tramp-find-ls-command): Look for `gls' in addition to `ls' and
`gnuls' binaries.

2001-12-28 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* tramp.el (tramp-post-connection): Move comment. Check to see if
decoding and encoding commands work, if given in method
definition.

2001-12-28 Kai Grossjohann <kai@ls6.informatik.uni-dortmund.de>

* tramp.el (tramp-file-name-handler-alist): New entry for
`file-truename'.
(tramp-handle-file-truename): New function.

2001-12-27 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* tramp.el (toplevel): Don't barf if jka-compr is already loaded.
Instead, make sure that jka-compr comes first in
file-name-handler-alist.
(tramp-handle-set-visited-file-modtime): More error checking. If
`file-attributes' returns modtime (0 0), then assume modtime isn't
known and revert to using `ls -ild'. Previously, we checked if
Perl was available.
(tramp-handle-verify-visited-file-modtime): Check for modtime
being (0 0), rather than Perl being available.
(tramp-handle-write-region): Some sanity checking: make sure that
current buffer isn't changed while the function runs. (Maybe this
is not necessary now?) Only set-visited-file-modtime if VISIT is
t (used to check for non-nil).
(tramp-make-auto-save-file-name): Construct a local filename, then
run `make-auto-save-file-name' on it. This makes sure that no
filename handlers will be run on that file. (Specifically, this
avoids jka-compr -- we want auto-save files to be saved quickly.
This fixes the change from 2001-12-07 which aimed at doing the
same thing, but failed.)

2001-12-26 Kai Grossjohann <kai@ls6.informatik.uni-dortmund.de>

* tramp.el (tramp-buffer-file-attributes): Doc string fix.
(tramp-handle-set-visited-file-modtime): Don't barf if called
without arguments. Use output of "ls -ild", not return value of
file-attributes, for tramp-buffer-file-attributes.
(tramp-handle-verify-visited-file-modtime): Use output of "ls
-ild", not return value of file-attributes, for
tramp-buffer-file-attributes.
(tramp-handle-insert-file-contents): Call set-visited-file-modtime
without args.
(tramp-handle-insert-file-contents): Ditto.
(tramp-handle-write-region): Pass VISIT arg on to call of real
handler. (The old code of passing the `no-message' symbol instead
was a little strange -- an XEmacsism?)
(tramp-handle-write-region): Call set-visited-file-modtime, if
VISIT.
Remove some todo items.

2001-12-25 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* tramp.el (tramp-buffer-file-attributes): New variable.
(tramp-handle-set-visited-file-modtime): Use it in case the
remote end does not give us the right modtime.
(tramp-handle-verify-visited-file-modtime): Implementation.

2002-01-21 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* tramp_ja.texi: Sync with tramp.texi rev 2.10. From Yoichi
NAKAYAMA <yoichi@FreeBSD.org>.

2002-01-20 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* tramp.texi (External transfer methods): Document double use of
`-t' for the `scpx' method. Explain why it is useful for Windows
users.
(Inline methods): Ditto for the `smx' method.

2001-12-11 Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>

* tramp.texi (Connection types): Double-space sentence end.

Comments (0)

Files changed (7)

+2002-01-21  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* tramp.el (top-level, tramp-run-real-handler, efs-ftp-path):
+	Disable special handling for ange-ftp and EFS.  This was only
+	needed when Tramp names also matched the ange-ftp filename regexp.
+	This experimental change only comments out the relevant sections.
+
+2002-01-20  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* tramp.el: Remove some todo items which are done.
+	(tramp-methods): Use doubled `-t -t' for `scpx' and `smx'
+	methods.
+
+2002-01-20  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* tramp.el (tramp-handle-write-region): When calling
+	`write-region' to write the temp file, pass `no-message' for
+	VISIT.  If our own VISIT arg is true, we explicitly call
+	`set-visited-file-modtime' later on.  If we pass VISIT=t when
+	writing the temp file, the visited-file-modtime information of
+	the buffer is clobbered by a local time, which will bite us when
+	the local and remote times are out of sync.
+	(tramp-handle-write-region): Make sure to set
+	`last-coding-system-used' at the very end of the function.  In
+	particular, don't allow `set-visited-file-modtime' to clobber it.
+	(tramp-handle-set-visited-file-modtime): Take care to not clobber
+	`last-coding-system-used' -- it would confuse jka-compr.
+
+2002-01-19  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* tramp.el (clear-visited-file-modtime): Advise this function; it
+	does not support filename handlers.  Set the Lisp variable that
+	we use for emulating modtime back to nil.
+	(tramp-handle-set-visited-file-modtime): If time-list is
+	provided, call real handler with that data.
+	(tramp-handle-verify-visited-file-modtime): Allow 1 sec
+	difference between times.
+	(tramp-time-diff): `itimer-time-difference' expects three-element
+	lists; pad short lists when calling that function.  Reported by
+	Skip Montanaro <skip@pobox.com>.
+	Also swap preference order of `itimer-time-difference' and
+	`subtract-time': prefer the latter.
+	
+2002-01-10  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* tramp.el (tramp-handle-expand-file-name): Bind
+	directory-sep-char to "/" so that XEmacs on Windows does the
+	right thing.
+	(tramp-handle-file-truename): Return trailing "/" if input had
+	trailing "/".
+
+2002-01-06  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* tramp.el (tramp-handle-file-truename): Use
+	`tramp-method-for-buffer' to make sure that log messages end up
+	in the right buffer.  Correct braino in symlink handling.
+
+2002-01-05  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* tramp.el (tramp-split-string): New compat function.
+	(tramp-handle-file-truename): Use it.
+
+2002-01-04  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* tramp.el (tramp-find-shell): If starting bash for tilde
+	expansion, provide `--norc' argument.
+	(tramp-handle-file-truename): More debugging output.  More Obiwan
+	errors.
+
+2002-01-03  Steve Youngs  <youngs@xemacs.org>
+
+	* tramp.el (tramp-find-shell): Change order for choice of shell,
+	put bash first.
+
+2002-01-02  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* tramp.el (tramp-handle-file-truename): Another Obiwan error.
+	For relative symlinks "/a/b" pointing to "c/d", the "b" part
+	should not be part of the truename.
+
+2002-01-01  Kai Grossjohann  <kai@ls6.informatik.uni-dortmund.de>
+
+	* tramp.el (tramp-handle-file-truename): Obiwan error.
+	(tramp-process-actions): New function.  Doesn't do anything yet.
+
+2001-12-30  Kai Großjohann  <grossjoh@ls6.informatik.uni-dortmund.de>
+
+	* base64.el: Moved to contrib directory.
+	* format-spec.el: Ditto.
+
+2001-12-30  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* tramp.el (tramp-post-connection): Use parens around "test / -nt
+	/" command to find out if `test' supports the `-nt' switch.
+	Without the parens, /bin/sh as of BSD/OS 4.x crashes.
+	Reported by Jason Mastaler.
+	(tramp-remote-path): Add /usr/contrib/bin.
+	Reported by Jason Mastaler.
+
+2001-12-29  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* Makefile (tramp.elc): Remove superfluous dependencies.
+
+	* tramp-vc.el (tramp-vc-workfile-unchanged-p): Supply two args to
+	vc-default-workfile-unchanged-p.
+
+	* tramp-util.el (tramp): Require tramp.
+
+	* tramp.el (tramp-check-ls-command): Return status of command to
+	check if ls supports the `-n' option should be zero, not non-nil.
+	(tramp-find-ls-command): Look for `gls' in addition to `ls' and
+	`gnuls' binaries.
+
+2001-12-28  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* tramp.el (tramp-post-connection): Move comment.  Check to see if
+	decoding and encoding commands work, if given in method
+	definition.
+
+2001-12-28  Kai Grossjohann  <kai@ls6.informatik.uni-dortmund.de>
+
+	* tramp.el (tramp-file-name-handler-alist): New entry for
+	`file-truename'.
+	(tramp-handle-file-truename): New function.
+
+2001-12-27  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* tramp.el (toplevel): Don't barf if jka-compr is already loaded.
+	Instead, make sure that jka-compr comes first in
+	file-name-handler-alist.
+	(tramp-handle-set-visited-file-modtime): More error checking.  If
+	`file-attributes' returns modtime (0 0), then assume modtime isn't
+	known and revert to using `ls -ild'.  Previously, we checked if
+	Perl was available.
+	(tramp-handle-verify-visited-file-modtime): Check for modtime
+	being (0 0), rather than Perl being available.
+	(tramp-handle-write-region): Some sanity checking: make sure that
+	current buffer isn't changed while the function runs.  (Maybe this
+	is not necessary now?)  Only set-visited-file-modtime if VISIT is
+	t (used to check for non-nil).
+	(tramp-make-auto-save-file-name): Construct a local filename, then
+	run `make-auto-save-file-name' on it.  This makes sure that no
+	filename handlers will be run on that file.  (Specifically, this
+	avoids jka-compr -- we want auto-save files to be saved quickly.
+	This fixes the change from 2001-12-07 which aimed at doing the
+	same thing, but failed.)
+
+2001-12-26  Kai Grossjohann  <kai@ls6.informatik.uni-dortmund.de>
+
+	* tramp.el (tramp-buffer-file-attributes): Doc string fix.
+	(tramp-handle-set-visited-file-modtime): Don't barf if called
+	without arguments.  Use output of "ls -ild", not return value of
+	file-attributes, for tramp-buffer-file-attributes.
+	(tramp-handle-verify-visited-file-modtime): Use output of "ls
+	-ild", not return value of file-attributes, for
+	tramp-buffer-file-attributes. 
+	(tramp-handle-insert-file-contents): Call set-visited-file-modtime
+	without args.
+	(tramp-handle-insert-file-contents): Ditto.
+	(tramp-handle-write-region): Pass VISIT arg on to call of real
+	handler.  (The old code of passing the `no-message' symbol instead
+	was a little strange -- an XEmacsism?)
+	(tramp-handle-write-region): Call set-visited-file-modtime, if
+	VISIT.
+	Remove some todo items.
+
+2001-12-25  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* tramp.el (tramp-buffer-file-attributes): New variable.
+	(tramp-handle-set-visited-file-modtime): Use it in case the
+	remote end does not give us the right modtime.
+	(tramp-handle-verify-visited-file-modtime): Implementation.
+
 2001-12-07  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
 
 	* tramp.el (tramp-make-auto-save-file-name): Append "~" to

lisp/tramp-util.el

 ;;; Code:
 
 (require 'compile)
+(require 'tramp)
 
 (defun tramp-compile (command)
   "Compile on remote host."
                              (not want-differences-if-changed))))
         (zerop status))
     ;; New VC.  Call `vc-default-workfile-unchanged-p'.
-    (vc-default-workfile-unchanged-p filename)))
+    (vc-default-workfile-unchanged-p (vc-backend file) filename)))
 
 (defadvice vc-workfile-unchanged-p
   (around tramp-advice-vc-workfile-unchanged-p
 (require 'shell)
 (require 'advice)
 
-;; It does not work to load EFS after loading TRAMP.  
-(when (fboundp 'efs-file-handler-function)
-  (require 'efs))
-
-;; It does not work to load Tramp after loading jka-compr.  Emacs 21.2
-;; might have a fix for this, so this code can be disabled in the
-;; future.
-(when (and (boundp 'auto-compression-mode)
-	   (symbol-value 'auto-compression-mode))
-  (error "Must load Tramp before enabling `auto-compression-mode'."))
+;; ;; It does not work to load EFS after loading TRAMP.  
+;; (when (fboundp 'efs-file-handler-function)
+;;   (require 'efs))
 
 (eval-when-compile
   (require 'cl)
               (tramp-rsh-program          "ssh")
               (tramp-rcp-program          "scp")
               (tramp-remote-sh            "/bin/sh")
-              (tramp-rsh-args             ("-e" "none" "-t" "/bin/sh"))
+              (tramp-rsh-args             ("-e" "none" "-t" "-t" "/bin/sh"))
               (tramp-rcp-args             nil)
               (tramp-rcp-keep-date-arg    "-p")
               (tramp-encoding-command     nil)
               (tramp-rsh-program          "ssh")
               (tramp-rcp-program          nil)
               (tramp-remote-sh            "/bin/sh")
-              (tramp-rsh-args             ("-e" "none" "-t" "/bin/sh"))
+              (tramp-rsh-args             ("-e" "none" "-t" "-t" "/bin/sh"))
               (tramp-rcp-args             nil)
               (tramp-rcp-keep-date-arg    nil)
               (tramp-su-program           nil)
 (defcustom tramp-remote-path
   '("/bin" "/usr/bin" "/usr/sbin" "/usr/local/bin" "/usr/ccs/bin"
     "/local/bin" "/local/freeware/bin" "/local/gnu/bin"
-    "/usr/freeware/bin" "/usr/pkg/bin")
+    "/usr/freeware/bin" "/usr/pkg/bin" "/usr/contrib/bin")
   "*List of directories to search for executables on remote host.
 Please notify me about other semi-standard directories to include here.
 
 
 ;;; Internal Variables:
 
+(defvar tramp-buffer-file-attributes nil
+  "Holds the `ls -ild' output for the current buffer.
+This variable is local to each buffer.  It is not used if the remote
+machine groks Perl.  If it is used, it's used as an emulation for
+the visited file modtime.")
+(make-variable-buffer-local 'tramp-buffer-file-attributes)
+
 (defvar tramp-end-of-output "/////"
   "String used to recognize end of output.")
 
 ;; file-name-sans-versions, get-file-buffer.
 (defconst tramp-file-name-handler-alist
   '(
-    ;; these aren't implemented yet
     (load . tramp-handle-load)
-    ;; these are implemented
     (make-symbolic-link . tramp-handle-make-symbolic-link)
     (file-name-directory . tramp-handle-file-name-directory)
     (file-name-nondirectory . tramp-handle-file-name-nondirectory)
+    (file-truename . tramp-handle-file-truename)
     (file-exists-p . tramp-handle-file-exists-p)
     (file-directory-p . tramp-handle-file-directory-p)
     (file-executable-p . tramp-handle-file-executable-p)
   "Like `file-name-nondirectory' but aware of TRAMP files."
   (let ((v (tramp-dissect-file-name file)))
     (file-name-nondirectory (tramp-file-name-path v))))
-  
+
+(defun tramp-handle-file-truename (filename &optional counter prev-dirs)
+  "Like `file-truename' for tramp files."
+  (let* ((v (tramp-dissect-file-name (tramp-handle-expand-file-name filename)))
+	 (multi-method (tramp-file-name-multi-method v))
+	 (method       (tramp-file-name-method v))
+	 (user         (tramp-file-name-user v))
+	 (host         (tramp-file-name-host v))
+	 (path         (tramp-file-name-path v))
+	 (steps        (tramp-split-string path "/"))
+	 (pathdir (let ((directory-sep-char ?/))
+		    (file-name-as-directory path)))
+	 (is-dir (string= path pathdir))
+	 (thisstep nil)
+	 (numchase 0)
+	 (numchase-limit 100)
+	 (result       nil)		;result steps in reverse order
+	 (curstri "")
+	 symlink-target)
+    (tramp-message-for-buffer
+     multi-method method user host
+     10 "Finding true name for `%s'" filename)
+    (while (and steps (< numchase numchase-limit))
+      (setq thisstep (pop steps))
+      (tramp-message-for-buffer
+       multi-method method user host
+       10 "Check %s"
+       (mapconcat 'identity
+		  (append '("") (reverse result) (list thisstep))
+		  "/"))
+      (setq symlink-target
+	    (nth 0 (tramp-handle-file-attributes
+		    (tramp-make-tramp-file-name
+		     multi-method method user host
+		     (mapconcat 'identity
+				(append '("") (reverse result) (list thisstep))
+				"/")))))
+      (cond ((string= "." thisstep)
+	     (tramp-message-for-buffer multi-method method user host
+				       10 "Ignoring step `.'"))
+	    ((string= ".." thisstep)
+	     (tramp-message-for-buffer multi-method method user host
+				       10 "Processing step `..'")
+	     (pop result))
+	    ((stringp symlink-target)
+	     ;; It's a symlink, follow it.
+	     (tramp-message-for-buffer
+	      multi-method method user host
+	      10 "Follow symlink to %s" symlink-target)
+	     (setq numchase (1+ numchase))
+	     (when (file-name-absolute-p symlink-target)
+	       (setq result nil))
+	     (setq steps
+		   (append (tramp-split-string symlink-target "/") steps)))
+	    (t
+	     ;; It's a file.
+	     (setq result (cons thisstep result)))))
+    (when (>= numchase numchase-limit)
+      (error "Maximum number (%d) of symlinks exceeded" numchase-limit))
+    (setq result (reverse result))
+    (tramp-message-for-buffer
+     multi-method method user host
+     10 "True name of `%s' is `%s'"
+     filename (mapconcat 'identity (cons "" result) "/"))
+    (tramp-make-tramp-file-name
+     multi-method method user host
+     (concat (mapconcat 'identity (cons "" result) "/")
+	     (if is-dir "/" "")))))
 
 ;; Basic functions.
 
 
 (defun tramp-handle-set-visited-file-modtime (&optional time-list)
   "Like `set-visited-file-modtime' for tramp files."
+  (unless (buffer-file-name)
+    (error "Can't set-visited-file-modtime: buffer `%s' not visiting a file"
+	   (buffer-name)))
   (when time-list
-    (error "Use set-visited-file-modtime directly with a time-list"))
-  (let* ((f (buffer-file-name))
+    (tramp-run-real-handler 'set-visited-file-modtime (list time-list)))
+  (let* ((last-coding-system-used	;don't clobber
+	  (if (boundp 'last-coding-system-used)
+	      last-coding-system-used
+	    nil))
+	 (f (buffer-file-name))
 	 (v (tramp-dissect-file-name f))
 	 (multi-method (tramp-file-name-multi-method v))
 	 (method (tramp-file-name-method v))
 	 (user (tramp-file-name-user v))
 	 (host (tramp-file-name-host v))
-	 (path (tramp-file-name-path v)))
-    (if (tramp-get-remote-perl multi-method method user host)
-	(let ((attr (file-attributes f)))
-	  (set-visited-file-modtime (nth 5 attr)))
-      ;;CCC continue here
-  nil)))
-
+	 (path (tramp-file-name-path v))
+	 (attr (file-attributes f))
+	 (modtime (nth 5 attr)))
+    ;; We use '(0 0) as a don't-know value.  See also
+    ;; `tramp-handle-file-attributes-with-ls'.
+    (if (not (equal modtime '(0 0)))
+	(tramp-run-real-handler 'set-visited-file-modtime (list modtime))
+      (save-excursion
+	(tramp-send-command
+	 multi-method method user host
+	 (format "%s -ild %s"
+		 (tramp-get-ls-command multi-method method user host)
+		 (tramp-shell-quote-argument path)))
+	(tramp-wait-for-output)
+	(setq attr (buffer-substring (point)
+				     (progn (end-of-line) (point)))))
+      (setq tramp-buffer-file-attributes attr))
+    nil))
+
+;; This function makes the same assumption as
+;; `tramp-handle-set-visited-file-modtime'.
 (defun tramp-handle-verify-visited-file-modtime (buf)
   "Like `verify-visited-file-modtime' for tramp files."
-  nil)
-
+  (with-current-buffer buf
+    (let* ((f (buffer-file-name))
+	   (v (tramp-dissect-file-name f))
+	   (multi-method (tramp-file-name-multi-method v))
+	   (method (tramp-file-name-method v))
+	   (user (tramp-file-name-user v))
+	   (host (tramp-file-name-host v))
+	   (path (tramp-file-name-path v))
+	   (attr (file-attributes f))
+	   (modtime (nth 5 attr)))
+      (if (not (equal modtime '(0 0)))
+	  ;; Why does `file-attributes' return a list (HIGH LOW), but
+	  ;; `visited-file-modtime' returns a cons (HIGH . LOW)?
+	  (let ((mt (visited-file-modtime)))
+	    (< (abs (tramp-time-diff modtime (list (car mt) (cdr mt)))) 2))
+	(save-excursion
+	  (tramp-send-command
+	   multi-method method user host
+	   (format "%s -ild %s"
+		   (tramp-get-ls-command multi-method method user host)
+		   (tramp-shell-quote-argument path)))
+	  (tramp-wait-for-output)
+	  (setq attr (buffer-substring (point)
+				       (progn (end-of-line) (point)))))
+	(equal tramp-buffer-file-attributes attr)))))
+
+(defadvice clear-visited-file-modtime (after tramp activate)
+  "Set `tramp-buffer-file-attributes' back to nil.
+Tramp uses this variable as an emulation for the actual modtime of the file,
+if the remote host can't provide the modtime."
+  (setq tramp-buffer-file-attributes nil))
 
 (defun tramp-handle-set-file-modes (filename mode)
   "Like `set-file-modes' for tramp files."
 	    (tramp-wait-for-output)
 	    (goto-char (point-min))
 	    (setq uname (buffer-substring (point) (tramp-line-end-position)))
-	    (setq path (concat uname fname)))) ;)
+	    (setq path (concat uname fname))))
 	;; No tilde characters in file name, do normal
-	;; expand-file-name (this does "/./" and "/../").
-	(tramp-make-tramp-file-name
-	 multi-method method user host
-	 (tramp-drop-volume-letter
-	  (tramp-run-real-handler 'expand-file-name (list path))))))))
+	;; expand-file-name (this does "/./" and "/../").  We bind
+	;; directory-sep-char here for XEmacs on Windows, which would
+	;; otherwise use backslash.
+	(let ((directory-sep-char ?/))
+	  (tramp-make-tramp-file-name
+	   multi-method method user host
+	   (tramp-drop-volume-letter
+	    (tramp-run-real-handler 'expand-file-name (list path)))))))))
 
 ;; Remote commands.
 
                     filename
                     (tramp-get-decoding-function multi-method method))
                    (set-buffer tmpbuf)
-                   (funcall (tramp-get-decoding-function multi-method method)
-                            (point-min)
-                            (point-max))
                    (let ((coding-system-for-write 'no-conversion))
+		     (funcall (tramp-get-decoding-function multi-method method)
+			      (point-min)
+			      (point-max))
 		     (write-region (point-min) (point-max) tmpfil))
                    (kill-buffer tmpbuf))
                ;; If tramp-decoding-function is not defined for this
       (progn
         (when visit
           (setq buffer-file-name filename)
-          (set-visited-file-modtime '(0 0))
+          (set-visited-file-modtime)
           (set-buffer-modified-p nil))
 	(signal 'file-error
                 (format "File `%s' not found on remote host" filename))
         (list (tramp-handle-expand-file-name filename) 0))
     (let ((local-copy (tramp-handle-file-local-copy filename))
+	  (coding-system-used nil)
           (result nil))
       (when visit
         (setq buffer-file-name filename)
-        (set-visited-file-modtime '(0 0))
+        (set-visited-file-modtime)
         (set-buffer-modified-p nil))
       (tramp-message 9 "Inserting local temp file `%s'..." local-copy)
       (setq result
             (tramp-run-real-handler 'insert-file-contents
 				    (list local-copy nil beg end replace)))
+      (tramp-message 9 "last coding system used was %s" last-coding-system-used)
+      ;; Now `last-coding-system-used' has right value.  Remember it.
+      (when (boundp 'last-coding-system-used)
+	(setq coding-system-used last-coding-system-used))
       (tramp-message 9 "Inserting local temp file `%s'...done" local-copy)
       (delete-file local-copy)
+      (when (boundp 'last-coding-system-used)
+	(setq last-coding-system-used coding-system-used))
       (list (expand-file-name filename)
             (second result)))))
 
     (unless (y-or-n-p (format "File %s exists; overwrite anyway? "
                               filename))
       (error "File not overwritten")))
-  (let* ((v (tramp-dissect-file-name filename))
+  (let* ((curbuf (current-buffer))
+	 (v (tramp-dissect-file-name filename))
          (multi-method (tramp-file-name-multi-method v))
          (method (tramp-file-name-method v))
          (user (tramp-file-name-user v))
     ;; use an encoding function, but currently we use it always
     ;; because this makes the logic simpler.
     (setq tmpfil (tramp-make-temp-file))
+    ;; We say `no-message' here because we don't want the visited file
+    ;; modtime data to be clobbered from the temp file.  We call
+    ;; `set-visited-file-modtime' ourselves later on.
     (tramp-run-real-handler
      'write-region
      (if confirm ; don't pass this arg unless defined for backward compat.
                     "decoding command or an rcp program")
             method)))
     (delete-file tmpfil)
+    (unless (equal curbuf (current-buffer))
+      (error "Buffer has changed from `%s' to `%s'"
+	     curbuf (current-buffer)))
+    (when (eq visit t)
+      (set-visited-file-modtime))
     ;; Make `last-coding-system-used' have the right value.
     (when (boundp 'last-coding-system-used)
       (setq last-coding-system-used coding-system-used))
 ;; Details as they come in.
 ;;
 ;; Daniel Pittman <daniel@danann.net>
+
+;; (defun tramp-run-real-handler (operation args)
+;;   "Invoke normal file name handler for OPERATION.
+;; This inhibits EFS and Ange-FTP, too, because they conflict with tramp.
+;; First arg specifies the OPERATION, remaining ARGS are passed to the
+;; OPERATION."
+;;   (let ((inhibit-file-name-handlers
+;;          (list 'tramp-file-name-handler
+;; 	       'efs-file-handler-function
+;;                'ange-ftp-hook-function
+;;                (and (eq inhibit-file-name-operation operation)
+;;                     inhibit-file-name-handlers)))
+;;         (inhibit-file-name-operation operation))
+;;     (apply operation args)))
+
 (defun tramp-run-real-handler (operation args)
   "Invoke normal file name handler for OPERATION.
-This inhibits EFS and Ange-FTP, too, because they conflict with tramp.
 First arg specifies the OPERATION, remaining ARGS are passed to the
 OPERATION."
   (let ((inhibit-file-name-handlers
          (list 'tramp-file-name-handler
-	       'efs-file-handler-function
-               'ange-ftp-hook-function
                (and (eq inhibit-file-name-operation operation)
                     inhibit-file-name-handlers)))
         (inhibit-file-name-operation operation))
 (add-to-list 'file-name-handler-alist
 	     (cons tramp-file-name-regexp 'tramp-file-name-handler))
 
+;; If jka-compr is already loaded, move it to the front of
+;; `file-name-handler-alist'.  On Emacs 21.3 or so this will not be
+;; necessary anymore.
+(let ((jka (rassoc 'jka-compr-handler file-name-handler-alist)))
+  (when jka
+    (setq file-name-handler-alist
+	  (cons jka (delete jka file-name-handler-alist)))))
+
 ;;; Interactions with other packages:
 
 ;; -- complete.el --
      ((string-match "^~root$" (buffer-string))
       (setq shell
             (or (tramp-find-executable multi-method method user host
-                                     "ksh"  tramp-remote-path t)
+                                     "bash"  tramp-remote-path t)
                 (tramp-find-executable multi-method method user host
-                                     "bash" tramp-remote-path t)))
+                                     "ksh" tramp-remote-path t)))
       (unless shell
         (error "Couldn't find a shell which groks tilde expansion"))
-      (tramp-message 5 "Starting remote shell `%s' for tilde expansion..." shell)
+      ;; Hack: avoid reading of ~/.bashrc.  What we should do is have an
+      ;; alist for extra args to give to each shell...
+      (when (string-match "/bash\\'" shell)
+	(setq shell (concat shell " --norc")))
+      (tramp-message
+       5 "Starting remote shell `%s' for tilde expansion..." shell)
       (tramp-send-command
        multi-method method user host
        (concat "PS1='$ ' ; exec " shell))
                      cmd)))
       (tramp-message 7 "Testing remote command `%s' for -n...%s"
                    cmd
-                   (if result "okay" "failed"))
-      result)))
+                   (if (zerop result) "okay" "failed"))
+      (zerop result))))
 
 (defun tramp-check-ls-commands (multi-method method user host cmd dirlist)
   "Checks whether the given `ls' executable in one of the dirs groks `-n'.
   (tramp-message 9 "Finding a suitable `ls' command")
   (or
    (tramp-check-ls-commands multi-method method user host "ls" tramp-remote-path)
-   (tramp-check-ls-commands multi-method method user host "gnuls" tramp-remote-path)))
+   (tramp-check-ls-commands multi-method method user host "gnuls" tramp-remote-path)
+   (tramp-check-ls-commands multi-method method user host "gls" tramp-remote-path)))
 
 ;; ------------------------------------------------------------ 
 ;; -- Functions for establishing connection -- 
 ;; ------------------------------------------------------------ 
 
+(defun tramp-process-actions
+  (multi-method method user host actions &optional timeout)
+  "Process given ACTIONS for login specified via first four args.
+ACTIONS is a list of items (REGEXP FUN), where REGEXP specifies what
+output from the remote end to look for, and FUN specifies the action
+to take when the regexp matches."
+  nil)
+
 (defun tramp-open-connection-telnet (multi-method method user host)
   "Open a connection using a telnet METHOD.
 This starts the command `telnet HOST ARGS'[*], then waits for a remote
     (error "Fatal error: Couldn't find remote executable `ls'"))
   (tramp-message 5 "Using remote command `%s' for getting directory listings"
                tramp-ls-command)
-  ;; Tell remote shell to use standard time format, needed for
-  ;; parsing `ls -l' output.
   (tramp-send-command multi-method method user host
                     (concat "tramp_set_exit_status () {" tramp-rsh-end-of-line
                             "return $1" tramp-rsh-end-of-line
   (tramp-wait-for-output)
   ;; Set remote PATH variable.
   (tramp-set-remote-path multi-method method user host "PATH" tramp-remote-path)
+  ;; Tell remote shell to use standard time format, needed for
+  ;; parsing `ls -l' output.
   (tramp-send-command multi-method method user host
                     "LC_TIME=C; export LC_TIME; echo huhu")
   (tramp-wait-for-output)
                     "unalias ls; echo huhu")
   (tramp-wait-for-output)
   ;; Does `test A -nt B' work?  Use abominable `find' construct if it
-  ;; doesn't.
+  ;; doesn't.  BSD/OS 4.0 wants the parentheses around the command,
+  ;; for otherwise the shell crashes.
   (erase-buffer)
   (make-local-variable 'tramp-test-groks-nt)
   (tramp-send-command multi-method method user host
-                    "test / -nt /")
+                    "( test / -nt / )")
   (tramp-wait-for-output)
   (goto-char (point-min))
   (setq tramp-test-groks-nt
    "ln"
    (tramp-find-executable multi-method method user host
                           "ln" tramp-remote-path nil)
-   multi-method method user host))
+   multi-method method user host)
+  ;; If encoding/decoding command are given, test to see if they work.
+  ;; CCC: Maybe it would be useful to run the encoder both locally and
+  ;; remotely to see if they produce the same result.
+  (let ((decoding (tramp-get-decoding-command multi-method method))
+	(encoding (tramp-get-encoding-command multi-method method))
+	(magic-string "xyzzy"))
+    (when (and (or decoding encoding) (not (and decoding encoding)))
+      (error
+       "Must give both decoding and encoding command in method definition"))
+    (when (and decoding encoding)
+      (tramp-message
+       5
+       "Checking to see if encoding and decoding commands work on remote host.")
+      (tramp-send-command
+       multi-method method user host
+       (format "echo %s | %s | %s"
+	       (tramp-shell-quote-argument magic-string) encoding decoding))
+      (tramp-wait-for-output)
+      (unless (looking-at (regexp-quote magic-string))
+	(error "Remote host cannot execute de/encoding commands.  See buffer `%s' for details"
+	       (buffer-name))))))
 
 
 (defun tramp-maybe-open-connection (multi-method method user host)
   ;; jka-compr doesn't like auto-saving, so by appending "~" to the
   ;; file name we make sure that jka-compr isn't used for the
   ;; auto-save file.
-  (expand-file-name
-   (concat (tramp-subst-strs-in-string '(("_" . "|")
-					 ("/" . "_a")
-					 (":" . "_b")
-					 ("|" . "__")
-					 ("[" . "_l")
-					 ("]" . "_r"))
-				       fn)
-	   "~")
-   tramp-auto-save-directory))
+  (let ((buffer-file-name (expand-file-name
+			   (tramp-subst-strs-in-string '(("_" . "|")
+							 ("/" . "_a")
+							 (":" . "_b")
+							 ("|" . "__")
+							 ("[" . "_l")
+							 ("]" . "_r"))
+						       fn)
+			   tramp-auto-save-directory)))
+    (make-auto-save-file-name)))
 
 (defadvice make-auto-save-file-name
   (around tramp-advice-make-auto-save-file-name () activate)
 NOTE: This function will fail if the time difference is too large to
 fit in an integer."
   ;; Pacify byte-compiler with `symbol-function'.
-  (cond ((fboundp 'itimer-time-difference)
-         (floor (funcall (symbol-function 'itimer-time-difference) t1 t2)))
-        ((fboundp 'subtract-time)
+  (cond ((fboundp 'subtract-time)
          (cadr (funcall (symbol-function 'subtract-time) t1 t2)))
+        ((fboundp 'itimer-time-difference)
+         (floor (funcall
+		 (symbol-function 'itimer-time-difference)
+		 (if (< (length t1) 3) (append t1 '(0)) t1)
+		 (if (< (length t2) 3) (append t2 '(0)) t2))))
         (t
          ;; snarfed from Emacs 21 time-date.el
          (cadr (let ((borrow (< (cadr t1) (cadr t2))))
                               "`dos', `unix', or `mac'"))))))
         (t (error "Can't change EOL conversion -- is MULE missing?"))))
 
+(defun tramp-split-string (string pattern)
+  "Like `split-string' but omit empty strings.
+In Emacs, (split-string \"/foo/bar\" \"/\") returns (\"foo\" \"bar\").
+This is, the first, empty, element is omitted.  In XEmacs, the first
+element is not omitted.
+
+Note: this function has been written for `tramp-handle-file-truename'.
+If you want to use it for something else, you'll have to check whether
+it does the right thing."
+  (delete "" (split-string string pattern)))
+
 ;; ------------------------------------------------------------ 
 ;; -- Kludges section -- 
 ;; ------------------------------------------------------------ 
                                     t t result)))
       result)))
 
-;; EFS hooks itself into the file name handling stuff in more places
-;; than just `file-name-handler-alist'. The following tells EFS to stay
-;; away from tramp.el paths.
-;;
-;; This is needed because EFS installs (efs-dired-before-readin) into
-;; 'dired-before-readin-hook'. This prevents EFS from opening an FTP
-;; connection to help it's dired process. Not that I have any real
-;; idea *why* this is helpful to dired.
-;;
-;; Anyway, this advice fixes the problem (with a sledgehammer :)
-;;
-;; Daniel Pittman <daniel@danann.net>
-;;
-;; CCC: when the other defadvice calls have disappeared, make sure
-;; not to call defadvice unless it's necessary.  How do we find out whether
-;; it is necessary?  (featurep 'efs) is surely the wrong way --
-;; EFS might nicht be loaded yet.
-(defadvice efs-ftp-path (around dont-match-tramp-path activate protect)
-  "Cause efs-ftp-path to fail when the path is a TRAMP path."
-  (if (tramp-tramp-file-p (ad-get-arg 0))
-      nil
-    ad-do-it))
+;; ;; EFS hooks itself into the file name handling stuff in more places
+;; ;; than just `file-name-handler-alist'. The following tells EFS to stay
+;; ;; away from tramp.el paths.
+;; ;;
+;; ;; This is needed because EFS installs (efs-dired-before-readin) into
+;; ;; 'dired-before-readin-hook'. This prevents EFS from opening an FTP
+;; ;; connection to help it's dired process. Not that I have any real
+;; ;; idea *why* this is helpful to dired.
+;; ;;
+;; ;; Anyway, this advice fixes the problem (with a sledgehammer :)
+;; ;;
+;; ;; Daniel Pittman <daniel@danann.net>
+;; ;;
+;; ;; CCC: when the other defadvice calls have disappeared, make sure
+;; ;; not to call defadvice unless it's necessary.  How do we find out whether
+;; ;; it is necessary?  (featurep 'efs) is surely the wrong way --
+;; ;; EFS might nicht be loaded yet.
+;; (defadvice efs-ftp-path (around dont-match-tramp-path activate protect)
+;;   "Cause efs-ftp-path to fail when the path is a TRAMP path."
+;;   (if (tramp-tramp-file-p (ad-get-arg 0))
+;;       nil
+;;     ad-do-it))
 
 ;; We currently use "[" and "]" in the filename format.  In Emacs
 ;; 20.x, this means that Emacs wants to expand wildcards if
 
 ;;; TODO:
 
+;; * In Emacs 21, `insert-directory' shows total number of bytes used
+;;   by the files in that directory.  Add this here.
 ;; * Avoid screen blanking when hitting `g' in dired.  (Eli Tziperman)
 ;; * Make ffap.el grok Tramp filenames.  (Eli Tziperman)
 ;; * When logging in, keep looking for questions according to an alist
 ;; * Don't use globbing for directories with many files, as this is
 ;;   likely to produce long command lines, and some shells choke on
 ;;   long command lines.
-;; * Have `tramp-wait-for-regexp' return a list of match strings,
-;;   rather than relying on the saved match data.  With this change,
-;;   it is safer to slap a `save-match-data' around various functions.
-;;   (Daniel Pittman)
 ;; * Implement `load' operation.
 ;; * Find out about the new auto-save mechanism in Emacs 21 and
 ;;   do the right thing.
 ;;   if it does show files when run locally.
 ;; * Allow correction of passwords, if the remote end allows this.
 ;;   (Mark Hershberger)
-;; * Bug with file name completion if `@user' part is omitted.
 ;; * Make sure permissions of tmp file are good.
 ;;   (Nelson Minar <nelson@media.mit.edu>)
 ;; * Grok passwd prompts with scp?  (David Winter
 ;; * abbreviate-file-name
 ;; * grok ~ in tramp-remote-path  (Henrik Holm <henrikh@tele.ntnu.no>)
 ;; * `C' in dired gives error `not tramp file name'.
-;; * instead of putting in user-login-name as remote login, rely
-;;   on ssh/scp to fill these in.  Make this controllable with a variable.
-;;   I would prefer to use nothing if nothing was specified -- <daniel@danann.net>
 ;; * Also allow to omit user names when doing multi-hop.  Not sure yet
 ;;   what the user names should default to, though.
 ;; * better error checking.  At least whenever we see something
 ;;   An easy way to implement start-process is to open a second shell
 ;;   connection which is inconvenient if the user has to reenter
 ;;   passwords.
+;; * Change `copy-file' to grok the case where the filename handler
+;;   for the source and the target file are different.  Right now,
+;;   it looks at the source file and then calls that handler, if
+;;   there is one.  But since ange-ftp, for instance, does not know
+;;   about Tramp, it does not do the right thing if the target file
+;;   name is a Tramp name.
 
 ;; Functions for file-name-handler-alist:
 ;; diff-latest-backup-file -- in diff.el
 ;; find-backup-file-name
 ;; get-file-buffer -- use primitive
 ;; load
-;; set-visited-file-modtime
-;; shell-command
 ;; unhandled-file-name-directory
 ;; vc-registered
-;; verify-visited-file-modtime
 
 ;;; tramp.el ends here
+2002-01-21  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* tramp_ja.texi: Sync with tramp.texi rev 2.10.  From Yoichi
+	NAKAYAMA <yoichi@FreeBSD.org>.
+
+2002-01-20  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* tramp.texi (External transfer methods): Document double use of
+	`-t' for the `scpx' method.  Explain why it is useful for Windows
+	users.
+	(Inline methods): Ditto for the `smx' method.
+
+2001-12-11  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+	* tramp.texi (Connection types): Double-space sentence end.
+
 2001-09-20  Kai Großjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
 
 	* tramp.texi (Module): New filenames.  Moved to SourceForge.
 @c NOTE: The 'UPDATED' value is updated by the 'time-stamp' function.
 @c       If you change it by hand, the modifications will not stay.
 @set VERSION $Revision$
-@set UPDATED Thursday, 20 September, 2001
+@set UPDATED Sunday, 20 January, 2002
 
 
 @c Entries for @command{install-info} to use
 @dfn{external transfer methods}.
 
 The performance of the external transfer methods is generally better
-than that of the inline methods. This is caused by the need to encode
+than that of the inline methods.  This is caused by the need to encode
 and decode the data when transferring inline.
 
 The one exception to this rule are the @command{scp} based transfer
-methods. While these methods do see better performance when actually
+methods.  While these methods do see better performance when actually
 transferring files, the overhead of the cryptographic negotiation at
 startup may drown out the improvement in file transfer times.
 
 rather than @command{su} to become a different user.
 
 
+@item @option{smx} --- @command{ssh} with @command{mimencode}
+
+As you expect, this is similar to @option{sm}, only a little
+different.  Whereas @option{sm} opens a normal interactive shell on
+the remote host, this option uses @command{ssh -t -t HOST -l USER
+/bin/sh} tp open a connection.  This is useful for users where the
+normal login shell is set up to ask them a number of questions when
+logging in.  This procedure avoids these questions, and just gives
+@tramp{} a more-or-less `standard' login shell to work with.
+
+This is also useful for Windows users where @command{ssh}, when
+invoked from an Emacs buffer, tells them that it is not allocating a
+pseudo tty.  When this happens, the login shell is wont to not print
+any shell prompt, which confuses @tramp{} mightily.
+
 @end itemize
 
 
 
 As you expect, this is similar to @option{scp}, only a little
 different.  Whereas @option{scp} opens a normal interactive shell on the
-remote host, this option uses @command{ssh -t HOST -l user /bin/sh} to
+remote host, this option uses @command{ssh -t -t HOST -l USER /bin/sh} to
 open a connection.  This is useful for users where the normal login
-shell is set up to ask them a number of question when logging in.  This
+shell is set up to ask them a number of questions when logging in.  This
 procedure avoids these questions, and just gives @tramp{} a more-or-less
 `standard' login shell to work with. 
 
+This is also useful for Windows users where @command{ssh}, when
+invoked from an Emacs buffer, tells them that it is not allocating a
+pseudo tty.  When this happens, the login shell is wont to not print
+any shell prompt, which confuses @tramp{} mightily.
+
 @end itemize
 
 @node Multi-hop Methods, Default Method, External transfer methods, Configuration

texi/tramp_ja.texi

 @c NOTE: The 'UPDATED' value is updated by the 'time-stamp' function.
 @c       If you change it by hand, the modifications will not stay.
 @set VERSION $Revision$
-@set UPDATED 2001 ÇŻ 9 ˇî 7 Ćü (Fri)
+@set UPDATED 2002 ÇŻ 1 ˇî 15 Ćü (Tue)
 @c XXX VERSION and UPDATED are Japanese manual's version and update date.
 @c XXX If we need original's one, we MUST use literal version and date
 @c XXX strings.
 @node Top, Copying, (dir), (dir)
 @top @tramp{} ĽćĄźĽśĄźĽŢĽËĽĺĽ˘Ľë
 
+@html
+¤ł¤ÎĽ×ĽíĽ¸Ľ§ĽŻĽČ¤Ď <A href="http://sourceforge.net">
+<IMG src="http://sourceforge.net/sflogo.php?group_id=34545"
+     width="88" height="31" border="0" alt="SourceForge Logo"></A>
+¤Ë´ÖźÚ¤ę¤ľ¤ť¤ĆÄş¤¤¤Ć¤¤¤Ţ¤šĄŁ
+@end html
+
 @tramp{} ¤Ď `Transparent Remote (file) Access, Multiple Protocol'
 ¤ÎÎŹžÎ¤Ç¤šĄŁ¤ł¤ÎĽŃĽĂĽąĄźĽ¸¤Ď @cite{ange-ftp} ¤ä @cite{EFS} ¤Î¤č¤Ś¤Ę
 ĽęĽâĄźĽČĽŐĽĄĽ¤Ľë¤ÎĘÔ˝¸ľĄÇ˝¤ňÄ󜥤ˇ¤Ţ¤šĄŁ
 @tramp{} ¤Ď @command{rsh} ¤Č @command{rcp}Ą˘¤˘¤ë¤¤¤Ďž¤ÎĆą¤¸¤č¤Ś¤Ę
 Ľ×ĽíĽ°ĽéĽŕĄ˘Î㤨¤Đ @command{ssh} ¤ä @command{scp}¤ňťČÍѤˇ¤Ţ¤šĄŁ
 
-¤ł¤ě¤Ď @tramp{} ¤ÎĽŢĽËĽĺĽ˘Ľë¤ÎĽĐĄźĽ¸ĽçĽó 1.38 ¤ÇĄ˘şÇ¸ĺ¤Ëššżˇ¤ľ¤ě¤ż
-¤Î¤Ď 2001 ÇŻ 1 ˇî 4 Ćü (ĚÚ)¤Ç¤šĄŁ
+¤ł¤ě¤Ď @tramp{} ¤ÎĽŢĽËĽĺĽ˘Ľë¤ÎĽĐĄźĽ¸ĽçĽó 2.10 ¤ÇĄ˘şÇ¸ĺ¤Ëššżˇ¤ľ¤ě¤ż
+¤Î¤Ď 2001 ÇŻ 12 ˇî 11 Ćü (˛Đ)¤Ç¤šĄŁ
 
 @ifset ja
 @c ¤ł¤ÎÉôĘŹ¤ĎĄ˘ĽŞĽęĽ¸ĽĘĽëČǤŤ¤éššżˇĆüťţĄ˘ĽĐĄźĽ¸ĽçĽóʸťúÎó¤ňĽłĽÔĄź
 @end ifset
 
 ¤ł¤ÎĽÉĽ­ĽĺĽáĽóĽČ¤ÎşÇżˇĽĐĄźĽ¸ĽçĽó¤Ď web ĽľĽ¤ĽČ
-@uref{http://ls6-www.informatik.uni-dortmund.de/~grossjoh/emacs/tramp.html}
+@uref{http://tramp.sourceforge.net/}
 ¤Ë¤˘¤ę¤Ţ¤šĄŁ
 
 @ifhtml
 @end ifset
 
 şÇżˇ¤Î @tramp{} ¤Ď
-@uref{ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/tramp.tar.gz} 
+@uref{http://tramp.sourceforge.net/download} 
 ¤Ë¤˘¤ę¤Ţ¤šĄŁžÜşŮ¤Ď @ref{Obtaining @tramp{}} ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ
 CVS ĽľĄźĽĐĄź¤Ë¤Ä¤¤¤Ć¤ÎŔâĚŔ¤â¤˘¤ę¤Ţ¤šĄŁ
+
+¤Ţ¤żĄ˘ @uref{http://sourceforge.net/projects/tramp/,
+SourceForge Project Page} ¤Ë¤â @tramp{} ¤ÎžđĘ󤏤˘¤ę¤Ţ¤šĄŁ
 @end ifhtml
 
-@tramp{}¤Î¤ż¤á¤ÎĽáĄźĽęĽóĽ°ĽęĽšĽČ @email{emacs-rcp@@ls6.cs.uni-dortmund.de}
-¤ŹÂ¸şß¤ˇ¤Ţ¤šĄŁĽ˘ĄźĽŤĽ¤ĽÖ¤Ď 
-@uref{http://www.mail-archive.com/emacs-rcp@@ls6.cs.uni-dortmund.de/} 
+@tramp{}¤Î¤ż¤á¤ÎĽáĄźĽęĽóĽ°ĽęĽšĽČ @email{tramp-devel@@lists.sourceforge.net}
+¤ŹÂ¸şß¤ˇ¤Ţ¤šĄŁĽ˘ĄźĽŤĽ¤ĽÖ¤ĎÄĚžď¤Î SourceForge Ľ˘ĄźĽŤĽ¤ĽÖ¤ČĆą¤¸¤ŻĄ˘
+@uref{http://www.mail-archive.com/emacs-rcp@@ls6.cs.uni-dortmund.de/}
 ¤Ë¤˘¤ę¤Ţ¤šĄŁ
 
 @end ifnottex
 * Default Method::              ĽÇĽŐĽŠĽëĽČ¤ÎĽáĽ˝ĽĂĽÉ¤ÎÁŞÂň
 * Customizing Methods::         Čóɸ˝ŕ¤ÎĽáĽ˝ĽĂĽÉ¤ňťČ¤Ś
 * Remote Programs::             ĽęĽâĄźĽČĽŢĽˇĽóžĺ¤Ç @tramp{} ¤ŹĽ×ĽíĽ°ĽéĽŕ¤ňČŻ¸ŤĄ˘ťČÍѤš¤ëĘýËĄ
+* Remote shell setup::          
 
 @tramp{} ¤ÎťČ¤¤Ęý
 
 @tramp {} ¤ÎşÇżˇ¤ÎłŤČŻĽĐĄźĽ¸ĽçĽó¤ň CVS (@command{cvs(1)}¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤)
 ¤Ť¤éĆţźę¤š¤ë¤ż¤á¤Ë¤ĎĄ˘°Ę˛ź¤ÎĽłĽŢĽóĽÉ¤ňźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤(ĽÜĄźĽëĽÉ¤Îʸťú¤ň
 ĆţÎϤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤):
+@tramp {} ¤ÎşÇżˇ¤ÎłŤČŻĽĐĄźĽ¸ĽçĽó¤ň CVS ¤Ť¤éĆţźę¤š¤ëĘýËĄ¤ĎĄ˘SourceForge
+Ľ×ĽíĽ¸Ľ§ĽŻĽČĽÚĄźĽ¸ (@uref{http://sourceforge.net/projects/tramp/}) ¤Ç
+°ěČÖžĺ¤ÎĽĘĽÓĽ˛ĄźĽˇĽçĽóĽĐĄź¤Ë¤˘¤ë CVS ¤ÎĽęĽóĽŻ¤ňĽŻĽęĽĂĽŻ¤š¤ě¤Đ¸Ť¤ë¤ł¤Č¤Ź
+˝ĐÍč¤Ţ¤šĄŁ¤â¤ˇ¤Ż¤Ď°Ę˛ź¤ÎÎă¤ËĘď¤Ă¤Ć˛ź¤ľ¤¤:
 
 @example
 ] @strong{cd ~/lisp}
-] @strong{cvs -d :pserver:cvs@@bonny.cs.uni-dortmund.de:/services/emacs-rcp/cvsroot login}
-(Logging in to cvs@@bonny.cs.uni-dortmund.de)
+] @strong{cvs -d:pserver:anonymous@@cvs.tramp.sourceforge.net:/cvsroot/tramp login}
+(Logging in to anonymous@@cvs.tramp.sourceforge.net)
 CVS password: @strong{(just hit RET here)}
 @dots{}
 
-] @strong{cvs -d :pserver:cvs@@bonny.cs.uni-dortmund.de:/services/emacs-rcp/cvsroot get tramp}
+] @strong{cvs -z3 -d:pserver:anonymous@@cvs.tramp.sourceforge.net:/cvsroot/tramp co tramp}
 @end example
 
 ¤ł¤ě¤ÇĄ˘@tramp{} ¤ÎşÇżˇĽĐĄźĽ¸ĽçĽó¤Ź´Ţ¤Ţ¤ě¤ëĽÇĽŁĽěĽŻĽČĽę @file{~/lisp/tramp}
 @chapter @tramp{} ¤ÎŔßÄę
 
 
-@tramp{} ¤ĎĽ¤ĽóĽšĽČĄźĽë¤š¤ë¤Ŕ¤ą¤Ç´°Á´¤ËľĄÇ˝¤ˇ¤Ţ¤šĄŁ˝é´üžőÂ֤Ǥϥ˘ĽęĽâĄźĽČ
-ĽŰĽšĽČ¤Ř¤ÎŔÜÂł¤Ë @command{rsh} ¤Č @command{rcp} Ľ×ĽíĽ°ĽéĽŕ¤ňťČÍѤš¤ë¤č¤Ś
-¤ËŔßÄꤾ¤ě¤Ć¤¤¤Ţ¤šĄŁ
+@tramp{} ¤Ď(ÄĚžď)Ľ¤ĽóĽšĽČĄźĽë¤š¤ë¤Ŕ¤ą¤Ç´°Á´¤ËľĄÇ˝¤ˇ¤Ţ¤šĄŁ˝é´üžőÂ֤Ǥϥ˘
+ĽęĽâĄźĽČĽŰĽšĽČ¤Ř¤ÎŔÜÂł¤Ë @command{rsh} ¤Č @command{rcp} Ľ×ĽíĽ°ĽéĽŕ¤ňťČÍŃ
+¤š¤ë¤č¤Ś¤ËŔßÄꤾ¤ě¤Ć¤¤¤Ţ¤šĄŁ
+
+ĽŰĽšĽČ¤Ë¤č¤Ă¤Ć¤ĎĄ˘ŔÜÂł¤ňłÎΊ¤š¤ë¤Î¤ËĚäÂꤏľŻ¤­¤ë¤ł¤Č¤Ź¤˘¤ę¤Ţ¤šĄŁ¤ł¤ě¤ĎĄ˘
+ remote shell ¤Îżś¤ëÉń¤¤¤Ë¤č¤ë¤â¤Î¤Ç¤šĄŁ¤ł¤ÎžÜşŮ¤Ë¤Ä¤¤¤Ć¤Ď @xref{Remote
+shell setup}, ¤ňť˛žČ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ
 
 ¤â¤ˇĄ˘ĽęĽâĄźĽČĽŰĽšĽČ¤Č¤ÎŔÜÂł¤Ë¤ł¤ě¤é¤ÎĽłĽŢĽóĽÉ¤ňťČÍѤˇ¤ż¤Ż¤Ę¤¤žěšç¤ĎĄ˘
 @tramp{} ¤ÎĽÇĽŐĽŠĽëĽČ¤ÎŔÜÂł¤ČĹžÁ÷ĽáĽ˝ĽĂĽÉ¤ňĘŃšš¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁĽęĽâĄźĽČ
 * Default Method::              ĽÇĽŐĽŠĽëĽČ¤ÎĽáĽ˝ĽĂĽÉ¤ÎÁŞÂň
 * Customizing Methods::         Čóɸ˝ŕ¤ÎĽáĽ˝ĽĂĽÉ¤ňťČ¤Ś
 * Remote Programs::             ĽęĽâĄźĽČĽŢĽˇĽóžĺ¤Ç @tramp{} ¤ŹĽ×ĽíĽ°ĽéĽŕ¤ňČŻ¸ŤĄ˘ťČÍѤš¤ëĘýËĄ
+* Remote shell setup::          
 @end menu
 
 
 ł°ÉôĹžÁ÷ĽáĽ˝ĽĂĽÉ¤ňťČ¤¤¤ż¤¤žěšç¤ĎĄ˘ĽŐĽĄĽ¤Ľë¤ňĽłĽÔĄź¤š¤ë¤ż¤á¤ÎĹžÁ÷ĽćĄźĽĆĽŁ
 ĽęĽĆĽŁ¤ŹĄ˘ĽŃĽšĽďĄźĽÉĆţÎϤʤˇ¤ÇźÂšÔ¤Ç¤­¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ
 
-¤Ä¤Ţ¤ęĄ˘@command{scp} ¤ňťČ¤Śžěšç¤Ë¤ĎĄ˘@command{ssh-agent} ¤ňťČ¤ŚÉŹÍפŹ
-¤˘¤ë¤Č¤¤¤Ś¤ł¤Č¤Ç¤šĄŁ@command{ssh} ˇĐÍł¤Ç @command{rsync} ¤ňťČ¤Śžěšç¤â
-ĆąÍͤǤšĄŁ
+¤Ä¤Ţ¤ęĄ˘@command{scp} ¤ňťČ¤Śžěšç¤äĄ˘ťČ¤Ă¤Ć¤¤¤ë @command{scp} ¤ŹĽłĽŢĽóĽÉ
+ĽéĽ¤Ľó¤ÇĽŃĽšĽďĄźĽÉ¤ňźő¤ąÉŐ¤ą¤ëĽĐĄźĽ¸ĽçĽó¤Îžěšç¤Ë¤ĎĄ˘@command{ssh-agent}
+¤ňťČ¤ŚÉŹÍפŹ¤˘¤ë¤Č¤¤¤Ś¤ł¤Č¤Ç¤šĄŁ@footnote{PuTTY's @command{pscp} ¤Ç¤Ď
+ĽłĽŢĽóĽÉĽéĽ¤Ľó¤ÇĽŃĽšĽďĄźĽÉ¤ňťŘÄę¤Ç¤­¤Ţ¤šĄŁ}
+@command{ssh} ˇĐÍł¤Ç @command{rsync} ¤ňťČ¤Śžěšç¤âĆąÍͤǤšĄŁ
 
 ¤â¤ˇĄ˘ĽŃĽšĽďĄźĽÉĆţÎϤʤˇ¤Ç @command{scp} ¤ňźÂšÔ¤š¤ë¤ł¤Č¤Ź¤Ç¤­¤Ę¤¤¤ŹĄ˘
 ĽłĽÍĽŻĽˇĽçĽó¤ňĽťĽ­ĽĺĽ˘¤Ë¤š¤ë¤ż¤á¤Ë @command{ssh} ¤ňťČ¤¤¤ż¤¤žěšç¤ĎĄ˘
 
 @end itemize
 
+@code{ssh} ¤ňÍѤ¤¤ĆĽÝĄźĽČĽŐĽŠĽďĄźĽÉ¤ň¤ˇ¤ż¤¤žěšç¤äĄ˘É¸˝ŕĹŞ¤Ç¤Ę¤¤ĽÝĄźĽČ¤ň
+ťČÍѤˇ¤Ę¤ą¤ě¤Đ¤Ę¤é¤Ę¤¤žěšç¤Ź¤˘¤ë¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ¤˝¤Î¤č¤Ś¤Ęžěšç¤Ë¤ĎĄ˘
+ĽŰĽšĽČĚž¤´¤Č¤Ë°Ű¤Ę¤ëĽÝĄźĽČČÖšć¤ňťŘÄꤡ¤żľ­˝Ň¤ň @file{~/.ssh/config} ¤Ë
+˝ń¤­šţ¤ŕ¤ł¤Č¤ÇźÂ¸˝¤Ç¤­¤Ţ¤šĄŁ¤ˇ¤Ť¤ˇ¤Ę¤Ź¤éĄ˘multi-hop ĽáĽ˝ĽĂĽÉ¤ňťČ¤¨¤Đ
+¤˝¤ě¤Ď Tramp ¤ÎĎČĆâ¤ÇźÂ¸˝¤š¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁÎ㤨¤Đ:
+
+@lisp
+(add-to-list 'tramp-multi-connection-function-alist
+             '("sshf" tramp-multi-connect-rlogin "ssh %h -l %u -p 4400%n"))
+@end lisp
+
+¤Č¤š¤ě¤ĐĄ˘ @code{sshf} ĽŰĽĂĽ×¤ňÍѤ¤¤ĆĄ˘É¸˝ŕĹŞ¤ĘĽÝĄźĽČ¤ÎĘѤď¤ę¤Ë 4400 ČÖ
+ĽÝĄźĽČ¤ŘˇŇ¤°¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ
+
 
 @node Default Method, Customizing Methods, Multi-hop Methods, Configuration
 @section ĽÇĽŐĽŠĽëĽČ¤ÎĽáĽ˝ĽĂĽÉ¤ÎÁŞÂň
 ¤Ş¤­¤Ţ¤šĄŁĽÉĽ­ĽĺĽáĽóĽČ¤Ď @kbd{C-h v tramp-methods @key{RET}} ¤Çť˛žČ¤š¤ë
 ¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ
 
-@node Remote Programs,  , Customizing Methods, Configuration
+@node Remote Programs, Remote shell setup, Customizing Methods, Configuration
 @section ĽęĽâĄźĽČĽŢĽˇĽóžĺ¤Ç @tramp{} ¤ŹĽ×ĽíĽ°ĽéĽŕ¤ňČŻ¸ŤĄ˘ťČÍѤš¤ëĘýËĄ
 
 @tramp{} ¤ĎĽęĽâĄźĽČĽŰĽšĽČžĺ¤Î¤¤¤Ż¤Ä¤Ť¤ÎĽ×ĽíĽ°ĽéĽŕĄ˘@command{ls}Ą˘
 (add-to-list 'tramp-remote-path "/usr/local/perl")
 @end example
 
+@node Remote shell setup,  , Remote Programs, Configuration
+@comment  node-name,  next,  previous,  up
+@section ĽęĽâĄźĽČĽˇĽ§Ľë¤ÎŔßÄę¤ÎĽŇĽóĽČ
+
+@ref{Overview} ¤ÎŔá¤ÇŔâĚŔ¤ˇ¤ż¤č¤Ś¤ËĄ˘@tramp{} ¤ĎĽęĽâĄźĽČĽŰĽšĽČ¤ËŔÜÂł¤ˇĄ˘
+¤˝¤ł¤Ë¤˘¤ëĽˇĽ§Ľë¤ČÂĐĎ䡤ޤšĄŁ¤â¤Á¤í¤óĽíĽ°Ľ¤Ľó¤š¤ëşÝ¤Ë¤ĎĽˇĽ§Ľë¤Ď¤˝¤Î
+˝é´ü˛˝ĽŐĽĄĽ¤Ľë¤ňźÂšÔ¤ˇ¤Ţ¤šĄŁÎ㤨¤Đ¤˘¤Ę¤ż¤Î˝é´ü˛˝ĽŐĽĄĽ¤Ľë¤Ź¤˘¤Ę¤ż¤Î¤ŞĘě
+¤ľ¤ó¤ÎĂÂŔ¸Ćü¤ňĆţÎϤľ¤ť¤ë¤č¤Ś¤Ë¤Ę¤Ă¤Ć¤¤¤ż¤Č¤ˇ¤Ţ¤ˇ¤ç¤Ś; ĹöÁł @tramp{}
+¤Ď¤˝¤Î¤ł¤Č¤ňĂΤé¤Ę¤¤¤Î¤ÇĄ˘¤˝¤ÎĽŰĽšĽČ¤Ř¤ÎĽíĽ°Ľ¤Ľó¤ËźşÇÔ¤ˇ¤Ţ¤šĄŁ
+
+¤ł¤ÎĚäÂę¤ňÄɾᤚ¤ë¤ż¤á¤ËĄ˘¤¤¤Ż¤Ä¤Ť¤ÎŔďÎŹ¤ŹšÍ¤¨¤é¤ě¤Ţ¤šĄŁ°ě¤Ä¤ĎĄ˘@tramp{}
+¤Ź¤š¤Ů¤Ć¤Î˛ÄÇ˝¤Ęžőśˇ¤ËÂĐąţ¤Ç¤­¤ë¤č¤Ś¤Ë¤š¤ë¤ł¤Č¤Ç¤šĄŁ¤ł¤ě¤ĎžĂĚ×Ŕď¤Ç¤šĄŁ
+˛ż¸Î¤Ę¤é @emph{Á´¤Ć¤Î} žőśˇ¤ň°ˇ¤Ś¤ł¤Č¤ĎÉÔ˛ÄÇ˝¤Ŕ¤Ť¤é¤Ç¤šĄŁĘ̤Οę¤Č¤ˇ¤ĆĄ˘
+@tramp{} ¤Î´üÂÔÄ̤ę¤Ëżś¤ëÉń¤Ś¤č¤Ś¤ËĄ˘¤˘¤Ę¤ż¤ËĽęĽâĄźĽČĽŰĽšĽČ¤ÎŔßÄę¤ň¤ˇ¤Ć
+¤¤¤ż¤Ŕ¤Ż¤Č¤¤¤Ś¤ł¤Č¤â˝ĐÍč¤Ţ¤šĄŁ¤ˇ¤Ť¤ˇ¤ł¤ě¤ĎÉÔĘؤŤ¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁ˛ż¸Î¤Ę¤é
+@tramp{} ¤ňťČ¤¤ťĎ¤á¤ë¤č¤ęŔč¤ËĄ˘ĽˇĽ§Ľë¤ÎŔßÄę¤ËÂż¤Ż¤ÎĎŤÎϤňłä¤ŻÉŹÍפŹ¤˘¤ë
+¤Î¤Ç¤š¤Ť¤éĄŁ
+
+¤˝¤Î¤ł¤Č¤Ť¤éĄ˘¤ł¤ÎĽŃĽĂĽąĄźĽ¸¤Ç¤Ď¤˝¤ě¤é¤ňÁȤߚç¤ď¤ť¤żĘýËĄ¤ň¤Č¤ę¤Ţ¤šĄŁ
+¤¤¤Ż¤Ä¤Ť¤Î¤˘¤ę¤Ő¤ě¤żŔßÄę¤Ë¤Ä¤¤¤Ć¤ĎÍý˛ň¤ˇ¤č¤Ś¤Č¤ˇ¤Ć¤Ż¤ě¤ĆĄ˘¤˘¤Ę¤ż¤Ë¤Ď
+ËÜĹö¤ËĆðۤĘŔßÄę¤Ŕ¤ą¤ňČň¤ą¤ë¤č¤Ś¤Ëľá¤á¤Ţ¤šĄŁÎ㤨¤ĐĄ˘ĽęĽâĄźĽČĽŰĽšĽČžĺ¤Ç
+¤˘¤ëĽ×ĽíĽ°ĽéĽŕ¤ň¸Ť¤Ä¤ą¤ë¤ż¤á¤Ë¤ĎĄ˘ĽÇĽŁĽěĽŻĽČĽę¤Î°ěÍ÷¤ňÄ´¤Ů¤Ţ¤šĄŁ
+¤˝¤ˇ¤Ć¤Ţ¤żĄ˘ĽŐĽĄĽ¤Ľë¤ŹÂ¸şß¤š¤ë¤Ť¤ň¤É¤Ś¤ŤÄ´¤Ů¤ëĘýËĄ¤Č¤¤¤Ś¤Î¤âĚŔ¤é¤Ť¤Ç¤Ď
+¤Ę¤¤¤Î¤ÇĄ˘¤¤¤Ż¤Ä¤Ť¤Î°Ű¤Ę¤ë˛ÄÇ˝Ŕ­¤ňťî¤ˇ¤Ć¤Ż¤ě¤Ţ¤šĄŁ
+(¤˘¤ëĽŰĽšĽČ¤ČĽˇĽ§Ľë¤Ë¤Ş¤¤¤Ć¤ĎĄ˘@code{test -e} ĽłĽŢĽóĽÉ¤Ź¤˝¤ÎĚňĚܤň˛Ě¤ż¤šĄŁ
+Ę̤μۼšĽČĄ˘ĽˇĽ§Ľë¤ËÂФˇ¤Ć¤ĎĽˇĽ§Ľë¤ÎÁȤߚţ¤ßĽłĽŢĽóĽÉ¤ĎĆŻ¤Ť¤Ę¤¤¤ŹĄ˘
+@code{/usr/bin/test -e} ¤ä @code{/bin/test -e} ¤Ę¤é¤Ś¤Ţ¤ŻĆŻ¤ŻĄŁ
+¤˝¤ˇ¤Ć¤ľ¤é¤ËĘ̤μۼšĽČ¤Ç¤Ď @code{ls -d} ¤Ź¤˝¤ÎĘýËĄ¤Č¤ˇ¤ĆĆŻ¤ŻĄŁ)
+
+°Ę˛ź¤Ç¤ĎĄ˘@tramp{} ¤Źźč¤ę°ˇ¤Ă¤Ć¤Ż¤ě¤Ę¤¤Ą˘¤Ä¤Ţ¤ę¤˘¤Ę¤ż¤ŹŔľ¤ˇ¤ŻŔßÄꤚ¤ëÉŹÍ×
+¤Î¤˘¤ë¤¤¤Ż¤Ä¤Ť¤ÎťöĘÁ¤Ë¤Ä¤¤¤Ć˝Ň¤Ů¤Ţ¤šĄŁ
+
+@itemize
+@item @code{shell-prompt-pattern}
+
+@vindex shell-prompt-pattern
+ĽęĽâĄźĽČĽŰĽšĽČ¤ËĽíĽ°Ľ¤Ľó¤ˇ¤ż¸ĺĄ˘@tramp{} ¤ŹĽęĽâĄźĽČĽˇĽ§Ľë¤ËĚżÎá¤ňÁ÷¤ě¤ë
+¤č¤Ś¤Ë¤Ę¤ëÁ°¤ËĄ˘ĽęĽâĄźĽČĽˇĽ§Ľë¤ÎĽťĽĂĽČĽ˘ĽĂĽ×¤Ź˝ŞÎť¤š¤ë¤Î¤ňÂÔ¤ÄÉŹÍפŹ¤˘¤ę
+¤Ţ¤šĄŁĽˇĽ§ĽëĽ×ĽíĽóĽ×ĽČ¤ňǧźą¤š¤ë°Ů¤ËĄ˘ĘŃżô @code{shell-prompt-pattern}
+¤ňĽęĽâĄźĽČĽŰĽšĽČ¤ÎĽˇĽ§ĽëĽ×ĽíĽóĽ×ĽČ¤ňǧźą˝ĐÍč¤ë¤č¤Ś¤ËŔßÄꤡ¤Ć¤Ş¤ŻÉŹÍפŹ
+¤˘¤ę¤Ţ¤šĄŁ
+
+@item @code{tset} ¤Č¤˝¤Îž¤ÎźÁĚä
+
+ĽˇĽ§Ľë¤ÎľŻĆ°ĽšĽŻĽęĽ×ĽČ¤Ť¤é @code{tset} Ľ×ĽíĽ°ĽéĽŕ¤ň¸Ć¤Ó˝Đ¤ˇĄ˘
+ĽˇĽ§Ľë¤ÎĂźËö¤ÎźďÎŕ¤ňżŇ¤Í¤ë¤č¤Ś¤Ë¤ˇ¤Ć¤¤¤ëžěšç¤Ź¤˘¤ę¤Ţ¤šĄŁ¤ż¤Ö¤ó
+ĽˇĽ§Ľë¤Ë¤č¤Ă¤Ć¤Ď¤˝¤Îž¤ÎźÁĚä¤ňľŻĆ°ťţ¤Ë¤ˇ¤Ć¤Ż¤ëžěšç¤â¤˘¤ë¤Ç¤ˇ¤ç¤ŚĄŁ
+@tramp{} ¤Ď¤ł¤ě¤é¤ÎźÁĚä¤ËĹú¤¨¤ëĘýËĄ¤ňĂΤę¤Ţ¤ť¤óĄŁ
+(ž­Íč¤ÎĽĐĄźĽ¸ĽçĽó¤Ç¤ł¤ě¤é¤ÎźÁĚä¤Ë @tramp{} ¤ŹĹú¤¨¤é¤ě¤ë¤č¤Ś¤Ë¤š¤ë
+¤ł¤Č¤Źˇ×˛č¤ľ¤ě¤Ć¤¤¤Ţ¤š¤ŹĄ˘´üÂÔ¤ˇ¤Ę¤¤¤Ç¤Ż¤Ŕ¤ľ¤¤ĄŁ)
+
+¤ˇ¤ż¤Ź¤Ă¤Ć¤˘¤Ę¤ż¤ĎĄ˘ĽˇĽ§Ľë¤Ź @tramp{} ¤Ť¤é¸Ć¤Ó˝Đ¤ľ¤ě¤ż¤Č¤­¤Ë˛ż¤ÎźÁĚä¤â
+¤ˇ¤Ę¤¤¤č¤Ś¤ËĚĚĹݤň¸Ť¤Ę¤ą¤ě¤Đ¤Ę¤ę¤Ţ¤ť¤óĄŁ¤˝¤Î¤ż¤á¤Ë¤ĎĄ˘´Äś­ĘŃżô
+@code{TERM} ¤ňÄ´¤Ů¤Ć˛ź¤ľ¤¤ĄŁ¤˝¤ě¤ĎŔÜÂłťţ¤Ë @code{dumb} ¤ËŔßÄꤾ¤ě¤Ţ¤šĄŁ
+
+@vindex tramp-terminal-type
+ĘŃżô @code{tramp-terminal-type} ¤Ë¤č¤ę¤ł¤Î @code{dumb} ¤ÎĂͤňĘŃšš¤š¤ë
+¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ
+@end itemize
+
+
 
 @node Usage, Bug Reports, Configuration, Top
 @chapter @tramp{} ¤ÎťČ¤¤Ęý
 @section @tramp{} ĽŐĽĄĽ¤ĽëĚž¤Î¤­¤Ţ¤ę
 
 ĽęĽâĄźĽČĽŢĽˇĽó<ĽŢĽˇĽó>žĺ¤ÎĽŐĽĄĽ¤Ľë<ĽŃĽš>¤ËĽ˘ĽŻĽťĽš¤š¤ë¤ż¤á¤Ë¤ĎĄ˘
-ĽŐĽĄĽ¤ĽëĚž @file{/./<ĽŢĽˇĽó>:<ĽŃĽš>}¤ňťŘÄꤡ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ¤ł¤ě¤ÇĄ˘
-<ĽŢĽˇĽó>¤ËŔÜÂł¤ˇĄ˘ĽÇĽŐĽŠĽëĽČĽáĽ˝ĽĂĽÉ¤ňťČÍѤˇĽŐĽĄĽ¤Ľë¤ŹĹžÁ÷¤ľ¤ě
-¤Ţ¤šĄŁ
-@xref{Default Method}.
+ĽŐĽĄĽ¤ĽëĚž @file{/[<ĽŢĽˇĽó>]<ĽŃĽš>}¤ňťŘÄꤡ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ(łŃłç¸Ě¤Ď
+ĽŐĽĄĽ¤ĽëĚž¤Î°ěÉô¤Ç¤šĄŁ)¤ł¤ě¤ÇĄ˘<ĽŢĽˇĽó>¤ËŔÜÂł¤ˇĄ˘ĽÇĽŐĽŠĽëĽČĽáĽ˝ĽĂĽÉ
+¤ňťČÍѤˇĽŐĽĄĽ¤Ľë¤ŹĹžÁ÷¤ľ¤ě¤Ţ¤šĄŁ@xref{Default Method}.
 
 @tramp{} ¤ÎĽŐĽĄĽ¤ĽëĚž¤ÎÎă¤ň¤¤¤Ż¤Ä¤Ť¤Ş¸Ť¤ť¤ˇ¤Ţ¤ˇ¤ç¤Ś:
 
 @table @file
-@item /./melancholia:.emacs
+@item /[melancholia].emacs
 ĽŢĽˇĽó @code{melancholia} žĺ¤ÎĽŰĄźĽŕĽÇĽŁĽěĽŻĽČĽę¤Ë¤˘¤ë @file{.emacs}¤ň
 ĘÔ˝¸¤ˇ¤Ţ¤šĄŁ
 
-@item /./melancholia.danann.net:.emacs
+@item /[melancholia.danann.net].emacs
 ´°Á´¤ĘĽŰĽšĽČĚž(FQDN)¤ňťČ¤¤Ą˘žĺ¤ČĆą¤¸ĽŐĽĄĽ¤Ľë¤ňĘÔ˝¸¤ˇ¤Ţ¤šĄŁ
 
 @item /./melancholia:~/.emacs
 ¤ł¤ě¤â¤Ţ¤żĆą¤¸ĽŐĽĄĽ¤Ľë¤ňĘÔ˝¸¤ˇ¤Ţ¤šĄŁ@file{~} ¤ĎĄ˘ĽíĄźĽŤĽë¤Îžěšç¤Č
 ĆąÍͤ˥˘ĽęĽâĄźĽČĽŢĽˇĽóžĺ¤ÎĽŰĄźĽŕĽÇĽŁĽěĽŻĽČĽę¤ËŸłŤ¤ľ¤ě¤Ţ¤šĄŁ
 
-@item /./melancholia:~daniel/.emacs
+@item /[melancholia]~daniel/.emacs
 ĽŢĽˇĽó @code{melancholia} žĺ¤ÎĽćĄźĽśĄź @code{daniel} ¤ÎĽŰĄźĽŕĽÇĽŁĽěĽŻĽČĽę
 ¤Ë¤˘¤ëĽŐĽĄĽ¤Ľë @file{.emacs} ¤ňĘÔ˝¸¤ˇ¤Ţ¤šĄŁ@file{~<ĽćĄźĽśĄź>} š˝Ę¸¤Ď
 ĽęĽâĄźĽČĽŢĽˇĽóžĺ¤ÎĽćĄźĽśĄź¤ÎĽŰĄźĽŕĽÇĽŁĽěĽŻĽČĽę¤ËŸłŤ¤ľ¤ě¤Ţ¤šĄŁ
 
-@item /./melancholia:/etc/squid.conf
+@item /[melancholia]/etc/squid.conf
 ĽŢĽˇĽó @code{melancholia} žĺ¤ÎĽŐĽĄĽ¤Ľë @file{/etc/squid.conf} ¤ňĘÔ˝¸
 ¤ˇ¤Ţ¤šĄŁ
 
 ¤ł¤Č¤Ź¤Ç¤­¤Ţ¤šĄŁ
 
 ťŘÄꤡ¤żĽćĄźĽśĄź¤ÇĽęĽâĄźĽČĽŢĽˇĽó¤ËĽíĽ°Ľ¤Ľó¤š¤ëÉŹÍפŹ¤˘¤ëžěšçĄ˘
-@file{/./<ĽćĄźĽśĄź>@@<ĽŢĽˇĽó>:/ĽŃĽš/ĽŐĽĄĽ¤Ľë} ¤Č¤¤¤ŚĽˇĽóĽżĽĂĽŻĽš¤ň
+@file{/[<ĽćĄźĽśĄź>@@<ĽŢĽˇĽó>]/ĽŃĽš/ĽŐĽĄĽ¤Ľë} ¤Č¤¤¤ŚĽˇĽóĽżĽĂĽŻĽš¤ň
 ťČÍѤˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ¤Ä¤Ţ¤ęĄ˘ĽćĄźĽśĄź @code{daniel} ¤Č¤ˇ¤Ć @code{melancholia}
 ¤ËŔÜÂł¤ˇĽŰĄźĽŕĽÇĽŁĽěĽŻĽČĽę¤Î @file{.emacs} ¤ňĘÔ˝¸¤š¤ëžěšçĄ˘
-@file{/./daniel@@melancholia:.emacs} ¤ňťŘÄꤚ¤ě¤Đ¤č¤¤¤Î¤Ç¤šĄŁ
+@file{/[daniel@@melancholia].emacs} ¤ňťŘÄꤚ¤ě¤Đ¤č¤¤¤Î¤Ç¤šĄŁ
 
 CCC: The second @@file was @file{r@@...:} -- was there a missing initial
 slash?  I've added the initial slash.  Also you might want to include a
 @file{/./@@meth:user@@host:} (two colons).
 
 ĽŐĽĄĽ¤ĽëĚž¤Î°ěÉô¤Č¤ˇ¤ĆĄ˘Âž¤ÎĽŐĽĄĽ¤ĽëĹžÁ÷ĽáĽ˝ĽĂĽÉ(@pxref{Default Method})
-¤ňťŘÄꤚ¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ¤ł¤ě¤ĎĄ˘şÇ˝é¤Î @file{/./} ¤ňĄ˘@file{/./@@<ĽáĽ˝ĽĂĽÉ>:>}
-¤Ç¤Ş¤­¤Ť¤¨¤ë¤ł¤Č¤Ç˛ÄÇ˝¤Ë¤Ę¤ę¤Ţ¤šĄŁĽćĄźĽśĄźĄ˘ĽŢĽˇĽóĄ˘ĽŐĽĄĽ¤Ľë¤ÎťŘÄę¤ĎşŁ¤Ţ¤Ç
-¤ČĆą¤¸¤Ç¤šĄŁ 
+¤ňťŘÄꤚ¤ë¤ł¤Č¤â¤Ç¤­¤Ţ¤šĄŁ¤ł¤ě¤ĎĄ˘şÇ˝é¤Î @file{/[} ¤ňĄ˘
+@file{/[<ĽáĽ˝ĽĂĽÉ>/} ¤Ç¤Ş¤­¤Ť¤¨¤ë¤ł¤Č¤Ç˛ÄÇ˝¤Ë¤Ę¤ę¤Ţ¤šĄŁ(şÇ¸ĺ¤ÎĽšĽéĽĂĽˇĽĺ
+¤ËĂí°ŐĄŞ) ĽćĄźĽśĄźĄ˘ĽŢĽˇĽóĄ˘ĽŐĽĄĽ¤Ľë¤ÎťŘÄę¤ĎşŁ¤Ţ¤Ç¤ČĆą¤¸¤Ç¤šĄŁ
 
 ĽŢĽˇĽó @code{melancholia} ¤Ë @code{daniel} ¤Č¤ˇ¤ĆŔÜÂł¤ˇĄ˘ĽŐĽĄĽ¤ĽëĹžÁ÷¤Ë
 @option{su} ĽáĽ˝ĽĂĽÉ¤ňťČ¤¤Ą˘ĽŰĄźĽŕĽÇĽŁĽěĽŻĽČĽę¤Î @file{.emacs} ¤ňĘÔ˝¸¤š¤ë
-¤ż¤á¤Ë¤ĎĄ˘ĽŐĽĄĽ¤ĽëĚž @file{/./@@su:daniel@@melancholia:.emacs} ¤ňťŘÄꤡ¤Ć
+¤ż¤á¤Ë¤ĎĄ˘ĽŐĽĄĽ¤ĽëĚž @file{/[su/daniel@@melancholia].emacs} ¤ňťŘÄꤡ¤Ć
 ¤Ż¤Ŕ¤ľ¤¤ĄŁ
 
 
 ĽŢĽëĽÁĽŰĽĂĽ×ĽŐĽĄĽ¤ĽëĚž¤ÎĽˇĽóĽżĽĂĽŻĽš¤ĎĄ˘ĹöÁł¤Î¤ł¤Č¤Ę¤Ź¤éĄ˘Âž¤Î @tramp{} 
 ¤ÎĽŐĽĄĽ¤ĽëĚž¤Čźă´ł°Ű¤Ę¤ę¤Ţ¤šĄŁ°Ę˛ź¤ËĄ˘ĽŢĽëĽÁĽŰĽĂĽ×ĽŐĽĄĽ¤ĽëĚž¤ÎÎă¤ň¤˘¤˛¤Ţ¤š:
 
-@file{/./@@multi:rsh#out@@gate:telnet#kai@@real.host:/path/to.file}
+@file{/[multi/rsh:out@@gate/telnet:kai@@real.host]/path/to.file}
 
 ¤ł¤ě¤ĎČóžď¤Ë˝ĹÍפʤΤǥ˘¤Ň¤Č¤Ä¤Ň¤Č¤ÄŔâĚŔ¤ˇ¤Ţ¤ˇ¤ç¤ŚĄŁĽŐĽĄĽ¤ĽëĚž¤Ď
-ĽłĽíĽó¤ÇśčŔÚ¤é¤ě¤ż 3 ¤Ä¤ÎĽŃĄźĽÄ¤Çš˝ŔŽ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁşÇ˝é¤ÎĽŃĄźĽČ 
-@file{/./@@multi} ¤ĎĽáĽ˝ĽĂĽÉ¤ÎťŘÄę¤Ç¤šĄŁĆóČÖĚܤμѥźĽČ¤Ď 
-@file{rsh#out@@gate:telnet#kai@@real.host} ¤ÇĽŰĽĂĽ×¤ňťŘÄꤡ¤Ţ¤šĄŁ
-(¤˝¤Ś¤Ç¤šĄ˘ĆóČÖĚܤμѥźĽČ¤ĎĘŁżô¤ÎĽłĽíĽó¤ň´Ţ¤ŕ¤ł¤Č¤â¤˘¤ę¤Ţ¤šĄŁ
-¤ł¤ě¤ŹĽŐĽĄĽ¤ĽëĚž¤ŹĆó¤Ä°Ęžĺ¤ÎĽłĽíĽó¤ň´Ţ¤ŕÍýÍł¤Ç¤šĄŁ)şÇ¸ĺ¤ÎĽŃĄźĽČ¤Ď 
+ĽšĽéĽĂĽˇĽĺ¤ČłŃłç¸Ě¤ÇśčŔÚ¤é¤ě¤ż 3 ¤Ä¤ÎĽŃĄźĽÄ¤Çš˝ŔŽ¤ľ¤ě¤Ć¤¤¤Ţ¤šĄŁ
+şÇ˝é¤ÎĽŃĄźĽČ @file{/[multi} ¤ĎĽáĽ˝ĽĂĽÉ¤ÎťŘÄę¤Ç¤šĄŁĆóČÖĚܤμѥźĽČ¤Ď
+@file{rsh:out@@gate/telnet:kai@@real.host} ¤ÇĽŰĽĂĽ×¤ňťŘÄꤡ¤Ţ¤šĄŁ
+(¤˝¤Ś¤Ç¤šĄ˘ĆóČÖĚܤμѥźĽČ¤Ď¤â¤Ă¤ČÂż¤Ż¤ÎĽšĽéĽĂĽˇĽĺ¤ň´Ţ¤ŕ¤ł¤Č¤â¤˘¤ę¤Ţ¤šĄŁ
+¤ł¤ě¤Ź¤ł¤ÎĽŐĽĄĽ¤ĽëĚž¤ŹĆó¤Ä°Ęžĺ¤ÎĽłĽíĽó¤ň´Ţ¤ŕÍýÍł¤Ç¤šĄŁ)şÇ¸ĺ¤ÎĽŃĄźĽČ¤Ď
 @file{/path/to.file} ¤ÇĄ˘ĽęĽâĄźĽČĽŰĽšĽČžĺ¤ÎĽŐĽĄĽ¤ĽëĚž¤ňťŘÄꤡ¤Ţ¤šĄŁ
 
 şÇ˝é¤ČşÇ¸ĺ¤ÎĽŃĄźĽČ¤ĎĚŔÇň¤Ç¤ˇ¤ç¤ŚĄŁ@ref{Multi-hop Methods}¤ËťŘÄę˛ÄÇ˝
 
 ĆóČÖĚܤμѥźĽČ¤ĎĄ˘şĆ¤ÓĽłĽóĽÝĄźĽÍĽóĽČ¤ËĘŹłä¤ľ¤ě¤Ţ¤šĄŁ¤ł¤ě¤ĎĽŰĽĂĽ×¤Č
 ¤č¤Đ¤ě¤Ţ¤šĄŁžĺľ­¤ÎĽŐĽĄĽ¤ĽëĚž¤Ë¤ĎĄ˘Ćó¤Ä¤ÎĽŰĽĂĽ×Ą˘
-@file{rsh#out@@gate} ¤Č @file{telnet#kai@@real.host} ¤Ź´Ţ¤Ţ¤ě¤Ć¤¤¤Ţ¤šĄŁ
+@file{rsh:out@@gate} ¤Č @file{telnet:kai@@real.host} ¤Ź´Ţ¤Ţ¤ě¤Ć¤¤¤Ţ¤šĄŁ
 
 ¤˝¤ě¤ž¤ě¤ÎĽŰĽĂĽ×¤ĎĄ˘@emph{şĆ¤Ó}(3¤Ä¤Î)ĽłĽóĽÝĄźĽÍĽóĽČĄ˘
 @dfn{ĽŰĽĂĽ×ĽáĽ˝ĽĂĽÉ}Ą˘@dfn{ĽćĄźĽśĄźĚž}Ą˘@dfn{ĽŰĽšĽČĚž}¤ËĘŹłä¤ľ¤ě¤Ţ¤šĄŁ
 ĆóČÖĚÜĄ˘ť°ČÖĚܤμłĽóĽÝĄźĽÍĽóĽČ¤Î°ŐĚŁ¤ĎĚŔÇň¤Ç¤šĄŁĽŰĽĂĽ×ĽáĽ˝ĽĂĽÉ¤ĎĄ˘
 ¤ł¤ÎĽŰĽĂĽ×¤Ç¤É¤Î¤č¤Ś¤ĘĽ×ĽíĽ°ĽéĽŕ¤ňťČ¤Ś¤Ť¤ň°ŐĚŁ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ
 
-şÇ˝é¤ÎĽŰĽĂĽ× @file{rsh#out@@gate} ¤ĎĄ˘ĽŰĽšĽČ @code{gate} ¤ËĽćĄźĽśĄź
+şÇ˝é¤ÎĽŰĽĂĽ× @file{rsh:out@@gate} ¤ĎĄ˘ĽŰĽšĽČ @code{gate} ¤ËĽćĄźĽśĄź
 @code{out} ¤Č¤ˇ¤ĆĽíĽ°Ľ¤Ľó¤š¤ë¤ż¤á¤Ë @command{rsh} ¤ňťČ¤Ś¤Č¤¤¤Ś°ŐĚŁ¤Ç¤šĄŁ
-ĆóČÖĚÜ¤ÎĽŰĽĂĽ× @file{telnet#kai@@real.host} ¤ĎĄ˘¤ł¤ÎĽŰĽšĽČ¤Ť¤éĽŰĽšĽČ 
+ĆóČÖĚÜ¤ÎĽŰĽĂĽ× @file{telnet:kai@@real.host} ¤ĎĄ˘¤ł¤ÎĽŰĽšĽČ¤Ť¤éĽŰĽšĽČ
 @code{real.host} ¤ËĽćĄźĽśĄź @code{kai}¤ÇĽíĽ°Ľ¤Ľó¤š¤ë¤ż¤á¤Ë @command{telnet}
 ¤ňťČ¤Ś¤Č¤¤¤Ś°ŐĚŁ¤Ç¤šĄŁ
 
 °ěČĚĹŞ¤ĘľÄĎŔĄ˘¤˝¤ˇ¤Ć¤ł¤ÎĽŃĽĂĽąĄźĽ¸¤Ë´Řˇ¸¤š¤ëĎĂÂę¤Ř¤ÎĽ˘ĽÉĽĐĽ¤Ľš¤ËşÇĹŹ
 ¤Îžě˝ę¤Ç¤šĄŁ
 
-ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤Ď @email{emacs-rcp@@ls6.cs.uni-dortmund.de} ¤Ç¤šĄŁ
+ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤Ď @email{tramp-devel@@lists.sourceforge.net} ¤Ç¤šĄŁ
 ¤ł¤ÎĽ˘ĽÉĽěĽš¤ËĽáĽĂĽťĄźĽ¸¤ň¤ňÁ÷¤ë¤Č¤š¤Ů¤Ć¤ÎšÖĆÉźÔ¤ËĆϤ­¤Ţ¤šĄŁ
 ¤ł¤ě¤ĎšÖĆɤμ꼯Ľ¨ĽšĽČ¤ňÁ÷żŽ¤š¤ë¤ż¤á¤ÎĽ˘ĽÉĽěĽš¤Ç¤Ď @emph{¤˘¤ę¤Ţ¤ť¤ó}ĄŁ
 
 ĽáĄźĽęĽóĽ°ĽęĽšĽČ¤ňšÖĆɤš¤ë¤ż¤á¤ÎĽŘĽëĽ×¤ňĆţźę¤š¤ë¤Ë¤ĎĄ˘ĽľĽÖĽ¸Ľ§ĽŻĽČ¤Ë
 @samp{help} ¤Č˝ń¤¤¤żĽáĄźĽë¤ň´ÉÍýÍѤμ˘ĽÉĽěĽš
-@email{emacs-rcp-request@@ls6.cs.uni-dortmund.de} ¤ËÁ÷żŽ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ
+@email{tramp-devel-request@@lists.sourceforge.net} ¤ËÁ÷żŽ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ
 
 @tramp{} ¤ÎĽĐĽ°Ęóšđ¤ň¤š¤ëžěšç¤Ë¤ĎĄ˘@kbd{M-x tramp-bug} ¤ňźÂšÔ¤ˇ¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ
 ¤ł¤ě¤ĎĄ˘¤˘¤Ę¤ż¤ÎĽˇĽšĽĆĽŕ¤ÎžÜşŮ¤ä @tramp{} ¤ÎĽĐĄźĽ¸ĽçĽóžđĘó¤ň´Ţ¤ŕĽĐĽĂĽŐĽĄ
 
 @tramp{} ¤Ď
 @uref{ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/tramp.tar.gz}
-¤Ë¤˘¤ę¤Ţ¤šĄŁ
+¤Ë¤˘¤ę¤Ţ¤šĄŁ¤Ţ¤żĄ˘SourceForge Ľ×ĽíĽ¸Ľ§ĽŻĽČĽÚĄźĽ¸¤Ź
+@uref{http://sourceforge.net/projects/tramp} ¤Ë¤˘¤ę¤Ţ¤šĄŁ
 
 
 @item ¤É¤Î¤č¤Ś¤ĘĽˇĽšĽĆĽŕžĺ¤ÇĆ°şî¤ˇ¤Ţ¤š¤Ť?
 ÂŚ¤â Unix É÷¤ÎĽˇĽšĽĆĽŕ¤Ç¤˘¤ë¤ł¤Č¤ň´üÂÔ¤ˇ¤Ć¤¤¤Ţ¤šĄŁ¤ˇ¤Ť¤ˇĄ˘NT Emacs žĺ¤Ç
 Ć°şî¤ľ¤ť¤ë¤ł¤Č¤ËŔŽ¸ů¤ˇ¤żżÍ¤Ź˛żżÍ¤Ť¤¤¤ë¤č¤Ś¤Ç¤šĄŁ
 
+°Ę˛ź¤Î URL ¤Ë¤ĎĄ˘Tramp ¤ň NT ¤ÇťČ¤Ś¤ż¤á¤ÎžđĘ󤏤˘¤ę¤Ţ¤š; Joe Stoy
+¤Ë¤ĎžđĘó¤ÎÄ󜥤ËÂФˇ¤Ćżź¤Ż´śźŐ¤ˇ¤Ţ¤š:
+@uref{ftp://ftp.comlab.ox.ac.uk/tmp/Joe.Stoy/}
+
+žĺľ­¤Ď¤â¤Ă¤Ń¤é¸Ĺ¤¤ĽĐĄźĽ¸ĽçĽó¤Î ssh ¤Ř¤ÎĽŃĽĂĽÁ¤Ź¤Ş¤¤¤Ć¤˘¤ę¤Ţ¤š; Tom Roche
+¤Î Web page ¤Ë¤âŔâĚŔ¤Ź¤˘¤ę¤Ţ¤š:
+@uref{http://www4.ncsu.edu/~tlroche/plinkTramp.html}
+
 ??? XEmacs ¤ÎžđĘó¤ĎŔľ¤ˇ¤¤¤Î¤Ç¤ˇ¤ç¤Ś¤Ť?
 
 ??? ĂŻ¤ŤĄ˘NT Emacs žĺ¤ÇĆ°¤Ť¤š¤ż¤á¤ÎžđĘó¤ňśľ¤¨¤Ć¤Ż¤Ŕ¤ľ¤¤ĄŁ¤ż¤Ö¤óĄ˘@command{ssh}
 @end lisp
 
 
+@item ĽęĽâĄźĽČĽŰĽšĽČ¤Î @file{~/.sh_history} ¤Č¤¤¤ŚĽŐĽĄĽ¤Ľë¤ŹČîÂ礡³¤ą¤Ć
+  ¤¤¤Ţ¤šĄŁ¤ł¤ě¤Ď˛ż¤Ç¤š¤Ť?
+
+@tramp{} ¤ĎĽĆĽŁĽëĽŔŸłŤ¤Î°Ů¤ËĄ˘¤ˇ¤Đ¤ˇ¤ĐĽęĽâĄźĽČĽŰĽšĽČ¤Ç @code{ksh} ¤ň
+ľŻĆ°¤ˇ¤Ţ¤šĄŁ¤ż¤Ö¤ó @code{ksh} ¤ĎĽÇĽŐĽŠĽëĽČ¤ÇÍúÎň¤ňĘݸ¤ˇ¤Ţ¤šĄŁ@tramp{}
+¤ĎÍúÎň¤ÎĘݸ¤ňÄäťß¤ˇ¤č¤Ś¤Čťî¤ß¤Ţ¤š¤ŹĄ˘¤˘¤Ę¤ż¤Źźę˝ő¤ą¤ň¤š¤ëÉŹÍפŹ¤˘¤ë
+¤Ť¤â¤ˇ¤ě¤Ţ¤ť¤óĄŁÎ㤨¤ĐĄ˘¤˘¤Ę¤ż¤Î @file{.kshrc} ¤Ë¤ł¤ě¤ňĆţ¤ě¤Ć¤Ż¤Ŕ¤ľ¤¤:
+
+@example
+if [ -f $HOME/.sh_history ] ; then
+   /bin/rm $HOME/.sh_history
+fi
+if [ "$@{HISTFILE-unset@}" != "unset" ] ; then
+   unset HISTFILE
+fi
+if [ "$@{HISTSIZE-unset@}" != "unset" ] ; then
+   unset HISTSIZE
+fi
+@end example
+
 @end itemize