Header consolidation...

Rob Landley rob at landley.net
Sat May 27 21:57:27 UTC 2006


I just cherry picked <sys/time.h> and moved it to libb.h, and removed all the 
other #includes of it.  I'm thinking of moving a lot of the standard ones to 
there so we stop playing whack-a-mole with the #includes for portability 
reasons no one person can hope to verify all of.

Here's the complete list of headers we #include in our code:

landley at driftwood:~/busybox/busybox$ find . -name "*.c" | xargs sed -n 
"s/.*\(#include.*<.*>\).*/\1/p" | sort -u
#include <...>
#include <arpa/inet.h>
#include <arpa/telnet.h>
#include <asm/byteorder.h>
#include <asm/page.h>
#include <asm/types.h>
#include <asm/unistd.h>
#include <assert.h>
#include <busybox.h>
#include <byteswap.h>
#include <crypt.h>
#include <ctype.h>
#include <dirent.h>
#include <dmalloc.h>
#include <elf.h>
#include <endian.h>
#include <errno.h>
#include <fcntl.h>
#include <features.h>
#include <fnmatch.h>
#include <getopt.h>
#include <glob.h>
#include <grp.h>
#include <inttypes.h>
#include <libbb.h>
#include <libgen.h>
#include <limits.h>
#include <linux/fd.h>
#include <linux/hdreg.h>
#include <linux/if_arp.h>
#include <linux/if_ether.h>
#include <linux/if.h>
#include <linux/if_packet.h>
#include <linux/if_tunnel.h>
#include <linux/loop.h>
#include <linux/major.h>
#include <linux/posix_types.h>
#include <linux/sockios.h>
#include <linux/types.h>
#include <linux/version.h>
#include <locale.h>
#include <math.h>
#include <mntent.h>
#include <netdb.h>
#include <net/ethernet.h>
#include <net/if_arp.h>
#include <net/if_dl.h>
#include <net/if.h>
#include <net/if_packet.h>
#include <netinet/ether.h>
#include <netinet/icmp6.h>
#include <netinet/if_ether.h>
#include <netinet/in.h>
#include <netinet/ip6.h>
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#include <netinet/udp.h>
#include <netpacket/packet.h>
#include <net/route.h>
#include <paths.h>
#include <poll.h>
#include <pwd.h>
#include <regex.h>
#include <resolv.h>
#include <rpc/pmap_clnt.h>
#include <rpc/pmap_prot.h>
#include <rpc/rpc.h>
#include <search.h>
#include <selinux/flask.h>
#include <selinux/get_context_list.h>
#include <selinux/selinux.h>
#include <setjmp.h>
#include <signal.h>
#include <stdarg.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <sys/disk.h>
#include <sys/disklabel.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include <sys/ipc.h>
#include <sys/kd.h>
#include <sys/klog.h>
#include <syslog.h>
#include <sys/mkdev.h>
#include <sys/mman.h>
#include <sys/mount.h>
#include <sys/msg.h>
#include <sys/mtio.h>
#include <sys/param.h>
#include <sys/personality.h>
#include <sys/queue.h>
#include <sys/reboot.h>
#include <sys/resource.h>
#include <sys/select.h>
#include <sys/sem.h>
#include <sys/shm.h>
#include <sys/socket.h>
#include <sys/sockio.h>
#include <sys/statfs.h>
#include <sys/stat.h>
#include <sys/statvfs.h>
#include <sys/swap.h>
#include <sys/syscall.h>
#include <sys/syslog.h>
#include <sys/sysmacros.h>
#include <sys/times.h>
#include <sys/timex.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <sys/un.h>
#include <sys/utsname.h>
#include <sys/vfs.h>
#include <sys/vt.h>
#include <sys/wait.h>
#include <termios.h>
#include <time.h>
#include <unistd.h>
#include <utime.h>
#include <utmp.h>
#include <windows.h>
#include <winioctl.h>

A number of those kinda suck.  (The asm, linux, and syslinux ones, for 
example.)  Even though that's Linux, it might belong in platform.h anyway. :)

Some of the really oddball ones ("windows.h" and "winioctl.h" come to mind) 
are only found in the e2fsprogs code, and are #ifdeffed out and being slowly 
cleaned out by Garrett.  Some are already in libbb.h.

Anyway, just an FYI...

Rob
-- 
Never bet against the cheap plastic solution.



More information about the busybox mailing list