svn commit: r188578 - head/sys/netinet

Bruce Evans brde at optusnet.com.au
Sat Feb 14 11:40:06 PST 2009


On Sat, 14 Feb 2009, Luigi Rizzo wrote:

> On Sat, Feb 14, 2009 at 06:59:57PM +1100, Bruce Evans wrote:
>> On Fri, 13 Feb 2009, Luigi Rizzo wrote:
>>
>>> Log:
>>> Use uint32_t instead of n_long and n_time, and uint16_t instead of
>>> n_short.
>>> Add a note next to fields in network format.
>>>
>>> The n_* types are not enough for compiler checks on endianness, and their
>>> use often requires an otherwise unnecessary #include <netinet/in_systm.h>
>>
>> This is too much like globally substituting uid_t with uint16_t.  At
>
> actually uid_t are uint32_t :)
> But there are several differences:
> - uid_t, dev_t and other widelyused_t are in <sys/types.h> so you don't
>  need to add one extra header just for the n_long typedef;

Actually, they would cause the same problem if their declarations were
not correctly engineered.  Without any engineering, it would be necessary
to include <sys/types.h> in applications that don't otherwise need
applications.  This corresponds to including <netinet/in_systm.h>.  With
bad engineering, <sys/types.h> would be included nested in almost all
headers.  This corresponds to including <netinet/in_systm.h> in almost
all netinet headers.

> - n_{long|short|time} are so rarely used that after 20 years one can
>  safely declare they were an unsuccessful experiment;

Only 20?  They are in Net/2 and Stevens.  I couldn't find any details of
them in Stevens.  Of course there are better ways of declaring them --
basically a foo_t for every logically distinct type, as was already done
for n_time and is still done for in_addr_t...

I found 2 Linux versions of in_systm.h on my disks.  One dated 1994
is almost a copy of the Net/2 one (it still uses short and long).  One
dated 2001 uses uint* where FreeBSD now uses u_int*.  I didn't notice
before that in_systm.h declares nothing except these 3 types.  Being
so small to negative advantage is another engineering error.  The
FreeBSD one now has a single prototype, for in_time().  This was
apparently done so that there aren't even more dependencies on in_systm.h
due to the the (different) header that declares in_time() depending
on in_systm.h.  Now that in_time() doesn't depend on n_time, the
placement of its declaration in in_systm.h is just bogus.  The correct
place is probably <netinet/in_var.h>.

FYI, here is an old script (last edit Jan 15 2000) for checking that
header dependencies haven't rotted.  The old dependencies can be read
off the echo lists in it.  I gave up maintaining this in 1999 because
errors grew faster than I could fix them.  In 1999, the error output
was 2K; in 200 it was 11K; now it is 1327K and the test coverages is
probably more incomplete.  Due to bloat, it takes about the same time
to run in 1999 on a K6/233MHz as in 2009 on a Core2/1.86GHz (about 1
minute).  It only checks userland and doesn't try to give lists that
don't depend on namespace pollution in other headers.  It does try to
give minimal lists.  Many of the header engineering errors involving
<sys/types.h> have been fixed so many of the includes of that in the
lists are now bogus.

BTW, I also disagree with you adding comments to include lines to say
what the includes are for.  There is no chance that such comments are
complete or can be maintained.  For completeness, every include line
would need a paragraph or two like some of the ones in this mail to
explain all the reasons why a header is included, and the details will
change when code is added.  The reasons why a header is needed are
most easily seen by trying to compile without it.  A generic header
like <sys/types.h> will be needed for a myriad reasons and listing
them all is not useful.  A small header will be needed for only a small
number of reasons and listing them all is even less useful, since it
is easy to find and understand the reasons if only a couple of
declarations are used.

%%%
#!/bin/sh

# <sys/bus_private.h> only depends on <sys/bus.h> being previously
#     included with _KERNEL being defined, but <sys/bus.h> depends on
#     generated headers if _KERNEL is defined.
# <machine/ipl.h>, <machine/mpapic.h> and <pccard/slot.h> refer to the
#     i386 hierarchy.
# <netgraph/netgraph.h> depends on _KERNEL being defined.
# <nfs/nfsrvcache.h> depends on _KERNEL being defined before including
#     <nfs/nfs.h>, and then <nfs/nfs.h> includes "opt_nfs.h".
# <pccard/pccard_nbk.h> depends on a type in <sys/bus.h> which is only
#     declared if _KERNEL is defined.
# <machine/sigframe.h> depends on _KERNEL being defined before
#     <sys/signal.h> is included.
# <machine/segments.h> uses an unifdefed gcc attribute so it and
#     everything that includes it break for for non-gcc.
# <netatm/spans/spans_cls.h> depends on generated headers.
# <sys/syscall-hide.h> uses undefined macros.
# <sys/sysproto.h> conflicts with user lseek() etc.
#
CRUD="(sys/bus_private|machine/ipl|machine/mpapic|netgraph/netgraph|nfs/nfsrvcache|pccard/pccard_nbk|machine/sigframe|pccard/slot|netatm/spans/spans_cls|sys/syscall-hide|sys/sysproto)\.h"

# <sys/copyright> uses ANSI string concatenation.
# <sys/devfsext.h> uses #error.
# <netatm> isn't careful about #elif.
#
NEEDS_ANSI="(sys/copyright|sys/devfsext|netatm/ipatm/ipatm_serv|netatm/kern_include|netatm/port|netatm/uni/sscf_uni_var|netatm/uni/sscop_pdu|netatm/uni/sscop_var|netatm/uni/unisig_decode|netatm/uni/unisig_mbuf)\.h"

