mkioctls revision 126244
140455Sbdeset -e 240455Sbde 351960Sn_hibma# $FreeBSD: head/usr.bin/kdump/mkioctls 126244 2004-02-25 21:45:41Z des $ 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 1775261SruLC_ALL=C; export LC_ALL 1875261Sru 1940455Sbde# Build a list of headers that have ioctls in them. 2016631Sbde# XXX should we use an ANSI cpp? 2140455Sbdeioctl_includes=` 2254081Smarcel cd $1 23126244Sdes find -H -s * -name '*.h' | 2440455Sbde xargs egrep -l \ 2564099Sru'^#[ ]*define[ ]+[A-Za-z_][A-Za-z0-9_]*[ ]+_IO[^a-z0-9_]' | 2685796Sobrien awk '{printf("#include <%s>\\\\n", $1)}' 2740455Sbde` 2840455Sbde 2985796Sobrienawk -v x="$ioctl_includes" 'BEGIN {print x}' | 3054081Smarcel gcc -E -I$1 -dM - | 3185796Sobrien 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>" 4164121Sru print "#include <net/ethernet.h>" 4240455Sbde print "#include <net/if.h>" 4340455Sbde print "#include <net/if_var.h>" 441590Srgrimes print "#include <net/route.h>" 4540455Sbde print "#include <netatm/atm.h>" 4640455Sbde print "#include <netatm/atm_if.h>" 4740455Sbde print "#include <netatm/atm_sap.h>" 4840455Sbde print "#include <netatm/atm_sys.h>" 4916631Sbde print "#include <netinet/in.h>" 5052130Speter print "#include <netinet/ip_mroute.h>" 5162585Sitojun print "#include <netinet6/in6_var.h>" 5262585Sitojun print "#include <netinet6/nd6.h>" 5362585Sitojun print "#include <netinet6/ip6_mroute.h>" 5474840Sken print "#include <stdio.h>" 5540455Sbde print "#include <cam/cam.h>" 561590Srgrimes print "" 5798767Smarkm print "const char *ioctlname(u_long val);" 5893522Sdwmalone print "" 5940455Sbde print ioctl_includes 6040455Sbde print "" 6193522Sdwmalone print "const char *" 6298767Smarkm print "ioctlname(u_long val)" 631590Srgrimes print "{" 641590Srgrimes print "" 6554081Smarcel if (use_switch) 6640455Sbde print "\tswitch(val) {" 671590Srgrimes} 681590Srgrimes 6940455Sbde/^#[ ]*define[ ]+[A-Za-z_][A-Za-z0-9_]*[ ]+_IO/ { 701590Srgrimes 711590Srgrimes # find where the name starts 721590Srgrimes for (i = 1; i <= NF; i++) 731590Srgrimes if ($i ~ /define/) 741590Srgrimes break; 751590Srgrimes ++i; 761590Srgrimes # 7754081Smarcel if (use_switch) 7840455Sbde printf("\tcase %s:\n\t\treturn(\"%s\");\n", $i, $i); 7940455Sbde else 8098767Smarkm printf("\tif (val == %s)\n\t\treturn(\"%s\");\n", $i, $i); 811590Srgrimes 821590Srgrimes} 831590SrgrimesEND { 8454081Smarcel if (use_switch) 8540455Sbde print "\t}" 861590Srgrimes print "\n\treturn(NULL);" 871590Srgrimes print "}" 881590Srgrimes} 8916631Sbde' 90