[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

fixed: ange-ftp doesn't set TERM=dumb in inner shell



I send off a bug report against emacs to the emacs maintainers, and
got a patch back.

Here's my report, and the patch, delimited by =-=-=-=-= lines


Austin

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
From: and1000@cam.ac.UK (Austin Donnelly)
Newsgroups: gnu.emacs.bug
Subject: ange-ftp doesn't set TERM=dumb in inner shell
Date: 6 Dec 1995 07:39:47 -0500
Lines: 71
Message-ID: <m0tNJ82-000z1uC@valour.pem.cam.ac.uk>

In GNU Emacs 19.29.1 (i486-debian-linuxaout, X toolkit) of Wed Sep 20
1995 on imagine configured using --prefix=/usr --with-pop=yes
--with-x=yes --with-x-toolkit=lucid i486-debian-linuxaout

The standard Debian /usr/bin/ftp has readline support, which is very
nice. However, this means that it outputs control codes to make full
use of the terminal.

The problem is that ange-ftp can't parse the ftp output when it has
all these control sequences in it.

/usr/bin/ftp will keep quiet if TERM is set to "dumb", but as things
stand, it believes TERM to be "xterm", so it outputs "turn keypad on"
and "turn keypad off" codes when giving prompts.

This means that emacs running (with -nw) out of an xterm, or running
in X fully can't do ange-ftp. Starting emacs by typing:

       bash$ TERM=dumb emacs &

solves the problem. However, this isn't a long-term solution.

I think the best solution would be to start the ftp client in an
environment where TERM=dumb.

I include the error messages from ange-ftp for completeness below:

(Note that both these buffers contain ESC control characters. I have
also provided uuencoded copies of them in case they get mangled in transit).

------------------- buffer: *ftp ftp@src.doc.ic.ac.uk* ---------------------
[?1h=open src.doc.ic.ac.uk
ftp> [?1l>Connected to phoenix.doc.ic.ac.uk.
220 sunsite.doc.ic.ac.uk FTP server (Version wu-2.4(23) Sun Jul 9 23:09:29 BST 1995) ready.
Remote system type is UNIX.
Using binary mode to transfer files.
[?1h=ftp> 
----------------------------------------------------------------------------
begin 644 ftp-buffer
M&UL_,6@;/6]P96X@<W)C+F1O8RYI8RYA8RYU:PIF='`^(!M;/S%L&SY#;VYN
M96-T960@=&\@<&AO96YI>"YD;V,N:6,N86,N=6LN"C(R,"!S=6YS:71E+F1O
M8RYI8RYA8RYU:R!&5%`@<V5R=F5R("A697)S:6]N('=U+3(N-"@R,RD@4W5N
M($IU;"`Y(#(S.C`Y.C(Y($)35"`Q.3DU*2!R96%D>2X*4F5M;W1E('-Y<W1E
M;2!T>7!E(&ES(%5.25@N"E5S:6YG(&)I;F%R>2!M;V1E('1O('1R86YS9F5R
5(&9I;&5S+@H;6S\Q:!L]9G1P/B`*
`
end
----------------------------------------------------------------------------



------------------------------ buffer: *Messages* --------------------------
Loading ange-ftp...
Loading ange-ftp...done
Opening FTP connection to src.doc.ic.ac.uk...
FTP Error: OPEN request failed: [?1l>Connected to phoenix.doc.ic.ac.uk.
----------------------------------------------------------------------------
begin 644 message-buffer
M3&]A9&EN9R!A;F=E+69T<"XN+@I,;V%D:6YG(&%N9V4M9G1P+BXN9&]N90I/
M<&5N:6YG($944"!C;VYN96-T:6]N('1O('-R8RYD;V,N:6,N86,N=6LN+BX*
M1E10($5R<F]R.B!/4$5.(')E<75E<W0@9F%I;&5D.B`;6S\Q;!L^0V]N;F5C
==&5D('1O('!H;V5N:7@N9&]C+FEC+F%C+G5K+@ID
`
end
----------------------------------------------------------------------------



Thanks,

Austin


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Date: Thu, 7 Dec 1995 01:18:18 -0500
From: Richard Stallman <rms@gnu.ai.mit.edu>
To: and1000@cam.ac.uk
Subject: Re: ange-ftp doesn't set TERM=dumb in inner shell

Thanks.  Does this fix it?

cd ~/e19/lisp/
diff -c /rms/e19/lisp/ange-ftp.el.\~1\~ /rms/e19/lisp/ange-ftp.el
*** /rms/e19/lisp/ange-ftp.el.~1~	Thu Nov 16 17:27:14 1995
--- /rms/e19/lisp/ange-ftp.el	Wed Dec  6 18:28:40 1995
***************
*** 1778,1784 ****
      ;; It would be nice to make process-connection-type nil,
      ;; but that doesn't work: ftp never responds.
      ;; Can anyone find a fix for that?
!     (let ((process-connection-type t))
        (if use-gateway
  	  (if ange-ftp-gateway-program-interactive
  	      (setq proc (ange-ftp-gwp-start host user name args))
--- 1778,1787 ----
      ;; It would be nice to make process-connection-type nil,
      ;; but that doesn't work: ftp never responds.
      ;; Can anyone find a fix for that?
!     (let ((process-connection-type t)
! 	  (process-environment process-environment))
!       ;; This tells GNU ftp not to output any fancy escape sequences.
!       (setenv "TERM" "dumb")
        (if use-gateway
  	  (if ange-ftp-gateway-program-interactive
  	      (setq proc (ange-ftp-gwp-start host user name args))

Diff exited abnormally with code 1 at Wed Dec  6 18:48:56
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


The diff in fact works fine.

Could the emacs maintainer (Ian M) include this in the next emacs
release, please ?  (I think that version 19.30 is out).

Alternatively, does Ian M want to give the emacs and emacs-el
packages to me ?

Austin


Reply to: