123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- #!/bin/sh
- ##############################################################################
- # Copyright (c) 1998,2006 Free Software Foundation, Inc. #
- # #
- # Permission is hereby granted, free of charge, to any person obtaining a #
- # copy of this software and associated documentation files (the "Software"), #
- # to deal in the Software without restriction, including without limitation #
- # the rights to use, copy, modify, merge, publish, distribute, distribute #
- # with modifications, sublicense, and/or sell copies of the Software, and to #
- # permit persons to whom the Software is furnished to do so, subject to the #
- # following conditions: #
- # #
- # The above copyright notice and this permission notice shall be included in #
- # all copies or substantial portions of the Software. #
- # #
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL #
- # THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING #
- # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER #
- # DEALINGS IN THE SOFTWARE. #
- # #
- # Except as contained in this notice, the name(s) of the above copyright #
- # holders shall not be used in advertising or otherwise to promote the sale, #
- # use or other dealings in this Software without prior written #
- # authorization. #
- ##############################################################################
- # $Id: capconvert,v 1.4 2006/04/22 21:46:17 tom Exp $
- #
- # capconvert -- automated conversion from termcap to terminfo
- #
- echo "This script tries to automatically set you up so that your applications"
- echo "that now use termcap can use terminfo and the ncurses library."
- echo ""
- # Note, except for telling if we're running under xterm we don't use TERM at
- # all. This is because BSD users not infrequently have multiple termtypes
- # selected by conditionals in tset -- unless they're xterm users, in which
- # case they're on a workstation and probably don't.
- # Check to make sure TERMINFO is not already defined
- if test -n "$TERMINFO"
- then
- echo "TERMINFO is already defined in your environment. This means"
- echo "you already have a local terminfo tree, so you do not need any"
- echo "conversion."
- if test ! -d $TERMINFO ; then
- echo "Caution: TERMINFO does not point to a directory!"
- fi
- exit;
- fi
- # Check to see if terminfo is present in one of the standard locations.
- terminfo=no
- for p in $TERMINFO \
- /usr/lib/terminfo \
- /usr/share/lib/terminfo \
- /usr/share/terminfo \
- /usr/local/lib/terminfo \
- /usr/local/share/terminfo
- do
- if test -d $p ; then
- terminfo=yes
- break
- fi
- done
- if test $terminfo = yes
- then
- echo "Your system already has a system-wide terminfo tree."
- echo ""
- if test -z "$TERMCAP"
- then
- echo "You have no TERMCAP variable set, so we are done."
- # Assumes the terminfo master covers all canned terminal types
- exit;
- fi
- if test "$TERM" = "xterm"
- then
- echo "You are running xterm, which usually sets TERMCAP itself."
- echo "We can ignore this, because terminfo knows about xterm."
- echo "So you will just use the system-wide terminfo tree."
- exit;
- else
- echo "We will have to make a local one for you anyway, to capture the effect"
- echo "of your TERMCAP variable."
- fi
- else
- echo "No system-wide terminfo tree. We will make you a local one."
- fi
- echo "";
- # Check if test -x works (it's not portable, but useful)
- OPT="-x"
- TMP=test$$; touch $TMP && chmod 755 $TMP
- if test $OPT $TMP ; then
- chmod 644 $TMP
- test $OPT $TMP && OPT="-f"
- else
- OPT="-f"
- fi
- rm -f $TMP
- # First step -- go find tic
- TIC=
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:"
- for x in $PATH .
- do
- if test $OPT $x/tic
- then
- TIC=$x/tic
- break
- fi
- done
- IFS="$ac_save_ifs"
- if test -n "$TIC"
- then
- echo "I see tic at $TIC."
- case $TIC in # (vi
- ./tic)
- if test $OPT ../misc/shlib ; then
- TIC="../misc/shlib $TIC"
- fi
- ;;
- esac
- else
- echo "You do not have tic installed anywhere I can see, please fix that."
- exit;
- fi
- echo "";
- # We have tic. Either there's no system terminfo tree or there is one but
- # the user has a TERMCAP variable that may modify a stock description.
- #
- # Make the user a terminfo directory
- if test -d $HOME/.terminfo
- then
- echo "It appears you already have a private terminfo directory"
- echo "at $HOME/.terminfo; this seems odd, because TERMINFO"
- echo "is not defined. I am not going to second-guess this -- if you"
- echo "really want me to try auto-configuring for you, remove or"
- echo "rename $HOME/terminfo and run me again."
- exit;
- else
- echo "I am creating your private terminfo directory at $HOME/.terminfo"
- mkdir $HOME/.terminfo
- # Ensure that that's where tic's compilation results.
- # This isn't strictly necessary with a 1.9.7 or later tic.
- TERMINFO="$HOME/.terminfo"; export TERMINFO
- fi
- echo "";
- # Find a terminfo source to work from
- if test -f ../misc/terminfo.src
- then
- echo "I see the terminfo master source is handy; I will use that."
- master=../misc/terminfo.src
- else
- # Ooops...looks like we're running from somewhere other than the
- # progs directory of an ncurses source tree.
- master=`find $HOME -name "*terminfo.src" -print`
- mcount=`echo $master | wc -l`
- case $mcount in
- 0)
- echo "I can not find a terminfo source file anywhere under your home directory."
- echo "There should be a file called terminfo.src somewhere in your"
- echo "ncurses distribution; please put it in your home directotry"
- echo "and run me again (it does not have to live there permanently)."
- exit;
- ;;
- 1)
- echo "I see a file called $master."
- echo "I am going to assume this is the terminfo source included with"
- echo "the ncurses distribution. If this assumption is wrong, please"
- echo "interrupt me now! OK to continue?"
- read ans;
- ;;
- 2)
- echo "I see more than one possible terminfo source. Here they are:"
- echo $master | sed "/^/s// /";
- while :
- do
- echo "Please tell me which one to use:"
- read master;
- if test -f $master
- then
- break
- else
- echo "That file does not exist. Try again?";
- fi
- done
- ;;
- esac
- fi
- echo "";
- # Now that we have a master, compile it into the local tree
- echo "OK, now I will make your private terminfo tree. This may take a bit..."
- #
- # Kluge alert: we compile terminfo.src in two pieces because a lot of machines
- # with < 16MB RAM choke on tic's core-hog habits.
- trap "rm -f tsplit$$.*" 0 1 2 5 15
- sed -n $master \
- -e '1,/SPLIT HERE/w 'tsplit$$.01 \
- -e '/SPLIT HERE/,$w 'tsplit$$.02 \
- 2>/dev/null
- for x in tsplit$$.*; do eval $TIC $x; done
- rm tsplit$$.*
- trap 0 1 2 5 15
- #
- echo "You now have a private tree under $HOME/.terminfo;"
- echo "the ncurses library will automatically read from it,"
- echo "and ncurses tic will automatically compile entries to it."
- # We're done unless user has a .termcap file or equivalent named by TERMCAP
- if test -z "$TERMCAP"
- then
- echo "You have no TERMCAP set, so we are done."
- fi
- # OK, here comes the nasty case...user has a TERMCAP. Instead of
- # trying to follow all the convolutions of the relationship between
- # TERM and TERMCAP (partly because it's too painful, and partly because
- # we don't actually know what TERM will be nor even if it always has
- # the same value for this user) we do the following three steps...
- if test -f $HOME/.termcap
- then
- echo 'I see you have a $HOME/.termcap file. I will compile that.'
- eval $TIC $HOME/.termcap
- echo "Done."
- echo "Note that editing $HOME/.termcap will no longer change the data curses sees."
- elif test -f "$TERMCAP"
- then
- echo "Your TERMCAP names the file $TERMCAP. I will compile that."
- eval $TIC $TERMCAP
- echo "Done."
- echo "Note that editing $TERMCAP will no longer change the data curses sees."
- else
- echo "Your TERMCAP value appears to be an entry in termcap format."
- echo "I will compile it."
- echo $TERMCAP >myterm$$
- eval $TIC myterm$$
- rm myterm$$
- echo "Done."
- echo "Note that editing TERMCAP will no longer change the data curses sees."
- fi
- echo "To do that, decompile the terminal decription you want with infocmp(1),"
- echo "edit to taste, and recompile using tic(1)."
- # capconvert ends here
|