#

TMP1FILE=/tmp/$$a.c
TMP2FILE=/tmp/$$b.c
OUTFILE=linux_ioctl.c

CPP="/compat/linux/usr/bin/gcc -E -D__builtin_va_list=int"

(echo	"#include <sys/ioctl.h>"
 echo	"#include <sys/soundcard.h>"
) > $TMP1FILE

$CPP -dM $TMP1FILE | awk '
BEGIN {
	print "#include <stdio.h>"
	print "#include <sys/types.h>"
	print "#include <sys/ioctl.h>"
	print "#include <sys/soundcard.h>"
	print ""
	print "char *"
	print "ioctlname(val)"
	print "{"
	print ""
}

/^#[ 	]*define[ 	]*(TIO|FIO|SIO|OSIO|SNDCTL)[A-Z_]*[ 	]*_IO/ {
	
	# find where the name starts
	for (i = 1; i <= NF; i++)
		if ($i ~ /define/)
			break;
	++i;
	# 
	printf("%s\n", $0);
	printf("\tif (val ==  %s)\n\t\treturn(\"%s\");\n", $i, $i);

}

/^#[ 	]*define[ 	]*(TIO|FIO|SIO|OSIO|SNDCTL)[A-Z_]*[ 	]*0x/ {
	
	# find where the name starts
	for (i = 1; i <= NF; i++)
		if ($i ~ /define/)
			break;
	++i;
	# 
	printf("%s\n", $0);
	printf("\tif (val ==  %s)\n\t\treturn(\"%s\");\n", $i, $i);

}
END {
	print "\n\treturn(NULL);"
	print "}"
}
' > $TMP2FILE

$CPP $TMP2FILE > $OUTFILE

rm $TMP1FILE
rm $TMP2FILE