1#! /bin/sh 2# 3# $NetBSD$ 4 5if [ $# -ne 3 ]; then 6 echo "usage: makeerrnos.sh errno.h signal.h output" 7 exit 1; 8fi 9 10ERRNOH=$1 11SIGNALH=$2 12CFILE=$3.c 13HFILE=$3.h 14 15: ${AWK:=awk} 16: ${CPP:=cpp} 17: ${CPPFLAGS:=} 18 19cat <<__EOF__ > $CFILE 20#include "misc.h" 21 22struct systab errnos[] = { 23__EOF__ 24cat ${ERRNOH} | ${CPP} ${CPPFLAGS} -dM | 25${AWK} ' 26/^#[ ]*define[ ]*E[A-Z0-9]*[ ]*[0-9-][0-9]*[ ]*.*/ { 27 for (i = 1; i <= NF; i++) 28 if ($i ~ /define/) 29 break; 30 i++; 31 j = i + 1; 32 # 33 printf("\t{ \"%s\", %s },\n", $i, $j); 34} 35END { 36 print " { \"0\", 0 },\n"; 37} 38' | sort -n -k 3 >> $CFILE 39echo " { 0L, 0}, 40};" >> $CFILE 41lines=`wc -l $CFILE | ${AWK} ' { print $1; } ' -` 42lines=`expr $lines - 4` 43 44cat <<__EOF__ >> $CFILE 45 46struct systab signals[] = { 47__EOF__ 48cat ${SIGNALH} | ${CPP} ${CPPFLAGS} -dM | 49${AWK} ' 50/^#[ ]*define[ ]*S[A-Z0-9]*[ ]*[0-9-][0-9]*[ ]*.*/ { 51 for (i = 1; i <= NF; i++) 52 if ($i ~ /define/) 53 break; 54 i++; 55 j = i + 1; 56 # 57 printf("\t{ \"%s\", %s },\n", $i, $j); 58} 59END { 60 print " { \"0\", 0 },\n"; 61} 62' | sort -n -k 3 >> $CFILE 63echo " { 0L, 0}, 64};" >> $CFILE 65elines=`grep '{ "SIG' $CFILE | wc -l` 66elines=`expr $elines + 1` 67 68cat <<__EOF__ >$HFILE 69struct systab { 70 const char *name; 71 int value; 72}; 73 74extern struct systab errnos[$lines + 1]; 75extern struct systab signals[$elines + 1]; 76 77#define MAXERRNOS $lines 78#define MAXSIGNALS $elines 79__EOF__ 80