mkioctls revision 64099
140455Sbdeset -e 240455Sbde 351960Sn_hibma# $FreeBSD: head/usr.bin/kdump/mkioctls 64099 2000-08-01 08:15:06Z ru $ 451960Sn_hibma 554081Smarcelif [ "x$1" = "x-s" ]; then 654081Smarcel use_switch=1 754081Smarcel shift 854081Smarcelelse 954081Smarcel use_switch=0 1054081Smarcelfi 1154081Smarcel 1254081Smarcelif [ -z "$1" ]; then 1354081Smarcel echo "usage: sh $0 [-s] include-dir" 1454081Smarcel exit 1 1554081Smarcelfi 1654081Smarcel 1740455Sbde# Build a list of headers that have ioctls in them. 1816631Sbde# XXX should we use an ANSI cpp? 1940455Sbde# XXX netipx conflicts with netns (leave out netns). 2040455Sbdeioctl_includes=` 2154081Smarcel cd $1 2240455Sbde find * -name '*.h' -follow | 2340455Sbde egrep -v '^(netns)/' | 2440455Sbde xargs egrep -l \ 2564099Sru'^#[ ]*define[ ]+[A-Za-z_][A-Za-z0-9_]*[ ]+_IO[^a-z0-9_]' | 2640455Sbde sed -e 's/^/#include </' -e s'/$/>/' 2740455Sbde` 2840455Sbde 2940455Sbdeecho "$ioctl_includes" | 3054081Smarcel gcc -E -I$1 -dM - | 3154081Smarcel awk -v ioctl_includes="$ioctl_includes" -v use_switch="$use_switch" ' 321590SrgrimesBEGIN { 3340455Sbde print "/* XXX obnoxious prerequisites. */" 3440455Sbde print "#define COMPAT_43" 351590Srgrimes print "#include <sys/param.h>" 3640455Sbde print "#include <sys/devicestat.h>" 3740455Sbde print "#include <sys/disklabel.h>" 381590Srgrimes print "#include <sys/socket.h>" 3920287Swollman print "#include <sys/time.h>" 4040455Sbde print "#include <sys/tty.h>" 4140455Sbde print "#include <net/if.h>" 4240455Sbde print "#include <net/if_var.h>" 431590Srgrimes print "#include <net/route.h>" 4440455Sbde print "#include <netatm/atm.h>" 4540455Sbde print "#include <netatm/atm_if.h>" 4640455Sbde print "#include <netatm/atm_sap.h>" 4740455Sbde print "#include <netatm/atm_sys.h>" 4816631Sbde print "#include <netinet/in.h>" 4953669Sguido print "#include <netinet/ip_compat.h>" 5053669Sguido print "#include <netinet/ip_fil.h>" 5153669Sguido print "#include <netinet/ip_auth.h>" 5253669Sguido print "#include <netinet/ip_nat.h>" 5353669Sguido print "#include <netinet/ip_frag.h>" 5453669Sguido print "#include <netinet/ip_state.h>" 5552130Speter print "#include <netinet/ip_mroute.h>" 5662585Sitojun print "#include <netinet6/in6_var.h>" 5762585Sitojun print "#include <netinet6/nd6.h>" 5862585Sitojun print "#include <netinet6/ip6_mroute.h>" 5940455Sbde print "#include <cam/cam.h>" 6040455Sbde print "#include <stdio.h>" 611590Srgrimes print "" 6240455Sbde print ioctl_includes 6340455Sbde print "" 641590Srgrimes print "char *" 6553079Sdfr print "ioctlname(register_t val)" 661590Srgrimes print "{" 671590Srgrimes print "" 6854081Smarcel if (use_switch) 6940455Sbde print "\tswitch(val) {" 701590Srgrimes} 711590Srgrimes 7240455Sbde/^#[ ]*define[ ]+[A-Za-z_][A-Za-z0-9_]*[ ]+_IO/ { 731590Srgrimes 741590Srgrimes # find where the name starts 751590Srgrimes for (i = 1; i <= NF; i++) 761590Srgrimes if ($i ~ /define/) 771590Srgrimes break; 781590Srgrimes ++i; 791590Srgrimes # 8054081Smarcel if (use_switch) 8140455Sbde printf("\tcase %s:\n\t\treturn(\"%s\");\n", $i, $i); 8240455Sbde else 8340455Sbde printf("\tif (val == %s)\n\t\treturn(\"%s\");\n", $i, $i); 841590Srgrimes 851590Srgrimes} 861590SrgrimesEND { 8754081Smarcel if (use_switch) 8840455Sbde print "\t}" 891590Srgrimes print "\n\treturn(NULL);" 901590Srgrimes print "}" 911590Srgrimes} 9216631Sbde' 93