blob: 2247f14ef2e872adfb277016ba6ccaa8aa056001 [file] [log] [blame]
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301#!/bin/sh
2# $Id: MKtermsort.sh,v 1.10 2008/07/12 20:22:54 tom Exp $
3#
4# MKtermsort.sh -- generate indirection vectors for the various sort methods
5#
6##############################################################################
7# Copyright (c) 1998-2003,2008 Free Software Foundation, Inc. #
8# #
9# Permission is hereby granted, free of charge, to any person obtaining a #
10# copy of this software and associated documentation files (the "Software"), #
11# to deal in the Software without restriction, including without limitation #
12# the rights to use, copy, modify, merge, publish, distribute, distribute #
13# with modifications, sublicense, and/or sell copies of the Software, and to #
14# permit persons to whom the Software is furnished to do so, subject to the #
15# following conditions: #
16# #
17# The above copyright notice and this permission notice shall be included in #
18# all copies or substantial portions of the Software. #
19# #
20# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
21# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
22# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL #
23# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
24# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING #
25# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER #
26# DEALINGS IN THE SOFTWARE. #
27# #
28# Except as contained in this notice, the name(s) of the above copyright #
29# holders shall not be used in advertising or otherwise to promote the sale, #
30# use or other dealings in this Software without prior written #
31# authorization. #
32##############################################################################
33#
34# The output of this script is C source for nine arrays that list three sort
35# orders for each of the three different classes of terminfo capabilities.
36#
37# keep the order independent of locale:
38if test "${LANGUAGE+set}" = set; then LANGUAGE=C; export LANGUAGE; fi
39if test "${LANG+set}" = set; then LANG=C; export LANG; fi
40if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
41if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
42if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
43if test "${LC_COLLATE+set}" = set; then LC_COLLATE=C; export LC_COLLATE; fi
44#
45AWK=${1-awk}
46DATA=${2-../include/Caps}
47
48data=data$$
49trap 'rm -f $data' 1 2 5 15
50sed -e 's/[ ][ ]*/ /g' < $DATA >$data
51DATA=$data
52
53echo "/*";
54echo " * termsort.c --- sort order arrays for use by infocmp.";
55echo " *";
56echo " * Note: this file is generated using MKtermsort.sh, do not edit by hand.";
57echo " */";
58
59echo "static const PredIdx bool_terminfo_sort[] = {";
60$AWK <$DATA '
61BEGIN {i = 0;}
62/^#/ {next;}
63$3 == "bool" {printf("%s\t%d\n", $2, i++);}
64' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}';
65echo "};";
66echo "";
67
68echo "static const PredIdx num_terminfo_sort[] = {";
69$AWK <$DATA '
70BEGIN {i = 0;}
71/^#/ {next;}
72$3 == "num" {printf("%s\t%d\n", $2, i++);}
73' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}';
74echo "};";
75echo "";
76
77echo "static const PredIdx str_terminfo_sort[] = {";
78$AWK <$DATA '
79BEGIN {i = 0;}
80/^#/ {next;}
81$3 == "str" {printf("%s\t%d\n", $2, i++);}
82' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}';
83echo "};";
84echo "";
85
86echo "static const PredIdx bool_variable_sort[] = {";
87$AWK <$DATA '
88BEGIN {i = 0;}
89/^#/ {next;}
90$3 == "bool" {printf("%s\t%d\n", $1, i++);}
91' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}';
92echo "};";
93echo "";
94
95echo "static const PredIdx num_variable_sort[] = {";
96$AWK <$DATA '
97BEGIN {i = 0;}
98/^#/ {next;}
99$3 == "num" {printf("%s\t%d\n", $1, i++);}
100' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}';
101echo "};";
102echo "";
103
104echo "static const PredIdx str_variable_sort[] = {";
105$AWK <$DATA '
106BEGIN {i = 0;}
107/^#/ {next;}
108$3 == "str" {printf("%s\t%d\n", $1, i++);}
109' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}';
110echo "};";
111echo "";
112
113echo "static const PredIdx bool_termcap_sort[] = {";
114$AWK <$DATA '
115BEGIN {i = 0;}
116/^#/ {next;}
117$3 == "bool" {printf("%s\t%d\n", $4, i++);}
118' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}';
119echo "};";
120echo "";
121
122echo "static const PredIdx num_termcap_sort[] = {";
123$AWK <$DATA '
124BEGIN {i = 0;}
125/^#/ {next;}
126$3 == "num" {printf("%s\t%d\n", $4, i++);}
127' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}';
128echo "};";
129echo "";
130
131echo "static const PredIdx str_termcap_sort[] = {";
132$AWK <$DATA '
133BEGIN {i = 0;}
134/^#/ {next;}
135$3 == "str" {printf("%s\t%d\n", $4, i++);}
136' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}';
137echo "};";
138echo "";
139
140echo "static const bool bool_from_termcap[] = {";
141$AWK <$DATA '
142$3 == "bool" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */";}
143$3 == "bool" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */";}
144'
145echo "};";
146echo "";
147
148echo "static const bool num_from_termcap[] = {";
149$AWK <$DATA '
150$3 == "num" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */";}
151$3 == "num" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */";}
152'
153echo "};";
154echo "";
155
156echo "static const bool str_from_termcap[] = {";
157$AWK <$DATA '
158$3 == "str" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */";}
159$3 == "str" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */";}
160'
161echo "};";
162echo "";
163
164rm -f $data