*BSD News Article 41531


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!bunyip.cc.uq.oz.au!munnari.oz.au!constellation!bubba.ucc.okstate.edu!news.ksu.ksu.edu!vixen.cso.uiuc.edu!howland.reston.ans.net!pipex!uunet!dziuxsolim.rutgers.edu!caip.rutgers.edu!not-for-mail
From: halasz@kewszeg.UUCP
Newsgroups: comp.unix.bsd
Subject: Re: TERM type on login?
Date: 23 Jan 1995 20:14:37 -0500
Organization: caip
Lines: 85
Sender: halasz@caip.rutgers.edu
Distribution: world
Message-ID: <3g1k9t$aka@caip.rutgers.edu>
References: <D2CpqG.JHq@world.std.com> <3ek72l$dk8$1@mhadg.production.compuserve.com>
NNTP-Posting-Host: caip.rutgers.edu

Brent (71154.1734@CompuServe.COM) wrote:
: If I make my user's shell an application (specifically a BBS 
: program) how can I set the TERM type when they login.  When my 
: dialup lines connect the tty is unknown and the PINE mailer 
: refuses to run as does lynx.  Can someone help me out here?

: Brent

from kseel@world.std.com (kurt w seel):
*I use this in my /etc/profile ;
*
*#
*#  Get the last term (in .term)
*#
*T=`cat $HOME/.term`
*
*#
*#  Confirm it
*#
*error=1
*while [ $error != 0 ]
*do
*        echo -n "Enter Terminal Type (default = $T)"
*        read a
*        TERM=${a:-"$T"}
*
*        tput -T $TERM 2> /dev/null
*        error=$?
*
*        if [ $error != 0 ]
*        then
*                echo "No, that's not a terminal , try again ... "
*        fi
*done

On my Unix, this has problems, for the "tput"-line exits with 2, no command.
This is eazilie solvd:
	tput -T $TERM longname
this is nice, for it shows the chozen name.  Furthermore, this is not
good shell-programming style.  This is better:

#
#  Get the last term (in .term)
#
T=`cat $HOME/.term`

#
#  Confirm it
#
until echo -n "Enter Terminal Type (default = $T)"
      read a
      TERM=${a:-"$T"}

      tput -T $TERM longname
do
      echo "No, that's not a terminal , try again ... "
done

Nonetheless, why all this hacking?  You hav no "tset"?  It was made for this.
Look:

#
#  Get the last term (in .term)
#
T=`cat $HOME/.term`

#
#  Confirm it
#
until	eval `tset -m ":?$T" -r -s`
do	:
done

With flag "-s" "tset" outputs commands that set and export "TERM".  If your
"tset" loops until a good terminal-name is enterd, the loop is not needed:

#
#  Get the last term (in .term)
#
T=`cat $HOME/.term`

#
#  Confirm it
#
eval `tset -m ":?$T" -r -s`