15b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#! /bin/sh
25b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# Generate a terminfo command from a terminfo name.
35b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#
45b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# Copyright (C) 2002  Free Software Foundation, Inc.
55b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#
65b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# This file is free software; you can redistribute it and/or modify it
75b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# under the terms of the GNU General Public License as published by
85b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# the Free Software Foundation; either version 2 of the License, or
95b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# (at your option) any later version.
105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#
115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# This program is distributed in the hope that it will be useful, but
125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# WITHOUT ANY WARRANTY; without even the implied warranty of
135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# General Public License for more details.
155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#
165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# You should have received a copy of the GNU General Public License
175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# along with this program; if not, write to the Free Software
185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source ProjectVERSION=0.97
215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectusage () {
235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    cat <<EOF
245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source ProjectUsage: grub-terminfo TERMNAME
255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source ProjectGenerate a terminfo command from a terminfo name.
265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  -h, --help              print this message and exit
285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  -v, --version           print the version information and exit
295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source ProjectReport bugs to <bug-grub@gnu.org>.
315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source ProjectEOF
325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}
335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecterror () {
355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    echo "grub-terminfo: error: $1" 1>&2
365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}
375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projecttermname=
395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectfor option in "$@"; do
415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    case "$option" in
425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    -h | --help)
435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project        usage
445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project	exit 0 ;;
455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    -v | --version)
465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project	echo "grub-terminfo (GNU GRUB ${VERSION})"
475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project	exit 0 ;;
485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    -*)
495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project	error "Unrecognized option \`$option'"
505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project	usage
515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project	exit 1 ;;
525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    *)
535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project	if test "x$termname" != x; then
545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project	    error "More than one terminfo names?"
555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project	    usage
565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project	    exit 1
575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project	fi
585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project	termname="$option" ;;
595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    esac
605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectdone
615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectif test "x$termname" = x; then
635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    error "termname not specified"
645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    usage
655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    exit 1
665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectfi
675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectget_seq () {
695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    infocmp -L -1 -g $termname | sed -n -e "/$1/s/^[^=]*=\\(.*\\),\$/\\1/p"
705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project}
715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectcursor_address="`get_seq cursor_address`"
735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectif test "x$cursor_address" = x; then
745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    error "cursor_address not found"
755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    exit 1
765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectfi
775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectcursor_address="--cursor-address=$cursor_address"
785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectclear_screen="`get_seq clear_screen`"
805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectif test "x$clear_screen" != x; then
815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    clear_screen="--clear-screen=$clear_screen"
825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectfi
835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectenter_standout_mode="`get_seq enter_standout_mode`"
855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectif test "x$enter_standout_mode" != x; then
865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    enter_standout_mode="--enter-standout-mode=$enter_standout_mode"
875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectfi
885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectexit_standout_mode="`get_seq exit_standout_mode`"
905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectif test "x$exit_standout_mode" != x; then
915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    exit_standout_mode="--exit-standout-mode=$exit_standout_mode"
925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectfi
935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectecho "terminfo --name=$termname" $cursor_address $clear_screen \
955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project    $enter_standout_mode $exit_standout_mode
96