# Comment out the next line for non-ANSI.
#
NEEDS_ANSI="^/nonesuch$"

# Some files use use gcc features such as __inline and pragma pack (ugh!)
#     unconditionally.
#
NEEDS_GCC="(machine/atomic|machine/cdk|machine/cpu|machine/globaldata|machine/md_var|netncp/ncp|netncp/ncp_conn|netncp/ncp_file|netncp/ncp_lib|netncp/ncp_ncp|ncp_nls|netncp/ncp_rcfile|netncp/ncp_sock|netncp/ncp_rq|netncp/ncp_subr|netncp/ncp_user|machine/pcb_ext|machine/segments|sys/signalvar|machine/specialreg|sys/timepps|sys/user|machine/pc/vesa|vm/vm_map)\.h"

# Comment out the next line for non-gcc.
#
NEEDS_GCC="^/nonesuch$"

# These files use prototypes and perhaps other ANSI features unconditionally.
# Major breakage in acl.h pollutes vnode.h and thus nfs/nfsnode.h,
#     ufs/ffs/ffs_extern.h, ufs/ufs/ufs_extern.h, and others.
# Major breakage in com_err (?) broke ss/ss.h and ss/ss_err.h.
#
NEEDS_PROTO="(sys/acl|\./aio|sys/aio|\./alias|machine/pc/bios|sys/blist|net/bridge|sys/bus|machine/bus|\./calendar|cam/cam|cam/cam_ccb|cam/scsi/scsi_all|cam/scsi/scsi_cd|cam/scsi/scsi_ch|cam/scsi/scsi_pass|cam/scsi/scsi_sa|cam/scsi/scsi_targetio|\./camlib|\./curses|\./devstat|\./dialog|sys/extattr|\./fetch|\./fetch_err|ufs/ffs/ffs_extern|\./form|\./ftpio|\./g2c|sys/interrupt|sys/kernel|\./libdisk|sys/linker|\./md2|\./md4|\./md5|sys/md5|\./menu|sys/module|\./ncurses|\./netgraph|netgraph/ng_parse|netgraph/ng_pppoe|nfs/nfsnode|ntfs/ntfs|ntfs/ntfs_compr|ntfs/ntfs_inode|ntfs/ntfs_subr|ntfs_vfsops|nwfs/nwfs|nwfs/nwfs_mount|nwfs/nwfs_node|nwfs/nwfs_subr|\./objformat|panel|security/_pam_types|security/pam_appl|security/pam_malloc|security/pam_mod_misc|security/pam_modules|\./pcap-int|\./pcap-namedb|\./pcap|\./posix4|posix4/posix4|\./radlib|sys/rman|\./ripemd|\./sha|machine/spigot|machine/soundcard|ss/ss|ss/ss_err|\./stand|\./strhash|\./taclib|\./term|\./termcap|\./timepps|ufs/ufs/ufs_extern|\./unctrl|\./vgl|sys/vnode)\.h"

# Comment out the next line for pure K&R (not for gcc -tradtional).
#
NEEDS_PROTO="^/nonesuch$"

# <elf.h>, <machine/elf.h> <sys/elf_generic.h> and <sys/imgact_elf.h>
#     use a combination of __CONCAT macros that doesn't work in traditional
#     mode.
# <machine/atomic.h> and <sys/eventhandler.h> use token pasting.
#     <netatm/kern_include.h>, <sys/systm.h> <vm/vm_object.h> and
#     <vm/vm_page.h> inherit breakage from <machine/atomic.h>.
# <machine/in_cksum.h> uses ANSI cpp features.
# <security/_pam_macros.h> isn't careful enough about spaces in
#     macro definitions to work in traditional mode.
#     <security/pam_misc.h> inherits this problem.
#
NEEDS_NONTRAD="(\./elf|machine/atomic|machine/elf|sys/elf_generic|sys/eventhandler|sys/imgact_elf|machine/in_cksum|netatm/kern_include|security/_pam_macros|security/pam_misc|sys/systm|vm/vm_object|vm/vm_page)\.h"

# Comment out the next line for pure K&R or gcc -traditional.
#
NEEDS_NONTRAD="^/nonesuch$"

gccw() {
cc \
 	-Wall -ansi -pedantic \
 	-Wbad-function-cast \
 	-Wcast-align \
 	-Wcast-qual \
 	-Wchar-subscripts \
 	-Wconversion \
 	-Winline \
 	-Wmissing-prototypes \
 	-Wnested-externs \
 	-Wpointer-arith \
 	-Wredundant-decls \
 	-Wshadow \
 	-Wstrict-prototypes \
 	-Wwrite-strings \
 	"$@"
}

for i in `(cd /usr/include; find . -name '*.h' -follow | sort |
 	   egrep -v "\./(g\+\+|netns|objc)/" | egrep -v "$CRUD" |
 	   egrep -v "$NEEDS_ANSI" | egrep -v "$NEEDS_GCC" |
 	   egrep -v "$NEEDS_PROTO" | egrep -v "$NEEDS_NONTRAD")`
do
 	echo -n >z.c
 	test $i != ./alias.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet/in.h>" >>z.c
 	test $i != ./arpa/inet.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet/in.h>" >>z.c
 	test $i != ./cam/cam.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./cam/cam_ccb.h ||
 	    echo "#include <stdio.h>
 		  #include <sys/types.h>
 		  #include <cam/cam.h>" >>z.c
 	test $i != ./cam/scsi/scsi_all.h ||
 	    echo "#include <stdio.h>
 		  #include <sys/types.h>" >>z.c
 	test $i != ./cam/scsi/scsi_cd.h ||
 	    echo "#include <stdio.h>
 		  #include <sys/types.h>
 		  #include <cam/scsi/scsi_all.h>" >>z.c
 	test $i != ./cam/scsi/scsi_ch.h ||
 	    echo "#include <stdio.h>
 		  #include <sys/types.h>
 		  #include <cam/cam.h>
 		  #include <cam/cam_ccb.h>" >>z.c
 	test $i != ./cam/scsi/scsi_da.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./cam/scsi/scsi_pass.h ||
 	    echo "#include <stdio.h>
 		  #include <sys/types.h>
 		  #include <cam/cam.h>" >>z.c
 	test $i != ./cam/scsi/scsi_pt.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./cam/scsi/scsi_sa.h ||
 	    echo "#include <stdio.h>
 		  #include <sys/types.h>
 		  #include <cam/cam.h>
 		  #include <cam/cam_ccb.h>" >>z.c
 	test $i != ./cam/scsi/scsi_targetio.h ||
 	    echo "#include <stdio.h>" >>z.c
 	test $i != ./camlib.h ||
 	    echo "#include <stdio.h>" >>z.c
 	test $i != ./devstat.h ||
 	    echo "#include <sys/dkstat.h>" >>z.c
 	test $i != ./fetch.h ||
 	    echo "#include <sys/param.h>
 		  #include <stdio.h>" >>z.c
 	test $i != ./fts.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./gnuregex.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./grp.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./isofs/cd9660/cd9660_mount.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/mount.h>" >>z.c
 	test $i != ./isofs/cd9660/cd9660_node.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/lock.h>
 		  #include <sys/time.h>" >>z.c
 	test $i != ./isofs/cd9660/cd9660_rrip.h ||
 	    echo "#include <sys/types.h>
 		  #include <isofs/cd9660/iso.h>" >>z.c
 	test $i != ./isofs/cd9660/iso.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./isofs/cd9660/iso_rrip.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./libatm.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <netinet/in.h>
 		  #include <netatm/atm.h>
 		  #include <netatm/atm_if.h>
 		  #include <netatm/atm_sap.h>
 		  #include <netatm/atm_sys.h>
 		  #include <netatm/atm_ioctl.h>" >>z.c
 	test $i != ./libdisk.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	# XXX link.h has no prerequisites in the elf case.  It has namespace
 	# pollution (<sys/types.h>) and undocmentation (link.5 is aout-only).
 	test $i != ./link.h ||
 	    echo "#include <sys/types.h>
 	    #include <nlist.h>" >>z.c
 	test $i != ./login_cap.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./md4.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./md5.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./mpool.h || echo "#include <db.h>" >>z.c
 	test $i != ./machine/atomic.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/bootinfo.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/bus.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/cpu.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/cpufunc.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/db_machdep.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/dvcfg.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/elf.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/frame.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/globaldata.h ||
 	    echo "#include <sys/time.h>
 		  #include <machine/segments.h>
 		  #include <machine/tss.h>" >>z.c
 	test $i != ./machine/i4b_debug.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/i4b_ioctl.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/i4b_rbch_ioctl.h ||
 	    echo "#include <sys/types.h>
 		  #include <machine/i4b_ioctl.h>" >>z.c
 	test $i != ./machine/i4b_trace.h || echo "#include <sys/time.h>" >>z.c
 	test $i != ./machine/if_wavelan_ieee.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/iic.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/in_cksum.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet/in.h>
 		  #include <netinet/in_systm.h>
 		  #include <netinet/ip.h>" >>z.c
 	test $i != ./machine/ioctl_bt848.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/md_var.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/npx.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/pc/bios.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/pc/vesa.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/pcb.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/pcb_ext.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/pmap.h ||
 	    echo "#include <sys/types.h>
 		  #include <vm/vm.h>
 		  #include <vm/pmap.h>" >>z.c
 	test $i != ./machine/profile.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/si.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/tty.h>" >>z.c
 	test $i != ./machine/signal.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/signal.h>" >>z.c
 	test $i != ./machine/smb.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/specialreg.h ||
 	    echo "#include <sys/types.h>
 		  #include <machine/cpufunc.h>" >>z.c
 	test $i != ./machine/types.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./machine/vm86.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./mqueue.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./msdosfs/bootsect.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./msdosfs/bpb.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./msdosfs/direntry.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./msdosfs/denode.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/lock.h>" >>z.c
 	test $i != ./msdosfs/msdosfsmount.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/mount.h>" >>z.c
 	test $i != ./net/bridge.h ||
 		echo "#include <sys/param.h>
 		      #include <sys/mbuf.h>" >>z.c
 	test $i != ./net/bpf.h || echo "#include <sys/time.h>" >>z.c
 	test $i != ./net/bpfdesc.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./net/ethernet.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./net/hostcache.h || echo "#include <sys/time.h>" >>z.c
 	test $i != ./net/if.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>" >>z.c
 	test $i != ./net/if_arp.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>" >>z.c
 	test $i != ./net/if_atm.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./net/if_dl.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./net/if_gif.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <net/if_var.h>
 		  #include <net/route.h>
 		  #include <netinet6/in6.h>" >>z.c
 	test $i != ./net/if_llc.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./net/if_mib.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>" >>z.c
 	test $i != ./net/if_ppp.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>" >>z.c
 	test $i != ./net/if_pppvar.h ||
 	    echo "#define NPPP 1
 		  #include <sys/types.h>
 		  #include <sys/callout.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <net/if_var.h>
 		  #include <net/ppp_defs.h>" >>z.c
 	test $i != ./net/if_slvar.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/mbuf.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <net/if_var.h>
 		  #include <netinet/in.h>
 		  #include <netinet/in_systm.h>
 		  #include <netinet/ip.h>
 		  #include <net/slcompress.h>" >>z.c
 	test $i != ./net/if_sppp.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/callout.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <net/if_var.h>" >>z.c
 	test $i != ./net/if_tun.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./net/if_tunvar.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/select.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <net/if_var.h>" >>z.c
 	test $i != ./net/if_var.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>" >>z.c
 	test $i != ./net/if_vlan_var.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <net/ethernet.h>" >>z.c
 	test $i != ./net/iso88025.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/route.h>" >>z.c
 	test $i != ./net/pfkeyv2.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./net/ppp_defs.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./net/radix.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./net/raw_cb.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>" >>z.c
 	test $i != ./net/route.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>" >>z.c
 	test $i != ./net/slcompress.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/mbuf.h>
 		  #include <netinet/in.h>
 		  #include <netinet/in_systm.h>
 		  #include <netinet/ip.h>" >>z.c
 	test $i != ./netatalk/aarp.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <netinet/in.h>
 		  #include <netinet/if_ether.h>
 		  #include <netatalk/at.h>" >>z.c
 	test $i != ./netatalk/at.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netatalk/at_extern.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netatalk/at_var.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/callout.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <net/if_var.h>
 		  #include <netatalk/at.h>" >>z.c
 	test $i != ./netatalk/ddp.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netatalk/ddp_var.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/route.h>
 		  #include <netatalk/at.h>" >>z.c
 	test $i != ./netatalk/phase2.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netatm/atm.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>" >>z.c
 	test $i != ./netatm/atm_cm.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <netatm/atm.h>
 		  #include <netatm/atm_sys.h>" >>z.c
 	test $i != ./netatm/atm_if.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./netatm/atm_ioctl.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <netatm/atm.h>
 		  #include <netatm/atm_if.h>
 		  #include <netatm/atm_sap.h>
 		  #include <netatm/atm_sys.h>" >>z.c
 	test $i != ./netatm/ipatm/ipatm_serv.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <netatm/atm.h>
 		  #define ATM_KERNEL
 		  #include <netatm/atm_sys.h>
 		  #include <netatm/port.h>
 		  #include <netatm/queue.h>
 		  #include <netatm/atm_cm.h>
 		  #include <netinet/in.h>
 		  #include <netatm/ipatm/ipatm_var.h>" >>z.c
 	test $i != ./netatm/kern_include.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <net/if_var.h>" >>z.c
 	test $i != ./netatm/port.h ||
 	    echo "#include <sys/param.h>
 		  #define ATM_KERNEL" >>z.c
 	test $i != ./netatm/atm_sap.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./netatm/atm_sys.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./netatm/queue.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./netatm/uni/sscf_uni_var.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <netatm/atm.h>
 		  #define ATM_KERNEL
 		  #include <netatm/atm_sys.h>
 		  #include <netatm/port.h>
 		  #include <netatm/queue.h>
 		  #include <netatm/atm_cm.h>
 		  #include <netatm/uni/uni.h>" >>z.c
 	test $i != ./netatm/uni/sscop.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./netatm/uni/sscop_misc.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./netatm/uni/sscop_pdu.h ||
 	    echo "#include <sys/param.h>
 		  #define ATM_KERNEL
 		  #include <netatm/port.h>
 		  #include <netatm/uni/sscop_misc.h>" >>z.c
 	test $i != ./netatm/uni/sscop_var.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <netatm/atm.h>
 		  #define ATM_KERNEL
 		  #include <netatm/atm_sys.h>
 		  #include <netatm/port.h>
 		  #include <netatm/queue.h>
 		  #include <netatm/atm_cm.h>
 		  #include <netatm/uni/sscop.h>
 		  #include <netatm/uni/sscop_misc.h>" >>z.c
 	test $i != ./netatm/uni/unisig_decode.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <netatm/atm.h>
 		  #define ATM_KERNEL
 		  #include <netatm/port.h>
 		  #include <netatm/uni/unisig_mbuf.h>
 		  #include <netatm/uni/unisig_msg.h>" >>z.c
 	test $i != ./netatm/uni/unisig_mbuf.h ||
 	    echo "#include <sys/param.h>
 		  #define ATM_KERNEL
 		  #include <netatm/port.h>" >>z.c
 	test $i != ./netatm/uni/unisig_msg.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <netatm/atm.h>" >>z.c
 	test $i != ./netatm/unisig_var.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./netatm/uni/uniip_var.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./netgraph/ng_async.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netgraph/ng_bpf.h ||
 	    echo "#include <sys/time.h>
 		  #include <net/bpf.h>
 		  #include <netgraph/ng_message.h>" >>z.c
 	test $i != ./netgraph/ng_cisco.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet/in.h>" >>z.c
 	test $i != ./netgraph/ng_ksocket.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./netgraph/ng_lmi.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netgraph/ng_message.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./netgraph/ng_parse.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netgraph/ng_ppp.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netgraph/ng_pppoe.h ||
 	    echo "#include <sys/types.h>
 		  #include <netgraph/ng_message.h>
 		  #include <net/ethernet.h>" >>z.c
 	test $i != ./netgraph/ng_pptpgre.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./netgraph/ng_sample.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netgraph/ng_socket.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netgraph/ng_socketvar.h ||
 	    echo "#include <sys/queue.h>" >>z.c
 	test $i != ./netgraph/ng_tee.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netgraph/ng_vjc.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet/icmp_var.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet/in.h>
 		  #include <netinet/in_systm.h>
 		  #include <netinet/ip.h>
 		  #include <netinet/ip_icmp.h>" >>z.c
 	test $i != ./netinet/icmp6.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet6/in6.h>" >>z.c
 	test $i != ./netinet/if_atm.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet/if_ether.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <netinet/in.h>" >>z.c
 	test $i != ./netinet/if_fddi.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet/if_gif.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet/igmp.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet/in.h>" >>z.c
 	test $i != ./netinet/igmp_var.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet/in.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet/in_gif.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet/in_hostcache.h ||
 	    echo "#include <sys/time.h>
 		  #include <net/hostcache.h>" >>z.c
 	test $i != ./netinet/in_pcb.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/route.h>
 		  #include <netinet/in.h>" >>z.c
 	test $i != ./netinet/in_systm.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet/in_var.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <net/if_var.h>
 		  #include <netinet/in.h>" >>z.c
 	test $i != ./netinet/ip.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet/in.h>
 		  #include <netinet/in_systm.h>" >>z.c
 	test $i != ./netinet/ip_auth.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <netinet/in.h>
 		  #include <netinet/ip_compat.h>
 		  #include <netinet/ip_fil.h>" >>z.c
 	test $i != ./netinet/ip_compat.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet/ip_dummynet.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/mbuf.h>
 		  #include <sys/socket.h>
 		  #include <net/route.h>" >>z.c
 	test $i != ./netinet/ip_fil.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <netinet/in.h>
 		  #include <netinet/ip_compat.h>" >>z.c
 	test $i != ./netinet/ip_flow.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/route.h>
 		  #include <netinet/in.h>" >>z.c
 	test $i != ./netinet/ip_frag.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <netinet/in.h>
 		  #include <netinet/ip_compat.h>
 		  #include <netinet/ip_fil.h>
 		  #include <netinet/ip_nat.h>" >>z.c
 	test $i != ./netinet/ip_fw.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet/in.h>" >>z.c
 	test $i != ./netinet/ip_icmp.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet/in.h>
 		  #include <netinet/in_systm.h>
 		  #include <netinet/ip.h>" >>z.c
 	test $i != ./netinet/ip_mroute.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <sys/time.h>
 		  #include <net/route.h>
 		  #include <netinet/in.h>" >>z.c
 	test $i != ./netinet/ip_nat.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <netinet/in.h>
 		  #include <netinet/ip_compat.h>
 		  #include <netinet/ip_fil.h>" >>z.c
 	test $i != ./netinet/ip_proxy.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <netinet/in.h>
 		  #include <netinet/ip_compat.h>
 		  #include <netinet/ip_fil.h>
 		  #include <netinet/tcp.h>" >>z.c
 	test $i != ./netinet/ip_state.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <netinet/in.h>
 		  #include <netinet/ip_compat.h>
 		  #include <netinet/ip_fil.h>" >>z.c
 	test $i != ./netinet/ip_var.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet/in.h>" >>z.c
 	test $i != ./netinet/ip6.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet6/in6.h>" >>z.c
 	test $i != ./netinet/ipprotosw.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet/tcp.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet/tcp_debug.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet/in.h>
 		  #include <netinet/in_systm.h>
 		  #include <netinet/ip_var.h>
 		  #include <netinet/tcp.h>
 		  #include <netinet/tcp_var.h>" >>z.c
 	test $i != ./netinet/tcp_var.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/queue.h>
 		  #include <netinet/tcp.h>" >>z.c
 	test $i != ./netinet/tcpip.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet/in.h>
 		  #include <netinet/ip_var.h>
 		  #include <netinet/tcp.h>" >>z.c
 	test $i != ./netinet/udp.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet/udp_var.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet/in.h>
 		  #include <netinet/in_systm.h>
 		  #include <netinet/ip.h>
 		  #include <netinet/ip_var.h>
 		  #include <netinet/udp.h>" >>z.c
 	test $i != ./netinet6/ah.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet6/esp.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/mbuf.h>" >>z.c
 	test $i != ./netinet6/icmp6.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet6/in6.h>" >>z.c
 	test $i != ./netinet6/in6.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet6/in6_gif.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet6/in6_prefix.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <net/if_var.h>
 		  #include <netinet6/in6.h>
 		  #include <netinet6/in6_var.h>" >>z.c
 	test $i != ./netinet6/in6_var.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <net/if_var.h>
 		  #include <netinet6/in6.h>" >>z.c
 	test $i != ./netinet6/ip.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet6/ip6.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet6/in6.h>" >>z.c
 	test $i != ./netinet6/ip6_var.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet6/in6.h>" >>z.c
 	test $i != ./netinet6/ipsec.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet6/nd6.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <net/if_var.h>
 		  #include <netinet6/in6.h>
 		  #include <netinet6/in6_var.h>" >>z.c
 	test $i != ./netinet6/pim6.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet6/pim6_var.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netinet6/ip6protosw.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./netipx/ipx.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netipx/ipx_if.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <net/if_var.h>
 		  #include <netipx/ipx.h>" >>z.c
 	test $i != ./netipx/ipx_ip.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <net/if_var.h>
 		  #include <net/route.h>
 		  #include <netinet/in.h>" >>z.c
 	test $i != ./netipx/ipx_pcb.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>
 		  #include <net/route.h>
 		  #include <netipx/ipx.h>" >>z.c
 	test $i != ./netipx/ipx_var.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netipx/spx.h ||
 	    echo "#include <sys/types.h>
 		  #include <netipx/ipx.h>" >>z.c
 	test $i != ./netipx/spx_debug.h ||
 	    echo "#include <sys/types.h>
 		  #include <netipx/ipx.h>
 		  #include <netipx/spx.h>" >>z.c
 	test $i != ./netkey/key_debug.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netncp/ncp.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netncp/ncp_conn.h ||
 	    echo "#include <sys/types.h>
 		  #include <netncp/ncp.h>" >>z.c
 	test $i != ./netncp/ncp_file.h ||
 	    echo "#include <sys/types.h>
 		  #include <netncp/ncp.h>" >>z.c
 	test $i != ./netncp/ncp_lib.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netncp/ncp_ncp.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netncp/ncp_nls.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./netncp/ncp_rcfile.h || echo "#include <stdio.h>" >>z.c
 	test $i != ./netncp/ncp_rq.h ||
 	    echo "#include <sys/types.h>
 		  #include <netncp/ncp.h>" >>z.c
 	test $i != ./netncp/ncp_subr.h ||
 	    echo "#include <sys/types.h>
 		  #include <netncp/ncp.h>" >>z.c
 	test $i != ./netncp/ncp_user.h ||
 	    echo "#include <sys/types.h>
 		  #include <netncp/ncp.h>" >>z.c
 	test $i != ./nfs/nfs.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/time.h>
 		  #include <sys/ucred.h>
 		  #include <nfs/rpcv2.h>" >>z.c
 	test $i != ./nfs/krpc.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./nfs/nfsdiskless.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/mount.h>
 		  #include <sys/socket.h>
 		  #include <net/if.h>
 		  #include <netinet/in.h>
 		  #include <nfs/nfsproto.h>
 		  #include <nfs/rpcv2.h>
 		  #include <nfs/nfs.h>" >>z.c
 	test $i != ./nfs/nfsm_subs.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./nfs/nfsmount.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/mount.h>
 		  #include <sys/time.h>
 		  #include <nfs/nfsproto.h>
 		  #include <nfs/rpcv2.h>
 		  #include <nfs/nfs.h>" >>z.c
 	test $i != ./nfs/nfsnode.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/mount.h>
 		  #include <sys/time.h>
 		  #include <sys/vnode.h>
 		  #include <nfs/nfsproto.h>
 		  #include <nfs/rpcv2.h>" >>z.c
 	test $i != ./nfs/nfsproto.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/mount.h>" >>z.c
 	test $i != ./nfs/nfsrtt.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/time.h>
 		  #include <sys/mount.h>" >>z.c
 	test $i != ./nfs/nfsrvcache.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/queue.h>
 		  #include <sys/time.h>
 		  #include <sys/ucred.h>
 		  #include <nfs/rpcv2.h>
 		  #include <nfs/nfs.h>" >>z.c
 	test $i != ./nfs/nfsv2.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/mount.h>" >>z.c
 	test $i != ./nfs/rpcv2.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./ntfs/ntfs.h ||
 	    echo "#include <sys/param.h>
 		  #define _KERNEL
 		  #include <sys/mount.h>
 		  #undef _KERNEL
 		  #include <sys/time.h>
 		  #include <sys/vnode.h>" >>z.c
 	test $i != ./ntfs/ntfs_compr.h ||
 	    echo "#include <sys/param.h>
 		  #define _KERNEL
 		  #include <sys/mount.h>
 		  #undef _KERNEL
 		  #include <sys/time.h>
 		  #include <sys/vnode.h>
 		  #include <ntfs/ntfs.h>" >>z.c
 	test $i != ./ntfs/ntfs_ihash.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./ntfs/ntfs_inode.h ||
 	    echo "#include <sys/param.h>
 		  #define _KERNEL
 		  #include <sys/mount.h>
 		  #undef _KERNEL
 		  #include <sys/time.h>
 		  #include <sys/vnode.h>
 		  #include <ntfs/ntfs.h>" >>z.c
 	test $i != ./ntfs/ntfsmount.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/mount.h>" >>z.c
 	test $i != ./ntfs/ntfs_subr.h ||
 	    echo "#include <sys/param.h>
 		  #define _KERNEL
 		  #include <sys/mount.h>
 		  #undef _KERNEL
 		  #include <sys/time.h>
 		  #include <sys/vnode.h>
 		  #include <ntfs/ntfs.h>" >>z.c
 	test $i != ./ntfs/ntfs_vfsops.h ||
 	    echo "#include <sys/param.h>
 		  #define _KERNEL
 		  #include <sys/mount.h>
 		  #undef _KERNEL
 		  #include <sys/time.h>
 		  #include <sys/vnode.h>
 		  #include <ntfs/ntfs.h>" >>z.c
 	test $i != ./nwfs/nwfs.h || echo "#include <sys/param.h>" >>z.c
 	test $i != ./nwfs/nwfs_mount.h || echo "#include <sys/param.h>" >>z.c
 	test $i != ./nwfs/nwfs_node.h ||
 	    echo "#include <sys/time.h>
 		  #include <sys/vnode.h>
 		  #include <netncp/ncp.h>" >>z.c
 	test $i != ./nwfs/nwfs_subr.h ||
 	    echo "#include <sys/types.h>
 		  #include <netncp/ncp.h>" >>z.c
 	test $i != ./pcap-namedb.h || echo "#include <pcap.h>" >>z.c
 	test $i != ./pccard/driver.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./posix4/mqueue.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./protocols/dumprestore.h ||
 	    echo "#include <sys/types.h>
 		  #include <ufs/ufs/dinode.h>" >>z.c
 	test $i != ./protocols/routed.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>" >>z.c
 	test $i != ./protocols/rwhod.h ||
 	    echo "#include <sys/types.h>" >>z.c
 	test $i != ./protocols/talkd.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/socket.h>" >>z.c
 	test $i != ./protocols/timed.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/time.h>" >>z.c
 	test $i != ./pthread_np.h ||
 	    echo "#include <pthread.h>" >>z.c
 	test $i != ./readline/readline.h || echo "#include <stdio.h>" >>z.c
 	test $i != ./regex.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./resolv.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet/in.h>" >>z.c
 	test $i != ./rpc/auth.h ||
 	    echo "#include <rpc/types.h>
 		  #include <rpc/xdr.h>" >>z.c
 	test $i != ./rpc/auth_des.h ||
 	    echo "#include <rpc/types.h>
 		  #include <rpc/xdr.h>
 		  #include <rpc/auth.h>" >>z.c
 	test $i != ./rpc/auth_unix.h ||
 	    echo "#include <rpc/types.h>
 		  #include <rpc/xdr.h>
 		  #include <rpc/auth.h>" >>z.c
 	test $i != ./rpc/clnt.h ||
 	    echo "#include <rpc/types.h>
 		  #include <rpc/xdr.h>
 		  #include <rpc/auth.h>" >>z.c
 	test $i != ./rpc/des.h || echo "#include <rpc/types.h>" >>z.c
 	test $i != ./rpc/pmap_clnt.h ||
 	    echo "#include <rpc/types.h>
 		  #include <rpc/xdr.h>
 		  #include <rpc/auth.h>
 		  #include <rpc/clnt.h>" >>z.c
 	test $i != ./rpc/pmap_prot.h ||
 	    echo "#include <rpc/types.h>
 		  #include <rpc/xdr.h>" >>z.c
 	test $i != ./rpc/pmap_rmt.h ||
 	    echo "#include <rpc/types.h>
 		  #include <rpc/xdr.h>" >>z.c
 	test $i != ./rpc/rpc_com.h || echo "#include <rpc/types.h>" >>z.c
 	test $i != ./rpc/rpc_msg.h ||
 	    echo "#include <rpc/types.h>
 		  #include <rpc/xdr.h>
 		  #include <rpc/auth.h>" >>z.c
 	test $i != ./rpc/svc.h ||
 	    echo "#include <rpc/types.h>
 		  #include <netinet/in.h>
 		  #include <rpc/xdr.h>
 		  #include <rpc/auth.h>" >>z.c
 	test $i != ./rpc/svc_auth.h ||
 	    echo "#include <rpc/types.h>
 		  #include <rpc/xdr.h>
 		  #include <rpc/auth.h>" >>z.c
 	test $i != ./rpc/xdr.h || echo "#include <rpc/types.h>" >>z.c
 	test $i != ./rpcsvc/nislib.h || echo "#include <rpcsvc/nis.h>" >>z.c
 	test $i != ./rpcsvc/yp_prot.h ||
 	    echo "#include <sys/types.h>
 		  #include <netinet/in.h>
 		  #include <rpc/types.h>
 		  #include <rpc/xdr.h>
 		  #include <rpc/auth.h>
 		  #include <rpc/clnt.h>" >>z.c
 	test $i != ./security/pam_mod_misc.h ||
 	    echo "#include <security/_pam_types.h>" >>z.c
 	test $i != ./skey.h || echo "#include <stdio.h>" >>z.c
 	test $i != ./sys/acct.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/acl.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/blist.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/buf.h || echo "#include <sys/param.h>" >>z.c
 	test $i != ./sys/callout.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/ccdvar.h ||
 	    echo "#include <sys/devicestat.h>
 		  #include <sys/disklabel.h>" >>z.c
 	test $i != ./sys/clist.h || echo "#include <sys/param.h>" >>z.c
 	test $i != ./sys/conf.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/cons.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/devfsext.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/dkbad.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/dmap.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/domain.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/dvdio.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/elf_common.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/elf32.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/elf64.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/elf_generic.h ||
 	    echo "#include <sys/types.h>
 		  #include <machine/elf.h>" >>z.c
 	test $i != ./sys/eventhandler.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/exec.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/extattr.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/filedesc.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/gmon.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/imgact_elf.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/interrupt.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/ipc.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/jail.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/kernel.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/kthread.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/ktrace.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/time.h>
 		  #include <sys/uio.h>" >>z.c
 	test $i != ./sys/linker.h || echo "#include <sys/param.h>" >>z.c
 	test $i != ./sys/lkm.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/lock.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/lockf.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/malloc.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/mbuf.h || echo "#include <sys/param.h>" >>z.c
 	test $i != ./sys/md5.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/memrange.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/mman.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/module.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/mount.h || echo "#include <sys/param.h>" >>z.c
 	test $i != ./sys/msg.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/namei.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/pciio.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/proc.h || echo "#include <sys/param.h>" >>z.c
 	test $i != ./sys/protosw.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/ptrace.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/resource.h || echo "#include <sys/time.h>" >>z.c
 	test $i != ./sys/resourcevar.h || echo "#include <sys/time.h>" >>z.c
 	test $i != ./sys/rlist.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/rman.h ||
 	    echo "#include <sys/types.h>
 		  #include <machine/bus.h>" >>z.c
 	test $i != ./sys/rtprio.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/select.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/sem.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/shm.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/signal.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/signalvar.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/socket.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/socketvar.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/sysctl.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/sysent.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/systm.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/timeb.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/timex.h || echo "#include <sys/time.h>" >>z.c
 	test $i != ./sys/tprintf.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/tty.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/ucontext.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/signal.h>" >>z.c
 	test $i != ./sys/ucred.h || echo "#include <sys/param.h>" >>z.c
 	test $i != ./sys/uio.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/un.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/unpcb.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/user.h || echo "#include <sys/param.h>" >>z.c
 	test $i != ./sys/vmmeter.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/vnode.h || echo "#include <sys/time.h>" >>z.c
 	test $i != ./sys/vsio.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/wormio.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./sys/xrpuio.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./ucontext.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/signal.h>" >>z.c
 	test $i != ./ufs/ffs/ffs_extern.h ||
 	    echo "#include <sys/time.h>
 		  #include <sys/vnode.h>
 		  #include <ufs/ufs/quota.h>
 		  #include <ufs/ufs/inode.h>" >>z.c
 	test $i != ./ufs/ffs/fs.h ||
 	    echo "#include <sys/param.h>" >>z.c
 	test $i != ./ufs/ffs/softdep.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/buf.h>
 		  #include <ufs/ufs/quota.h>
 		  #include <ufs/ufs/inode.h>" >>z.c
 	test $i != ./ufs/mfs/mfs_extern.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./ufs/mfs/mfsnode.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/buf.h>" >>z.c
 	test $i != ./ufs/ufs/dinode.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./ufs/ufs/dir.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./ufs/ufs/inode.h ||
 	    echo "#include <sys/types.h>
 		  #include <ufs/ufs/quota.h>" >>z.c
 	test $i != ./ufs/ufs/quota.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./ufs/ufs/ufs_extern.h ||
 	    echo "#include <sys/time.h>
 		  #include <sys/vnode.h>
 		  #include <ufs/ufs/dir.h>" >>z.c
 	test $i != ./ufs/ufs/ufsmount.h ||
 	    echo "#include <sys/param.h>
 		  #include <sys/mount.h>" >>z.c
 	test $i != ./utime.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./utmp.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./vgl.h || echo "#include <sys/fbio.h>" >>z.c
 	test $i != ./vm/default_pager.h ||
 	    echo "#include <sys/types.h>
 		  #include <vm/vm.h>" >>z.c
 	test $i != ./vm/pmap.h ||
 	    echo "#include <sys/types.h>
 		  #include <vm/vm.h>" >>z.c
 	test $i != ./vm/swap_pager.h ||
 	    echo "#include <sys/types.h>
 		  #include <vm/vm.h>" >>z.c
 	test $i != ./vm/vm.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./vm/vm_kern.h ||
 	    echo "#include <sys/types.h>
 		  #include <vm/vm.h>" >>z.c
 	test $i != ./vm/vm_map.h ||
 	    echo "#include <sys/types.h>
 		  #include <sys/lock.h>
 		  #include <vm/vm.h>
 		  #include <vm/pmap.h>" >>z.c
 	test $i != ./vm/vm_object.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./vm/vm_page.h ||
 	    echo "#include <sys/types.h>
 		  #include <vm/vm.h>" >>z.c
 	test $i != ./vm/vm_pageout.h || echo "#include <sys/types.h>" >>z.c
 	test $i != ./vm/vm_pager.h ||
 	    echo "#include <sys/types.h>
 		  #include <vm/vm.h>" >>z.c
 	test $i != ./vm/vm_zone.h || echo "#include <sys/types.h>" >>z.c
 	sed 's/^[ 	]*//' <z.c >z1.c
 	echo "#include <$i>" >>z1.c
 	echo "int dummy;" >>z1.c
 	gccw                                              -S z1.c
#	echo "--- <$i> ---"; CFLAGS=-O unusedinc z1.o
#if !
#	cc  -Dconst= -Dvolatile= -traditional             -S z1.c
#then echo $i; bash; fi
#	bcc -Dconst= -Dvolatile= -D__inline= -D__i386__   -S z1.c
done
%%%

Bruce


More information about the svn-src-all mailing list