summaryrefslogtreecommitdiffstats
path: root/usr.bin/kdump/mkioctls
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/kdump/mkioctls')
-rw-r--r--usr.bin/kdump/mkioctls51
1 files changed, 34 insertions, 17 deletions
diff --git a/usr.bin/kdump/mkioctls b/usr.bin/kdump/mkioctls
index 7ef2865..22ca268 100644
--- a/usr.bin/kdump/mkioctls
+++ b/usr.bin/kdump/mkioctls
@@ -1,20 +1,26 @@
#!/bin/sh
#
# $FreeBSD$
+#
+# When editing this script, keep in mind that truss also uses it.
+#
set -e
-if [ -z "$1" ]; then
- echo "usage: sh $0 include-dir"
+if [ $# -ne 2 -o \( $1 != "print" -a $1 != "return" \) ]; then
+ echo "usage: sh $0 print|return include-dir"
exit 1
fi
+style="$1"
+includedir="$2"
+
LC_ALL=C; export LC_ALL
# Build a list of headers that have ioctls in them.
# XXX should we use an ANSI cpp?
ioctl_includes=$(
- cd $1
+ cd $includedir
find -H -s * -name '*.h' | grep -v '.*disk.*\.h' | \
xargs egrep -l \
'^#[ ]*define[ ]+[A-Za-z_][A-Za-z0-9_]*[ ]+_IO[^a-z0-9_]' |
@@ -33,7 +39,7 @@ esac
awk -v x="$ioctl_includes" 'BEGIN {print x}' |
gcc -E -I$1 -dM -DCOMPAT_43TTY - |
- awk -v ioctl_includes="$ioctl_includes" '
+ awk -v ioctl_includes="$ioctl_includes" -v style="$style" '
BEGIN {
print "/* XXX obnoxious prerequisites. */"
print "#define COMPAT_43"
@@ -58,12 +64,19 @@ BEGIN {
print "#include <stdio.h>"
print "#include <cam/cam.h>"
print ""
- print "void ioctlname(unsigned long val, int decimal);"
- print ""
print ioctl_includes
print ""
- print "void"
- print "ioctlname(unsigned long val, int decimal)"
+ if (style == "print") {
+ print "void ioctlname(unsigned long val, int decimal);"
+ print ""
+ print "void"
+ print "ioctlname(unsigned long val, int decimal)"
+ } else {
+ print "const char *ioctlname(unsigned long val);"
+ print ""
+ print "const char *"
+ print "ioctlname(unsigned long val)"
+ }
print "{"
print "\tconst char *str = NULL;"
print ""
@@ -77,20 +90,24 @@ BEGIN {
break;
++i;
#
- print("\t");
+ printf("\t");
if (n++ > 0)
- print("else ");
+ printf("else ");
printf("if (val == %s)\n", $i);
printf("\t\tstr = \"%s\";\n", $i);
}
END {
- print "\n"
- print "\tif (str != NULL)\n"
- print "\t\tprintf(\"%s\", str);\n"
- print "\telse if (decimal)\n"
- print "\t\tprintf(\"%lu\", val);\n"
- print "\telse\n"
- print "\t\tprintf(\"%#lx\", val);\n"
+ print ""
+ if (style == "print") {
+ print "\tif (str != NULL)"
+ print "\t\tprintf(\"%s\", str);"
+ print "\telse if (decimal)"
+ print "\t\tprintf(\"%lu\", val);"
+ print "\telse"
+ print "\t\tprintf(\"%#lx\", val);"
+ } else {
+ print "\treturn (str);"
+ }
print "}"
}
'
OpenPOWER on IntegriCloud