# 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