mkioctls revision 52130
140455Sbdeset -e
240455Sbde
351960Sn_hibma# $FreeBSD: head/usr.bin/kdump/mkioctls 52130 1999-10-11 16:14:22Z peter $
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>"
3852130Speter	print "#include <netinet/ip_mroute.h>"
3940455Sbde	print "#include <cam/cam.h>"
4040455Sbde	print "#include <stdio.h>"
411590Srgrimes	print ""
4240455Sbde	print ioctl_includes
4340455Sbde	print ""
441590Srgrimes	print "char *"
451590Srgrimes	print "ioctlname(val)"
461590Srgrimes	print "{"
471590Srgrimes	print ""
4840455Sbde	generate_case_statement = 0
4940455Sbde	if (generate_case_statement)
5040455Sbde		print "\tswitch(val) {"
511590Srgrimes}
521590Srgrimes
5340455Sbde/^#[ 	]*define[ 	]+[A-Za-z_][A-Za-z0-9_]*[ 	]+_IO/ {
541590Srgrimes	
551590Srgrimes	# find where the name starts
561590Srgrimes	for (i = 1; i <= NF; i++)
571590Srgrimes		if ($i ~ /define/)
581590Srgrimes			break;
591590Srgrimes	++i;
601590Srgrimes	# 
6140455Sbde	if (generate_case_statement)
6240455Sbde		printf("\tcase %s:\n\t\treturn(\"%s\");\n", $i, $i);
6340455Sbde	else
6440455Sbde		printf("\tif (val ==  %s)\n\t\treturn(\"%s\");\n", $i, $i);
651590Srgrimes
661590Srgrimes}
671590SrgrimesEND {
6840455Sbde	if (generate_case_statement)
6940455Sbde		print "\t}"
701590Srgrimes	print "\n\treturn(NULL);"
711590Srgrimes	print "}"
721590Srgrimes}
7316631Sbde'
74