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