#!/bin/sh # initialy from $FreeBSD: src/usr.bin/kdump/mkioctls,v 1.18 2000/08/02 07:37:44 ru Exp $ # changed by Gaël Roualland. # Validate arg count. if [ $# -ne 1 ] then echo "usage: $0 include-directory" >&2 exit 1 fi # build a list of files with ioctls ioctl_includes=` cd $1 find * -name '*.h' -follow | egrep -v '^(netns)/' | xargs egrep -l \ '^#[ ]*define[ ]+[A-Za-z_][A-Za-z0-9_]*[ ]+_IO[^a-z0-9_]'` # Generate the output file. echo '/* This file is automatically generated by ioctlent.sh */' echo echo '/* XXX obnoxious prerequisites. */' echo '#define COMPAT_43' echo echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo '#include ' echo echo "$ioctl_includes" | sed -e 's/^/#include /' echo echo 'struct ioctlent ioctlent [] =' echo '{' (cd $1 && for i in $ioctl_includes ; do echo "#include <$i>" | gcc -I$1 -E -dM - | egrep '^#[ ]*define[ ]+[A-Za-z_][A-Za-z0-9_]*[ ]+_IO[^a-z0-9_]' | sed -n -e 's|^#[ ]*define[ ]*\([A-Za-z_][A-Za-z0-9_]*\).*| { "'$i'", "\1", \1 },|p' ; done ) echo '};'