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