# HG changeset patch # User Rob Landley # Date 1200786207 21600 # Node ID 163498bf547bd7c292d2cd3cb1f606bac7592bdd # Parent d4176f3f3835720c06ac338fa9d3bba65844a6af Move NEWTOY() list from end of toylist.h to generated/newtoys.h. diff -r d4176f3f3835 -r 163498bf547b Makefile --- a/Makefile Sat Jan 19 17:08:39 2008 -0600 +++ b/Makefile Sat Jan 19 17:43:27 2008 -0600 @@ -34,7 +34,7 @@ clean:: rm -f toybox toybox_unstripped generated/config.h generated/Config.in \ - instlist + generated/newtoys.h instlist distclean: clean rm -f toybox_old .config* generated/help.h diff -r d4176f3f3835 -r 163498bf547b lib/lib.c --- a/lib/lib.c Sat Jan 19 17:08:39 2008 -0600 +++ b/lib/lib.c Sat Jan 19 17:43:27 2008 -0600 @@ -51,7 +51,7 @@ if (CFG_HELP && toys.exithelp) { *toys.optargs=*toys.argv; - help_main(); + USE_HELP(help_main();) // dear gcc: shut up. fprintf(stderr,"\n"); } diff -r d4176f3f3835 -r 163498bf547b main.c --- a/main.c Sat Jan 19 17:08:39 2008 -0600 +++ b/main.c Sat Jan 19 17:43:27 2008 -0600 @@ -14,7 +14,7 @@ #define OLDTOY(name, oldname, opts, flags) {#name, oldname##_main, opts, flags}, struct toy_list toy_list[] = { -#include "toys/toylist.h" +#include "generated/newtoys.h" }; #define TOY_LIST_LEN (sizeof(toy_list)/sizeof(struct toy_list)) @@ -59,7 +59,7 @@ #define NEWTOY(name, opts, flags) opts || #define OLDTOY(name, oldname, opts, flags) opts || static const int NEED_OPTIONS = -#include "toys/toylist.h" +#include "generated/newtoys.h" 0; // Ends the opts || opts || opts... void toy_init(struct toy_list *which, char *argv[]) diff -r d4176f3f3835 -r 163498bf547b scripts/make.sh --- a/scripts/make.sh Sat Jan 19 17:08:39 2008 -0600 +++ b/scripts/make.sh Sat Jan 19 17:43:27 2008 -0600 @@ -7,6 +7,21 @@ echo "Extract configuration information from toys/*.c files." scripts/genconfig.sh +# Create a list of all the applets toybox can provide. Note that the first +# entry is out of order on purpose (the toybox multiplexer applet must be the +# first element of the array). The rest must be sorted in alphabetical order +# for fast binary search. + +function newtoys() +{ + for i in toys/*.c + do + sed -n -e '1,/^config [A-Z]/s/^USE_/&/p' $i || exit 1 + done +} +echo "NEWTOY(toybox, NULL, 0)" > generated/newtoys.h +newtoys | sort >> generated/newtoys.h + # Only recreate generated/help.h if python is installed if [ ! -z "$(which python)" ] && [ ! -z "$(grep 'CONFIG_HELP=y' .config)" ] then diff -r d4176f3f3835 -r 163498bf547b toys.h --- a/toys.h Sat Jan 19 17:08:39 2008 -0600 +++ b/toys.h Sat Jan 19 17:43:27 2008 -0600 @@ -41,6 +41,12 @@ #include "toys/e2fs.h" #include "toys/toylist.h" +// Get list of function prototypes for all enabled command_main() functions. + +#define NEWTOY(name, opts, flags) void name##_main(void); +#define OLDTOY(name, oldname, opts, flags) +#include "generated/newtoys.h" + // These live in main.c struct toy_list *toy_find(char *name); diff -r d4176f3f3835 -r 163498bf547b toys/basename.c --- a/toys/basename.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/basename.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * See http://www.opengroup.org/onlinepubs/009695399/utilities/basename.html +USE_BASENAME(NEWTOY(basename, "<1>2", TOYFLAG_BIN)) + config BASENAME bool "basename" default y diff -r d4176f3f3835 -r 163498bf547b toys/bzcat.c --- a/toys/bzcat.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/bzcat.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * Not in SUSv3. +USE_BZCAT(NEWTOY(bzcat, NULL, TOYFLAG_USR|TOYFLAG_BIN)) + config BZCAT bool "bzcat" default n diff -r d4176f3f3835 -r 163498bf547b toys/catv.c --- a/toys/catv.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/catv.c Sat Jan 19 17:43:27 2008 -0600 @@ -7,6 +7,8 @@ * Not in SUSv3, but see "Cat -v considered harmful" at * http://cm.bell-labs.com/cm/cs/doc/84/kp.ps.gz +USE_CATV(NEWTOY(catv, "vte", TOYFLAG_USR|TOYFLAG_BIN)) + config CATV bool "catv" default y diff -r d4176f3f3835 -r 163498bf547b toys/chroot.c --- a/toys/chroot.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/chroot.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * Not in SUSv3. +USE_CHROOT(NEWTOY(chroot, "<1", TOYFLAG_USR|TOYFLAG_SBIN)) + config CHROOT bool "chroot" default y diff -r d4176f3f3835 -r 163498bf547b toys/chvt.c --- a/toys/chvt.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/chvt.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * Not in SUSv3. +USE_CHVT(NEWTOY(chvt, "<1", TOYFLAG_USR|TOYFLAG_SBIN)) + config CHVT bool "chvt" default y diff -r d4176f3f3835 -r 163498bf547b toys/count.c --- a/toys/count.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/count.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * Not in SUSv3. +USE_COUNT(NEWTOY(count, NULL, TOYFLAG_USR|TOYFLAG_BIN)) + config COUNT bool "count" default y diff -r d4176f3f3835 -r 163498bf547b toys/df.c --- a/toys/df.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/df.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * See http://www.opengroup.org/onlinepubs/009695399/utilities/df.html +USE_DF(NEWTOY(df, "Pkt*a", TOYFLAG_USR|TOYFLAG_SBIN)) + config DF bool "df (disk free)" default y diff -r d4176f3f3835 -r 163498bf547b toys/dirname.c --- a/toys/dirname.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/dirname.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * See http://www.opengroup.org/onlinepubs/009695399/utilities/dirname.html +USE_DIRNAME(NEWTOY(dirname, "<1>1", TOYFLAG_BIN)) + config DIRNAME bool "dirname" default y diff -r d4176f3f3835 -r 163498bf547b toys/dmesg.c --- a/toys/dmesg.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/dmesg.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * Not in SUSv3. +USE_DMESG(NEWTOY(dmesg, "s#n#c", TOYFLAG_BIN)) + config DMESG bool "dmesg" default y diff -r d4176f3f3835 -r 163498bf547b toys/echo.c --- a/toys/echo.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/echo.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * See http://www.opengroup.org/onlinepubs/009695399/utilities/echo.html +USE_ECHO(NEWTOY(echo, "+en", TOYFLAG_BIN)) + config ECHO bool "echo" default y diff -r d4176f3f3835 -r 163498bf547b toys/false.c --- a/toys/false.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/false.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,7 @@ * * See http://www.opengroup.org/onlinepubs/009695399/utilities/false.html +USE_FALSE(NEWTOY(false, NULL, TOYFLAG_BIN)) config FALSE bool "false" diff -r d4176f3f3835 -r 163498bf547b toys/hello.c --- a/toys/hello.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/hello.c Sat Jan 19 17:43:27 2008 -0600 @@ -7,6 +7,8 @@ * Not in SUSv3. * See http://www.opengroup.org/onlinepubs/009695399/utilities/ +USE_HELLO(NEWTOY(hello, NULL, TOYFLAG_USR|TOYFLAG_BIN)) + config HELLO bool "hello" default y diff -r d4176f3f3835 -r 163498bf547b toys/help.c --- a/toys/help.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/help.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * Not in SUSv3, but exists as a bash builtin. +USE_HELP(NEWTOY(help, "<1", TOYFLAG_BIN)) + config HELP bool "help" default y @@ -31,7 +33,7 @@ #define NEWTOY(name,opt,flags) help_##name "\0" #define OLDTOY(name,oldname,opts,flags) "\xff" #oldname "\0" static char *help_data = -#include "toys/toylist.h" +#include "generated/newtoys.h" ; void help_main(void) diff -r d4176f3f3835 -r 163498bf547b toys/mke2fs.c --- a/toys/mke2fs.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/mke2fs.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * Not in SUSv3. +USE_MKE2FS(NEWTOY(mke2fs, MKE2FS_OPTSTRING, TOYFLAG_SBIN)) + config MKE2FS bool "mke2fs" default n diff -r d4176f3f3835 -r 163498bf547b toys/mkfifo.c --- a/toys/mkfifo.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/mkfifo.c Sat Jan 19 17:43:27 2008 -0600 @@ -4,6 +4,8 @@ * * See http://www.opengroup.org/onlinepubs/009695399/utilities/mkfifo.html +USE_MKFIFO(NEWTOY(mkfifo, "<1m:", TOYFLAG_BIN)) + config MKFIFO bool "mkfifo" default y diff -r d4176f3f3835 -r 163498bf547b toys/netcat.c --- a/toys/netcat.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/netcat.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,9 @@ * * Not in SUSv3. +USE_NETCAT(OLDTOY(nc, netcat, "i#w#l@p#s:q#f:e", TOYFLAG_BIN)) +USE_NETCAT(NEWTOY(netcat, "i#w#l@p#s:q#f:e", TOYFLAG_BIN)) + config NETCAT bool "netcat" default n diff -r d4176f3f3835 -r 163498bf547b toys/oneit.c --- a/toys/oneit.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/oneit.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * Not in SUSv3. +USE_ONEIT(NEWTOY(oneit, "+<1c:p", TOYFLAG_SBIN)) + config ONEIT bool "oneit" default y diff -r d4176f3f3835 -r 163498bf547b toys/patch.c --- a/toys/patch.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/patch.c Sat Jan 19 17:43:27 2008 -0600 @@ -21,6 +21,8 @@ * -F fuzz (number, default 2) * [file] which file to patch +USE_PATCH(NEWTOY(patch, "up#i:R", TOYFLAG_USR|TOYFLAG_BIN)) + config PATCH bool "patch" default y diff -r d4176f3f3835 -r 163498bf547b toys/pwd.c --- a/toys/pwd.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/pwd.c Sat Jan 19 17:43:27 2008 -0600 @@ -8,6 +8,8 @@ * * TODO: add -L -P +USE_PWD(NEWTOY(pwd, NULL, TOYFLAG_BIN)) + config PWD bool "pwd" default y diff -r d4176f3f3835 -r 163498bf547b toys/readlink.c --- a/toys/readlink.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/readlink.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * Not in SUSv3. +USE_READLINK(NEWTOY(readlink, "<1f", TOYFLAG_BIN)) + config READLINK bool "readlink" default n diff -r d4176f3f3835 -r 163498bf547b toys/sed.c --- a/toys/sed.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/sed.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * See http://www.opengroup.org/onlinepubs/009695399/utilities/sed.c +USE_SED(NEWTOY(sed, "irne*", TOYFLAG_BIN)) + config SED bool "sed" default n diff -r d4176f3f3835 -r 163498bf547b toys/sha1sum.c --- a/toys/sha1sum.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/sha1sum.c Sat Jan 19 17:43:27 2008 -0600 @@ -9,6 +9,8 @@ * * Not in SUSv3. +USE_SHA1SUM(NEWTOY(sha1sum, NULL, TOYFLAG_USR|TOYFLAG_BIN)) + config SHA1SUM bool "sha1sum" default y diff -r d4176f3f3835 -r 163498bf547b toys/sleep.c --- a/toys/sleep.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/sleep.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * See http://www.opengroup.org/onlinepubs/009695399/utilities/sleep.html +USE_SLEEP(NEWTOY(sleep, "<1", TOYFLAG_BIN)) + config SLEEP bool "sleep" default y diff -r d4176f3f3835 -r 163498bf547b toys/sync.c --- a/toys/sync.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/sync.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * Not in SUSv3. +USE_SYNC(NEWTOY(sync, NULL, TOYFLAG_BIN)) + config SYNC bool "sync" default y diff -r d4176f3f3835 -r 163498bf547b toys/touch.c --- a/toys/touch.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/touch.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * See http://www.opengroup.org/onlinepubs/009695399/utilities/touch.html +USE_TOUCH(NEWTOY(touch, "l#t:r:mca", TOYFLAG_BIN)) + config TOUCH bool "touch" default y diff -r d4176f3f3835 -r 163498bf547b toys/toylist.h --- a/toys/toylist.h Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/toylist.h Sat Jan 19 17:43:27 2008 -0600 @@ -5,13 +5,6 @@ */ -// Provide function declarations and structs. Note that main.c #includes this -// file twice (with different macros) to populate toy_list[]. - -#ifndef NEWTOY -#define NEWTOY(name, opts, flags) void name##_main(void); -#define OLDTOY(name, oldname, opts, flags) - struct df_data { struct arg_list *fstype; @@ -126,48 +119,3 @@ char *options; int flags; } toy_list[]; - -#endif - -// List of all the applets toybox can provide. - -// This one is out of order on purpose: it's the first element in the array. - -NEWTOY(toybox, NULL, 0) - -// The rest of these are alphabetical, for binary search. - -USE_BASENAME(NEWTOY(basename, "<1>2", TOYFLAG_BIN)) -USE_BZCAT(NEWTOY(bzcat, NULL, TOYFLAG_USR|TOYFLAG_BIN)) -USE_CATV(NEWTOY(catv, "vte", TOYFLAG_USR|TOYFLAG_BIN)) -USE_CHROOT(NEWTOY(chroot, "<1", TOYFLAG_USR|TOYFLAG_SBIN)) -USE_CHVT(NEWTOY(chvt, "<1", TOYFLAG_USR|TOYFLAG_SBIN)) -USE_COUNT(NEWTOY(count, NULL, TOYFLAG_USR|TOYFLAG_BIN)) -USE_TOYSH(NEWTOY(cd, NULL, TOYFLAG_NOFORK)) -USE_DF(NEWTOY(df, "Pkt*a", TOYFLAG_USR|TOYFLAG_SBIN)) -USE_DIRNAME(NEWTOY(dirname, "<1>1", TOYFLAG_BIN)) -USE_DMESG(NEWTOY(dmesg, "s#n#c", TOYFLAG_BIN)) -USE_ECHO(NEWTOY(echo, "+en", TOYFLAG_BIN)) -USE_TOYSH(NEWTOY(exit, NULL, TOYFLAG_NOFORK)) -USE_FALSE(NEWTOY(false, NULL, TOYFLAG_BIN)) -USE_HELLO(NEWTOY(hello, NULL, TOYFLAG_USR|TOYFLAG_BIN)) -USE_HELP(NEWTOY(help, "<1", TOYFLAG_BIN)) -USE_MKE2FS(NEWTOY(mke2fs, MKE2FS_OPTSTRING, TOYFLAG_SBIN)) -USE_MKFIFO(NEWTOY(mkfifo, "<1m:", TOYFLAG_BIN)) -USE_NETCAT(OLDTOY(nc, netcat, "i#w#l@p#s:q#f:e", TOYFLAG_BIN)) -USE_NETCAT(NEWTOY(netcat, "i#w#l@p#s:q#f:e", TOYFLAG_BIN)) -USE_ONEIT(NEWTOY(oneit, "+<1c:p", TOYFLAG_SBIN)) -USE_PATCH(NEWTOY(patch, "up#i:R", TOYFLAG_USR|TOYFLAG_BIN)) -USE_PWD(NEWTOY(pwd, NULL, TOYFLAG_BIN)) -USE_READLINK(NEWTOY(readlink, "<1f", TOYFLAG_BIN)) -USE_SED(NEWTOY(sed, "irne*", TOYFLAG_BIN)) -USE_TOYSH(OLDTOY(sh, toysh, "c:i", TOYFLAG_BIN)) -USE_SHA1SUM(NEWTOY(sha1sum, NULL, TOYFLAG_USR|TOYFLAG_BIN)) -USE_SLEEP(NEWTOY(sleep, "<1", TOYFLAG_BIN)) -USE_SYNC(NEWTOY(sync, NULL, TOYFLAG_BIN)) -USE_TOUCH(NEWTOY(touch, "l#t:r:mca", TOYFLAG_BIN)) -USE_TOYSH(NEWTOY(toysh, "c:i", TOYFLAG_BIN)) -USE_TRUE(NEWTOY(true, NULL, TOYFLAG_BIN)) -USE_TTY(NEWTOY(tty, "s", TOYFLAG_BIN)) -USE_WHICH(NEWTOY(which, "a", TOYFLAG_USR|TOYFLAG_BIN)) -USE_YES(NEWTOY(yes, NULL, TOYFLAG_USR|TOYFLAG_BIN)) diff -r d4176f3f3835 -r 163498bf547b toys/toysh.c --- a/toys/toysh.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/toysh.c Sat Jan 19 17:43:27 2008 -0600 @@ -16,6 +16,11 @@ * * TODO: // Handle embedded NUL bytes in the command line. +USE_TOYSH(NEWTOY(cd, NULL, TOYFLAG_NOFORK)) +USE_TOYSH(NEWTOY(exit, NULL, TOYFLAG_NOFORK)) +USE_TOYSH(OLDTOY(sh, toysh, "c:i", TOYFLAG_BIN)) +USE_TOYSH(NEWTOY(toysh, "c:i", TOYFLAG_BIN)) + config TOYSH bool "sh (toysh)" default y diff -r d4176f3f3835 -r 163498bf547b toys/true.c --- a/toys/true.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/true.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * See http://www.opengroup.org/onlinepubs/009695399/utilities/true.html +USE_TRUE(NEWTOY(true, NULL, TOYFLAG_BIN)) + config TRUE bool "true" default y diff -r d4176f3f3835 -r 163498bf547b toys/tty.c --- a/toys/tty.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/tty.c Sat Jan 19 17:43:27 2008 -0600 @@ -5,6 +5,8 @@ * * See http://www.opengroup.org/onlinepubs/009695399/utilities/tty.html +USE_TTY(NEWTOY(tty, "s", TOYFLAG_BIN)) + config TTY bool "tty" default y diff -r d4176f3f3835 -r 163498bf547b toys/which.c --- a/toys/which.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/which.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * Not in SUSv3. +USE_WHICH(NEWTOY(which, "a", TOYFLAG_USR|TOYFLAG_BIN)) + config WHICH bool "which" default y diff -r d4176f3f3835 -r 163498bf547b toys/yes.c --- a/toys/yes.c Sat Jan 19 17:08:39 2008 -0600 +++ b/toys/yes.c Sat Jan 19 17:43:27 2008 -0600 @@ -6,6 +6,8 @@ * * Not in SUSv3. +USE_YES(NEWTOY(yes, NULL, TOYFLAG_USR|TOYFLAG_BIN)) + config YES bool "yes" default y