Major build system updates...
[oweals/busybox.git] / Changelog
index 378b698e377acbc25783ca4966c6d6061e826cba..d81207c9d231df0f93c817627ab27e4769aeecc1 100644 (file)
--- a/Changelog
+++ b/Changelog
+0.43
+       * Busybox now includes a shell!  It currently costs 7.5 k (plus an
+           additional 2.5 k if you compile in command line editing).  Handles
+           job control, has the usual set of builtins, and does everything
+           except for handling programming statements (if, while, etc...)
+       * Busybox can now work perfectly when /proc is disabled, thereby 
+           saving a bunch of memory (kernel /proc support is not thin).  This
+           is done by making use of some nice kernel patches I wrote up to
+           support the features that busybox requires and that /proc usually
+           provides.  To enable this, turn on BB_FEATURE_USE_DEVPS_PATCH and
+           patch your kernel with the devps patch in the kernel-patches/
+           directory. 
+       * Wrote basename, killall, and uptime.
+       * Added freeramdisk, which will free up all memory associated
+           with a ram disk.  Contributed by Emanuele Caratti <wiz@iol.it>
+           and then adjusted a bit by me.
+       * Added tr and dirname from John Lombardo <john@deltanet.com> 
+       * Added echo and test (from me).
+       * tar wouldn't create directory entries that don't end in '/',
+           now it does (thanks to Avery Pennarun <apenwarr@worldvisions.ca>)
+       * Several fixes from Pavel Roskin <pavel_roskin@geocities.com>:
+           -  When `tail' fails to open a file it now exits.
+           - When `syslogd' is given the `-n' option it should still use 
+               fork() for running klogd.
+       * nslookup types are now changed to u_int32_t (instead of uint32_t)
+           changed per a patch from Pascal Bellard <pascal.bellard@ascend.com>
+       * Fixed "du" so it gives the same answers as GNU "du" (busybox du used 
+           to count hard-linked files more then once).  Many thanks to 
+           Friedrich Vedder <fwv@myrtle.lahn.de> for the fix.
+       * Removed /proc dependancies for init and free (while maintaining 
+           exactly the same functionality).  /proc takes up 90k of kernel 
+           space, so it is nice to avoid using it at all costs.
+       * init no longer tries to mount /proc (unless there is less the 1 meg 
+           free).  Use of /proc (or not) is policy that should be set up in 
+           /etc/fstab (or in hardcoded scripts), not in init.
+       * Fixed rebooting when init runs as an initrd.
+       * Fixes and updates from Karl M. Hegbloom  <karlheg@debian.org>
+           - update.c rewritten to look more like update-2.11
+           - moveed the inode hash out of du.c and into utility.c to make 
+               it a common resource that can be used by other apps.
+           - cp_mv.c now checks inodes to see if a source and dest are
+               the same, and prints an error (instead of endlessly looping).
+           - mv now attempts to do a rename, and will fall back to doing
+               a copy only if the rename fails.
+       * Several fixes from Pavel Roskin <pavel_roskin@geocities.com>:
+           - Fixes to sort.  Removed "-g", fixed and added "-r"
+           - Fixes to the makefile for handling "strip"
+       * An initial telnet implementation was added by 
+           Randolph Chung <tausq@debian.org>.
+       * Fixed a bug where "sed 's/foo/bar/g'" (i.e. a script w/o a "-e")
+       * ps now supports BB_FEATURE_AUTOWIDTH, and can adjust its width
+           to match the terminal (defaults to width=79 when this is off).
+       * Fixed mount'ing loop devices when the filesystem type was not 
+           specified.  It used to revert to non-loop after the first try.
+
+
+       -Erik Andersen
+
+
+0.42
+
+        * Fairly massive restructuring of umount.c to deal with remounting 
+         busy devices read-only. Adds a -r option to control that; it is 
+         optionally compiled in with BB_FEATURE_REMOUNT
+       * Added a bunch of functions to mtab.c to interact with the
+         {get,set,end}mntent interface; as it turns out, those functions do
+         not appear to be re-entrant, and that causes a lot of problems with
+         the way umount was originally written.
+       * Makes init send TERM and KILL (instead of HUP and KILL) on reboot
+         to be more consistent with sysvinit
+       * Changes to init.c to use the new -r option to umount. Also increased
+         the sleep time between the time the TERM and KILL signals are sent
+
+        - Randolph Chung
+
+
+       * cp.c, mv.c: removed, replaced by cp_mv.c which has been
+           extensively rewritten from the original cp.c.
+       * Fixed cp and mv so if the source and destination are a the
+           same directory it will print an error and continue.
+       * Also added a warning message to the `mv' usage string saying that
+           this is not GNU mv, and it will break hard links. cp also breaks
+           hard links.
+       * ln.c: implemented `-n' switch, no-deref symlinks.
+       * include<sys/param.h>: and use PATH_MAX everywhere.  busybox: File
+       * name buffer overrun guards to prevent future crashes.
+           - Always check exit status.
+           - Purge all use of `creat()', replace with `open()'.
+       * utility.c 
+           - recursiveAction was overriding the value of followLinks thus
+             ignoring it.
+           - isDirectory now takes a followLinks boolean, updated all callers
+           - copyFile had the followLinks logic reversed.
+       * messages.c: New file. Put common error message strings all in
+           one place in an attempt to shrink the binary a little.
+
+       -Karl M. Hegbloom
+
+
+       * changed fsck_minix.c to reduce its .bss size significantly
+         -beppu -piptigger
+       * Made tar creation support in busybox tar optional.  You no longer
+       * _have_ to put a "-" in front of tar options.  Tar could inadvertently
+       * change permissions and ownership on
+           certain directories pointed to by symlinks.
+       * Made grep and grep -h do the right thing wrt printing
+           the file name (it failed to print files names in many cases).
+       * Fix a namespace aliasing problem wereby if du was built in, the 
+           symlink for both du and dutmp would be installed, or then rm was
+           built in, the symlinks for both rm and rmmod would be installed.
+       * Added a closelog() to init.c after loging -- fix thanks to 
+           Taketoshi Sano <kgh12351@nifty.ne.jp>
+       * Rewrote and simplified logger.  Added the "-t" option, and made it
+           behave itself a bit better.
+       * Optional support contributed by Ben Collins <bcollins@debian.org> 
+           for the kernel init chroot patch by Werner Almesberger, which
+           allows init to chroot to a new device, and umount the old one.
+       * Fixed bug that wouldn't let one chown a symlink -- it would
+           always dereference before.  -beppu
+       * Fixed a bug where init could have reference already freed memory.
+           Found and fixed by Taketoshi Sano <kgh12351@nifty.ne.jp>
+       * Several contributions from Friedrich Vedder <fwv@myrtle.lahn.de>
+       * Added (and documented) "-n" option for head
+       * Cleanup for a number of usage messages -- also 
+           contributed Friedrich Vedder <fwv@myrtle.lahn.de>
+       * Cosmetic fix to busybox.c (Don't print a comma at the
+           end of line if there are no more application names).
+       * Fixed a stupid bug in "head" option handling ("head -n" 
+           would segfault).
+       * Moved commonly used functions "xmalloc()" and "exit()"
+           to utility.c (with proper #ifdef's).
+       * Created a tiny tail implementation, removing -c, -q, -v, and making
+           tail -f work only with a single file.  This reduced tail from 6k to
+           2.4k.  The bigger/more featured tail can still be had by disabling
+           BB_FEATURE_SIMPLE_TAIL in busybox.defs.h
+       * Ping now falls back to doing the right thing if /etc/protocols
+           turns up missing.
+       * Fixed mount and umount.  Previously they could leak loop device 
+           allocations, causing the system to quickly run out.  Fix for umount
+           by Ben Collins <bcollins@debian.org>, and mount was fixed by me.
+       * ls formatting on eight charactor user names fixed by 
+           Randolph Chung <tausq@debian.org>.
+       * cp could, when copying symlinks, change permissions of the
+           files pointed to by the symlinks.
+       * Several fixes from Pavel Roskin <pavel_roskin@geocities.com>:
+           - `chown' with 1 argument displayed the error incorrectly
+           - `fdflush', `length' and `printf' crashed if run without arguments
+           - `fdflush' tried to flush itself using *argv
+           - added "skip" and "seek" to dd.
+           - ls no longer messus up output when combining files and
+             directories on the command line 
+       * swapoff -a was not working.  Now it is.  
+       * init did not cleanly unmount filesystems on reboot.  Now it does.  
+       * "sed -ne s/foo/bar/" worked but "sed -n -e s/foo/bar/" didn't.
+           Now both work.
+       * Some architectures (PowerPc) assume chars are unsigned, so they could
+           not distinguish between EOF and '\0xFF' in sed.  Sed now uses ints.
+       * Began converting error handling to use some common routines
+           in utility.c
+       * syslogd now has better message handling and ignores SIGHUP.
+       * install.sh had a bug preventing installation to the specified
+           target directory.  Fix from Gilbert Coville <gilbert@mvista.com>
+       * You can now spefify alternative strip commands -- change 
+           also from Gilbert Coville.
+
+
+       -Erik Andersen
+
+0.41
+       * New Apps: wc, hostid, logname, tty, whoami, yes -- all contributed 
+           by Edward Betts <edward@debian.org>
+       * Fixed a bug in both cp and mv preventing 'cp foo/README bar'
+           type commands (file in a directory to another directory) from
+           working.
+       * Fixed a logger bug that caused garbage to be written to the syslog 
+           (unless you used busybox syslog, which hid the bug).  Thanks to
+           Alex Holden <alex@linuxhacker.org> for the fix.
+       * /bin/true and /bin/false were echoing a blank line when run.  
+           Now fixed.
+       * mkdir -p would print an error when asked to mkdir an existing dir
+           with no interveining subdirectories.
+       * Fixed "syslogd -O" so that it works.  Added -o loop option for mount,
+       * and support in umount for loop
+         devices. Support is toggled by MOUNT_LOOP feature -- Ben Collins
+         <bcollins@debian.org>
+       * Several fixes from Marco Pantaleoni <panta@prosa.it> compile in
+       * fullWrite() not only if BB_TAR is defined, but also
+               if BB_CP or BB_MV are (fullWrite() is referenced by copyFile())
+           * add some compiler optimizations to further reduce executable size
+               (as a side note, on my machines the largest code is generated
+               by gcc 2.95.2 with -Os ! The smallest by plain gcc 2.7.2.3 with
+               -O2 -m386 ...)
+           * Compile now won't fail if busybox.def.h defines 
+               BB_FEATURE_LINUXRC but not BB_INIT.  (init_main used to be
+               referenced, but not compiled)
+       * Fixed a bug in setting TERM for serial console support.  TERM now
+           defaults to "ansi" for serial consoles.
+       * Fixed a bug in handling the CONSOLE env. variable for serial
+       * consoles.
+
+       -Erik Andersen, Jan 15, 2000
+
+0.40
+       * New Apps: sort, uniq. -beppu New Apps: lsmod, rmmod -erik New Apps:
+       * fbset contributed by Randolph Chung <tausq@debian.org>.  New App::
+       * loadacm contributed by Peter Novodvorsky <petya@logic.ru>
+           for loading application character maps for Unicode fonts.
+       * Major init re-work.  init now supports inittab (slightly different
+           but similar to sysvinit), allowing me to get all the policy out of
+           init and into the conf file.  It works just fine without inittab
+           being present, but if you dont like the defautl behavior you can
+           now do something about it.  Init is much cleaner as a result.
+       * Fixed an bug in syslogd causing it to stop after 20 minutes. -erik
+       * Fixed an embarrasing segfault in head -beppu Fixed the embarrasing
+       * failure of 'logger -p'. -erik Added the -s option to du -beppu
+       * Re-worked the source tree a bit so it will compile under glibc 2.0.7 
+           with the 2.0.x Linux kernel.
+       * Added 'grep -q' thanks to a patch from "Konstantin Boldyshev" 
+           <konst@voshod.com>.
+       * Grep -i previously failed on UPPER CASE patterns due to a silly 
+           regexp implementation bug that is now fixed.
+       * Fixed a bug where tar would set, and then clear SGID and SUID bits.
+       * Fixed a bug where tar would not set the user and group on device
+           special files.
+       * Fixed a bug where tar would not restore the time to files.  Fixed a
+       * major security problem with tar -- it changed ownership 
+           of any file pointed to by a symlink to 777 (like say libc....)
+           Ouch!!!
+       * cp and mv were very broken when moving directories.  I have rewritten 
+           them so they should now work as expected. 
+       * sed now supports addresses (numeric or regexp, with negation) and 
+           has an append command, thanks to Marco Pantaleoni <panta@prosa.it>
+       * Fixed dmesg.  It wasn't parsing its options (-n or -s) properly.
+       * Some cosmetic fixes to ls output formatting to make it behave more
+           like GNU ls.
+       * Fixed a stupid segfault in kill.  Several fixes from Friedrich Vedder
+       * <fwv@myrtle.lahn.de>:
+           - Added gunzip -t, removed gunzip.c dead code,
+           - fixed several typos
+           - Glibc 2.0.7 and libc5 compile fixes
+       * Fixed a bug where 'mknod --help' would segfault.
+           
+
+       -Erik Andersen, Jan 07, 2000
+
+0.39 
+       * New Apps: ping, hostname, and mkfifo contributed by Randolph Chung
+           <tausq@debian.org>.  3 items off the TODO list!
+       * I wrote free (just calls "cat /proc/meminfo").  Added tail, based on
+       * tail from GNU textutils-1.19, but adjusted
+           to suit my evil purposes.  Costs 6k.  I'll make it smaller
+           sometime.
+       * on reboot, init called 'umount -a -n', which caused errors
+           when BB_MTAB was not enabled.  Changed to 'umount -a', which does
+           the right thing.
+       * init will now try to run /sbin/getty if it is present (for easy
+           integration with the about-to-be-released tinylogin.)
+       * kill now behaves itself properly, added 'kill -l' to list signals 'ls
+       * -l' was failing on long directories, since my_getid was leaking 
+           one file descriptor per file.  Oops.
+       * Fixed rebooting from init.  I'd accidently left some debugging code
+       * in
+           which blocked reboots.
+       * Fixed reboot, halt (and added poweroff) such that they handle it when
+           init is not at PID 1 (like when running in an initrd).
+       * Added a prelinary du implementation.  Some parameter parsing
+           stuff still needs to be added. -beppu (John Beppu
+           <beppu@lineo.com>)
+       * Implemented tee.  -beppu Implemented head. -beppu
+
+       -Erik Andersen, Dec 10, 1999
+
 0.38
        * Fixed a segfault in 'umount -a' when a badly formed /etc/fstab
            file existed.
-       * df will not exit on error, but will try to stat all mounted filesystems.
-       * Fixed tar so uid/gid/permissions on extracted tarballs will be correct.
+       * df will not exit on error, but will stat all mounted filesystems.
+       * Fixed tar so uid/gid/permissions on extracted tarballs will be 
+           correct.
        * Fixed find -name so it properly uses shell wildcard patterns 
            (i.e. `*', `?', and `[]') instead of regular expressions, which
            was causing some confusing and unexpected behavior.
        * Added klogd to syslogd, so now the log will contain both system and
            kernel messages.
-           
-       -Erik Andrsen
+       * syslogd now creates the /dev/log socket to make sure it is there, and
+           is actually a socket with the right permissions.
+       * I've taken a first step to making busybox not need the /proc 
+           filesystem.  Most apps don't need it.  Those that _require_ it, 
+           will complain if you enable them when you disable 
+           BB_FEATURE_USE_PROCFS.
+          
+       -Erik Andersen, Dec 5, 1999
 
 0.37
        * Wrote a micro syslogd, and a logger util (to log things to the syslog
            from the command line or scripts)  With both compiled in, costs 4k.
-       * Fixed 'make install' so symlinks are installed in their proper locations.
-       * Changed the build system slightly so that features can now be enabled
-           or disabled from the busybox.defs.h header file, without trying to 
-           compile in a source file named after that featue (unless that file exists).
-       * Several options are now moved into busybox.defs.h
-       * Now 'rm -R' and 'rm -r' both work.
-       * dd now properly handles input beyond 1 block from stdin.
-       * Fixed a bug where tar unpacked everything a directories. Moved some code 
-           from createPath into mkdir where it belonged, thereby making tar work properly.
-       * Fixed an off-by-one bug in cat.  Given a list of file it wouldn't cat out the
+       * Fixed 'make install' so symlinks are installed in their proper
+       * locations.  Changed the build system slightly so that features can
+       * now be enabled
+           or disabled from the busybox.defs.h header file, without trying to
+           compile in a source file named after that featue (unless that file
+           exists).
+       * Several options are now moved into busybox.defs.h Now 'rm -R' and 'rm
+       * -r' both work.  dd now properly handles input beyond 1 block from
+       * stdin.  Fixed a bug where tar unpacked everything a directories.
+       * Moved some code 
+           from createPath into mkdir where it belonged, thereby making tar
+           work properly.
+       * Fixed an off-by-one bug in cat.  Given a list of file it wouldn't cat
+       * out the
            last file in the list.
-       * Fixed 'ls -ln' so numeric group/uid are presented properly, and fixed 'ls -l' 
-           so when uid/gid is not in /etc/{passwd,group} the numeric group/uid are 
-           presented properly.  
+       * Fixed 'ls -ln' so numeric group/uid are presented properly, and fixed
+       * 'ls -l' 
+           so when uid/gid is not in /etc/{passwd,group} the numeric group/uid
+           are presented properly.  
        * Also added a TODO.
 
 
-       -Erik Andrsen, Nov 25, 1999
+       -Erik Andersen, Nov 25, 1999
 
 0.36
        * fixed dd so it properly defaults to stdin and stdout when no 
            if= and of= are set (fix thanks to Eric Delaunay).
-       * Don't try to close the file descriptor of a pipein tar. (fix also from
+       * Don't try to close the file descriptor of a pipein tar. (fix also
+       * from
            Eric Delaunay).
-       * Made createPath be quiet (again thanks to Eric Delaunay).
-       * If BB_CONSOLE_CMD_IF_RC_SCRIPT_EXITS is defined, then whatever
+       * Made createPath be quiet (again thanks to Eric Delaunay).  If
+       * BB_CONSOLE_CMD_IF_RC_SCRIPT_EXITS is defined, then whatever
            command you define it as will be run if the init script exits.
        * Updated install.sh to make it more robust (thanks to Adam Di Carlo)
-       * NFS support added to mount by Eric Delaunay.  It costs 10k when compiled
+       * NFS support added to mount by Eric Delaunay.  It costs 10k when
+       * compiled
            in, but that is still a big win for those that use NFS.
-       * Made 'rm -f' be silent for non-existant files (thanks to Eric Delaunay).
-       * changed zcat.c to gunzip.c.  It now obeys the principle of least surprise 
-           and acts as god intended gunzip and zcat to act.  They answer --help and
-           obey the '-c' flag.
-       * Fixed a bug in mv which caused it to not move files when the destination
+       * Made 'rm -f' be silent for non-existant files (thanks to Eric
+       * Delaunay).  changed zcat.c to gunzip.c.  It now obeys the principle
+       * of least surprise 
+           and acts as god intended gunzip and zcat to act.  They answer
+           --help and obey the '-c' flag.
+       * Fixed a bug in mv which caused it to not move files when the
+       * destination
            was a directory.
-       * Fixed a decimal-instead-of-octal bug causing mkdir to make directories
+       * Fixed a decimal-instead-of-octal bug causing mkdir to make
+       * directories
            with very wrong permissions.
        * chmod would overwrite file permissions instead of modifying them.
            Now it properly modifies permissions.
-       * Init now sends warnings destined for the console to /dev/console to ensure
-           they show up on whatever the active console it.  Otherwise important
-           messages (for example that the system is rebooting) were not seen when
-           switched to a different VT.
+       * Init now sends warnings destined for the console to /dev/console to
+       * ensure
+           they show up on whatever the active console it.  Otherwise
+           important messages (for example that the system is rebooting) were
+           not seen when switched to a different VT.
 
        -Erik Andersen, Nov 17, 1999
        
 0.35
-       * gzip now obeys the principle of least surprise and acts like god intended 
-           (i.e. it accepts a file name, answers --help, and obeys the '-c' flag 
-           and only then outputs to stdout).
+       * gzip now obeys the principle of least surprise and acts like god
+       * intended 
+           (i.e. it accepts a file name, answers --help, and obeys the '-c'
+           flag and only then outputs to stdout).
        * Fixed more.c to compile autowidth on sparc and set initial winsize 
-           to 0,0 in case the TIOCGWINSZ ioctl fails.  Fix thanks to Eric Delaunay.
+           to 0,0 in case the TIOCGWINSZ ioctl fails.  Fix thanks to Eric
+           Delaunay.
        * Fixed tar so it now works as expected (it had TRUE/FALSE backwards)
