[BACK]Return to capconvert CVS log [TXT][DIR] Up to [local] / src / usr.bin / tic

Annotation of src/usr.bin/tic/capconvert, Revision 1.1

1.1     ! nicm        1: #!/bin/sh
        !             2: ##############################################################################
        !             3: # Copyright 2019-2021,2022 Thomas E. Dickey                                  #
        !             4: # Copyright 1998-2011,2017 Free Software Foundation, Inc.                    #
        !             5: #                                                                            #
        !             6: # Permission is hereby granted, free of charge, to any person obtaining a    #
        !             7: # copy of this software and associated documentation files (the "Software"), #
        !             8: # to deal in the Software without restriction, including without limitation  #
        !             9: # the rights to use, copy, modify, merge, publish, distribute, distribute    #
        !            10: # with modifications, sublicense, and/or sell copies of the Software, and to #
        !            11: # permit persons to whom the Software is furnished to do so, subject to the  #
        !            12: # following conditions:                                                      #
        !            13: #                                                                            #
        !            14: # The above copyright notice and this permission notice shall be included in #
        !            15: # all copies or substantial portions of the Software.                        #
        !            16: #                                                                            #
        !            17: # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
        !            18: # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   #
        !            19: # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL    #
        !            20: # THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      #
        !            21: # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    #
        !            22: # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER        #
        !            23: # DEALINGS IN THE SOFTWARE.                                                  #
        !            24: #                                                                            #
        !            25: # Except as contained in this notice, the name(s) of the above copyright     #
        !            26: # holders shall not be used in advertising or otherwise to promote the sale, #
        !            27: # use or other dealings in this Software without prior written               #
        !            28: # authorization.                                                             #
        !            29: ##############################################################################
        !            30: # $Id: capconvert,v 1.12 2022/07/16 21:00:27 tom Exp $
        !            31: #
        !            32: # capconvert -- automated conversion from termcap to terminfo
        !            33: #
        !            34:
        !            35: echo "This script tries to automatically set you up so that your applications"
        !            36: echo "that now use termcap can use terminfo and the ncurses library."
        !            37: echo ""
        !            38:
        !            39: # Note, except for telling if we're running under xterm we don't use TERM at
        !            40: # all.  This is because BSD users not infrequently have multiple termtypes
        !            41: # selected by conditionals in tset -- unless they're xterm users, in which
        !            42: # case they're on a workstation and probably don't.
        !            43:
        !            44: # Check to make sure TERMINFO is not already defined
        !            45: if test -n "$TERMINFO"
        !            46: then
        !            47:        echo "TERMINFO is already defined in your environment.  This means"
        !            48:        echo "you already have a local terminfo tree, so you do not need any"
        !            49:        echo "conversion."
        !            50:        if test ! -d "$TERMINFO" ; then
        !            51:                echo "Caution: TERMINFO does not point to a directory!"
        !            52:        fi
        !            53:        exit;
        !            54: fi
        !            55:
        !            56: # Check to see if terminfo is present in one of the standard locations.
        !            57: terminfo=no
        !            58: for p in $TERMINFO \
        !            59:        /usr/lib/terminfo \
        !            60:        /usr/share/lib/terminfo \
        !            61:        /usr/share/terminfo \
        !            62:        /usr/local/lib/terminfo \
        !            63:        /usr/local/share/terminfo
        !            64: do
        !            65:        if test -d "$p" ; then
        !            66:                terminfo=yes
        !            67:                break
        !            68:        fi
        !            69: done
        !            70:
        !            71: if test $terminfo = yes
        !            72: then
        !            73:        echo "Your system already has a system-wide terminfo tree."
        !            74:        echo ""
        !            75:        if test -z "$TERMCAP"
        !            76:        then
        !            77:                echo "You have no TERMCAP variable set, so we are done."
        !            78:                # Assumes the terminfo master covers all canned terminal types
        !            79:                exit;
        !            80:        fi
        !            81:        case $TERM in
        !            82:        xterm | xterm-*)
        !            83:                echo "You are running xterm, which usually sets TERMCAP itself."
        !            84:                echo "We can ignore this, because terminfo knows about xterm."
        !            85:                echo "So you will just use the system-wide terminfo tree."
        !            86:                exit
        !            87:                ;;
        !            88:        *)
        !            89:                echo "We will have to make a local one for you anyway, to capture the effect"
        !            90:                echo "of your TERMCAP variable."
        !            91:                ;;
        !            92:        esac
        !            93: else
        !            94:        echo "No system-wide terminfo tree.  We will make you a local one."
        !            95: fi
        !            96: echo "";
        !            97:
        !            98: # Check if test -x works (it is not portable, but useful)
        !            99: OPT="-x"
        !           100: TMP=test$$; touch $TMP && chmod 755 $TMP
        !           101: if test $OPT $TMP ; then
        !           102:        chmod 644 $TMP
        !           103:        test $OPT $TMP && OPT="-f"
        !           104: else
        !           105:        OPT="-f"
        !           106: fi
        !           107: rm -f $TMP
        !           108:
        !           109: # First step -- go find tic
        !           110: TIC=
        !           111: IFS="${IFS=    }"; save_ifs="$IFS"; IFS="${IFS}:"
        !           112: for x in $PATH .
        !           113: do
        !           114:        if test "$OPT" "$x"/tic
        !           115:        then
        !           116:                TIC=$x/tic
        !           117:                break
        !           118:        fi
        !           119: done
        !           120: IFS="$save_ifs"
        !           121:
        !           122: if test -n "$TIC"
        !           123: then
        !           124:        echo "I see tic at $TIC."
        !           125:        case $TIC in # (vi
        !           126:        ./tic)
        !           127:                if test $OPT ../misc/shlib ; then
        !           128:                        TIC="../misc/shlib $TIC"
        !           129:                fi
        !           130:                ;;
        !           131:        esac
        !           132: else
        !           133:        echo "You do not have tic installed anywhere I can see, please fix that."
        !           134:        exit;
        !           135: fi
        !           136: echo "";
        !           137:
        !           138: # We have tic.  Either there's no system terminfo tree or there is one but
        !           139: # the user has a TERMCAP variable that may modify a stock description.
        !           140: #
        !           141:
        !           142: # Make the user a terminfo directory
        !           143: if test -d "$HOME"/.terminfo
        !           144: then
        !           145:        echo "It appears you already have a private terminfo directory"
        !           146:        echo "at $HOME/.terminfo; this seems odd, because TERMINFO"
        !           147:        echo "is not defined.  I am not going to second-guess this -- if you"
        !           148:        echo "really want me to try auto-configuring for you, remove or"
        !           149:        echo "rename $HOME/terminfo and run me again."
        !           150:        exit;
        !           151: else
        !           152:        echo "I am creating your private terminfo directory at $HOME/.terminfo"
        !           153:        mkdir "$HOME"/.terminfo
        !           154:        # Ensure that that's where tic's compilation results.
        !           155:        # This isn't strictly necessary with a 1.9.7 or later tic.
        !           156:        TERMINFO="$HOME/.terminfo"; export TERMINFO
        !           157: fi
        !           158: echo "";
        !           159:
        !           160: # Find a terminfo source to work from
        !           161: if test -f ../misc/terminfo.src
        !           162: then
        !           163:        echo "I see the terminfo master source is handy; I will use that."
        !           164:        master=../misc/terminfo.src
        !           165: else
        !           166:        # Ooops...looks like we're running from somewhere other than the
        !           167:        # progs directory of an ncurses source tree.
        !           168:        master=`find "$HOME" -name "*terminfo.src" -print`
        !           169:        mcount=`find "$HOME" -name "*terminfo.src" | wc -l`
        !           170:        case $mcount in
        !           171:        0)
        !           172:                echo "I can not find a terminfo source file anywhere under your home directory."
        !           173:                echo "There should be a file called terminfo.src somewhere in your"
        !           174:                echo "ncurses distribution; please put it in your home directotry"
        !           175:                echo "and run me again (it does not have to live there permanently)."
        !           176:                exit;
        !           177:        ;;
        !           178:        1)
        !           179:                echo "I see a file called $master."
        !           180:                echo "I am going to assume this is the terminfo source included with"
        !           181:                echo "the ncurses distribution.  If this assumption is wrong, please"
        !           182:                echo "interrupt me now!  OK to continue?"
        !           183:                read answer;
        !           184:        ;;
        !           185:        2)
        !           186:                echo "I see more than one possible terminfo source.  Here they are:"
        !           187:                echo "$master" | sed "/^/s//    /";
        !           188:                while :
        !           189:                do
        !           190:                        echo "Please tell me which one to use:"
        !           191:                        read master;
        !           192:                        if test -f "$master"
        !           193:                        then
        !           194:                                break
        !           195:                        else
        !           196:                                echo "That file does not exist. Try again?";
        !           197:                        fi
        !           198:                done
        !           199:        ;;
        !           200:        esac
        !           201: fi
        !           202: echo "";
        !           203:
        !           204: # Now that we have a master, compile it into the local tree
        !           205: echo "OK, now I will make your private terminfo tree.  This may take a bit..."
        !           206: #
        !           207: # Kluge alert: we compile terminfo.src in two pieces because a lot of machines
        !           208: # with < 16MB RAM choke on tic's core-hog habits.
        !           209: trap 'rm -f tsplit$$.*; exit 1' 1 2 3 15
        !           210: trap 'rm -f tsplit$$.*' 0
        !           211: sed -n "$master" \
        !           212:        -e '1,/SPLIT HERE/w 'tsplit$$.01 \
        !           213:        -e '/SPLIT HERE/,$w 'tsplit$$.02 \
        !           214:        2>/dev/null
        !           215: for x in tsplit$$.*; do eval $TIC "$x"; done
        !           216: rm tsplit$$.*
        !           217: trap EXIT INT QUIT TERM HUP
        !           218: #
        !           219: echo "You now have a private tree under $HOME/.terminfo;"
        !           220: echo "the ncurses library will automatically read from it,"
        !           221: echo "and ncurses tic will automatically compile entries to it."
        !           222:
        !           223: # We're done unless user has a .termcap file or equivalent named by TERMCAP
        !           224: if test -z "$TERMCAP"
        !           225: then
        !           226:        echo "You have no TERMCAP set, so we are done."
        !           227: fi
        !           228:
        !           229: # OK, here comes the nasty case...user has a TERMCAP.  Instead of
        !           230: # trying to follow all the convolutions of the relationship between
        !           231: # TERM and TERMCAP (partly because it is too painful, and partly because
        !           232: # we don't actually know what TERM will be nor even if it always has
        !           233: # the same value for this user) we do the following three steps...
        !           234:
        !           235: if test -f "$HOME"/.termcap
        !           236: then
        !           237:        echo "I see you have a \$HOME/.termcap file.  I will compile that."
        !           238:        eval $TIC "$HOME"/.termcap
        !           239:        echo "Done."
        !           240:        echo "Note that editing $HOME/.termcap will no longer change the data curses sees."
        !           241: elif test -f "$TERMCAP"
        !           242: then
        !           243:        echo "Your TERMCAP names the file $TERMCAP.  I will compile that."
        !           244:        eval $TIC "$TERMCAP"
        !           245:        echo "Done."
        !           246:        echo "Note that editing $TERMCAP will no longer change the data curses sees."
        !           247: else
        !           248:        echo "Your TERMCAP value appears to be an entry in termcap format."
        !           249:        echo "I will compile it."
        !           250:        echo "$TERMCAP" >myterm$$
        !           251:        eval $TIC myterm$$
        !           252:        rm myterm$$
        !           253:        echo "Done."
        !           254:        echo "Note that editing TERMCAP will no longer change the data curses sees."
        !           255: fi
        !           256: echo "To do that, decompile the terminal description you want with infocmp(1),"
        !           257: echo "edit to taste, and recompile using tic(1)."
        !           258:
        !           259: # capconvert ends here
        !           260: