TODO list for busybox in no particular order. Just because something
is listed here doesn't mean that it is going to be added to busybox,
or that doing so is even a good idea. It just means that I _might_ get
around to it some time. If you have any good ideas, please let me know.

* login/sulogin/passwd/getty/etc are part of tinylogin, and so are not
    needed or wanted in busybox (or else I'd have to link to libcrypt).

* We _were_ going to split networking apps into a new package called 
    netkit-tiny.  Per discussions on the mailing list, this isn't going
    to happen.  False alarm.  Sorry about the confusion.  

* The busybox shell, lash, is really too weak for serious use, although it is
    possible to run many simple systems with it.  BusyBox 0.49 was supposed to
    have a new shell, updated to understand full Bourne grammer.  Well, that
    simply didn't happen in time for the release.  A rewrite is in progress
    that will result in a new shell that understands the full Bourne grammar.
    This new shell is being championed by Larry Doolittle
    <ldoolitt@recycle.lbl.gov>, and could use your help.  Please see the work
    in progress at http://doolittle.faludi.com/~larry/parser.html and help
    us out.

 -Erik

-----------

Possible apps to include some time:

* hwclock
* group/commonize strings, remove dups (for i18n, l10n)

-----------

Write a fixup_globals function to do just that right before calling
non-forking applets.  Or, just always fork in the shell...

-----------------------

Run the following:

    rm -f busybox && make LDFLAGS+=-nostdlib 2>&1 | \
	sed -ne 's/.*undefined reference to `\(.*\)..*/\1/gp' | sort | uniq

reveals the list of all external (i.e. libc) things that BusyBox depends on.
It would be a very nice thing to reduce this list to an absolute minimum, to
reduce the footprint of busybox, especially when staticly linking with
libraries such as uClibc.

-----------------------

Compile with debugging on, run 'nm --size-sort ./busybox'
and then start with the biggest things and make them smaller...

-----------------------

 du.c probably ought to have an -x switch like GNU du does...

------------------------------------------------------------------
