xref: /netbsd/usr.bin/ktruss/makeerrnos.sh (revision bf9ec67e)
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