1265e5898SJohn Baldwin#!/bin/sh 2265e5898SJohn Baldwin# 3265e5898SJohn Baldwin# $FreeBSD$ 4265e5898SJohn Baldwin 5265e5898SJohn Baldwinset -e 6265e5898SJohn Baldwin 7265e5898SJohn Baldwinif [ $# -ne 1 ]; then 8265e5898SJohn Baldwin echo "usage: sh $0 include-dir" 9265e5898SJohn Baldwin exit 1 10265e5898SJohn Baldwinfi 11265e5898SJohn Baldwin 12265e5898SJohn Baldwinincludedir="$1" 13265e5898SJohn Baldwin 14265e5898SJohn BaldwinLC_ALL=C; export LC_ALL 15265e5898SJohn Baldwin 16265e5898SJohn Baldwin# Build a list of headers that have ioctls in them. 17265e5898SJohn Baldwin# XXX should we use an ANSI cpp? 18265e5898SJohn Baldwinioctl_includes=$( 19265e5898SJohn Baldwin cd $includedir 20*a342f435SKristof Provost 21*a342f435SKristof Provost filter='tee' 22*a342f435SKristof Provost if [ "${MK_PF}" == "no" ]; then 23*a342f435SKristof Provost filter='egrep -v (net/pfvar|net/if_pfsync)\.h' 24*a342f435SKristof Provost fi 25*a342f435SKristof Provost 26265e5898SJohn Baldwin find -H -s * -name '*.h' | \ 27*a342f435SKristof Provost $filter | \ 28265e5898SJohn Baldwin xargs egrep -l \ 29265e5898SJohn Baldwin'^#[ ]*define[ ]+[A-Za-z_][A-Za-z0-9_]*[ ]+_IO[^a-z0-9_]' | 30265e5898SJohn Baldwin awk '{printf("#include <%s>\\n", $1)}' 31265e5898SJohn Baldwin) 32265e5898SJohn Baldwin 33265e5898SJohn Baldwinawk -v x="$ioctl_includes" 'BEGIN {print x}' | 34265e5898SJohn Baldwin $CPP -nostdinc -I$includedir -dM -DCOMPAT_43TTY - | 35265e5898SJohn Baldwin awk -v ioctl_includes="$ioctl_includes" ' 36265e5898SJohn BaldwinBEGIN { 37265e5898SJohn Baldwin print "/* XXX obnoxious prerequisites. */" 38265e5898SJohn Baldwin print "#define COMPAT_43" 39265e5898SJohn Baldwin print "#define COMPAT_43TTY" 40265e5898SJohn Baldwin print "#include <sys/param.h>" 41265e5898SJohn Baldwin print "#include <sys/devicestat.h>" 42265e5898SJohn Baldwin print "#include <sys/disklabel.h>" 43265e5898SJohn Baldwin print "#include <sys/socket.h>" 44265e5898SJohn Baldwin print "#include <sys/time.h>" 45265e5898SJohn Baldwin print "#include <sys/tty.h>" 46265e5898SJohn Baldwin print "#include <bsm/audit.h>" 47265e5898SJohn Baldwin print "#include <net/ethernet.h>" 48265e5898SJohn Baldwin print "#include <net/if.h>" 49265e5898SJohn Baldwin print "#ifdef PF" 50265e5898SJohn Baldwin print "#include <net/pfvar.h>" 51265e5898SJohn Baldwin print "#include <net/if_pfsync.h>" 52265e5898SJohn Baldwin print "#endif" 53265e5898SJohn Baldwin print "#include <net/route.h>" 54265e5898SJohn Baldwin print "#include <netinet/in.h>" 55265e5898SJohn Baldwin print "#include <netinet/ip_mroute.h>" 56265e5898SJohn Baldwin print "#include <netinet6/in6_var.h>" 57265e5898SJohn Baldwin print "#include <netinet6/nd6.h>" 58265e5898SJohn Baldwin print "#include <netinet6/ip6_mroute.h>" 59265e5898SJohn Baldwin print "#include <stdio.h>" 60265e5898SJohn Baldwin print "#include <cam/cam.h>" 619289f547SJohn Baldwin print "#include <stdbool.h>" 62265e5898SJohn Baldwin print "#include <stddef.h>" 63265e5898SJohn Baldwin print "#include <stdint.h>" 64265e5898SJohn Baldwin print "#include <sysdecode.h>" 65265e5898SJohn Baldwin print "" 66265e5898SJohn Baldwin print ioctl_includes 67265e5898SJohn Baldwin print "" 68265e5898SJohn Baldwin print "const char *" 69265e5898SJohn Baldwin print "sysdecode_ioctlname(unsigned long val)" 70265e5898SJohn Baldwin print "{" 71265e5898SJohn Baldwin print "\tconst char *str = NULL;" 72265e5898SJohn Baldwin print "" 73265e5898SJohn Baldwin} 74265e5898SJohn Baldwin 75265e5898SJohn Baldwin/^#[ ]*define[ ]+[A-Za-z_][A-Za-z0-9_]*[ ]+_IO/ { 76265e5898SJohn Baldwin 77265e5898SJohn Baldwin # find where the name starts 78265e5898SJohn Baldwin for (i = 1; i <= NF; i++) 79265e5898SJohn Baldwin if ($i ~ /define/) 80265e5898SJohn Baldwin break; 81265e5898SJohn Baldwin ++i; 82265e5898SJohn Baldwin # 83265e5898SJohn Baldwin printf("\t"); 84265e5898SJohn Baldwin if (n++ > 0) 85265e5898SJohn Baldwin printf("else "); 86265e5898SJohn Baldwin printf("if (val == %s)\n", $i); 87265e5898SJohn Baldwin printf("\t\tstr = \"%s\";\n", $i); 88265e5898SJohn Baldwin} 89265e5898SJohn BaldwinEND { 90265e5898SJohn Baldwin print "" 91265e5898SJohn Baldwin print "\treturn (str);" 92265e5898SJohn Baldwin print "}" 93265e5898SJohn Baldwin} 94265e5898SJohn Baldwin' 95