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: I miss ange-ftp ($#@!Tramp) Date: Tue, 26 Nov 2002 16:44:02 +0000 (UTC) Sender: emacs-devel-admin@gnu.org Message-ID: References: <7AA5242A-00C4-11D7-9700-0003936772EE@clay-jones.com> <847kf0wzqm.fsf@lucy.cs.uni-dortmund.de> <844ra4cnmy.fsf@lucy.cs.uni-dortmund.de> Reply-To: bob@rattlesnake.com NNTP-Posting-Host: main.gmane.org X-Trace: main.gmane.org 1038329299 25969 80.91.224.249 (26 Nov 2002 16:48:19 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Tue, 26 Nov 2002 16:48:19 +0000 (UTC) Cc: emacs-devel@gnu.org Return-path: Original-Received: from quimby.gnus.org ([80.91.224.244]) by main.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 18Gisi-0006kZ-00 for ; Tue, 26 Nov 2002 17:48:16 +0100 Original-Received: from monty-python.gnu.org ([199.232.76.173]) by quimby.gnus.org with esmtp (Exim 3.12 #1 (Debian)) id 18Giyt-0002Hu-00 for ; Tue, 26 Nov 2002 17:54:39 +0100 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.10) id 18Giq5-0005Kj-00; Tue, 26 Nov 2002 11:45:33 -0500 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 18Giot-0004ct-00 for emacs-devel@gnu.org; Tue, 26 Nov 2002 11:44:19 -0500 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 18Giom-0004Zb-00 for emacs-devel@gnu.org; Tue, 26 Nov 2002 11:44:17 -0500 Original-Received: from megalith.rattlesnake.com ([140.186.114.245] helo=localhost) by monty-python.gnu.org with esmtp (Exim 4.10) id 18Gioj-0004XU-00 for emacs-devel@gnu.org; Tue, 26 Nov 2002 11:44:09 -0500 Original-Received: by rattlesnake.com via sendmail from stdin id (Debian Smail3.2.0.114) Tue, 26 Nov 2002 16:44:02 +0000 (UTC) Original-To: kai.grossjohann@uni-duisburg.de In-reply-to: <844ra4cnmy.fsf@lucy.cs.uni-dortmund.de> (kai.grossjohann@uni-duisburg.de) 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:9688 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:9688 > (setq tramp-default-method "smx") More recent versions of Tramp use a different set of methods. ... Or maybe you want "sshx" which executes "ssh ... -e none -t -t /bin/sh" instead of "ssh ... -e none". I tried sshx and I was able to visit and also (I think) save that remote file using ange-ftp, but the visited file was in a buried buffer, in fundamental mode, and ... * the *Backtrace* buffer says: Debugger entered--Lisp error: (error "Login failed") [and more which I list below] * the *ftp user@foo.net* buffer says: ftp> open foo.net Connected to foo.net. [and more which I list below] * the *tramp/nil user@foo.net* says in toto: 31223: ssh: connect to address 209.213.0.60 port 22: Connection refused Process *tramp/nil user@foo.net* exited abnormally with code 1 Also, I just tried (setq tramp-default-method "ssh") in a new instance of Emacs and it looks like tramp generated the same problems. (I won't include those new error messages here, since I they look similar on a quick glance to the one's here.) Using today's CVS snapshot, Tue, 2002 Nov 26 11:49 UTC GNU Emacs 21.3.50.48 (i686-pc-linux-gnu, X toolkit) started with /usr/local/bin/emacs -q --no-site-file --eval '(blink-cursor-mode 0)' First, I evaluated all the following: (progn (require 'tramp) (setq tramp-verbose 10) (setq tramp-debug-buffer t) (setq tramp-default-method "sshx") ;; when running `emacs -q -l ... ' need to set this (custom-set-variables '(shell-prompt-pattern "^[^#$% ]*[#$%>] *"))) ;;; load the *.el files instead of the *.elc files to avoid bytecode (progn (load-file "/usr/local/share/emacs/21.3.50/lisp/comint.el") (load-file "/usr/local/share/emacs/21.3.50/lisp/emacs-lisp/cl.el") (load-file "/usr/local/src/emacs/lisp/net/ange-ftp.el") (load-file "/usr/local/src/emacs/lisp/net/tramp-uu.el") (load-file "/usr/local/src/emacs/lisp/net/tramp-vc.el") (load-file "/usr/local/src/emacs/lisp/net/tramp.el")) ;; [need passive mode for ftp with firewall] (setq ange-ftp-try-passive-mode t) ;; [set ange-ftp-default-user for ange-ftp] (custom-set-variables '(ange-ftp-default-user "ftp@gnu.org")) ;;; from emacs/lisp/net/ange-ftp.el ;;; This regexp takes care of real ange-ftp file names (with a slash ;;; and colon). ;;; Don't allow the host name to end in a period--some systems use /.: ;;;###autoload (or (assoc "^/[^/:]*[^/:.]:" file-name-handler-alist) (setq file-name-handler-alist (cons '("^/[^/:]*[^/:.]:" . ange-ftp-hook-function) file-name-handler-alist))) ;;; This regexp recognizes absolute filenames with only one component, ;;; for the sake of hostname completion. ;;;###autoload (or (assoc "^/[^/:]*\\'" file-name-handler-alist) (setq file-name-handler-alist (cons '("^/[^/:]*\\'" . ange-ftp-completion-hook-function) file-name-handler-alist))) ;;; This regexp recognizes absolute filenames with only one component ;;; on Windows, for the sake of hostname completion. ;;; NB. Do not mark this as autoload, because it is very common to ;;; do completions in the root directory of drives on Windows. (and (memq system-type '(ms-dos windows-nt)) (or (assoc "^[a-zA-Z]:/[^/:]*\\'" file-name-handler-alist) (setq file-name-handler-alist (cons '("^[a-zA-Z]:/[^/:]*\\'" . ange-ftp-completion-hook-function) file-name-handler-alist)))) Then I visited a file with a command like this (I changed the name of the user and the destination): (find-file "/user@foo.net:~user/public_html/links.html" nil) The *Backtrace* buffer says, in toto: Debugger entered--Lisp error: (error "Login failed") signal(error ("Login failed")) error("Login failed") (if (eq exit (quote ok)) nil (error "Login failed")) (unless (eq exit (quote ok)) (error "Login failed")) (let (exit) (while (not exit) (tramp-message 9 "Waiting for prompts from remote shell") (setq exit ...)) (unless (eq exit ...) (error "Login failed"))) tramp-process-actions(# nil nil "user" "foo.net" ((tramp-password-prompt-regexp tramp-action-password) (tramp-login-prompt-regexp tramp-action-login) (shell-prompt-pattern tramp-action-succeed) (tramp-shell-prompt-pattern tramp-action-succeed) (tramp-wrong-passwd-regexp tramp-action-permission-denied) (tramp-yesno-prompt-regexp tramp-action-yesno) (tramp-yn-prompt-regexp tramp-action-yn) (tramp-terminal-prompt-regexp tramp-action-terminal))) (let* ((default-directory ...) (coding-system-for-read ...) (p ...) (found nil)) (process-kill-without-query p) (set-buffer buf) (tramp-process-actions p multi-method method user host tramp-actions-before-shell) (tramp-message 7 "Initializing remote shell") (tramp-open-connection-setup-interactive-shell p multi-method method user host) (tramp-post-connection multi-method method user host)) (let ((process-environment ...) (bufnam ...) (buf ...) (rsh-program ...) (rsh-args ...)) (when (string-match "\\([^#]*\\)#\\(.*\\)" host) (setq rsh-args ...) (setq host ...)) (setenv "TERM" tramp-terminal-type) (let* (... ... ... ...) (process-kill-without-query p) (set-buffer buf) (tramp-process-actions p multi-method method user host tramp-actions-before-shell) (tramp-message 7 "Initializing remote shell") (tramp-open-connection-setup-interactive-shell p multi-method method user host) (tramp-post-connection multi-method method user host))) (progn (when multi-method (error "Cannot multi-connect using rsh connection method")) (tramp-pre-connection multi-method method user host) (if (and user ...) (tramp-message 7 "Opening connection for %s@%s using %s..." user host method) (tramp-message 7 "Opening connection at %s using %s..." host method)) (let (... ... ... ... ...) (when ... ... ...) (setenv "TERM" tramp-terminal-type) (let* ... ... ... ... ... ... ...))) (unwind-protect (progn (when multi-method ...) (tramp-pre-connection multi-method method user host) (if ... ... ...) (let ... ... ... ...)) (set-match-data save-match-data-internal)) (let ((save-match-data-internal ...)) (unwind-protect (progn ... ... ... ...) (set-match-data save-match-data-internal))) (save-match-data (when multi-method (error "Cannot multi-connect using rsh connection method")) (tramp-pre-connection multi-method method user host) (if (and user ...) (tramp-message 7 "Opening connection for %s@%s using %s..." user host method) (tramp-message 7 "Opening connection at %s using %s..." host method)) (let (... ... ... ... ...) (when ... ... ...) (setenv "TERM" tramp-terminal-type) (let* ... ... ... ... ... ... ...))) tramp-open-connection-rsh(nil nil "user" "foo.net") funcall(tramp-open-connection-rsh nil nil "user" "foo.net") (if (and p (processp p) (memq ... ...)) nil (when (and p ...) (delete-process p)) (funcall (tramp-get-connection-function multi-method ... user host) multi-method method user host)) (unless (and p (processp p) (memq ... ...)) (when (and p ...) (delete-process p)) (funcall (tramp-get-connection-function multi-method ... user host) multi-method method user host)) (let ((p ...) last-cmd-time) (save-excursion (set-buffer ...) (when ... ... ... ...)) (unless (and p ... ...) (when ... ...) (funcall ... multi-method method user host))) tramp-maybe-open-connection(nil nil "user" "foo.net") (save-excursion (tramp-maybe-open-connection multi-method method user host) (set-buffer (tramp-get-buffer multi-method method user host)) tramp-file-exists-command) tramp-get-file-exists-command(nil nil "user" "foo.net") (format (tramp-get-file-exists-command multi-method method user host) (tramp-shell-quote-argument path)) (tramp-send-command-and-check multi-method method user host (format (tramp-get-file-exists-command multi-method method user host) (tramp-shell-quote-argument path))) (zerop (tramp-send-command-and-check multi-method method user host (format ... ...))) (save-excursion (zerop (tramp-send-command-and-check multi-method method user host ...))) (let* ((v ...) (multi-method ...) (method ...) (user ...) (host ...) (path ...)) (when (tramp-ange-ftp-file-name-p multi-method method user host) (tramp-invoke-ange-ftp ... filename)) (save-excursion (zerop ...))) (with-parsed-tramp-file-name filename nil (when (tramp-ange-ftp-file-name-p multi-method method user host) (tramp-invoke-ange-ftp ... filename)) (save-excursion (zerop ...))) tramp-handle-file-exists-p(#("/user@foo.net:/home/user/public_html/links.html" 0 14 nil 14 24 (rear-nonsticky t field output inhibit-line-move-field-capture t) 24 47 nil)) (if (tramp-handle-file-exists-p filename) (progn (save-excursion ...))) (when (tramp-handle-file-exists-p filename) (save-excursion (if ... ... ...))) (let* ((v ...) (multi-method ...) (method ...) (user ...) (host ...) (path ...)) (when (tramp-ange-ftp-file-name-p multi-method method user host) (tramp-invoke-ange-ftp ... filename)) (when (tramp-handle-file-exists-p filename) (save-excursion ...))) (with-parsed-tramp-file-name filename nil (when (tramp-ange-ftp-file-name-p multi-method method user host) (tramp-invoke-ange-ftp ... filename)) (when (tramp-handle-file-exists-p filename) (save-excursion ...))) (let (result) (with-parsed-tramp-file-name filename nil (when ... ...) (when ... ...)) result) tramp-handle-file-attributes(#("/user@foo.net:/home/user/public_html/links.html" 0 14 nil 14 24 (rear-nonsticky t field output inhibit-line-move-field-capture t) 24 47 nil)) (nth 8 (tramp-handle-file-attributes filename)) (tramp-mode-string-to-int (nth 8 (tramp-handle-file-attributes filename))) (progn (tramp-mode-string-to-int (nth 8 ...))) (if (file-exists-p filename) (progn (tramp-mode-string-to-int ...))) (when (file-exists-p filename) (tramp-mode-string-to-int (nth 8 ...))) (let* ((v ...) (multi-method ...) (method ...) (user ...) (host ...) (path ...)) (when (tramp-ange-ftp-file-name-p multi-method method user host) (tramp-invoke-ange-ftp ... filename)) (when (file-exists-p filename) (tramp-mode-string-to-int ...))) (with-parsed-tramp-file-name filename nil (when (tramp-ange-ftp-file-name-p multi-method method user host) (tramp-invoke-ange-ftp ... filename)) (when (file-exists-p filename) (tramp-mode-string-to-int ...))) tramp-handle-file-modes(#("/user@foo.net:/home/user/public_html/links.html" 0 14 nil 14 24 (rear-nonsticky t field output inhibit-line-move-field-capture t) 24 47 nil)) apply(tramp-handle-file-modes #("/user@foo.net:/home/user/public_html/links.html" 0 14 nil 14 24 (rear-nonsticky t field output inhibit-line-move-field-capture t) 24 47 nil)) (progn (apply (cdr fn) args)) (unwind-protect (progn (apply ... args)) (set-match-data save-match-data-internal)) (let ((save-match-data-internal ...)) (unwind-protect (progn ...) (set-match-data save-match-data-internal))) (save-match-data (apply (cdr fn) args)) (catch (quote tramp-forward-to-ange-ftp) (save-match-data (apply ... args))) (if fn (catch (quote tramp-forward-to-ange-ftp) (save-match-data ...)) (tramp-run-real-handler operation args)) (let ((fn ...)) (if fn (catch ... ...) (tramp-run-real-handler operation args))) tramp-file-name-handler(file-modes #("/user@foo.net:/home/user/public_html/links.html" 0 14 nil 14 24 (rear-nonsticky t field output inhibit-line-move-field-capture t) 24 47 nil)) file-modes(#("/user@foo.net:/home/user/public_html/links.html" 0 14 nil 14 24 (rear-nonsticky t field output inhibit-line-move-field-capture t) 24 47 nil)) apply(file-modes #("/user@foo.net:/home/user/public_html/links.html" 0 14 nil 14 24 (rear-nonsticky t field output inhibit-line-move-field-capture t) 24 47 nil)) (let ((inhibit-file-name-handlers ...) (inhibit-file-name-operation operation)) (apply operation args)) ange-ftp-run-real-handler(file-modes (#("/user@foo.net:/home/user/public_html/links.html" 0 14 nil 14 24 (rear-nonsticky t field output inhibit-line-move-field-capture t) 24 47 nil))) (if fn (save-match-data (apply fn args)) (ange-ftp-run-real-handler operation args)) (let ((fn ...)) (if fn (save-match-data ...) (ange-ftp-run-real-handler operation args))) ange-ftp-hook-function(file-modes #("/user@foo.net:/home/user/public_html/links.html" 0 14 nil 14 24 (rear-nonsticky t field output inhibit-line-move-field-capture t) 24 47 nil)) file-modes(#("/user@foo.net:/home/user/public_html/links.html" 0 14 nil 14 24 (rear-nonsticky t field output inhibit-line-move-field-capture t) 24 47 nil)) after-find-file(nil t) find-file-noselect-1(# #("/user@foo.net:/home/user/public_html/links.html" 0 14 nil 14 24 (rear-nonsticky t field output inhibit-line-move-field-capture t) 24 47 nil) nil nil #("/user@foo.net:/home/user/public_html/links.html" 0 14 nil 14 24 (rear-nonsticky t field output inhibit-line-move-field-capture t) 24 47 nil) (1 -1)) find-file-noselect("/user@foo.net:~user/public_html/links.html" nil nil nil) find-file("/user@foo.net:~user/public_html/links.html" nil) eval((find-file "/user@foo.net:~user/public_html/links.html" nil)) eval-last-sexp-1(nil) eval-last-sexp(nil) call-interactively(eval-last-sexp) The *ftp user@foo.net* buffer says, in toto: ftp> open foo.net Connected to foo.net. 220 uno.foo.net FTP server (Version wu-2.6.2(1) Fri Feb 22 04:09:00 EST 2002) ready. user "user" Turtle Power! 530 Please login with USER and PASS. 530 Please login with USER and PASS. KERBEROS_V4 rejected as an authentication type ftp> 331 Password required for user. 230 User user logged in. ftp> hash Hash mark printing on (1024 bytes/hash mark). ftp> pwd 257 "/home/user" is current directory. ftp> passive on Passive mode on. ftp> get ~user /dev/null 227 Entering Passive Mode (209,213,0,60,173,85) 550 /home/user: not a plain file. ftp> cd /home/user/public_html/links.html/ 550 /home/user/public_html/links.html/: Not a directory. ftp> cd /home/user/public_html/links.html/ 550 /home/user/public_html/links.html/: Not a directory. ftp> cd /home/user/public_html/ 250 CWD command successful. ftp> ls -al /tmp/ange-ftp31214C4h 227 Entering Passive Mode (209,213,0,60,137,252) 150 Opening ASCII mode data connection for /bin/ls. 226 Transfer complete. ftp> quote mdtm /home/user/public_html/links.html 213 20021126125941 ftp> quote mdtm /home/user/public_html/links.html 213 20021126125941 ftp> quote mdtm /home/user/public_html/links.html 213 20021126125941 ftp> quote mdtm /home/user/public_html/links.html 213 20021126125941 ftp> type binary 200 Type set to I. ftp> get /home/user/public_html/links.html /tmp/ange-ftp31214PCo 227 Entering Passive Mode (209,213,0,60,155,160) 150 Opening BINARY mode data connection for /home/user/public_html/links.html (11994 bytes). 226 Transfer complete. 11994 bytes received in 2.3 seconds (5.1 Kbytes/s) ftp> type ascii 200 Type set to A. ftp> quote mdtm /home/user/public_html/links.html 213 20021126125941 ftp> quote mdtm /home/user/public_html/links.html 213 20021126125941 ftp> quote mdtm /home/user/public_html/links.html 213 20021126125941 ftp> quote mdtm /home/user/public_html/links.html 213 20021126125941 ftp> quote mdtm /home/user/public_html/links.html 213 20021126125941 ftp> quote mdtm /home/user/public_html/links.html 213 20021126125941 ftp> quote mdtm /home/user/public_html/links.html 213 20021126125941 ftp> quote mdtm /home/user/public_html/links.html 213 20021126125941 ftp> quote mdtm /home/user/public_html/links.html 213 20021126125941 ftp> quote mdtm /home/user/public_html/links.html 213 20021126125941 ftp> quote mdtm /home/user/public_html/links.html 213 20021126125941 ftp> quote mdtm /home/user/public_html/links.html 213 20021126125941 ftp> type binary 200 Type set to I. ftp> put /tmp/ange-ftp31214cMu /home/user/public_html/links.html 227 Entering Passive Mode (209,213,0,60,134,234) 150 Opening BINARY mode data connection for /home/user/public_html/links.html. 226 Transfer complete. 11994 bytes sent in 0.00026 seconds (4.5e+04 Kbytes/s) ftp> type ascii 200 Type set to A. ftp> quote mdtm /home/user/public_html/links.html 213 20021126163005 ftp> quote mdtm /home/user/public_html/links.html 213 20021126163005 ftp> quote mdtm /home/user/public_html/links.html 213 20021126163005 ftp> quote mdtm /home/user/public_html/links.html 213 20021126163005 ftp>