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