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