10e3d5408SPeter Wemm#!/bin/sh 2*21817992SBaptiste Daroussin# $Id: MKtermsort.sh,v 1.17 2022/02/05 20:39:41 tom Exp $ 30e3d5408SPeter Wemm# 40e3d5408SPeter Wemm# MKtermsort.sh -- generate indirection vectors for the various sort methods 50e3d5408SPeter Wemm# 64a1a9510SRong-En Fan############################################################################## 7*21817992SBaptiste Daroussin# Copyright 2020-2021,2022 Thomas E. Dickey # 8e1865124SBaptiste Daroussin# Copyright 1998-2015,2017 Free Software Foundation, Inc. # 94a1a9510SRong-En Fan# # 104a1a9510SRong-En Fan# Permission is hereby granted, free of charge, to any person obtaining a # 114a1a9510SRong-En Fan# copy of this software and associated documentation files (the "Software"), # 124a1a9510SRong-En Fan# to deal in the Software without restriction, including without limitation # 134a1a9510SRong-En Fan# the rights to use, copy, modify, merge, publish, distribute, distribute # 144a1a9510SRong-En Fan# with modifications, sublicense, and/or sell copies of the Software, and to # 154a1a9510SRong-En Fan# permit persons to whom the Software is furnished to do so, subject to the # 164a1a9510SRong-En Fan# following conditions: # 174a1a9510SRong-En Fan# # 184a1a9510SRong-En Fan# The above copyright notice and this permission notice shall be included in # 194a1a9510SRong-En Fan# all copies or substantial portions of the Software. # 204a1a9510SRong-En Fan# # 214a1a9510SRong-En Fan# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # 224a1a9510SRong-En Fan# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # 234a1a9510SRong-En Fan# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # 244a1a9510SRong-En Fan# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # 254a1a9510SRong-En Fan# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # 264a1a9510SRong-En Fan# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # 274a1a9510SRong-En Fan# DEALINGS IN THE SOFTWARE. # 284a1a9510SRong-En Fan# # 294a1a9510SRong-En Fan# Except as contained in this notice, the name(s) of the above copyright # 304a1a9510SRong-En Fan# holders shall not be used in advertising or otherwise to promote the sale, # 314a1a9510SRong-En Fan# use or other dealings in this Software without prior written # 324a1a9510SRong-En Fan# authorization. # 334a1a9510SRong-En Fan############################################################################## 344a1a9510SRong-En Fan# 350e3d5408SPeter Wemm# The output of this script is C source for nine arrays that list three sort 360e3d5408SPeter Wemm# orders for each of the three different classes of terminfo capabilities. 370e3d5408SPeter Wemm# 3815589c42SPeter Wemm# keep the order independent of locale: 394a1a9510SRong-En Fanif test "${LANGUAGE+set}" = set; then LANGUAGE=C; export LANGUAGE; fi 404a1a9510SRong-En Fanif test "${LANG+set}" = set; then LANG=C; export LANG; fi 414a1a9510SRong-En Fanif test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi 424a1a9510SRong-En Fanif test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi 434a1a9510SRong-En Fanif test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi 444a1a9510SRong-En Fanif test "${LC_COLLATE+set}" = set; then LC_COLLATE=C; export LC_COLLATE; fi 4515589c42SPeter Wemm# 460e3d5408SPeter WemmAWK=${1-awk} 470e3d5408SPeter WemmDATA=${2-../include/Caps} 480e3d5408SPeter Wemm 4939f2269fSPeter Wemmdata=data$$ 50*21817992SBaptiste Daroussintrap 'rm -f $data; exit 1' 1 2 3 15 51*21817992SBaptiste Daroussinsed -e 's/[ ][ ]*/ /g' < "$DATA" >$data 5239f2269fSPeter WemmDATA=$data 5339f2269fSPeter Wemm 54*21817992SBaptiste Daroussincat <<EOF 55*21817992SBaptiste Daroussin/* 56*21817992SBaptiste Daroussin * termsort.h --- sort order arrays for use by infocmp. 57*21817992SBaptiste Daroussin * 58*21817992SBaptiste Daroussin * Note: this file is generated using MKtermsort.sh, do not edit by hand. 59*21817992SBaptiste Daroussin */ 60*21817992SBaptiste Daroussin#ifndef _TERMSORT_H 61*21817992SBaptiste Daroussin#define _TERMSORT_H 1 62*21817992SBaptiste Daroussin#include <curses.h> 63*21817992SBaptiste Daroussin 64*21817992SBaptiste Daroussin#ifndef DUMP_ENTRY_H 65*21817992SBaptiste Daroussintypedef unsigned PredType; 66*21817992SBaptiste Daroussintypedef unsigned PredIdx; 67*21817992SBaptiste Daroussin#endif 68*21817992SBaptiste Daroussin 69*21817992SBaptiste DaroussinEOF 700e3d5408SPeter Wemm 715d08fb1fSRong-En Fanecho "static const PredIdx bool_terminfo_sort[] = {"; 720e3d5408SPeter Wemm$AWK <$DATA ' 730e3d5408SPeter WemmBEGIN {i = 0;} 740e3d5408SPeter Wemm/^#/ {next;} 750e3d5408SPeter Wemm$3 == "bool" {printf("%s\t%d\n", $2, i++);} 760e3d5408SPeter Wemm' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}'; 770e3d5408SPeter Wemmecho "};"; 780e3d5408SPeter Wemmecho ""; 790e3d5408SPeter Wemm 805d08fb1fSRong-En Fanecho "static const PredIdx num_terminfo_sort[] = {"; 810e3d5408SPeter Wemm$AWK <$DATA ' 820e3d5408SPeter WemmBEGIN {i = 0;} 830e3d5408SPeter Wemm/^#/ {next;} 840e3d5408SPeter Wemm$3 == "num" {printf("%s\t%d\n", $2, i++);} 850e3d5408SPeter Wemm' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}'; 860e3d5408SPeter Wemmecho "};"; 870e3d5408SPeter Wemmecho ""; 880e3d5408SPeter Wemm 895d08fb1fSRong-En Fanecho "static const PredIdx str_terminfo_sort[] = {"; 900e3d5408SPeter Wemm$AWK <$DATA ' 910e3d5408SPeter WemmBEGIN {i = 0;} 920e3d5408SPeter Wemm/^#/ {next;} 930e3d5408SPeter Wemm$3 == "str" {printf("%s\t%d\n", $2, i++);} 940e3d5408SPeter Wemm' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}'; 950e3d5408SPeter Wemmecho "};"; 960e3d5408SPeter Wemmecho ""; 970e3d5408SPeter Wemm 985d08fb1fSRong-En Fanecho "static const PredIdx bool_variable_sort[] = {"; 990e3d5408SPeter Wemm$AWK <$DATA ' 1000e3d5408SPeter WemmBEGIN {i = 0;} 1010e3d5408SPeter Wemm/^#/ {next;} 1020e3d5408SPeter Wemm$3 == "bool" {printf("%s\t%d\n", $1, i++);} 1030e3d5408SPeter Wemm' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}'; 1040e3d5408SPeter Wemmecho "};"; 1050e3d5408SPeter Wemmecho ""; 1060e3d5408SPeter Wemm 1075d08fb1fSRong-En Fanecho "static const PredIdx num_variable_sort[] = {"; 1080e3d5408SPeter Wemm$AWK <$DATA ' 1090e3d5408SPeter WemmBEGIN {i = 0;} 1100e3d5408SPeter Wemm/^#/ {next;} 1110e3d5408SPeter Wemm$3 == "num" {printf("%s\t%d\n", $1, i++);} 1120e3d5408SPeter Wemm' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}'; 1130e3d5408SPeter Wemmecho "};"; 1140e3d5408SPeter Wemmecho ""; 1150e3d5408SPeter Wemm 1165d08fb1fSRong-En Fanecho "static const PredIdx str_variable_sort[] = {"; 1170e3d5408SPeter Wemm$AWK <$DATA ' 1180e3d5408SPeter WemmBEGIN {i = 0;} 1190e3d5408SPeter Wemm/^#/ {next;} 1200e3d5408SPeter Wemm$3 == "str" {printf("%s\t%d\n", $1, i++);} 1210e3d5408SPeter Wemm' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}'; 1220e3d5408SPeter Wemmecho "};"; 1230e3d5408SPeter Wemmecho ""; 1240e3d5408SPeter Wemm 1255d08fb1fSRong-En Fanecho "static const PredIdx bool_termcap_sort[] = {"; 1260e3d5408SPeter Wemm$AWK <$DATA ' 1270e3d5408SPeter WemmBEGIN {i = 0;} 1280e3d5408SPeter Wemm/^#/ {next;} 1290e3d5408SPeter Wemm$3 == "bool" {printf("%s\t%d\n", $4, i++);} 1300e3d5408SPeter Wemm' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}'; 1310e3d5408SPeter Wemmecho "};"; 1320e3d5408SPeter Wemmecho ""; 1330e3d5408SPeter Wemm 1345d08fb1fSRong-En Fanecho "static const PredIdx num_termcap_sort[] = {"; 1350e3d5408SPeter Wemm$AWK <$DATA ' 1360e3d5408SPeter WemmBEGIN {i = 0;} 1370e3d5408SPeter Wemm/^#/ {next;} 1380e3d5408SPeter Wemm$3 == "num" {printf("%s\t%d\n", $4, i++);} 1390e3d5408SPeter Wemm' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}'; 1400e3d5408SPeter Wemmecho "};"; 1410e3d5408SPeter Wemmecho ""; 1420e3d5408SPeter Wemm 1435d08fb1fSRong-En Fanecho "static const PredIdx str_termcap_sort[] = {"; 1440e3d5408SPeter Wemm$AWK <$DATA ' 1450e3d5408SPeter WemmBEGIN {i = 0;} 1460e3d5408SPeter Wemm/^#/ {next;} 1470e3d5408SPeter Wemm$3 == "str" {printf("%s\t%d\n", $4, i++);} 1480e3d5408SPeter Wemm' | sort | $AWK '{print "\t", $2, ",\t/* ", $1, " */";}'; 1490e3d5408SPeter Wemmecho "};"; 1500e3d5408SPeter Wemmecho ""; 1510e3d5408SPeter Wemm 15215589c42SPeter Wemmecho "static const bool bool_from_termcap[] = {"; 1530e3d5408SPeter Wemm$AWK <$DATA ' 154aae38d10SBaptiste DaroussinBEGIN { count = 0; valid = 0; } 155aae38d10SBaptiste Daroussin$3 == "bool" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */"; count++; } 156aae38d10SBaptiste Daroussin$3 == "bool" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */"; valid = count++; } 157aae38d10SBaptiste DaroussinEND { printf "#define OK_bool_from_termcap %d\n", valid; } 1580e3d5408SPeter Wemm' 1590e3d5408SPeter Wemmecho "};"; 1600e3d5408SPeter Wemmecho ""; 1610e3d5408SPeter Wemm 16215589c42SPeter Wemmecho "static const bool num_from_termcap[] = {"; 1630e3d5408SPeter Wemm$AWK <$DATA ' 164aae38d10SBaptiste DaroussinBEGIN { count = 0; valid = 0; } 165aae38d10SBaptiste Daroussin$3 == "num" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */"; count++; } 166aae38d10SBaptiste Daroussin$3 == "num" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */"; valid = count++; } 167aae38d10SBaptiste DaroussinEND { printf "#define OK_num_from_termcap %d\n", valid; } 1680e3d5408SPeter Wemm' 1690e3d5408SPeter Wemmecho "};"; 1700e3d5408SPeter Wemmecho ""; 1710e3d5408SPeter Wemm 17215589c42SPeter Wemmecho "static const bool str_from_termcap[] = {"; 1730e3d5408SPeter Wemm$AWK <$DATA ' 174aae38d10SBaptiste DaroussinBEGIN { count = 0; valid = 0; } 175aae38d10SBaptiste Daroussin$3 == "str" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */"; count++; } 176aae38d10SBaptiste Daroussin$3 == "str" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */"; valid = count++; } 177aae38d10SBaptiste DaroussinEND { printf "#define OK_str_from_termcap %d\n", valid; } 1780e3d5408SPeter Wemm' 179*21817992SBaptiste Daroussin 180*21817992SBaptiste Daroussincat <<EOF 181*21817992SBaptiste Daroussin}; 182*21817992SBaptiste Daroussin 183*21817992SBaptiste Daroussin#endif /* _TERMSORT_H */ 184*21817992SBaptiste DaroussinEOF 18539f2269fSPeter Wemm 18639f2269fSPeter Wemmrm -f $data 187