busybox (1:0.52-1) unstable; urgency=high

  * New version released.  See changelog for details.

 -- Erik Andersen <andersee@debian.org>  Fri,  6 Jul 2001 14:28:05 -0600

busybox (1:0.51-10) unstable; urgency=high

  * Fix a compile problem with gcc 3.0 on hppa (closes: #102045)

 -- Erik Andersen <andersee@debian.org>  Sat, 23 Jun 2001 23:55:57 -0600

busybox (1:0.51-9) unstable; urgency=high

  * tar was creating leading directories with 0777 permissions as
    as reult of faulty umask handling.  This fixes it, repairing
    a grave security problem in the woody the boot floppies.
    (closes: #101169)

 -- Erik Andersen <andersee@debian.org>  Wed, 20 Jun 2001 16:17:38 -0600

busybox (1:0.51-8) unstable; urgency=high

  * Fix cp from /proc, where size=0 (closes: #100369)
  * Add some padding to struct sysinfo for m68k.
  * Apparently some bugs failed to be closed when master choked
    (closes: #99627, #99637, #98571)
  * Disable the busybox shell for the .deb, since it is not needed
    for the boot floppies.

 -- Erik Andersen <andersee@debian.org>  Mon, 11 Jun 2001 13:26:07 -0600

busybox (1:0.51-7) unstable; urgency=high

  * Fix tar permission setting for existing directories (closes: #99627)
  * Do not remove the .cvsignore files on 'make release' (closes: #99637)

 -- Erik Andersen <andersee@debian.org>  Mon,  4 Jun 2001 10:55:19 -0600

busybox (1:0.51-6) testing unstable; urgency=high

  * Update the version in testing so DHCP in the woody boot-floppies will work.
  * Enable expr for the boot-floppies (closes: #98433)
  * It builds on arm just fine now (closes: #97510)

 -- Erik Andersen <andersee@debian.org>  Wed, 23 May 2001 14:50:13 -0600

busybox (1:0.51-5) unstable; urgency=low

  * Backport a sed fix from 0.52pre
  * Backport chroot fix from 0.52pre

 -- Erik Andersen <andersee@debian.org>  Wed, 16 May 2001 23:50:33 -0600

busybox (1:0.51-4) unstable; urgency=low

  * Backport from 0.52pre an endianness bugfix for md5sum
  * Backport some updates to grep and sed
  * Fix 'wget -O -' so it sets the quiet flag

 -- Erik Andersen <andersee@debian.org>  Mon, 14 May 2001 14:17:36 -0600

busybox (1:0.51-3) unstable; urgency=low

  * This is the "I am an idiot" release.
  * Make cp and mv work again (closes: #97290) 
  * Fix the version number.

 -- Erik Andersen <andersee@debian.org>  Sat, 12 May 2001 17:35:58 -0600

busybox (0.51-2) unstable; urgency=low

  * Backport several release critical fixes into the 0.51 codebase
    so the boot-floppies will work again.
  * Fix a link ordering problem. (closes: #93362)
  * Fixed gunzip (closes: #94331)
  * Fixed cp permission setting (closes: #94580)

 -- Erik Andersen <andersee@debian.org>  Sat, 12 May 2001 11:22:35 -0600

busybox (0.51-1) unstable; urgency=low

  * Fixes several critical bugs (see the busybox changelog
    for complete details)
  * Force USE_SYSTEM_PWD_GRP=false, so busybox bypasses
    the glibc NSS libraries. (closes: #93362)
  * Fixed a bug in sed's address range handling (closes: #91758) 
  * Removed irrelevant cruft from the bottem of debian/changelog

 -- Erik Andersen <andersee@debian.org>  Tue, 10 Apr 2001 14:07:29 -0600

busybox (0.50-2) unstable; urgency=low
  
  * Enabled freeramdisk and pivot_root in the udeb (closes: #91336)
  * Disabled lash (the busybox shell) in the udeb (closes: #91337)
  * fixed a bug in syslog, a problem with rebooting when booted as
    an initrd, and a few other minor problems.

 -- Erik Andersen <andersee@debian.org>  Sun, 25 Mar 2001 20:59:44 -0700


busybox (0.50-2) unstable; urgency=low
  
  * Enabled freeramdisk and pivot_root in the udeb (closes: #91336)
  * Disabled lash (the busybox shell) in the udeb (closes: #91337)
  * fixed a bug in syslog, a problem with rebooting when booted as
    an initrd, and a few other minor problems.

 -- Erik Andersen <andersee@debian.org>  Sun, 25 Mar 2001 20:59:44 -0700

busybox (0.50-1) unstable; urgency=low

  * Tons on improvements all around -- See changelog for details.
  * Fix malformed Build-Depends (closes: #86930)
  * grep has worked for some time now (closes: #81084)
  * init compiles with DEBUG_INIT enabled (closes: #85794)
  * md5sum no longer displays filename when reading stdin (closes: #81283)
  * lsmod, rmmod, and insmod are no longer enabled (closes: #85642)
  * busybox and buxybox-static now conflict/replace each other (closes: #80421)

 -- Erik Andersen <andersee@debian.org>  Thu, 15 Mar 2001 14:45:00 -0700

busybox (0.49-1) unstable; urgency=low

  * Lots more source updates and bug fixes.  See changelog for details.

 -- Erik Andersen <andersee@debian.org>  Sat, 27 Jan 2001 01:45:53 -0700

busybox (0.48-1) unstable; urgency=low

  * Lots more source updates and bug fixes.  See changelog for details.
  * Now includes .udeb support for the debian-installer.  The .udeb 
    probably needs some more work, but this should be a good start.

 -- Erik Andersen <andersee@debian.org>  Wed, 13 Dec 2000 08:36:07 -0700

busybox (0.47-1) unstable; urgency=low

  * New version released.  See changelog for details.

 -- Erik Andersen <andersee@debian.org>  Mon, 25 Sep 2000 23:00:56 -0600

busybox (0.46-1) unstable; urgency=low

  * New version released.  See changelog for details.

 -- Erik Andersen <andersee@debian.org>  Tue, 11 Jul 2000 12:15:44 -0600

busybox (0.45-1) unstable; urgency=low

  * First attempt at packaging BusyBox as a .deb.  This has been in 
    in the Debian boot-floppies CVS tree forever.  Hopefully, having it as a
    standalone app will make life easier for me, the debian-installer team, and
    everyone else as well...
  * I have created a busybox-static that can be used as a rescue shell when you 
    hose your system.  Just invoke "busybox sh" to fir up the shell.  This has
    every app provided by busybox staically linked in.  There have been several
    times in the past that I would have loved to have this sitting on my system
    (i.e. when libc gets screwed up.)

 -- Erik Andersen <andersee@debian.org>  Tue, 27 Jun 2000 12:26:41 -0600

