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