source: trunk/ncurses/progs/capconvert@ 3003

Last change on this file since 3003 was 2621, checked in by bird, 19 years ago

GNU ncurses 5.5

File size: 6.5 KB
Line 
1#!/bin/sh
2# $Id: capconvert,v 1.3 1997/08/02 21:52:06 tom Exp $
3#
4# capconvert -- automated conversion from termcap to terminfo
5#
6
7echo "This script tries to automatically set you up so that your applications"
8echo "that now use termcap can use terminfo and the ncurses library."
9echo ""
10
11# Note, except for telling if we're running under xterm we don't use TERM at
12# all. This is because BSD users not infrequently have multiple termtypes
13# selected by conditionals in tset -- unless they're xterm users, in which
14# case they're on a workstation and probably don't.
15
16# Check to make sure TERMINFO is not already defined
17if test -n "$TERMINFO"
18then
19 echo "TERMINFO is already defined in your environment. This means"
20 echo "you already have a local terminfo tree, so you do not need any"
21 echo "conversion."
22 if test ! -d $TERMINFO ; then
23 echo "Caution: TERMINFO does not point to a directory!"
24 fi
25 exit;
26fi
27
28# Check to see if terminfo is present in one of the standard locations.
29terminfo=no
30for p in $TERMINFO \
31 /usr/lib/terminfo \
32 /usr/share/lib/terminfo \
33 /usr/share/terminfo \
34 /usr/local/lib/terminfo \
35 /usr/local/share/terminfo
36do
37 if test -d $p ; then
38 terminfo=yes
39 break
40 fi
41done
42
43if test $terminfo = yes
44then
45 echo "Your system already has a system-wide terminfo tree."
46 echo ""
47 if test -z "$TERMCAP"
48 then
49 echo "You have no TERMCAP variable set, so we are done."
50 # Assumes the terminfo master covers all canned terminal types
51 exit;
52 fi
53 if test "$TERM" = "xterm"
54 then
55 echo "You are running xterm, which usually sets TERMCAP itself."
56 echo "We can ignore this, because terminfo knows about xterm."
57 echo "So you will just use the system-wide terminfo tree."
58 exit;
59 else
60 echo "We will have to make a local one for you anyway, to capture the effect"
61 echo "of your TERMCAP variable."
62 fi
63else
64 echo "No system-wide terminfo tree. We will make you a local one."
65fi
66echo "";
67
68# Check if test -x works (it's not portable, but useful)
69OPT="-x"
70TMP=test$$; touch $TMP && chmod 755 $TMP
71if test $OPT $TMP ; then
72 chmod 644 $TMP
73 test $OPT $TMP && OPT="-f"
74else
75 OPT="-f"
76fi
77rm -f $TMP
78
79# First step -- go find tic
80TIC=
81IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:"
82for x in $PATH .
83do
84 if test $OPT $x/tic
85 then
86 TIC=$x/tic
87 break
88 fi
89done
90IFS="$ac_save_ifs"
91
92if test -n "$TIC"
93then
94 echo "I see tic at $TIC."
95 case $TIC in # (vi
96 ./tic)
97 if test $OPT ../misc/shlib ; then
98 TIC="../misc/shlib $TIC"
99 fi
100 ;;
101 esac
102else
103 echo "You do not have tic installed anywhere I can see, please fix that."
104 exit;
105fi
106echo "";
107
108# We have tic. Either there's no system terminfo tree or there is one but
109# the user has a TERMCAP variable that may modify a stock description.
110#
111
112# Make the user a terminfo directory
113if test -d $HOME/.terminfo
114then
115 echo "It appears you already have a private terminfo directory"
116 echo "at $HOME/.terminfo; this seems odd, because TERMINFO"
117 echo "is not defined. I am not going to second-guess this -- if you"
118 echo "really want me to try auto-configuring for you, remove or"
119 echo "rename $HOME/terminfo and run me again."
120 exit;
121else
122 echo "I am creating your private terminfo directory at $HOME/.terminfo"
123 mkdir $HOME/.terminfo
124 # Ensure that that's where tic's compilation results.
125 # This isn't strictly necessary with a 1.9.7 or later tic.
126 TERMINFO="$HOME/.terminfo"; export TERMINFO
127fi
128echo "";
129
130# Find a terminfo source to work from
131if test -f ../misc/terminfo.src
132then
133 echo "I see the terminfo master source is handy; I will use that."
134 master=../misc/terminfo.src
135else
136 # Ooops...looks like we're running from somewhere other than the
137 # progs directory of an ncurses source tree.
138 master=`find $HOME -name "*terminfo.src" -print`
139 mcount=`echo $master | wc -l`
140 case $mcount in
141 0)
142 echo "I can not find a terminfo source file anywhere under your home directory."
143 echo "There should be a file called terminfo.src somewhere in your"
144 echo "ncurses distribution; please put it in your home directotry"
145 echo "and run me again (it does not have to live there permanently)."
146 exit;
147 ;;
148 1)
149 echo "I see a file called $master."
150 echo "I am going to assume this is the terminfo source included with"
151 echo "the ncurses distribution. If this assumption is wrong, please"
152 echo "interrupt me now! OK to continue?"
153 read ans;
154 ;;
155 2)
156 echo "I see more than one possible terminfo source. Here they are:"
157 echo $master | sed "/^/s// /";
158 while :
159 do
160 echo "Please tell me which one to use:"
161 read master;
162 if test -f $master
163 then
164 break
165 else
166 echo "That file does not exist. Try again?";
167 fi
168 done
169 ;;
170 esac
171fi
172echo "";
173
174# Now that we have a master, compile it into the local tree
175echo "OK, now I will make your private terminfo tree. This may take a bit..."
176#
177# Kluge alert: we compile terminfo.src in two pieces because a lot of machines
178# with < 16MB RAM choke on tic's core-hog habits.
179trap "rm -f tsplit$$.*" 0 1 2 5 15
180sed -n $master \
181 -e '1,/SPLIT HERE/w 'tsplit$$.01 \
182 -e '/SPLIT HERE/,$w 'tsplit$$.02 \
183 2>/dev/null
184for x in tsplit$$.*; do eval $TIC $x; done
185rm tsplit$$.*
186trap 0 1 2 5 15
187#
188echo "You now have a private tree under $HOME/.terminfo;"
189echo "the ncurses library will automatically read from it,"
190echo "and ncurses tic will automatically compile entries to it."
191
192# We're done unless user has a .termcap file or equivalent named by TERMCAP
193if test -z "$TERMCAP"
194then
195 echo "You have no TERMCAP set, so we are done."
196fi
197
198# OK, here comes the nasty case...user has a TERMCAP. Instead of
199# trying to follow all the convolutions of the relationship between
200# TERM and TERMCAP (partly because it's too painful, and partly because
201# we don't actually know what TERM will be nor even if it always has
202# the same value for this user) we do the following three steps...
203
204if test -f $HOME/.termcap
205then
206 echo 'I see you have a $HOME/.termcap file. I will compile that.'
207 eval $TIC $HOME/.termcap
208 echo "Done."
209 echo "Note that editing $HOME/.termcap will no longer change the data curses sees."
210elif test -f "$TERMCAP"
211then
212 echo "Your TERMCAP names the file $TERMCAP. I will compile that."
213 eval $TIC $TERMCAP
214 echo "Done."
215 echo "Note that editing $TERMCAP will no longer change the data curses sees."
216else
217 echo "Your TERMCAP value appears to be an entry in termcap format."
218 echo "I will compile it."
219 echo $TERMCAP >myterm$$
220 eval $TIC myterm$$
221 rm myterm$$
222 echo "Done."
223 echo "Note that editing TERMCAP will no longer change the data curses sees."
224fi
225echo "To do that, decompile the terminal decription you want with infocmp(1),"
226echo "edit to taste, and recompile using tic(1)."
227
228# capconvert ends here
229
Note: See TracBrowser for help on using the repository browser.