mkioctls revision 74840
11590Srgrimesset -e 21590Srgrimes 31590Srgrimes# $FreeBSD: head/usr.bin/kdump/mkioctls 74840 2001-03-27 05:45:52Z ken $ 41590Srgrimes 51590Srgrimesif [ "x$1" = "x-s" ]; then 61590Srgrimes use_switch=1 71590Srgrimes shift 81590Srgrimeselse 91590Srgrimes use_switch=0 101590Srgrimesfi 111590Srgrimes 121590Srgrimesif [ -z "$1" ]; then 131590Srgrimes echo "usage: sh $0 [-s] include-dir" 141590Srgrimes exit 1 151590Srgrimesfi 161590Srgrimes 171590Srgrimes# Build a list of headers that have ioctls in them. 181590Srgrimes# XXX should we use an ANSI cpp? 191590Srgrimes# XXX netipx conflicts with netns (leave out netns). 201590Srgrimesioctl_includes=` 211590Srgrimes cd $1 221590Srgrimes find * -name '*.h' -follow | 231590Srgrimes egrep -v '^(netns)/' | 241590Srgrimes xargs egrep -l \ 251590Srgrimes'^#[ ]*define[ ]+[A-Za-z_][A-Za-z0-9_]*[ ]+_IO[^a-z0-9_]' | 261590Srgrimes sed -e 's/^/#include </' -e s'/$/>/' 271590Srgrimes` 281590Srgrimes 291590Srgrimesecho "$ioctl_includes" | 301590Srgrimes gcc -E -I$1 -dM - | 311590Srgrimes awk -v ioctl_includes="$ioctl_includes" -v use_switch="$use_switch" ' 321590SrgrimesBEGIN { 331590Srgrimes print "/* XXX obnoxious prerequisites. */" 341590Srgrimes print "#define COMPAT_43" 3541568Sarchie print "#include <sys/param.h>" 361590Srgrimes print "#include <sys/devicestat.h>" 371590Srgrimes print "#include <sys/disklabel.h>" 3887244Smarkm print "#include <sys/socket.h>" 391590Srgrimes print "#include <sys/time.h>" 4087628Sdwmalone print "#include <sys/tty.h>" 411590Srgrimes print "#include <net/ethernet.h>" 4287628Sdwmalone print "#include <net/if.h>" 4387244Smarkm print "#include <net/if_var.h>" 4487628Sdwmalone print "#include <net/route.h>" 451590Srgrimes print "#include <netatm/atm.h>" 4687628Sdwmalone print "#include <netatm/atm_if.h>" 4787628Sdwmalone print "#include <netatm/atm_sap.h>" 4887628Sdwmalone print "#include <netatm/atm_sys.h>" 491590Srgrimes print "#include <netinet/in.h>" 5026960Scharnier print "#include <netinet/ip_compat.h>" 511590Srgrimes print "#include <netinet/ip_fil.h>" 5287244Smarkm print "#include <netinet/ip_auth.h>" 531590Srgrimes print "#include <netinet/ip_nat.h>" 541590Srgrimes print "#include <netinet/ip_frag.h>" 551590Srgrimes print "#include <netinet/ip_state.h>" 5623690Speter print "#include <netinet/ip_mroute.h>" 571590Srgrimes print "#include <netinet6/in6_var.h>" 581590Srgrimes print "#include <netinet6/nd6.h>" 591590Srgrimes print "#include <netinet6/ip6_mroute.h>" 601590Srgrimes print "#include <stdio.h>" 6126960Scharnier print "#include <cam/cam.h>" 621590Srgrimes print "" 631590Srgrimes print ioctl_includes 641590Srgrimes print "" 651590Srgrimes print "char *" 661590Srgrimes print "ioctlname(register_t val)" 671590Srgrimes print "{" 6887244Smarkm print "" 6987244Smarkm if (use_switch) 701590Srgrimes print "\tswitch(val) {" 711590Srgrimes} 7224360Simp 731590Srgrimes/^#[ ]*define[ ]+[A-Za-z_][A-Za-z0-9_]*[ ]+_IO/ { 741590Srgrimes 751590Srgrimes # find where the name starts 761590Srgrimes for (i = 1; i <= NF; i++) 771590Srgrimes if ($i ~ /define/) 781590Srgrimes break; 791590Srgrimes ++i; 801590Srgrimes # 811590Srgrimes if (use_switch) 821590Srgrimes printf("\tcase %s:\n\t\treturn(\"%s\");\n", $i, $i); 831590Srgrimes else 841590Srgrimes printf("\tif (val == %s)\n\t\treturn(\"%s\");\n", $i, $i); 851590Srgrimes 8626960Scharnier} 871590SrgrimesEND { 881590Srgrimes if (use_switch) 891590Srgrimes print "\t}" 901590Srgrimes print "\n\treturn(NULL);" 9126960Scharnier print "}" 921590Srgrimes} 931590Srgrimes' 941590Srgrimes