From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: "Robert J. Chassell" Newsgroups: gmane.emacs.devel Subject: Re: tramp again Date: Thu, 22 Aug 2002 12:19:41 +0000 (UTC) Sender: emacs-devel-admin@gnu.org Message-ID: References: Reply-To: bob@rattlesnake.com NNTP-Posting-Host: localhost.gmane.org X-Trace: main.gmane.org 1030018833 26939 127.0.0.1 (22 Aug 2002 12:20:33 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Thu, 22 Aug 2002 12:20:33 +0000 (UTC) Return-path: Original-Received: from quimby.gnus.org ([80.91.224.244]) by main.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 17hqwq-00070O-00 for ; Thu, 22 Aug 2002 14:20:24 +0200 Original-Received: from monty-python.gnu.org ([199.232.76.173]) by quimby.gnus.org with esmtp (Exim 3.12 #1 (Debian)) id 17hrPg-0001ud-00 for ; Thu, 22 Aug 2002 14:50:13 +0200 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.10) id 17hqxv-00027w-00; Thu, 22 Aug 2002 08:21:31 -0400 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17hqwL-000271-00 for emacs-devel@gnu.org; Thu, 22 Aug 2002 08:19:53 -0400 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17hqwG-00026b-00 for emacs-devel@gnu.org; Thu, 22 Aug 2002 08:19:52 -0400 Original-Received: from megalith.rattlesnake.com ([140.186.114.245] helo=localhost) by monty-python.gnu.org with esmtp (Exim 4.10) id 17hqwB-00025e-00 for emacs-devel@gnu.org; Thu, 22 Aug 2002 08:19:43 -0400 Original-Received: by rattlesnake.com via sendmail from stdin id (Debian Smail3.2.0.114) Thu, 22 Aug 2002 12:19:41 +0000 (UTC) Original-To: emacs-devel@gnu.org In-Reply-To: (message from Andreas Schwab on Thu, 22 Aug 2002 10:13:15 +0200) Errors-To: emacs-devel-admin@gnu.org X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Emacs development discussions. List-Unsubscribe: , List-Archive: Xref: main.gmane.org gmane.emacs.devel:6760 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:6760 Miles Bader asked: > Does tramp seem this fragile for anyone else? In today's CVS snapshot, 2002 Aug 22 11:55 UTC, GNU Emacs 21.3.50.181 (i686-pc-linux-gnu, X toolkit) running: emacs -q --no-site-file --eval '(blink-cursor-mode 0)' the following found the desired remote directory successfully: (progn (require 'tramp) (setq tramp-verbose 10) (setq tramp-debug-buffer t) ;; running `emacs -q' so need to set this (custom-set-variables '(shell-prompt-pattern "^[^#$% ]*[#$%>] *"))) (find-file "/ssh:bob@titan.berkshire.net:/home/bob/www/" nil) However, the following: (find-file "/multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob" nil) `worked but with a problem': tramp visited both both a multi-hop remote file that I did not seek, which is this one: /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias and the directory that I did seek, namely: /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/ Incidentally, I did not know I had a .alias file in that directory; it was installed by Debian when the directory was created. Here is the output from: *debug tramp/multi ssh#bob@24.161.120.95:ssh#bob@192.168.2.48:* # Opening `multi' connection... # Waiting 60s for local shell to come up... sh-2.05b$ # Sending rlogin command `ssh 24.161.120.95 -l bob' # Waiting 60s for prompt from remote shell # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Looking for pattern ^.*\(Connection \(?:\(?:clo\|refu\)sed\)\|Host key verification failed\.\|Login \(?:[Ii]ncorrect\)\|Name or service not known\|\(?:Permission denied\|Sorry, try again\)\.\).*\|^.*\(Received signal [0-9]+\).* # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Looking for pattern ^.*\(Connection \(?:\(?:clo\|refu\)sed\)\|Host key verification failed\.\|Login \(?:[Ii]ncorrect\)\|Name or service not known\|\(?:Permission denied\|Sorry, try again\)\.\).*\|^.*\(Received signal [0-9]+\).* # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Looking for pattern ^.*\(Connection \(?:\(?:clo\|refu\)sed\)\|Host key verification failed\.\|Login \(?:[Ii]ncorrect\)\|Name or service not known\|\(?:Permission denied\|Sorry, try again\)\.\).*\|^.*\(Received signal [0-9]+\).* # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Looking for pattern ^.*\(Connection \(?:\(?:clo\|refu\)sed\)\|Host key verification failed\.\|Login \(?:[Ii]ncorrect\)\|Name or service not known\|\(?:Permission denied\|Sorry, try again\)\.\).*\|^.*\(Received signal [0-9]+\).* # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Looking for pattern ^.*\(Connection \(?:\(?:clo\|refu\)sed\)\|Host key verification failed\.\|Login \(?:[Ii]ncorrect\)\|Name or service not known\|\(?:Permission denied\|Sorry, try again\)\.\).*\|^.*\(Received signal [0-9]+\).* # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Looking for pattern ^.*\(Connection \(?:\(?:clo\|refu\)sed\)\|Host key verification failed\.\|Login \(?:[Ii]ncorrect\)\|Name or service not known\|\(?:Permission denied\|Sorry, try again\)\.\).*\|^.*\(Received signal [0-9]+\).* # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Looking for pattern ^.*\(Connection \(?:\(?:clo\|refu\)sed\)\|Host key verification failed\.\|Login \(?:[Ii]ncorrect\)\|Name or service not known\|\(?:Permission denied\|Sorry, try again\)\.\).*\|^.*\(Received signal [0-9]+\).* # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Looking for pattern ^.*\(Connection \(?:\(?:clo\|refu\)sed\)\|Host key verification failed\.\|Login \(?:[Ii]ncorrect\)\|Name or service not known\|\(?:Permission denied\|Sorry, try again\)\.\).*\|^.*\(Received signal [0-9]+\).* # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Looking for pattern ^.*\(Connection \(?:\(?:clo\|refu\)sed\)\|Host key verification failed\.\|Login \(?:[Ii]ncorrect\)\|Name or service not known\|\(?:Permission denied\|Sorry, try again\)\.\).*\|^.*\(Received signal [0-9]+\).* # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Looking for pattern ^.*\(Connection \(?:\(?:clo\|refu\)sed\)\|Host key verification failed\.\|Login \(?:[Ii]ncorrect\)\|Name or service not known\|\(?:Permission denied\|Sorry, try again\)\.\).*\|^.*\(Received signal [0-9]+\).* # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Looking for pattern ^.*\(Connection \(?:\(?:clo\|refu\)sed\)\|Host key verification failed\.\|Login \(?:[Ii]ncorrect\)\|Name or service not known\|\(?:Permission denied\|Sorry, try again\)\.\).*\|^.*\(Received signal [0-9]+\).* # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Found shell prompt on `24.161.120.95' # Sending rlogin command `ssh 192.168.2.48 -l bob' # Waiting 60s for prompt from remote shell # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Looking for pattern ^.*\(Connection \(?:\(?:clo\|refu\)sed\)\|Host key verification failed\.\|Login \(?:[Ii]ncorrect\)\|Name or service not known\|\(?:Permission denied\|Sorry, try again\)\.\).*\|^.*\(Received signal [0-9]+\).* # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Looking for pattern ^.*\(Connection \(?:\(?:clo\|refu\)sed\)\|Host key verification failed\.\|Login \(?:[Ii]ncorrect\)\|Name or service not known\|\(?:Permission denied\|Sorry, try again\)\.\).*\|^.*\(Received signal [0-9]+\).* # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Looking for pattern ^.*\(Connection \(?:\(?:clo\|refu\)sed\)\|Host key verification failed\.\|Login \(?:[Ii]ncorrect\)\|Name or service not known\|\(?:Permission denied\|Sorry, try again\)\.\).*\|^.*\(Received signal [0-9]+\).* # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Looking for pattern ^.*\(Connection \(?:\(?:clo\|refu\)sed\)\|Host key verification failed\.\|Login \(?:[Ii]ncorrect\)\|Name or service not known\|\(?:Permission denied\|Sorry, try again\)\.\).*\|^.*\(Received signal [0-9]+\).* # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Looking for pattern ^.*\(Connection \(?:\(?:clo\|refu\)sed\)\|Host key verification failed\.\|Login \(?:[Ii]ncorrect\)\|Name or service not known\|\(?:Permission denied\|Sorry, try again\)\.\).*\|^.*\(Received signal [0-9]+\).* # Looking for pattern ^.*\([pP]assword\|passphrase.*\): # Looking for pattern .*ogin: * # Looking for pattern ^[^#$% ]*[#$%>] * # Found shell prompt on `192.168.2.48' $ exec /bin/sh # Waiting 30s for remote `/bin/sh' to come up... ~ $ # Setting up remote shell environment ~ $ ~ $ # Determining coding system foo bar ~ $ # Waiting 30s for `HISTFILE=$HOME/.tramp_history; HISTSIZE=1' ~ $ # Waiting 30s for `set +o vi +o emacs' ~ $ # Waiting 30s for `unset MAIL MAILCHECK MAILPATH' ~ $ # Waiting 30s for `unset CDPATH' ~ $ # Setting shell prompt $ PS1=' ///// '; PS2=''; PS3='' $ echo ~root /root # Remote `/bin/sh' groks tilde expansion, good # Finding command to check if file exists $ test -e / 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 $ test -e /\ this\ file\ does\ not\ exist\ 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 # Finding a suitable `ls' command # Checking remote `/bin/ls' command for `-n' option $ test -x /bin/ls 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # Testing remote command `/bin/ls' for -n... $ /bin/ls -lnd / >/dev/null 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # Testing remote command `/bin/ls' for -n...okay # Using remote command `/bin/ls' for getting directory listings $ tramp_set_exit_status () { return $1 } $ test -e /bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 $ ( test -d /bin 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 0 $ test -e /usr/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 $ ( test -d /usr/bin 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 0 $ test -e /usr/sbin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 $ ( test -d /usr/sbin 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 0 $ test -e /usr/local/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 $ ( test -d /usr/local/bin 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 0 $ test -e /usr/ccs/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /local/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /local/freeware/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /local/gnu/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /usr/freeware/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /usr/pkg/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /usr/contrib/bin 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin; export PATH $ LC_TIME=C; export LC_TIME; echo huhu huhu $ mesg n; echo huhu huhu $ biff n ; echo huhu huhu $ unalias ls; echo huhu sh: unalias: ls: not found huhu $ ( test / -nt / ) $ tramp_test_nt () { test -n "`find $1 -prune -newer $2 -print`" } $ tramp_uudecode () { (echo begin 600 /tmp/tramp.$$; tail +2) | uudecode cat /tmp/tramp.$$ rm -f /tmp/tramp.$$ } $ while read d; do if test -x $d/perl5 -a -f $d/perl5; then echo tramp_executable $d/perl5; break; fi; done <<'EOF' $ /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/contrib/bin $ EOF $ while read d; do if test -x $d/perl -a -f $d/perl; then echo tramp_executable $d/perl; break; fi; done <<'EOF' $ /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/contrib/bin $ EOF tramp_executable /usr/bin/perl # Sending the Perl `file-attributes' implementation. $ tramp_file_attributes () { /usr/bin/perl -e '$f = $ARGV[0]; @s = lstat($f); if (($s[2] & 0170000) == 0120000) { $l = readlink($f); $l = "\"$l\""; } elsif (($s[2] & 0170000) == 040000) { $l = "t"; } else { $l = "nil" }; printf("(%s %u %d %d (%u %u) (%u %u) (%u %u) %u %u t (%u . %u) (%u %u))\n", $l, $s[3], $s[4], $s[5], $s[8] >> 16 & 0xffff, $s[8] & 0xffff, $s[9] >> 16 & 0xffff, $s[9] & 0xffff, $s[10] >> 16 & 0xffff, $s[10] & 0xffff, $s[7], $s[2], $s[1] >> 16 & 0xffff, $s[1] & 0xffff, $s[0] >> 16 & 0xffff, $s[0] & 0xffff);' $1 2>/dev/null } # Sending the Perl `mime-encode' implementations. $ tramp_encode () { /usr/bin/perl -e ' # This script contributed by Juanma Barranquero . # Copyright (C) 2002 Free Software Foundation, Inc. use strict; my %trans = do { my $i = 0; map {(substr(unpack(q(B8), chr $i++), 2, 6), $_)} split //, q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/); }; binmode(\*STDIN); # We read in chunks of 54 bytes, to generate output lines # of 72 chars (plus end of line) $/ = \54; while (my $data = ) { my $pad = q(); # Only for the last chunk, and only if did not fill the last three-byte packet if (eof) { my $mod = length($data) % 3; $pad = q(=) x (3 - $mod) if $mod; } # Not the fastest method, but it is simple: unpack to binary string, split # by groups of 6 bits and convert back from binary to byte; then map into # the translation table print join q(), map($trans{$_}, (substr(unpack(q(B*), $data) . q(00000), 0, 432) =~ /....../g)), $pad, qq(\n); } ' 2>/dev/null } $ tramp_encode_with_module () { perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)' 2>/dev/null } # Sending the Perl `mime-decode' implementations. $ tramp_decode () { /usr/bin/perl -e ' # This script contributed by Juanma Barranquero . # Copyright (C) 2002 Free Software Foundation, Inc. use strict; my %trans = do { my $i = 0; map {($_, sprintf(q(%06b), $i++))} split //, q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/) }; my %bytes = map {(unpack(q(B8), chr $_), chr $_)} 0 .. 255; binmode(\*STDOUT); # We are going to accumulate into $pending to accept any line length # (we do not check they are <= 76 chars as the RFC says) my $pending = q(); while (my $data = ) { chomp $data; # If we find one or two =, we have reached the end and # any following data is to be discarded my $finished = $data =~ s/(==?).*/$1/; $pending .= $data; my $len = length($pending); my $chunk = substr($pending, 0, $len & ~3, q()); # Easy method: translate from chars to (pregenerated) six-bit packets, join, # split in 8-bit chunks and convert back to char. print join q(), map $bytes{$_}, ((join q(), map {$trans{$_} || q()} split //, $chunk) =~ /......../g); last if $finished; } ' 2>/dev/null } $ tramp_decode_with_module () { perl -MMIME::Base64 -0777 -ne 'print decode_base64($_)' 2>/dev/null } $ while read d; do if test -x $d/ln -a -f $d/ln; then echo tramp_executable $d/ln; break; fi; done <<'EOF' $ /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/contrib/bin $ EOF tramp_executable /bin/ln # Checking remote encoding command `mimencode -b' for sanity $ ( mimencode -b /dev/null 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 0 # Checking remote decoding command `mimencode -u -b' for sanity $ ( echo xyzzy | mimencode -b | mimencode -u -b >/dev/null 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 0 # Checking to see if encoding/decoding commands work on remote host... $ echo xyzzy | mimencode -b | mimencode -u -b xyzzy # Checking to see if encoding/decoding commands work on remote host...done $ ( test -d /home/bob 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 0 $ ( test -d /home/bob 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 0 # Inserting directory `ls -al /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/', wildcard no, fulldir yes $ /bin/ls -al /home/bob/. total 344 -rw-r--r-- 1 1001 console 231 Oct 23 2001 #*mail*#15260wHf# -rw-r--r-- 1 1001 console 209 Oct 23 2001 #*mail*#156164Lf# -rw-r--r-- 1 1001 console 845 Oct 23 2001 #*mail*#15624LOf# drwxr-sr-x 11 1001 console 4096 Mar 15 17:45 . drwxrwsr-x 12 root staff 4096 Jun 23 05:54 .. -rw-r--r-- 1 1001 console 266 Aug 11 2001 .alias -rw-r--r-- 1 1001 console 4648 Aug 11 2001 .bash_alias -rw------- 1 1001 console 6076 Apr 4 10:27 .bash_history -rw-r--r-- 1 1001 console 219 Dec 18 2001 .bash_profile -rw-r--r-- 1 1001 console 221 Aug 11 2001 .bash_profile.~1~ -rw-r--r-- 1 1001 console 68 Aug 11 2001 .bash_profile~ -rw-r--r-- 1 1001 console 55 Aug 11 2001 .bashrc -rw-r--r-- 1 1001 console 375 Aug 11 2001 .cshrc -rw------- 1 1001 console 515 Dec 18 2001 .cvspass -rw-r--r-- 1 1001 console 1758 Oct 23 2001 .emacs drwxr-sr-x 3 1001 console 4096 Oct 23 2001 .emacs.d -rw-r--r-- 1 1001 console 515 Aug 11 2001 .emacs.~1~ -rw-r--r-- 1 1001 console 54760 Oct 23 2001 .emacs_short -rw-r--r-- 1 1001 console 54208 Oct 23 2001 .emacs_short.~1~ drwxr-sr-x 3 1001 console 4096 Mar 15 17:45 .gnome drwx------ 2 1001 console 4096 Mar 15 17:45 .gnome_private drwxr-sr-x 5 1001 console 4096 Aug 11 2001 .netscape -rw-r--r-- 1 1001 console 127 Aug 11 2001 .signature drwxr-sr-x 2 1001 console 4096 Oct 5 2001 .ssh -rw------- 1 1001 console 62 Nov 21 2001 .tramp_history -rw-r--r-- 1 1001 console 13718 Sep 5 2001 .twmrc -rw-r--r-- 1 1001 console 1289 Sep 5 2001 .xinitrc -rw-r--r-- 1 1001 console 183 Aug 11 2001 RMAIL -rw-r--r-- 1 1001 console 5966 Aug 11 2001 X-log-2 drwxrwxrwx 2 1001 console 4096 Sep 3 2001 bob-speech drwxr-sr-x 2 1001 console 4096 Aug 11 2001 emacs -rw-r--r-- 1 1001 console 73 Dec 18 2001 foo -rw-r--r-- 1 1001 console 70 Dec 16 2001 foo.el -rw-r--r-- 1 1001 console 73 Dec 16 2001 foo.el.~1~ -rw-r--r-- 1 1001 console 964 Aug 11 2001 foo.pr -rw-r--r-- 1 1001 console 34 Aug 11 2001 foo.~1~ -rw-r--r-- 1 1001 console 45 Aug 11 2001 foo.~2~ -rw-r--r-- 1 1001 console 413 Aug 11 2001 foo.~3~ -rw-r--r-- 1 1001 console 3237 Aug 11 2001 foobar -rw-r--r-- 1 1001 console 6909 Dec 19 2001 how-to-emacs -rw-r--r-- 1 1001 console 6862 Dec 18 2001 how-to-emacs.~1~ -rw-r--r-- 1 1001 console 6716 Dec 18 2001 how-to-emacs.~2~ drwx--S--- 2 1001 console 4096 Aug 11 2001 nsmail -r--r--r-- 1 1001 console 413 Aug 11 2001 test-page drwxr-xr-x 10 1001 console 4096 Aug 11 2001 themes -rw-r--r-- 1 1001 console 16 Aug 11 2001 tty1 -rw-r--r-- 1 1001 console 565 Aug 11 2001 v.pr -rw-r--r-- 1 1001 console 590 Aug 11 2001 v2.pr -rw-r--r-- 1 1001 console 584 Aug 11 2001 v3.pr $ cd $ test -e /home/bob/ 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # file attributes with perl: /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/ $ tramp_file_attributes /home/bob/ (t 11 1001 1001 (15716 51505) (15506 31084) (15506 31084) 4096 17901 t (2 . 45985) (0 839)) $ test -e /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 $ ( test -d /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? ) tramp_exit_status 1 # Finding true name for `/multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias' # Check /home $ test -e /home 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # file attributes with perl: /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home $ tramp_file_attributes /home (t 12 0 50 (15716 48459) (15637 39656) (15637 39656) 4096 17917 t (0 . 2) (0 839)) # Check /home/bob $ test -e /home/bob 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # file attributes with perl: /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob $ tramp_file_attributes /home/bob (t 11 1001 1001 (15716 51505) (15506 31084) (15506 31084) 4096 17901 t (2 . 45985) (0 839)) # Check /home/bob/.alias $ test -e /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # file attributes with perl: /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias $ tramp_file_attributes /home/bob/.alias (nil 1 1001 1001 (15332 12548) (15221 21125) (15267 30346) 266 33188 t (2 . 45988) (0 839)) # True name of `/multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias' is `/home/bob/.alias' $ test -e /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # file attributes with perl: /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias $ tramp_file_attributes /home/bob/.alias (nil 1 1001 1001 (15332 12548) (15221 21125) (15267 30346) 266 33188 t (2 . 45988) (0 839)) # Finding true name for `/multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias' # Check /home $ test -e /home 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # file attributes with perl: /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home $ tramp_file_attributes /home (t 12 0 50 (15716 48459) (15637 39656) (15637 39656) 4096 17917 t (0 . 2) (0 839)) # Check /home/bob $ test -e /home/bob 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # file attributes with perl: /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob $ tramp_file_attributes /home/bob (t 11 1001 1001 (15716 51505) (15506 31084) (15506 31084) 4096 17901 t (2 . 45985) (0 839)) # Check /home/bob/.alias $ test -e /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # file attributes with perl: /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias $ tramp_file_attributes /home/bob/.alias (nil 1 1001 1001 (15332 12548) (15221 21125) (15267 30346) 266 33188 t (2 . 45988) (0 839)) # True name of `/multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias' is `/home/bob/.alias' $ test -e /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # file attributes with perl: /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias $ tramp_file_attributes /home/bob/.alias (nil 1 1001 1001 (15332 12548) (15221 21125) (15267 30346) 266 33188 t (2 . 45988) (0 839)) $ test -e /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 $ test -e /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # Encoding remote file /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias... $ mimencode -b < /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? IyAkSWQ6IHNrZWwuYWxpYXMsdiAxLjIgMTk5OC8wNC8yMCAxMTo0MTozMiBsdWlzZ2ggRXhw ICQKIyBMdWlzIEZyYW5jaXNjbyBHb2564WxleiA8bHVpc2doQGRlYmlhbi5vcmc+IGJhc2Vk IG9uIHRoYXQgb2YgVmFkaWsgVnlnb25ldHMKIyBQbGVhc2UgY2hlY2sgL3Vzci9kb2MvdGNz aC9leGFtcGxlcy9hbGlhcyB0byBzZWUgb3RoZXIgcG9zc2libGUgdmFsdWVzLgphbGlhcwls cwknbHMgLS1jb2xvcj1hdXRvJwphbGlhcwltZAlta2RpcgphbGlhcwlyZAlybWRpcgo= tramp_exit_status 0 # Decoding remote file /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias... # Decoding remote file /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias with function base64-decode-region... # Decoding remote file /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias...done $ test -e /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # file attributes with perl: /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias $ tramp_file_attributes /home/bob/.alias (nil 1 1001 1001 (15716 51515) (15221 21125) (15267 30346) 266 33188 t (2 . 45988) (0 839)) # Inserting local temp file `/tmp/tramp.9751zMo'... $ test -e /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 $ test -w /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 $ test -e /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # file attributes with perl: /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias $ tramp_file_attributes /home/bob/.alias (nil 1 1001 1001 (15716 51515) (15221 21125) (15267 30346) 266 33188 t (2 . 45988) (0 839)) $ test -e /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 $ test -e /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # file attributes with perl: /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias $ tramp_file_attributes /home/bob/.alias (nil 1 1001 1001 (15716 51515) (15221 21125) (15267 30346) 266 33188 t (2 . 45988) (0 839)) $ test -e /home/bob/RCS/.alias\,v 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /home/bob/.alias\,v 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /home/bob/RCS/.alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -r /home/bob/CVS/Entries 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /home/bob/SCCS/s..alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /home/bob/s..alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 1 $ test -e /home/bob/.alias 2>/dev/null; echo tramp_exit_status $? tramp_exit_status 0 # file attributes with perl: /multi:ssh:bob@24.161.120.95:ssh:bob@192.168.2.48:/home/bob/.alias $ tramp_file_attributes /home/bob/.alias (nil 1 1001 1001 (15716 51515) (15221 21125) (15267 30346) 266 33188 t (2 . 45988) (0 839))