makeerrnos.sh revision 1.2 1 #! /bin/sh
2 #
3 # $NetBSD: makeerrnos.sh,v 1.2 2001/01/16 02:46:25 cgd Exp $
4
5 if [ $# -ne 3 ]; then
6 echo "usage: makeerrnos.sh errno.h signal.h output"
7 exit 1;
8 fi
9
10 ERRNOH=$1
11 SIGNALH=$2
12 CFILE=$3.c
13 HFILE=$3.h
14
15 : ${CPP:=cpp}
16 : ${CPPFLAGS:=}
17
18 cat <<__EOF__ > $CFILE
19 #include "misc.h"
20
21 struct systab errnos[] = {
22 __EOF__
23 cat ${DESTDIR}/usr/include/sys/errno.h | ${CPP} ${CPPFLAGS} -dM |
24 awk '
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 }
34 END {
35 print " { \"0\", 0 },\n";
36 }
37 ' | sort -n +2 >> $CFILE
38 echo " { 0L, 0},
39 };" >> $CFILE
40 lines=`wc -l $CFILE|awk ' { print $1; } ' -`
41 lines=`expr $lines - 4`
42
43 cat <<__EOF__ >> $CFILE
44
45 struct systab signals[] = {
46 __EOF__
47 cat ${DESTDIR}/usr/include/sys/signal.h | ${CPP} ${CPPFLAGS} -dM |
48 awk '
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 }
58 END {
59 print " { \"0\", 0 },\n";
60 }
61 ' | sort -n +2 >> $CFILE
62 echo " { 0L, 0},
63 };" >> $CFILE
64 elines=`grep '{ "SIG' $CFILE | wc -l`
65 elines=`expr $elines + 1`
66
67 cat <<__EOF__ >$HFILE
68 struct systab {
69 char *name;
70 int value;
71 };
72
73 extern struct systab errnos[$lines + 1];
74 extern struct systab signals[$elines + 1];
75
76 #define MAXERRNOS $lines
77 #define MAXSIGNALS $elines
78 __EOF__
79