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