patch should support git extensions: new file mode 100755 the move lines --------- Current status The following commands are done: basename, bzcat, cat, catv, chroot, chvt, count, df, dirname, dmesg, echo, false, hello, mkfifo, oneit, patch, pwd, sha1sum, sleep, sort, sync, tee, touch, true, tty, which, yes The following are partly implemented (usable, but not necessarily complete): bzcat/bunzip2: finish threading, implement bunzip2 command line cp: implement -HLPs help: Implement sub-option merging. netcat/nc: Implement remaining command line options. sh/toysh: Needs lots more work. mdev: Implement exec. readlink: Implement -f right. The following are partial implementations that don't actually do anything yet: mke2fs, md5sum, sed -------- Pending Stuff I personally wrote back in BusyBox, more or less ready to port: halt, losetup, mkswap, mount, poweroff, reboot, seq, sort, switch_root, umount Stuff I worked on in the BusyBox days that needs work: sed losetup mount umount setuidgid e2fs: mke2fs gene2fs e2fsck e2resize tune2fs whois (rfc 954) rsync hex editor All the passwd stuff, and crypto. ----------- TODO applets Low hanging fruit (I have a plan for impelementing these): eject, env, head, kill, ln, mkdir, mknod, mktemp, more, mountpoint, mv, nice, nohup, detach, killall, pidof, ps, realpath, renice, rm, rmdir, setsid, strings, sum, swapoff, swapon, time, touch, uname, uniq, bzip2, uptime, usleep, watch, watchdog, wc, whoami, xargs Requires the suid bit: su To be implemented from the SUSv3 spec: alias, at, batch, bc, bg, break, cal, cd General todo: adjtimex, arping, awk, cksum, clear, cmp, comm, crontab, cut, date, dc, dd, dos2unix, du, find, fold, free, fuser, hdparm, hwclock, install, length, less, linux32, linux64, logger, ls, od, ntpdate, readahead, readprofile, setarch, start-stop-daemon, stat, stty, sysctl, tail, top, tr, unix2dos, vi, who, file passwd: addgroup, adduser, chgrp, chmod, chown, delgroup, deluser, id, last, login, logname, passwd, sulogin pending: fdisk compression: gunzip, gzip, lzmacat, uncompress, unlzma, unzip, uptime, zcat init: init getty (oneit), runlevel shellish: expr, getopt (echo), printenv, printf, test obsolete: ed, fdflush, fdformat, freeramdisk, fsck.minix, makedevs, mkfs.minix, mt, pipe_progress, pivot_root, linuxrc, rdate, rx, uuencode, uudecode funky: dumpkmap, loadkmap, logread, dumpleases network: ether-wake, hostid, hostname, ipaddr, ipcalc, ifconfig, ifdown, ifup, ip, iplink, iproute, iptunnel, nameif, netstat, nslookup, dig, ping, ping6, route, telnet, tftp, traceroute, vconfig, zcip dhcp: dhcpc dhcpd List interfaces, pick interface, broadcast/listen. ifconfig eth? up discover, offer, request, ack Don't daemonize unless we're asked to. Show but don't do mode. No leases file. Look at the interface to see if we already have addr. ifconfig eth? netmask X addr X route add default gw X /etc/resolv.conf wget: wget curl ftp tftp ftpget ftpput daemons: crond, dnsd, fakeidentd, httpd, inetd, klogd, syslogd, telnetd, udhcpd archivers: ar, cpio, rpm2cpio, tar, unzip, zip terminal: deallocvt, fbset, loadfont, mesg, openvt, reset, setconsole, setkeycodes, setlogcons, vlock # chvt modules: insmod, lsmod, modprobe, rmmod e2fsck: mke2fs, chattr, tune2fs, lsattr, fsck diff egrep, fgrep, grep ipcrm, ipcs hexdump, hexedit dpkg, dpkg-deb, rpm run-parts pushd, popd make ------------ Notes to self: Dependency checking: To see which files use which config symbols, do: sed -nr 's/^[a-zA-Z_].*[* \t]([a-zA-Z_].*)\(.*/\1/p' *.c toysh: autoset terminal size (query xterm with ansi sequence) tests: df df . df -t ext3 df -t woot df -P df -P -k df / df // df /blah/.. df /usr/.. df / / httpd: wget http://attacked-host//%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd command line parsing: tar cvCfj . blah.tbz filename.txt tar -cvC. -jf blah.tbz tar -cvfj filename blah tar --long-opt=blah --longop2 blah2 df -a df -t tmpfs df -at tmpfs command line: head -n2 head -n 2 tar xvjfC file.tbz dirname . ps ax Other projects to look at ("sweet 16): httpd, dns->, dhcp->, netcat, mtd, iptables, vi busybox boa: webserver Build on: cygwin, MacOS X. dnsmasq: forwards dns and dhcp. dropbear: needs stunnel to replace openssh. mtd: Memory technology device netfilter (iptables) uclibc uclibc++ udhcp unfs3 (nfs server) valgrind vim x.org mtd: simulators: mtdram, nandsim flashcp: write to flash. (Combine flash_erase and cp.) NOR flash can be written with dd/cp/cat. NAND flash requires nandwrite and nanddump. flash_erase, flash_eraseall: must erase flash before you write it. NOR: flash_eraseall /dev/mtdX cp image /dev/mtdX NAND: nandwrite image/dev/mtdX nandwrite, nanddump: For nand flash (checks to make sure it _is_ NAND.) flash_lock, flash_unlock, flash_info flash_otp_info, flash_otp_dump: One Time Programming (OTP sector) mtd_debug ftl_check, ftl_format, docfdisk, doc_loadbios, nftldump, nftl_format: Microsoft Flash Translation Layer. (Disc on Chip) unused, historic. rfddump, rfdformat: "some exotic flash translation layer". jffs2dump, mkfs.jffs, mkfs.jffs2, sumtool: Journaling Fast Filesystem kexec: http://www.xmission.com/~ebiederm/files/kexec/ bunzip: svn-7665 error_exit() setjmp/longjmp stuff. # initialize exitval to nonzero? get_optflags() getline() allocate own buffer handle embedded NUL bytes. make multiplexer optional? (Nope: infrastructure still needed.) Web page: old toys scripts? Each toy has: name main() struct data; usage (short long example info) path (/usr/sbin) Makefile static standalone clean distclean config Building out of tree. blueberry.py Configuration system: menuconfig Help system: man pages html pages builtin help: none/terse/verbose compressed Remove xfopen: we have get_line() on an fd. Patch: offset at which patches apply Location of posibly reversed patches Show failing hunk