mkioctls revision 53669
140455Sbdeset -e
240455Sbde
351960Sn_hibma# $FreeBSD: head/usr.bin/kdump/mkioctls 53669 1999-11-24 15:38:35Z guido $
451960Sn_hibma
540455Sbde# Build a list of headers that have ioctls in them.
616631Sbde# XXX should we use an ANSI cpp?
740455Sbde# XXX netipx conflicts with netns (leave out netns).
840455Sbdeioctl_includes=`
940455Sbde	cd $DESTDIR/usr/include
1040455Sbde	find * -name '*.h' -follow |
1140455Sbde		egrep -v '^(netns)/' |
1240455Sbde		xargs egrep -l \
1340455Sbde'^#[ 	]*define[ 	]+[A-Za-z_][A-Za-z0-0_]*[ 	]+_IO[^a-z0-9_]' |
1440455Sbde		sed -e 's/^/#include </' -e s'/$/>/'
1540455Sbde`
1640455Sbde
1740455Sbdeecho "$ioctl_includes" |
1840455Sbde	cpp -I$DESTDIR/usr/include -dM |
1940455Sbde	awk -v ioctl_includes="$ioctl_includes" '
201590SrgrimesBEGIN {
2140455Sbde	print "/* XXX obnoxious prerequisites. */"
2240455Sbde	print "#define COMPAT_43"
231590Srgrimes	print "#include <sys/param.h>"
2440455Sbde	print "#include <sys/devicestat.h>"
2540455Sbde	print "#include <sys/disklabel.h>"
2640455Sbde	print "#include <sys/dkbad.h>"
271590Srgrimes	print "#include <sys/socket.h>"
2820287Swollman	print "#include <sys/time.h>"
2940455Sbde	print "#include <sys/tty.h>"
3040455Sbde	print "#include <net/if.h>"
3140455Sbde	print "#include <net/if_var.h>"
321590Srgrimes	print "#include <net/route.h>"
3340455Sbde	print "#include <netatm/atm.h>"
3440455Sbde	print "#include <netatm/atm_if.h>"
3540455Sbde	print "#include <netatm/atm_sap.h>"
3640455Sbde	print "#include <netatm/atm_sys.h>"
3716631Sbde	print "#include <netinet/in.h>"
3853669Sguido	print "#include <netinet/ip_compat.h>"
3953669Sguido	print "#include <netinet/ip_fil.h>"
4053669Sguido	print "#include <netinet/ip_auth.h>"
4153669Sguido	print "#include <netinet/ip_nat.h>"
4253669Sguido	print "#include <netinet/ip_frag.h>"
4353669Sguido	print "#include <netinet/ip_state.h>"
4452130Speter	print "#include <netinet/ip_mroute.h>"
4540455Sbde	print "#include <cam/cam.h>"
4640455Sbde	print "#include <stdio.h>"
471590Srgrimes	print ""
4840455Sbde	print ioctl_includes
4940455Sbde	print ""
501590Srgrimes	print "char *"
5153079Sdfr	print "ioctlname(register_t val)"
521590Srgrimes	print "{"
531590Srgrimes	print ""
5440455Sbde	generate_case_statement = 0
5540455Sbde	if (generate_case_statement)
5640455Sbde		print "\tswitch(val) {"
571590Srgrimes}
581590Srgrimes
5940455Sbde/^#[ 	]*define[ 	]+[A-Za-z_][A-Za-z0-9_]*[ 	]+_IO/ {
601590Srgrimes	
611590Srgrimes	# find where the name starts
621590Srgrimes	for (i = 1; i <= NF; i++)
631590Srgrimes		if ($i ~ /define/)
641590Srgrimes			break;
651590Srgrimes	++i;
661590Srgrimes	# 
6740455Sbde	if (generate_case_statement)
6840455Sbde		printf("\tcase %s:\n\t\treturn(\"%s\");\n", $i, $i);
6940455Sbde	else
7040455Sbde		printf("\tif (val ==  %s)\n\t\treturn(\"%s\");\n", $i, $i);
711590Srgrimes
721590Srgrimes}
731590SrgrimesEND {
7440455Sbde	if (generate_case_statement)
7540455Sbde		print "\t}"
761590Srgrimes	print "\n\treturn(NULL);"
771590Srgrimes	print "}"
781590Srgrimes}
7916631Sbde'
80