xref: /netbsd-src/bin/sh/mknodenames.sh (revision cc576e1d8e4f4078fd4e81238abca9fca216f6ec)
1#! /bin/sh
2
3if [ -z "$1" ]; then
4	echo "Usage: $0 nodes.h" 1>&2
5	exit 1
6fi
7
8NODES=$1
9
10test -t 1 && -z "$2" && exec > nodenames.h
11
12echo "#ifdef DEBUG"
13echo '
14/*
15 * Automatically generated by '"$0"'
16 * DO NOT EDIT. Do Not "cvs add".
17 */
18'
19
20MAX=$(awk < "$NODES" '
21	/#define/ {
22		if ($3 > MAX) MAX = $3
23	}
24	END { print MAX }
25')
26
27echo
28echo '#ifdef DEFINE_NODENAMES'
29echo "STATIC const char * const NodeNames[${MAX} + 1] = {"
30
31grep '^#define' "$NODES" | sort -k2n | while read define name number opt_comment
32do
33	: ${next:=0}
34	while [ "$number" -gt "$next" ]
35	do
36		echo '	"???",'
37		next=$(( next + 1))
38	done
39	echo '	"'"$name"'",'
40	next=$(( number + 1 ))
41done
42
43echo "};"
44echo '#else'
45echo "extern const char * const NodeNames[${MAX} + 1];"
46echo '#endif'
47echo
48echo '#define NODETYPENAME(type) \'
49echo '	((unsigned)(type) <= '"${MAX}"' ? NodeNames[(type)] : "??OOR??")'
50echo
51echo '#endif'
52