aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2012-08-25 14:25:22 -0500
committerRob Landley <rob@landley.net>2012-08-25 14:25:22 -0500
commit3a9241add947cb6d24b5de7a8927517426a78795 (patch)
treed122ab6570439cd6b17c7d73ed8d4e085e0b8a95
parent689f095bc976417bf50810fe59a3b3ac32b21105 (diff)
downloadtoybox-3a9241add947cb6d24b5de7a8927517426a78795.tar.gz
Move commands into "posix", "lsb", and "other" menus/directories.
-rw-r--r--Config.in6
-rw-r--r--Makefile4
-rwxr-xr-xscripts/genconfig.sh23
-rwxr-xr-xscripts/make.sh33
-rw-r--r--toys/lsb/dmesg.c (renamed from toys/dmesg.c)0
-rw-r--r--toys/lsb/hostname.c (renamed from toys/hostname.c)0
-rw-r--r--toys/lsb/killall.c (renamed from toys/killall.c)0
-rw-r--r--toys/lsb/mknod.c (renamed from toys/mknod.c)0
-rw-r--r--toys/lsb/mktemp.c (renamed from toys/mktemp.c)0
-rw-r--r--toys/lsb/passwd.c (renamed from toys/passwd.c)0
-rw-r--r--toys/lsb/pidof.c (renamed from toys/pidof.c)0
-rw-r--r--toys/lsb/seq.c (renamed from toys/seq.c)0
-rw-r--r--toys/lsb/sync.c (renamed from toys/sync.c)0
-rw-r--r--toys/other/bzcat.c (renamed from toys/bzcat.c)0
-rw-r--r--toys/other/catv.c (renamed from toys/catv.c)0
-rw-r--r--toys/other/chroot.c (renamed from toys/chroot.c)0
-rw-r--r--toys/other/chvt.c (renamed from toys/chvt.c)0
-rw-r--r--toys/other/clear.c (renamed from toys/clear.c)0
-rw-r--r--toys/other/count.c (renamed from toys/count.c)0
-rw-r--r--toys/other/dos2unix.c (renamed from toys/dos2unix.c)0
-rw-r--r--toys/other/free.c (renamed from toys/free.c)0
-rw-r--r--toys/other/hello.c (renamed from toys/hello.c)0
-rw-r--r--toys/other/help.c (renamed from toys/help.c)0
-rw-r--r--toys/other/insmod.c (renamed from toys/insmod.c)0
-rw-r--r--toys/other/login.c (renamed from toys/login.c)0
-rw-r--r--toys/other/lsmod.c (renamed from toys/lsmod.c)0
-rw-r--r--toys/other/mdev.c (renamed from toys/mdev.c)0
-rw-r--r--toys/other/mke2fs.c (renamed from toys/mke2fs.c)0
-rw-r--r--toys/other/mkswap.c (renamed from toys/mkswap.c)0
-rw-r--r--toys/other/modinfo.c (renamed from toys/modinfo.c)0
-rw-r--r--toys/other/mountpoint.c (renamed from toys/mountpoint.c)0
-rw-r--r--toys/other/netcat.c (renamed from toys/netcat.c)0
-rw-r--r--toys/other/oneit.c (renamed from toys/oneit.c)0
-rw-r--r--toys/other/printenv.c (renamed from toys/printenv.c)0
-rw-r--r--toys/other/readlink.c (renamed from toys/readlink.c)0
-rw-r--r--toys/other/realpath.c (renamed from toys/realpath.c)0
-rw-r--r--toys/other/rmmod.c (renamed from toys/rmmod.c)0
-rw-r--r--toys/other/setsid.c (renamed from toys/setsid.c)0
-rw-r--r--toys/other/sha1sum.c (renamed from toys/sha1sum.c)0
-rw-r--r--toys/other/swapoff.c (renamed from toys/swapoff.c)0
-rw-r--r--toys/other/swapon.c (renamed from toys/swapon.c)0
-rw-r--r--toys/other/tac.c (renamed from toys/tac.c)0
-rw-r--r--toys/other/taskset.c (renamed from toys/taskset.c)0
-rw-r--r--toys/other/toysh.c (renamed from toys/toysh.c)0
-rw-r--r--toys/other/truncate.c (renamed from toys/truncate.c)0
-rw-r--r--toys/other/unshare.c (renamed from toys/unshare.c)0
-rw-r--r--toys/other/uptime.c (renamed from toys/uptime.c)0
-rw-r--r--toys/other/usleep.c (renamed from toys/usleep.c)0
-rw-r--r--toys/other/vmstat.c (renamed from toys/vmstat.c)0
-rw-r--r--toys/other/w.c (renamed from toys/w.c)0
-rw-r--r--toys/other/which.c (renamed from toys/which.c)0
-rw-r--r--toys/other/whoami.c (renamed from toys/whoami.c)0
-rw-r--r--toys/other/yes.c (renamed from toys/yes.c)0
-rw-r--r--toys/posix/basename.c (renamed from toys/basename.c)0
-rw-r--r--toys/posix/cal.c (renamed from toys/cal.c)0
-rw-r--r--toys/posix/cat.c (renamed from toys/cat.c)0
-rw-r--r--toys/posix/chgrp.c (renamed from toys/chgrp.c)0
-rw-r--r--toys/posix/chmod.c (renamed from toys/chmod.c)0
-rw-r--r--toys/posix/cksum.c (renamed from toys/cksum.c)0
-rw-r--r--toys/posix/cmp.c (renamed from toys/cmp.c)0
-rw-r--r--toys/posix/comm.c (renamed from toys/comm.c)0
-rw-r--r--toys/posix/cp.c (renamed from toys/cp.c)0
-rw-r--r--toys/posix/date.c (renamed from toys/date.c)0
-rw-r--r--toys/posix/df.c (renamed from toys/df.c)0
-rw-r--r--toys/posix/dirname.c (renamed from toys/dirname.c)0
-rw-r--r--toys/posix/echo.c (renamed from toys/echo.c)0
-rw-r--r--toys/posix/env.c (renamed from toys/env.c)0
-rw-r--r--toys/posix/false.c (renamed from toys/false.c)0
-rw-r--r--toys/posix/head.c (renamed from toys/head.c)0
-rw-r--r--toys/posix/id.c (renamed from toys/id.c)0
-rw-r--r--toys/posix/kill.c (renamed from toys/kill.c)0
-rw-r--r--toys/posix/link.c (renamed from toys/link.c)0
-rw-r--r--toys/posix/ln.c (renamed from toys/ln.c)0
-rw-r--r--toys/posix/logname.c (renamed from toys/logname.c)0
-rw-r--r--toys/posix/ls.c (renamed from toys/ls.c)0
-rw-r--r--toys/posix/mkdir.c (renamed from toys/mkdir.c)0
-rw-r--r--toys/posix/mkfifo.c (renamed from toys/mkfifo.c)0
-rw-r--r--toys/posix/nice.c (renamed from toys/nice.c)0
-rw-r--r--toys/posix/nohup.c (renamed from toys/nohup.c)0
-rw-r--r--toys/posix/od.c (renamed from toys/od.c)0
-rw-r--r--toys/posix/patch.c (renamed from toys/patch.c)0
-rw-r--r--toys/posix/pwd.c (renamed from toys/pwd.c)0
-rw-r--r--toys/posix/rmdir.c (renamed from toys/rmdir.c)0
-rw-r--r--toys/posix/sed.c (renamed from toys/sed.c)0
-rw-r--r--toys/posix/sleep.c (renamed from toys/sleep.c)0
-rw-r--r--toys/posix/sort.c (renamed from toys/sort.c)0
-rw-r--r--toys/posix/tail.c (renamed from toys/tail.c)0
-rw-r--r--toys/posix/tee.c (renamed from toys/tee.c)0
-rw-r--r--toys/posix/true.c (renamed from toys/true.c)0
-rw-r--r--toys/posix/tty.c (renamed from toys/tty.c)0
-rw-r--r--toys/posix/uname.c (renamed from toys/uname.c)0
-rw-r--r--toys/posix/uniq.c (renamed from toys/uniq.c)0
-rw-r--r--toys/posix/unlink.c (renamed from toys/unlink.c)0
-rw-r--r--toys/posix/wc.c (renamed from toys/wc.c)0
-rw-r--r--toys/posix/who.c (renamed from toys/who.c)0
-rw-r--r--toys/posix/xargs.c (renamed from toys/xargs.c)0
96 files changed, 46 insertions, 20 deletions
diff --git a/Config.in b/Config.in
index 7378fbcc..02137d85 100644
--- a/Config.in
+++ b/Config.in
@@ -1,6 +1,6 @@
mainmenu "ToyBox Configuration"
-menu "Global settings"
+menu "Toybox global settings"
config TOYBOX
bool
@@ -46,6 +46,6 @@ endmenu
source generated/Config.probed
-menu "Toys"
+comment ""
+
source generated/Config.in
-endmenu
diff --git a/Makefile b/Makefile
index b224f3e3..bbab258e 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
all: toybox
-toybox toybox_unstripped: .config *.[ch] lib/*.[ch] toys/*.[ch] scripts/*.sh
+toybox toybox_unstripped: .config *.[ch] lib/*.[ch] toys/*.h toys/*/*.c scripts/*.sh
scripts/make.sh
.PHONY: clean distclean baseline bloatcheck install install_flat \
@@ -12,7 +12,7 @@ toybox toybox_unstripped: .config *.[ch] lib/*.[ch] toys/*.[ch] scripts/*.sh
include kconfig/Makefile
$(KCONFIG_TOP): generated/Config.in
-generated/Config.in: toys/*.c scripts/genconfig.sh
+generated/Config.in: toys/*/*.c scripts/genconfig.sh
scripts/genconfig.sh
HOSTCC?=cc
diff --git a/scripts/genconfig.sh b/scripts/genconfig.sh
index 2334d8a9..accf0dba 100755
--- a/scripts/genconfig.sh
+++ b/scripts/genconfig.sh
@@ -26,14 +26,25 @@ EOF
genconfig()
{
- # extract config stanzas from each command source file, in alphabetical order
-
- for i in $(ls -1 toys/*.c)
+ # I could query the directory here, but I want to control the order
+ # and capitalization in the menu
+ for j in Posix LSB Other
do
- # Grab the config block for Config.in
- echo "# $i"
- sed -n '/^\*\//q;/^config [A-Z]/,$p' $i || return 1
+ echo "menu \"$j commands\""
echo
+
+ DIR=$(echo $j | tr A-Z a-z)
+
+ # extract config stanzas from each source file, in alphabetical order
+ for i in $(ls -1 toys/$DIR/*.c)
+ do
+ # Grab the config block for Config.in
+ echo "# $i"
+ sed -n '/^\*\//q;/^config [A-Z]/,$p' $i || return 1
+ echo
+ done
+
+ echo endmenu
done
}
diff --git a/scripts/make.sh b/scripts/make.sh
index b61d5b9b..2f52b21b 100755
--- a/scripts/make.sh
+++ b/scripts/make.sh
@@ -4,19 +4,27 @@
source ./configure
+if [ -z ".config" ]
+then
+ echo "No .config (see "make help" for configuration options)."
+ exit 1
+fi
+
echo "Extract configuration information from toys/*.c files..."
scripts/genconfig.sh
-echo "Generate headers from toys/*.c..."
+echo "Generate headers from toys/*/*.c..."
# 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.
+echo "generated/newtoys.h"
+
function newtoys()
{
- for i in toys/*.c
+ for i in toys/*/*.c
do
sed -n -e '1,/^config [A-Z]/s/^USE_/&/p' $i || exit 1
done
@@ -25,13 +33,13 @@ echo "NEWTOY(toybox, NULL, TOYFLAG_STAYROOT)" > generated/newtoys.h
newtoys | sed 's/\(.*TOY(\)\([^,]*\),\(.*\)/\2 \1\2,\3/' | sort -k 1,1 \
| sed 's/[^ ]* //' >> generated/newtoys.h
-# Extract global structure definitions and flag definitions from toys/*.c
+# Extract global structure definitions and flag definitions from toys/*/*.c
function getglobals()
{
- for i in toys/*.c
+ for i in toys/*/*.c
do
- NAME="$(echo $i | sed 's@toys/\(.*\)\.c@\1@')"
+ NAME="$(echo $i | sed 's@.*/\(.*\)\.c@\1@')"
echo -e "// $i\n"
sed -n -e '/^DEFINE_GLOBALS(/,/^)/b got;b;:got' \
@@ -58,6 +66,8 @@ function getglobals()
done
}
+echo "generated/globals.h"
+
GLOBSTRUCT="$(getglobals)"
(
echo "$GLOBSTRUCT"
@@ -67,6 +77,7 @@ GLOBSTRUCT="$(getglobals)"
echo "} this;"
) > generated/globals.h
+echo "generated/help.h"
# Only recreate generated/help.h if python is installed
if [ ! -z "$(which python)" ] && [ ! -z "$(grep 'CONFIG_HELP=y' .config)" ]
then
@@ -100,20 +111,24 @@ sed -n \
-e 's/.*/#define USE_&(...) __VA_ARGS__/p' \
.config > generated/config.h || exit 1
-# Extract a list of toys/*.c files to compile from the data in ".config" with
-# sed, sort, and tr:
+# Extract a list of toys/*/*.c files to compile from the data in ".config":
# 1) Grab the XXX part of all CONFIG_XXX entries, removing everything after the
# second underline
# 2) Sort the list, keeping only one of each entry.
# 3) Convert to lower case.
# 4) Remove toybox itself from the list (as that indicates global symbols).
-# 5) Add "toys/" prefix and ".c" suffix.
+# 5) Add "toys/*/" prefix and ".c" suffix.
-TOYFILES=$(cat .config | sed -nre 's/^CONFIG_(.*)=y/\1/;t skip;b;:skip;s/_.*//;p' | sort -u | tr A-Z a-z | grep -v '^toybox$' | sed 's@\(.*\)@toys/\1.c@' )
+TOYFILES=$(sed -nre 's/^CONFIG_(.*)=y/\1/;t skip;b;:skip;s/_.*//;p' < .config | sort -u | tr A-Z a-z | grep -v '^toybox$' | sed 's@\(.*\)@toys/\*/\1.c@')
echo "Library probe..."
+# We trust --as-needed to remove each library if we don't use any symbols
+# out of it, this loop is because the compiler has no way to ignore a library
+# that doesn't exist, so we have to detect and skip nonexistent libraries
+# for it.
+
OPTLIBS="$(for i in util crypt m; do echo "int main(int argc, char *argv[]) {return 0;}" | ${CROSS_COMPILE}${CC} -xc - -o /dev/null -Wl,--as-needed -l$i > /dev/null 2>/dev/null && echo -l$i; done)"
echo "Compile toybox..."
diff --git a/toys/dmesg.c b/toys/lsb/dmesg.c
index 95b023d6..95b023d6 100644
--- a/toys/dmesg.c
+++ b/toys/lsb/dmesg.c
diff --git a/toys/hostname.c b/toys/lsb/hostname.c
index 5f1c20e7..5f1c20e7 100644
--- a/toys/hostname.c
+++ b/toys/lsb/hostname.c
diff --git a/toys/killall.c b/toys/lsb/killall.c
index b4e06944..b4e06944 100644
--- a/toys/killall.c
+++ b/toys/lsb/killall.c
diff --git a/toys/mknod.c b/toys/lsb/mknod.c
index fb727bc3..fb727bc3 100644
--- a/toys/mknod.c
+++ b/toys/lsb/mknod.c
diff --git a/toys/mktemp.c b/toys/lsb/mktemp.c
index e82256de..e82256de 100644
--- a/toys/mktemp.c
+++ b/toys/lsb/mktemp.c
diff --git a/toys/passwd.c b/toys/lsb/passwd.c
index 122cd942..122cd942 100644
--- a/toys/passwd.c
+++ b/toys/lsb/passwd.c
diff --git a/toys/pidof.c b/toys/lsb/pidof.c
index d8f24be8..d8f24be8 100644
--- a/toys/pidof.c
+++ b/toys/lsb/pidof.c
diff --git a/toys/seq.c b/toys/lsb/seq.c
index a41537c0..a41537c0 100644
--- a/toys/seq.c
+++ b/toys/lsb/seq.c
diff --git a/toys/sync.c b/toys/lsb/sync.c
index e6990fd8..e6990fd8 100644
--- a/toys/sync.c
+++ b/toys/lsb/sync.c
diff --git a/toys/bzcat.c b/toys/other/bzcat.c
index b8e16958..b8e16958 100644
--- a/toys/bzcat.c
+++ b/toys/other/bzcat.c
diff --git a/toys/catv.c b/toys/other/catv.c
index c4479d9c..c4479d9c 100644
--- a/toys/catv.c
+++ b/toys/other/catv.c
diff --git a/toys/chroot.c b/toys/other/chroot.c
index 06823796..06823796 100644
--- a/toys/chroot.c
+++ b/toys/other/chroot.c
diff --git a/toys/chvt.c b/toys/other/chvt.c
index 9afb059b..9afb059b 100644
--- a/toys/chvt.c
+++ b/toys/other/chvt.c
diff --git a/toys/clear.c b/toys/other/clear.c
index 8cfceff3..8cfceff3 100644
--- a/toys/clear.c
+++ b/toys/other/clear.c
diff --git a/toys/count.c b/toys/other/count.c
index 0ec3919d..0ec3919d 100644
--- a/toys/count.c
+++ b/toys/other/count.c
diff --git a/toys/dos2unix.c b/toys/other/dos2unix.c
index 01c90536..01c90536 100644
--- a/toys/dos2unix.c
+++ b/toys/other/dos2unix.c
diff --git a/toys/free.c b/toys/other/free.c
index 99dca86d..99dca86d 100644
--- a/toys/free.c
+++ b/toys/other/free.c
diff --git a/toys/hello.c b/toys/other/hello.c
index 06aa470b..06aa470b 100644
--- a/toys/hello.c
+++ b/toys/other/hello.c
diff --git a/toys/help.c b/toys/other/help.c
index 5e2b6ec4..5e2b6ec4 100644
--- a/toys/help.c
+++ b/toys/other/help.c
diff --git a/toys/insmod.c b/toys/other/insmod.c
index e794828c..e794828c 100644
--- a/toys/insmod.c
+++ b/toys/other/insmod.c
diff --git a/toys/login.c b/toys/other/login.c
index c2c9ba38..c2c9ba38 100644
--- a/toys/login.c
+++ b/toys/other/login.c
diff --git a/toys/lsmod.c b/toys/other/lsmod.c
index 82dbb589..82dbb589 100644
--- a/toys/lsmod.c
+++ b/toys/other/lsmod.c
diff --git a/toys/mdev.c b/toys/other/mdev.c
index b769828f..b769828f 100644
--- a/toys/mdev.c
+++ b/toys/other/mdev.c
diff --git a/toys/mke2fs.c b/toys/other/mke2fs.c
index 47f31f2d..47f31f2d 100644
--- a/toys/mke2fs.c
+++ b/toys/other/mke2fs.c
diff --git a/toys/mkswap.c b/toys/other/mkswap.c
index 87c1550f..87c1550f 100644
--- a/toys/mkswap.c
+++ b/toys/other/mkswap.c
diff --git a/toys/modinfo.c b/toys/other/modinfo.c
index c878fc4e..c878fc4e 100644
--- a/toys/modinfo.c
+++ b/toys/other/modinfo.c
diff --git a/toys/mountpoint.c b/toys/other/mountpoint.c
index 405bb3a5..405bb3a5 100644
--- a/toys/mountpoint.c
+++ b/toys/other/mountpoint.c
diff --git a/toys/netcat.c b/toys/other/netcat.c
index 3da19127..3da19127 100644
--- a/toys/netcat.c
+++ b/toys/other/netcat.c
diff --git a/toys/oneit.c b/toys/other/oneit.c
index 45935918..45935918 100644
--- a/toys/oneit.c
+++ b/toys/other/oneit.c
diff --git a/toys/printenv.c b/toys/other/printenv.c
index 305b3e7d..305b3e7d 100644
--- a/toys/printenv.c
+++ b/toys/other/printenv.c
diff --git a/toys/readlink.c b/toys/other/readlink.c
index 51dbf02f..51dbf02f 100644
--- a/toys/readlink.c
+++ b/toys/other/readlink.c
diff --git a/toys/realpath.c b/toys/other/realpath.c
index 10457cf6..10457cf6 100644
--- a/toys/realpath.c
+++ b/toys/other/realpath.c
diff --git a/toys/rmmod.c b/toys/other/rmmod.c
index d730b45d..d730b45d 100644
--- a/toys/rmmod.c
+++ b/toys/other/rmmod.c
diff --git a/toys/setsid.c b/toys/other/setsid.c
index 1b98315c..1b98315c 100644
--- a/toys/setsid.c
+++ b/toys/other/setsid.c
diff --git a/toys/sha1sum.c b/toys/other/sha1sum.c
index 3229cd12..3229cd12 100644
--- a/toys/sha1sum.c
+++ b/toys/other/sha1sum.c
diff --git a/toys/swapoff.c b/toys/other/swapoff.c
index fba0de83..fba0de83 100644
--- a/toys/swapoff.c
+++ b/toys/other/swapoff.c
diff --git a/toys/swapon.c b/toys/other/swapon.c
index 16ce8d1f..16ce8d1f 100644
--- a/toys/swapon.c
+++ b/toys/other/swapon.c
diff --git a/toys/tac.c b/toys/other/tac.c
index cd5f83f6..cd5f83f6 100644
--- a/toys/tac.c
+++ b/toys/other/tac.c
diff --git a/toys/taskset.c b/toys/other/taskset.c
index 7ac3b572..7ac3b572 100644
--- a/toys/taskset.c
+++ b/toys/other/taskset.c
diff --git a/toys/toysh.c b/toys/other/toysh.c
index c2f494d3..c2f494d3 100644
--- a/toys/toysh.c
+++ b/toys/other/toysh.c
diff --git a/toys/truncate.c b/toys/other/truncate.c
index dccd3215..dccd3215 100644
--- a/toys/truncate.c
+++ b/toys/other/truncate.c
diff --git a/toys/unshare.c b/toys/other/unshare.c
index 1df9b758..1df9b758 100644
--- a/toys/unshare.c
+++ b/toys/other/unshare.c
diff --git a/toys/uptime.c b/toys/other/uptime.c
index 83fb6b1e..83fb6b1e 100644
--- a/toys/uptime.c
+++ b/toys/other/uptime.c
diff --git a/toys/usleep.c b/toys/other/usleep.c
index 6efc0c16..6efc0c16 100644
--- a/toys/usleep.c
+++ b/toys/other/usleep.c
diff --git a/toys/vmstat.c b/toys/other/vmstat.c
index 2826ced5..2826ced5 100644
--- a/toys/vmstat.c
+++ b/toys/other/vmstat.c
diff --git a/toys/w.c b/toys/other/w.c
index 50f2283b..50f2283b 100644
--- a/toys/w.c
+++ b/toys/other/w.c
diff --git a/toys/which.c b/toys/other/which.c
index 4923859c..4923859c 100644
--- a/toys/which.c
+++ b/toys/other/which.c
diff --git a/toys/whoami.c b/toys/other/whoami.c
index 6d9233d1..6d9233d1 100644
--- a/toys/whoami.c
+++ b/toys/other/whoami.c
diff --git a/toys/yes.c b/toys/other/yes.c
index a44937b3..a44937b3 100644
--- a/toys/yes.c
+++ b/toys/other/yes.c
diff --git a/toys/basename.c b/toys/posix/basename.c
index 9f228b41..9f228b41 100644
--- a/toys/basename.c
+++ b/toys/posix/basename.c
diff --git a/toys/cal.c b/toys/posix/cal.c
index 1c018e2f..1c018e2f 100644
--- a/toys/cal.c
+++ b/toys/posix/cal.c
diff --git a/toys/cat.c b/toys/posix/cat.c
index 81bfcafd..81bfcafd 100644
--- a/toys/cat.c
+++ b/toys/posix/cat.c
diff --git a/toys/chgrp.c b/toys/posix/chgrp.c
index ad4e351a..ad4e351a 100644
--- a/toys/chgrp.c
+++ b/toys/posix/chgrp.c
diff --git a/toys/chmod.c b/toys/posix/chmod.c
index e41598c1..e41598c1 100644
--- a/toys/chmod.c
+++ b/toys/posix/chmod.c
diff --git a/toys/cksum.c b/toys/posix/cksum.c
index 213bc74a..213bc74a 100644
--- a/toys/cksum.c
+++ b/toys/posix/cksum.c
diff --git a/toys/cmp.c b/toys/posix/cmp.c
index 0afca381..0afca381 100644
--- a/toys/cmp.c
+++ b/toys/posix/cmp.c
diff --git a/toys/comm.c b/toys/posix/comm.c
index 1c2267ac..1c2267ac 100644
--- a/toys/comm.c
+++ b/toys/posix/comm.c
diff --git a/toys/cp.c b/toys/posix/cp.c
index bc922b3d..bc922b3d 100644
--- a/toys/cp.c
+++ b/toys/posix/cp.c
diff --git a/toys/date.c b/toys/posix/date.c
index 925565a2..925565a2 100644
--- a/toys/date.c
+++ b/toys/posix/date.c
diff --git a/toys/df.c b/toys/posix/df.c
index 72c15195..72c15195 100644
--- a/toys/df.c
+++ b/toys/posix/df.c
diff --git a/toys/dirname.c b/toys/posix/dirname.c
index 5dc60181..5dc60181 100644
--- a/toys/dirname.c
+++ b/toys/posix/dirname.c
diff --git a/toys/echo.c b/toys/posix/echo.c
index 6fb9e43d..6fb9e43d 100644
--- a/toys/echo.c
+++ b/toys/posix/echo.c
diff --git a/toys/env.c b/toys/posix/env.c
index 7cda85f9..7cda85f9 100644
--- a/toys/env.c
+++ b/toys/posix/env.c
diff --git a/toys/false.c b/toys/posix/false.c
index 7b570bd2..7b570bd2 100644
--- a/toys/false.c
+++ b/toys/posix/false.c
diff --git a/toys/head.c b/toys/posix/head.c
index 1d1e54a3..1d1e54a3 100644
--- a/toys/head.c
+++ b/toys/posix/head.c
diff --git a/toys/id.c b/toys/posix/id.c
index 973cda5a..973cda5a 100644
--- a/toys/id.c
+++ b/toys/posix/id.c
diff --git a/toys/kill.c b/toys/posix/kill.c
index e64a146b..e64a146b 100644
--- a/toys/kill.c
+++ b/toys/posix/kill.c
diff --git a/toys/link.c b/toys/posix/link.c
index 69a9a60f..69a9a60f 100644
--- a/toys/link.c
+++ b/toys/posix/link.c
diff --git a/toys/ln.c b/toys/posix/ln.c
index 6f55971a..6f55971a 100644
--- a/toys/ln.c
+++ b/toys/posix/ln.c
diff --git a/toys/logname.c b/toys/posix/logname.c
index b93e3366..b93e3366 100644
--- a/toys/logname.c
+++ b/toys/posix/logname.c
diff --git a/toys/ls.c b/toys/posix/ls.c
index 1881df71..1881df71 100644
--- a/toys/ls.c
+++ b/toys/posix/ls.c
diff --git a/toys/mkdir.c b/toys/posix/mkdir.c
index 90329019..90329019 100644
--- a/toys/mkdir.c
+++ b/toys/posix/mkdir.c
diff --git a/toys/mkfifo.c b/toys/posix/mkfifo.c
index ab466fc3..ab466fc3 100644
--- a/toys/mkfifo.c
+++ b/toys/posix/mkfifo.c
diff --git a/toys/nice.c b/toys/posix/nice.c
index 84975dfc..84975dfc 100644
--- a/toys/nice.c
+++ b/toys/posix/nice.c
diff --git a/toys/nohup.c b/toys/posix/nohup.c
index e11fb094..e11fb094 100644
--- a/toys/nohup.c
+++ b/toys/posix/nohup.c
diff --git a/toys/od.c b/toys/posix/od.c
index dfde4440..dfde4440 100644
--- a/toys/od.c
+++ b/toys/posix/od.c
diff --git a/toys/patch.c b/toys/posix/patch.c
index 647bb18f..647bb18f 100644
--- a/toys/patch.c
+++ b/toys/posix/patch.c
diff --git a/toys/pwd.c b/toys/posix/pwd.c
index d84c504a..d84c504a 100644
--- a/toys/pwd.c
+++ b/toys/posix/pwd.c
diff --git a/toys/rmdir.c b/toys/posix/rmdir.c
index be93cb69..be93cb69 100644
--- a/toys/rmdir.c
+++ b/toys/posix/rmdir.c
diff --git a/toys/sed.c b/toys/posix/sed.c
index c4eb1a44..c4eb1a44 100644
--- a/toys/sed.c
+++ b/toys/posix/sed.c
diff --git a/toys/sleep.c b/toys/posix/sleep.c
index ef6d827b..ef6d827b 100644
--- a/toys/sleep.c
+++ b/toys/posix/sleep.c
diff --git a/toys/sort.c b/toys/posix/sort.c
index 07a57163..07a57163 100644
--- a/toys/sort.c
+++ b/toys/posix/sort.c
diff --git a/toys/tail.c b/toys/posix/tail.c
index 8783d6ba..8783d6ba 100644
--- a/toys/tail.c
+++ b/toys/posix/tail.c
diff --git a/toys/tee.c b/toys/posix/tee.c
index c11fb5c4..c11fb5c4 100644
--- a/toys/tee.c
+++ b/toys/posix/tee.c
diff --git a/toys/true.c b/toys/posix/true.c
index 582b2cae..582b2cae 100644
--- a/toys/true.c
+++ b/toys/posix/true.c
diff --git a/toys/tty.c b/toys/posix/tty.c
index 661e919a..661e919a 100644
--- a/toys/tty.c
+++ b/toys/posix/tty.c
diff --git a/toys/uname.c b/toys/posix/uname.c
index 185d633e..185d633e 100644
--- a/toys/uname.c
+++ b/toys/posix/uname.c
diff --git a/toys/uniq.c b/toys/posix/uniq.c
index c16c08f1..c16c08f1 100644
--- a/toys/uniq.c
+++ b/toys/posix/uniq.c
diff --git a/toys/unlink.c b/toys/posix/unlink.c
index 19660c5d..19660c5d 100644
--- a/toys/unlink.c
+++ b/toys/posix/unlink.c
diff --git a/toys/wc.c b/toys/posix/wc.c
index 17801188..17801188 100644
--- a/toys/wc.c
+++ b/toys/posix/wc.c
diff --git a/toys/who.c b/toys/posix/who.c
index d407c6b2..d407c6b2 100644
--- a/toys/who.c
+++ b/toys/posix/who.c
diff --git a/toys/xargs.c b/toys/posix/xargs.c
index 0d513253..0d513253 100644
--- a/toys/xargs.c
+++ b/toys/posix/xargs.c