-       * tar now accepts --help
-       * chmod, chown, and chgrp usage now works
-       * General usage (i.e. --help) cleanups for most apps
-       * umount now parses options correctly
-       * tar can now unpack tarballs containing device special files, 
-           sockets, and fifos (though it can't pack them up) thanks 
-           to Matt Porter.  Creating archives containing these is still
-           left to the interested student.
+       * tar now accepts --help chmod, chown, and chgrp usage now works
+       * General usage (i.e. --help) cleanups for most apps umount now parses
+       * options correctly tar can now unpack tarballs containing device
+       * special files, 
+           sockets, and fifos (though it can't pack them up) thanks to Matt
+           Porter.  Creating archives containing these is still left to the
+           interested student.
        * fixed up the license in more.c to properly point to Bruce Perens.
 
        -Erik Andersen, Nov  11, 1999
            Patch thanks to Eric Delaunay
        * init now properly handles sparc serial consoles and does a
            better job of finding the real console device rather than using
-           /dev/console which doesn't support job control. Patch also
-           thanks to Eric Delaunay.
+           /dev/console which doesn't support job control. Patch also thanks
+           to Eric Delaunay.
        * more started to read from stdin after the last file was finished, and 
            options were not parsed correctly (fix thanks to Eric Delaunay).
        * more will now use the terminal size if BB_FEATURE_AUTOWIDTH is on.
        * rm wouldn't remove a symlink unless the symlink was valid.  This was
-           a side effect of the busybox 0.32 recursiveAction() fix.  Things 
+           a side effect of the busybox 0.32 recursiveAction() fix.  Things
            should now work correctly.
-       * grep wouldn't grep stdin.  Now it does.
-       * sed wouldn't sed stdin.  Now it does.
-       * sed was appending a \n to the end of lines with replacements.
+       * grep wouldn't grep stdin.  Now it does.  sed wouldn't sed stdin.  Now
+       * it does.  sed was appending a \n to the end of lines with
+       * replacements.
            Now it doesn't do that.
        * ls -l now bypasses libc6 nss when displaying user/group names.
            Now uses my_getpwuid and my_getgrgid.
 
 0.32
        * More changes -- many thanks to Lineo for paying me to work on
-           busybox.  If you have any problems please let me know ASAP
-           at andersen@lineo.com or andersee@debian.org
+           busybox.  If you have any problems please let me know ASAP at
+           andersen@lineo.com or andersee@debian.org
        * usage() now prints the BusyBox version.  This will help folks
            realize that they are not in Kansas anymore.
-       * Fixed mkdir -m option so that it works.
-       * kill segfaulted w/o any arguments.  Now it doesn't do that.
-       * kill wasn't properly accepting signal names.  It does now.
-       * Added new apps chvt and deallocvt (I should probably add open)
-       * Major rewrite of init.c.  Code is now readable by mere mortals IMHO.
-       * Wrote sed -- weighs only 1.8k (5.8k with full regular expressions!).
-       * Fixed a stupid seg-fault in sync
-       * Fixed mount -- mount -a failed to parse and apply mount options
-       * Fixed umount -n (patch thanks to Matthew Grant <grantma@anathoth.gen.nz>)
-       * umount -a no longer umounts /proc
-       * Added BB_MTAB, allowing (at the cost of ~1.5k and the need for a rw /etc)
-           folks to use a real /etc/mtab file instead of a symlink to /proc/mounts.
-           mount, and umount will add/remove entries and df will now use /etc/mtab 
-           if BB_MTAB is defined. 
+       * Fixed mkdir -m option so that it works.  kill segfaulted w/o any
+       * arguments.  Now it doesn't do that.  kill wasn't properly accepting
+       * signal names.  It does now.  Added new apps chvt and deallocvt (I
+       * should probably add open) Major rewrite of init.c.  Code is now
+       * readable by mere mortals IMHO.  Wrote sed -- weighs only 1.8k (5.8k
+       * with full regular expressions!).  Fixed a stupid seg-fault in sync
+       * Fixed mount -- mount -a failed to parse and apply mount options Fixed
+       * umount -n (patch thanks to Matthew Grant <grantma@anathoth.gen.nz>)
+       * umount -a no longer umounts /proc Added BB_MTAB, allowing (at the
+       * cost of ~1.5k and the need for a rw /etc)
+           folks to use a real /etc/mtab file instead of a symlink to
+           /proc/mounts.  mount, and umount will add/remove entries and df
+           will now use /etc/mtab if BB_MTAB is defined. 
        * Fixed a nice bug in recursiveAction() which caused it to infinitely
            hunt through /proc/../fd/* creating new file descriptors if it
-           followed the /dev/fd link over to /proc.  recursiveAction() now 
-           lstat's the file when followLinks==FALSE so it won't follow links 
-           as the name suggests.  Fix thanks to Matt Porter <porter@debian.org>.
+           followed the /dev/fd link over to /proc.  recursiveAction() now
+           lstat's the file when followLinks==FALSE so it won't follow links
+           as the name suggests.  Fix thanks to Matt Porter
+           <porter@debian.org>.
 
 
         -Erik Andersen, Nov  4, 1999
 
 0.31
-       * I added a changelog for version 0.30. 
-       * adjusted find internals to make it smaller, and removed 
+       * I added a changelog for version 0.30.  adjusted find internals to
+       * make it smaller, and removed 
            some redundancy.
        * Fixed a segfault in ps when /etc/passwd or /etc/group 
            are absent.  Now will warn you and carry on.
        * Added in optional _real_ regular expression support (to be
-           the basis for a future sed utility).  When compiled in
-           it adds 3.9k, but makes grep much more capable.
+           the basis for a future sed utility).  When compiled in it adds
+           3.9k, but makes grep much more capable.
        * Checked out using nftw(3) for recursive stuff, but unfortunatly
-           it wasn't supported before GNU libc 2.1, and some folks use
-           glibc 2.0.7 since it is much smaller than that latest and greatest.
+           it wasn't supported before GNU libc 2.1, and some folks use glibc
+           2.0.7 since it is much smaller than that latest and greatest.
 
         -Erik Andersen, Oct 21, 1999
 
            * busybox can now invoke apps in two ways: via symlinks to the
                busybox binary, and as 'busybox [function] [arguments]...'
            * When invoked as busybox, the list of currently compiled in 
-               functions is printed out (no this is not bloat -- the list
-               has to be there anyway to map invocation name to function).
+               functions is printed out (no this is not bloat -- the list has
+               to be there anyway to map invocation name to function).
            * busybox no longer parses command lines for apps or displays their
                usage info.  Each app gets to handle (or not handle) this for
                itself.
            * All shared code now lives in utility.c, and is properly
                ifdef'ed to be only included for those apps requiring it.
            * Eliminated struct FileInfo (the basis of monadic, dyadic, etc)
-               so now each app has the function prototype of (da-dum):
-                   extern int foo_main(int argc, char** argv);
-               which speeds integration of new apps.
+               so now each app has the function prototype of (da-dum): extern
+               int foo_main(int argc, char** argv); which speeds integration
+               of new apps.
            * Adjusted the Makefile to make it easier to 
                {en|dis}able debugging.
            * Changed default compiler optimization to -Os 
        App Changes:
            * To cope with the new app function prototype and the removal of
                monadic, dyadic, etc, the following apps were re-written:
-                   * cat - Works same as always.
-                   * chgrp, chmod, chown - rewrite.  Combined into a single 
-                       source file.  Absorbed patches from Enrique Zanardi <ezanard@debian.org>
-                       that removes the dependency on libc6 libnss* libraries.
+                   * cat - Works same as always.  chgrp, chmod, chown -
+                   * rewrite.  Combined into a single 
+                       source file.  Absorbed patches from Enrique Zanardi
+                       <ezanard@debian.org> that removes the dependency on
+                       libc6 libnss* libraries.
                    * cp - Can now do 'cp -a' can can copy devices,
-                       pipes, symlinks, as well as recursive or non-recursive dir copies.
-                   * fdflush - adjusted to remove dependancy on struct FileInfo.
-                   * find - Now includes some basic regexp matching 
+                       pipes, symlinks, as well as recursive or non-recursive
+                       dir copies.
+                   * fdflush - adjusted to remove dependancy on struct
+                   * FileInfo.  find - Now includes some basic regexp matching 
                        which will be the basic of a future mini-sed.
-                   * ln - Same functionality.
-                   * mkdir - Added -p flag to feature set.
-                   * mv - rewrite.
-                   * rm - Added -f flag to feature set.
-                   * rmdir - Same functionality.
-                   * swapon, swapoff - Combined into a single binary. No longer
-                       uses /etc/swaps.  swap{on|off} -a uses /etc/fstab instead.
-                   * touch - Same functionality.
-           * date - adjusted with a patch from Matthew Grant <grantma@anathoth.gen.nz>
-               to accomodate glibc timezone support.  I then ripped out GNU getopt.
-           * mkswap -- new version merged from util-linux.  Can now make >128Meg swaps.
-           * Replaced the old and star, unstar, and tarcat with the tar 
-               implementation from sash.   Now tar behaves as god intended
-               it to (i.e. tar -xvf <file> and tar -cf <file> <dir> work).
-           * dd -- rewritten.  Can with with files, stdin, stdout.
-           * Added the following new apps:
-                   * loadfont -- added from debian boot floppies 
-                   * chroot -- added based on a patch from Paolo Molaro <lupus@lettere.unipd.it> 
-                   * grep -- I just wrote it.  Only matches simple strings
-                   * ps -- I just wrote it.  Has _no_ options at all, but works.
-                   * fsck_minix, mkfs_minix -- added from util-linux, but I ripped out
+                   * ln - Same functionality.  mkdir - Added -p flag to
+                   * feature set.  mv - rewrite.  rm - Added -f flag to
+                   * feature set.  rmdir - Same functionality.  swapon,
+                   * swapoff - Combined into a single binary. No longer
+                       uses /etc/swaps.  swap{on|off} -a uses /etc/fstab
+                       instead.
+                   * touch - Same functionality.  date - adjusted with a patch
+                   * from Matthew Grant <grantma@anathoth.gen.nz>
+               to accomodate glibc timezone support.  I then ripped out GNU
+               getopt.
+           * mkswap -- new version merged from util-linux.  Can now make
+           * >128Meg swaps.  Replaced the old and star, unstar, and tarcat
+           * with the tar 
+               implementation from sash.   Now tar behaves as god intended it
+               to (i.e. tar -xvf <file> and tar -cf <file> <dir> work).
+           * dd -- rewritten.  Can with with files, stdin, stdout.  Added the
+           * following new apps: loadfont -- added from debian boot floppies
+           * chroot -- added based on a patch from Paolo Molaro
+           * <lupus@lettere.unipd.it> grep -- I just wrote it.  Only matches
+           * simple strings ps -- I just wrote it.  Has _no_ options at all,
+           * but works.  fsck_minix, mkfs_minix -- added from util-linux, but
+           * I ripped out
                        internationalization and such to make them smaller.
-                   * sfdisk -- Added from util-linux (minus internationalization and such).
-           * Probably some other changes that I forgot to document...
+                   * sfdisk -- Added from util-linux (minus
+                   * internationalization and such).  Probably some other
+                   * changes that I forgot to document...
 
         -Erik Andersen, Oct 20, 1999