Date: Thu, 16 Jun 2011 13:15:16 -0700 From: Jeremy Chadwick <freebsd@jdc.parodius.com> To: Hans Ottevanger <hans@beastielabs.net> Cc: freebsd-stable@freebsd.org, Ivan Voras <ivoras@freebsd.org> Subject: Re: csh Cannot open /etc/termcap after starting "screen" Message-ID: <20110616201516.GA90053@icarus.home.lan> In-Reply-To: <20110616185951.GA88009@testsoekris.hotsoft.nl> References: <itddtl$knj$1@dough.gmane.org> <20110616185951.GA88009@testsoekris.hotsoft.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Jun 16, 2011 at 08:59:51PM +0200, Hans Ottevanger wrote: > On Thu, Jun 16, 2011 at 07:18:37PM +0200, Ivan Voras wrote: > > Hello, > > > > This *looks* like it should be a trivial problem (or at least > > often-encountered one) but short of debugging both screen and tcsh, I > > have no ideas what to do next... > > > > On several machines (seemingly random, some are running 7-stable, others > > 8-stable), I get this message after starting "screen", written on the > > newly created screen: > > > > csh: Cannot open /etc/termcap. > > csh: using dumb terminal settings. > > > > The problem is: this also happens whan I'm doing it as the root user, > > and /etc/termcap is a symlink to /usr/share/misc/termcap, which > > definitely exists and is readable. To make it even stranger, it looks > > like the environment contains something which seems to be valid termcap > > data: > > > > lara:/home/ivoras# setenv > > STY=58859.pts-13.lara > > TERM=screen > > TERMCAP=SC|screen|VT 100/ANSI X3.64 virtual terminal:\ > > :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bs:bt=\E[Z:\ > > :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:ct=\E[3g:\ > > :do=^J:nd=\E[C:pt:rc=\E8:rs=\Ec:sc=\E7:st=\EH:up=\EM:\ > > :le=^H:bl=^G:cr=^M:it#8:ho=\E[H:nw=\EE:ta=^I:is=\E)0:\ > > :li#48:co#104:am:xn:xv:LP:sr=\EM:al=\E[L:AL=\E[%dL:\ > > :cs=\E[%i%d;%dr:dl=\E[M:DL=\E[%dM:dc=\E[P:DC=\E[%dP:\ > > :im=\E[4h:ei=\E[4l:mi:IC=\E[%d@:ks=\E[?1h\E=:\ > > :ke=\E[?1l\E>:vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l:\ > > :ti=\E[?1049h:te=\E[?1049l:us=\E[4m:ue=\E[24m:so=\E[3m:\ > > :se=\E[23m:mb=\E[5m:md=\E[1m:mh=\E[2m:mr=\E[7m:\ > > :me=\E[m:ms:\ > > :Co#8:pa#64:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:AX:\ > > :vb=\Eg:as=\E(0:ae=\E(B:\ > > > > :ac=\140\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:\ > > :k0=\E[10~:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:\ > > :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\ > > :F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:F5=\E[28~:\ > > :F6=\E[29~:F7=\E[31~:F8=\E[32~:F9=\E[33~:FA=\E[34~:kb=^?:\ > > :K2=\E[G:kh=\E[1~:@1=\E[1~:kH=\E[4~:@7=\E[4~:kN=\E[6~:\ > > :kP=\E[5~:kI=\E[2~:kD=\E[3~:ku=\EOA:kd=\EOB:kr=\EOC:\ > > :kl=\EOD: > > WINDOW=0 > > SHELL=/bin/csh > > > > The shell and all started programs are misbehaving and/or treating the > > terminal as "dumb". For example, "mc" writes this: > > > > lara:/home/ivoras# mc > > Unknown terminal: screen > > Check the TERM environment variable. > > Also make sure that the terminal is defined in the terminfo database. > > Alternatively, set the TERMCAP environment variable to the desired > > termcap entry. > > > > There really isn't a termcap line in /etc/termcap beginning with > > ^screen, but there is one beginning with ^SC containing the entry which > > is also in the environment listing above (which fails with the same > > error if I set it). > > > > The system works if I set some other terminal type like "xterm". > > > > Any ideas? Why is the "screen" terminal type so special? > > > > This is probably because your termcap entry is too long. > > If I remember well the length is limited to 1024, which is confirmed by > the following citation from 'man 5 termcap': > > The total length of a single entry (excluding only escaped newlines) may not > exceed 1024. > > I have tried the TERMCAP entry you specified using bash and I get similar > problems when using e.g. vi or clear. If I shorten the TERMCAP somewhat > everything works again, though probably with reduced functionality. > > On 8.2-STABLE I can also set TERM to either screen or SC. Apparently the SC entry in > /etc/termcap is just short enough. Normally I don't spout off blatant advocacy, but Here's a better idea for Ivan: Get rid of the atrocity that is GNU screen and use tmux instead. Please see the tmux FAQ for the differences between it and GNU screen (read: why tmux is *way* better). The terminal "translation" that GNU screen does -- thus requiring the joke that is TERM=screen -- is a disgrace. It tries to "convert" between the attached terminal type (e.g. xterm, rxvt, vt100) and its own ("screen"). And it does a horrible job of it, while mangling the output you see. Example: run mutt from within GNU screen while connected to the system with PuTTY, then copy some of the terminal content and paste it somewhere. Wow, look at all those extraneous spaces at the end of lines, which you now gloriously have to manually remove. I've also never seen terminal BCE work properly under screen, even with defbce on. The most common conversation I have with people (personally and professionally) about "terminal weirdness" always involves GNU screen. The conversations go like this: "This program sucks, it looks like crap" "Really? Hmm, it looks okay here, terminal/environment issue?" "No it isn't" "Are you using GNU screen?" "Why would that matter?" "Try the app without it" "... wow, it works! WTF?" "Stop using GNU screen". http://tmux.sourceforge.net/ -- | Jeremy Chadwick jdc@parodius.com | | Parodius Networking http://www.parodius.com/ | | UNIX Systems Administrator Mountain View, CA, US | | Making life hard for others since 1977. PGP 4BD6C0CB |
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110616201516.GA90053>