$NetBSD: patch-aj,v 1.7 2017/06/29 06:33:29 wiz Exp $ --- /dev/null 2017-06-27 11:06:52.222304505 -0400 +++ netbsd/ioctlent.sh 2017-06-27 11:08:32.016631491 -0400 @@ -0,0 +1,124 @@ +#!/bin/sh +# +# Copyright (c) 1994 +# The Regents of the University of California. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed by the University of +# California, Berkeley and its contributors. +# 4. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# @(#)mkioctls 8.2 (Berkeley) 4/28/95 +# +( +#echo "#define const" # XXX: timepps lossage +echo "#include " +echo "struct ap_control { int _xxx; };" # XXX: ip_nat.h lossage +echo "#define COMPAT_43" +echo "struct lwp;" +echo "struct videomemory_t { int _xxx; };" # XXX arm video lossage +echo "typedef struct videomemory_t videomemory_t;" # XXX arm video lossage +echo "typedef int domid_t;" # XEN lossage +echo "typedef int xen_pfn_t;" # XEN lossage + +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 "#define debug xxxdebug" # XXX ip_fil.h +) > ioctlent.c +set -- $(egrep -l '(_IO\(|_IOR\(|_IOW\(|_IORW\()' /usr/include/*/*.h) + +for i +do + echo "#include <$i>" +done | sed -e "s,${DESTDIR}/usr/include/,,g" >> ioctlent.c + +echo "#undef debug" >> ioctlent.c + +${CC:-cc} -E -nostdinc -idirafter $DESTDIR/usr/include -dM ${1+"$@"} | awk ' +BEGIN { + keep["SLIOCGUNIT"] = 1; # Same as PPPIOCGASYNCMAP + keep["TUNSLMODE"] = 1; # Same as PPPIOCGASYNCMAP + keep["SIOCRMNAT"] = 1; # Same as SIOCRMAFR + keep["SIOCADNAT"] = 1; # Same as SIOCADAFR + keep["SIOCDELST"] = 1; # Same as SIOCRMNAT + keep["CHIOGPICKER"] = 1; # Same as CDIOREADTOCHEADER + keep["KBDSTPMAT"] = 1; # Same as LMREADY, pcvt is gone so ok. + + print "" + print "struct ioctlent {\n" + print "\t const char *file;\n" + print "\t const char *name;\n" + print "\t int number;\n" + print "};\n" + print "const struct ioctlent ioctlent0[] = " + print "{" + print "" + file = ""; +} +/^#[ ]*define[ ]*[A-Z]*[ ]*_IO[RW]\(/ { + + # find where the name starts + for (i = 1; i <= NF; i++) + if ($i ~ /define/) + break; + ++i; + printf("/* %s [%s] */\n", $0, $i); + # + if ($i ~ /^[A-Z0-9a-z_]*$/) { + if (keep[$i] != 1) { + printf("\t{ \"?\", \"%s\", %s },\n", $i, $i); + keep[$i] = 1; + } + } +} +END { + print "};\n" + print "/* Automatically generated file, do not edit! */" + print "int main(int argc, char *argv[]) {\n"; + print "\tint i;\n"; + print "\tfor (i = 0; i < sizeof(ioctlent0) / sizeof(ioctlent0[0]); i++)\n" + print "\t\tprintf(\"\t{ \\\"%s\\\", \\\"%s\\\", 0x%x },%c\",\n" + print "\t\t ioctlent0[i].file, ioctlent0[i].name, 0xffffffff & ioctlent0[i].number, 012);\n" + print "\treturn 0;\n"; + print "}\n"; +}' >> ioctlent.c +cc ioctlent.c -o ioctlent +./ioctlent