1 1.1 mrg #! /bin/sh 2 1.1 mrg # 3 1.7 kamil # $NetBSD: makeerrnos.sh,v 1.7 2019/05/06 11:58:37 kamil 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.7 kamil 57 1.7 kamil if ($i == "SIGRTMIN") { 58 1.7 kamil sigrtmin=$j; 59 1.7 kamil } 60 1.7 kamil if ($i == "SIGRTMAX") { 61 1.7 kamil sigrtmax=$j; 62 1.7 kamil } 63 1.7 kamil 64 1.1 mrg # 65 1.1 mrg printf("\t{ \"%s\", %s },\n", $i, $j); 66 1.1 mrg } 67 1.1 mrg END { 68 1.7 kamil j = 1; 69 1.7 kamil for (i = sigrtmin + 1; i < sigrtmax; i++) { 70 1.7 kamil printf("\t{ \"SIGRTMIN+%s\", %s },\n", j++, i); 71 1.7 kamil } 72 1.1 mrg print " { \"0\", 0 },\n"; 73 1.1 mrg } 74 1.6 dyoung ' | sort -n -k 3 >> $CFILE 75 1.1 mrg echo " { 0L, 0}, 76 1.1 mrg };" >> $CFILE 77 1.1 mrg elines=`grep '{ "SIG' $CFILE | wc -l` 78 1.1 mrg elines=`expr $elines + 1` 79 1.1 mrg 80 1.1 mrg cat <<__EOF__ >$HFILE 81 1.1 mrg struct systab { 82 1.4 he const char *name; 83 1.4 he int value; 84 1.1 mrg }; 85 1.1 mrg 86 1.1 mrg extern struct systab errnos[$lines + 1]; 87 1.1 mrg extern struct systab signals[$elines + 1]; 88 1.1 mrg 89 1.1 mrg #define MAXERRNOS $lines 90 1.1 mrg #define MAXSIGNALS $elines 91 1.1 mrg __EOF__ 92