text: Links
  Developer Pages
  BusyBox 1.20.1.
  (git,
  patches,
  how to add a patch)
  Bug fix release. 1.20.1 has fixes for
  build system (some .config's were failing to build),
  line editing (in non-default config, sometimes history was erased),
  getty (was dying on self-generated SIGHUP at times),
  mdev (let kernel know that firmware wasn't found),
  sed (empty match could run forever),
  find (added support for -wholename),
  ext4 detection was added.
  BusyBox 1.20.0.
  (git,
  patches,
  how to add a patch)
  Sizes of busybox-1.19.4 and busybox-1.20.0 (with equivalent config, static uclibc build):
  text data bss dec hex filename
  840348 473 7508 848329 cf1c9 busybox-1.19.4/busybox
  843717 473 7500 851690 cfeea busybox-1.20.0/busybox
  Changes since previous release:
  Aaro Koskinen:
  cttyhack: handle multiple consoles found in sysfs
  Alexander Shishkin:
  cttyhack: print detected ctty name when called without parameters
  Alexey Fomenko:
  kill: fix segfault in arguments parsing
  Baruch Siach:
  networking: consolidate the IP checksum code. -129 bytes
  udhcp: remove the declaration of non-existent udhcp_checksum
  Bernhard Reutner-Fischer:
  Config: fix wording in help-text
  Config: clarify {SHOW,VERBOSE,COMPRESS}_USAGE
  bloat-o-meter: handle huge (hex) sizes
  bloat-o-meter: remove unused code
  Christian Engelmayer:
  syslogd: work around rename() not renaming hardlinks to themselves
  Cristian Ionescu-Idbohrn:
  ps: fix for !FEATURE_PS_LONG build
  Dan Fandrich:
  rx: fix file corruption with duplicate blocks
  Daniel Fandrich:
  android build system updates
  rx: fix file corruption on block checksum failure
  configs/android_defconfig: update
  Dave Love:
  mount: support -o noacl
  Dennis Groenen:
  vi: add ":prev" command support
  Denys Vlasenko:
  build system: detect missing crypt and drop it from linking
  build system: fix broken CONFIG_SYSROOT handling
  build system: remove bogus $(1) in last commit
  libarchive: move seamless .Z support into unpack_gz_stream
  libarchive: update seamless uncompression code
  libarchive/decompress_unzip.c -> decompress_gunzip.c. no code changes
  libbb.h: add check for bad off_t size detection
  libbb.h: remove unused defines
  libbb/bb_strtonum: always set end ptr, even on error return
  libbb/procps.c: make fast_strtoul_10() stop on '\n' too
  libbb: make xchroot do a chdir("/") after chroot
  libbb: remove is_directory's argument which is always NULL
  libbb: shrink base64 decoding a bit
  platform.h: define endgrent() and endpwent() as no-ops on Android
  libpwdgrp/pwd_grp.c: set opened /etc/{passwd,group,shadow} fds CLOEXEC
  libpwdgrp/pwd_grp.c: use same static buffer for all getpwXX functions
  lineedit: add support for M-b, M-f, M-d, M-Backspace
  lineedit: add support for history saving on exit
  lineedit: fix atomic replace of history file
  lineedit: remove SAVE_HISTORY bit, ->hist_file can be used as indicator
  applets_sh/nologin: an applet implemented as shell script
  acpid: close fds which are reported as dead (POLLERR/POLLHUP/POLLNVAL) by poll
  acpid: do not install handlers for fatal signals
  applet_tables: fix single applet build failure. Closes 4009
  ash: in standalone mode, search in $PATH if /proc/self/exe doesn't exist
  awk: fix a SEGV
  awk: next_input_file can return NULL, don't SEGV in this case
  blkid: if parameters are given, do not scan /dev
  bzcat: fix unpacking of more than one file, and unpacking of zero-size bz2. Closes 4393
  chpasswd: fix possible free() or non-allocated string. +8 bytes
  conspy,nandwrite,nanddump: enable in defconfig
  crond: fix the case when option -d is disabled
  cttyhack: move /sys/class/tty/console/active check to the front
  date: extend help text to explain compat date format. Closes 4820
  dhcpc: fix the case where we might add extra space at the end of envvar
  gen_build_files.sh: simplify "print everything up to INSERT line" part
  gen_build_files: don't pass 200k+ strings as params. Closes 4321
  get_header_tar: shrink 6->64 sign extension code
  getty,login: tighten up handling of ctty, pgrp, and tty attr restoring on timeout
  getty: Hurd has no CBAUD, work around that
  getty: add O_NONBLOCK to open which is used to drop ctty
  getty: fix a minor problem of Ctrl-D not printing '\n'
  getty: remove now not needed resetting of ALRM to to SIG_DFL
  getty: reset tty attrs on Ctrl-C and Ctrl-D too
  hexdump: fix hexdump -n1 -ve '8/2 ""' SEGV. Closes 4478
  hostname: make -i not emit extra trailing space
  httpd: don't drop/abuse QUERY_STRING when /cgi-bin/index.cgi is used
  httpd: fix /../ sanitization (had one extra semicolon)
  httpd: fix MD5-encrypted-in-httpd.conf password logic
  httpd: fix sendfile of files larger than 2 Gb. Closes 4754
  httpd: make byte ranges which start at 0 work too. Closes 4766
  httpd: remove redundant NULL assignment and save one strrchr. -8 bytes
  hush: fix $HISTFILE handling
  hwclock: fix wrong comparison of time value (when it will overlow int)
  inet_cksum: big-endian fix
  inetd: close new udp fd in "udp nowait" case
  init: add a segv debugging aid, disabled by default
  init: utmp update of DEAD_PROCESS was misplaced, and could be skipped
  killall5: don't do STOP/CONT dance if the signal we send is SIGSTOP or SIGCONT
  less: fix for screen size detection
  losetup: implement -r option. Closes 4033
  makemime: content-type should default to application/octet-stream
  makemime: fix -a option not taking parameter
  mdev: do not treat non-leading '#' chars as start of comment. Closes 4676
  mdev: don't reparse rules on -s
  mdev: fix mode of created node if config file support is not configured
  mke2fs: do not zero out first kilobyte. Closes 3247
  mktemp: add support for -u
  modinfo: make it select PLATFORM_LINUX. Closes 4411
  mount: free commented /etc/filesystems lines when we read it
  mount: make FEATURE_MOUNT_NFS not needed for Linux 2.6.23+
  mount: resolve hosts to IPs in NFS mounts
  nc: support "-e PROG" form of -e option
  nmeter: fix block i/o count on newer Linux kernels
  nommu: fix cases where we mangle argv[0][0]
  ntpd: avoid printing messages between send and recv: good for fast networks
  ntpd: drop offset averaging code
  ntpd: experimental code to correct frequency a bit more aggressively
  ntpd: fix a case when discipline_jitter = 0 if we step
  ntpd: fix build failure if !NTPD_SERVER. Closes 4994
  ntpd: fix offset adjustment after step, better step printing
  ntpd: increase OPT_qq constant to not collide with -L
  ntpd: log clock drift with three digits after decimal point
  ntpd: log jitter on update too; increase assumed clock precision x2 - to 2ms
  ntpd: make "reply from IP" messages more uniform
  old_e2fsprogs/blkid: close the fd after we are done with it
  passwd,cryptpw: make default encryption algorithm configurable
  patch: add a test we currently fail
  ping: display real IPv6 response address. Hopefully closes 3745
  preparatory cleanups for seamless uncompression improvements
  printf: fix this case: printf "%b" '\0057usr\0057bin\n'
  ps: add support for -l for !DESKTOP
  pwd: implement -LP if DESKTOP
  sed: fix possible case of signed char bug; expand debugging printouts
  sed: fix range handling for sed -i. Closes 4069
  sendmail: don't talk until 220 code is seen. Closes 3487
  sendmail: stop doing -t unconditionally; makemime: generate 76 char base64 lines
  shell_builtin_read: set cc[VMIN] to 1; lineedit: don't clear c_cc[VINTR]
  ssd: compat: match -x EXECUTABLE by /proc/pid/exe too
  start_stop_daemon: set complementary group ids too. Closes 3253
  stty: trim too verbose error messages (-40 bytes)
  swapoff: do not pass "p" in opt_complementary
  syslogd: fix missing newline problen in memory log buffer. Closes 4159
  tail: fix -c +N. Closes 4111
  tar,rpm2cpio: check that child decompressor did not error out
  tar: add support for PAX-encoded path=LONGFILENAME
  test: "test !" was accessing argv past NULL - fix it. Closes 4832
  tftp: mode string is case independent
  tftpd: chroot to DIR, not merely chdir. Closes 4874
  top: fix CPU% for thread display. Closes 4081
  tune2fs: add support for -C MOUNT_COUNT. +40 bytes. Closes 3901
  ubi_tools: add workaround for bad kernel headers. Closes 4838
  udhcp: make arpping code resistant to time jumps
  udhcpc6: new applet
  udhcpc6: rudimentary code to export data to script; fix IAADDR parsing
  udhcpc[6]: remove -B from udhcpc6 and "--version" from both
  udhcpc: add support for DHCP option 212 (RFC 5969)
  udhcpc: deprecate --hostname NAME
  udhcpc: fix 6rd option formatting (was using 4 more bytes than there is)
  udhcpc: fix improper size calculation for OPTION_STRING_HOST
  udhcpc: in fill_envp, export BOOTP fields first
  udhcpc: remove unused argument in sprint_nip6
  udhcpc: remove workaround for bugs in Win98 dhcp server ("MSFT 98" vendor string)
  udhcpc: reuse string constant; remove unneeded memset(0)
  udhcpc: sanitize hostnames in incoming packets. Closes 3979
  udhcpc: shrink code by setting xid more economically
  umount: make -d always active, add -D to suppress it
  uncompress: die on read errors
  uncompress: fix buffer underrun by corrupted input
  unzip: fflush stdout before reading interative y/n answer from stdin
  uudecode: fix buggy check for empty filename
  vconfig: small code shrink. Closes 4658
  vi: fix [end] key handling
  vi: move mark[i] pointers if text[] moves after realloc
  vi: prevent unlimited recursion in do_cmd(). Closes 4153
  wget: URL-decode user:password before base64-encoding it into auth hdr. Closes 3625
  wget: fix use-after-free on redirect
  Felipe Contreras:
  modprobe: accept -b even if blacklist functionality is disabled
  Flemming Madsen:
  ps: with -l, show STIME too
  inotify: if PROG is -, print events to stdout
  Ian Wienand:
  find: fix -follow support
  gzip: new GZIP_BIG_MEM option
  login: new option LOGIN_SESSION_AS_CHILD
  du: use long long for size field
  Javier Viguera:
  find_mount_point: fix find_mount_point for char devices
  mdev: fix wrong sizeof
  Jonh Wendell:
  Make unix (local) sockets work without IPv6 enabled
  Karol Lewandowski:
  mount: handle list of comma-separated fs types in -t option
  Kevin Cernekee:
  cttyhack: remove the trailing newline when reading console name from sysfs
  Lauri Hintsala:
  ifupdown: remove interface from state_list if iface_up fails
  Lauri Kasanen:
  grep: be GNU compatible with -f EMPTY_FILE
  depmod: supply help text
  Leonid Lisovskiy:
  udhcp: IF_UDHCP_VERBOSE() macro - improve code readability
  libbb: split decode_base64 off read_base64
  Matthias Andree:
  Fixes for FreeBSD build
  Michael McTernan:
  udhcp: finish support of classless static routes
  Natanael Copa:
  ifupdown: support metric for static default gw
  grep: support for -x, match whole line
  Oliver Metz:
  disable strverscmp usage if we build against uClibc-0.9.31
  Pascal Bellard:
  conspy: add framebuffer support, -Q option
  httpd: make it possible to use system passwords for auth
  httpd: small fixes to previous change
  Paulius Zaleckas:
  vconfig: remove /proc/net/vlan/config check
  gen_build_files.sh: exclude hidden directories
  Pere Orga:
  hostid: fix behavior on identifiers starting with zeros
  applets_sh/*: add a few more examples of "shell applets"
  Peter Korsgaard:
  fbsplash: limit progress bar flicker
  fbsplash: support 8bit mode
  ifupdown: support post-up / pre-down hooks
  bb_daemonize_or_rexec(): add flag to double-fork; use it in start-stop-daemon
  Quentin Casasnovas:
  bootchartd: add process accounting feature
  Rob Landley:
  patch: make it able to create files (again)
  patch: make -p count path components, not slashes (think /blah//thing)
  Rob Walker:
  Add SYSROOT, EXTRA_{LDFLAGS,LDLIBS} config opts; sample Android NDK config
  httpd: emit correct content length on range requests past the end. Closes 4952
  Sergey Naumov:
  login: -f should not ask for password even with PAM
  Sonic Zhang:
  depmod.pl: output correct dep format according to kernel version
  Sven Oliver Moll:
  lsof: new applet
  Timo Teras:
  mkdir: fix permissions on 64-bit platforms
  Tristan Schmelcher:
  Fix link failure on some platforms when PAM is enabled
  Vladislav Grishenko:
  udhcpc: on SIGUSR1, limit renew attempts time to 20 seconds; then do total reconfig
  Yin Kangkai:
  fbsplash: use line_length instead of xres * bytes_per_pixel
  walter harms:
  touch: add new option FEATURE_TOUCH_SUSV3
  BusyBox 1.19.4.
  (git,
  patches,
  how to add a patch)
  Bug fix release. 1.19.4 has fixes for
  getty (build fix for systems without CBAUD),
  mdev (error in mdev.seq handling if sequence number is >999),
  modinfo (made it select PLATFORM_LINUX),
  wget (fixed use-after-free on redirect).).
  BusyBox 1.19.2.
  (git,
  patches,
  how to add a patch)
  Bug fix release. 1.19.2 has
  fixes for FreeBSD build,
  build fix for match_fstype.c,
  ash/hush (history file saving fixes),
  cttyhack (/sys/class/tty/console/active has trailing newline, account for that),
  find (fix for -follow),
  grep (fix for "grep -f EMPTY_FILE" usage),
  less (fix for windows sizing via "ESC [ 6 n"),
  patch (fix handling of patches which create files)
  sed (fix for range match with option -i),
  top (fix for thread accounting),
  uncompress (fix for certain cases of corrupted input),
  swapoff.
  BusyBox 1.19.0.
  (git,
  patches,
  how to add a patch)
  Sizes of busybox-1.18.5 and busybox-1.19.0 (with equivalent config, static uclibc build):
  text data bss dec hex filename
  837577 493 7516 845586 ce712 busybox-1.18.5/busybox
  839598 493 7508 847599 ceeef busybox-1.19.0/busybox
  Alexander Shishkin:
  diff: return 1 when skipping directories with -r, but without -N
  Alexey Fomenko:
  libbb: remove dead code in getopt32
  lineedit: fix rare SEGV
  route: add missing fclose's
  ifupdown: don't leak malloced variables in the loop; remove double alloc
  md5/sha1sum: fix small resource leak
  Alexey Soloviev:
  date: preserve isdst value if date is in time_t (unix time) format
  Bernhard Reutner-Fischer:
  mount: for NFS use tcp per default rather than udp
  inetd: check if RPC is available
  Bogdan Harjoc:
  find: implement -ipath
  Chris Rees:
  build system: do not use GNU-isms in find
  FreeBSD compat patches
  Dan Fandrich:
  simplify Ethernet header includes
  use the built-in getline on more systems that don't have it
  hush: support set -o xtrace/noexec alternates for set -x/-n
  fbsplash: display images even when a second buffer is active
  blockdev: add --getsz to replace --getsize
  platform.h: support for build under Android
  Daniel Fandrich:
  replaced __u32 etc with standard uint32_t style types
  support configuring Busybox from _defconfig files
  add defconfig files for Android, Cygwin and FreeBSD
  Davide Cavalca:
  hwclock: implement --systz
  syslogd: add and use CONFIG_FEATURE_SYSTEMD
  Denys Vlasenko:
  use net/ethernet.h instead of linux/if_ether.h in more cases. Closes 3619
  improve --install operation in chroot jails
  incorporate header fixes proposed in bug 3097
  remove erroneous dependencies on INSTALLER
  remove old "define lchown chown"
  replace "depends on PLATFORM_LINUX" with "select PLATFORM_LINUX"
  use user's shell instead of hardwired "/bin/sh" (Android needs this)
  disable automatic selection of FEATURE_SUID
  if only one applet is enabled, make "busybox applet [params]" work as expected
  fix !ENABLE_FEATURE_GETOPT_LONG build. Closes 3775
  scripts/kconfig/mconf.c: stop-gap fix for buffer overflow
  libbb/login/su: do not sanitize shell name twice
  libbb/progress.c: make sure we never get negative ETA
  libbb/progress.c: use unicode support funcs instead of open-coding it
  libbb/progress.c: better overflow protection; more precise bar
  libbb/progress.c: display >999 hours ETA correctly
  libbb/progress.c: fix bugs found in stall detection and unknown size logic
  libbb/read_cmdline: prepend {comm} if different from argv0. Closes 3835
  libbb: make BB_EXECVP/LP try to exec real binary if there's no /proc/self/exe
  libbb: make set_nport accept pointer to sockaddr, not to len_and_sockaddr
  libbb: make user/group name cache strings longer (~27 chars)
  libbb: optionally support RTMIN[+n] and RTMAX[-n] signal names
  libbb: spawn should remove child which failed to exec
  libbb: use _unlocked variants of stdio I/O
  lineedit: implement optional Ctrl-R history search
  lineedit: fixes for CONFIG_UNICODE_USING_LOCALE=y
  main: free suid_config list after use
  main: make busybox.conf mode handling less obscure
  ash: fix ash-signals/signal8 testcase failure
  ash: fix execution of shell scripts without shebang
  ash: optional support for $TMOUT variable
  ash,hush: add ulimit -e -r (RLIMIT_NICE, RLIMIT_RTPRIO)
  ash,hush: optional support for $HISTFILESIZE
  ash,hush: recheck LANG before every line input
  hush: do not print killer signal's name for SIGPIPE
  hush: fix "cmd & <newline>" problem
  hush: fix FEATURE_CLEAN_UP code (was freeing unallocated memory)
  hush: fix a case where return in sourced file has no effect
  hush: fix a corner case of empty "do \n done" structure
  hush: fix incorrect PS2 display and trap handling while reading command
  hush: fix login shell's signal handling; add -l option so that it's easier to test
  hush: fix misparsing of "... do eval a= ...". Closes 3721
  hush: fix bugs with IFS expansion. Closes 4027
  hush: fix source1.tests
  hush: fix wrong prompt problem on empty interactive commands
  hush: fixes and small shrink for HUSH_JOB!=y
  hush: improve prompt in nested {}s
  hush: make parse errors in sourced file non-fatal in interactive script
  hush: make read builtin interruptible
  hush: replace signal handling machinery
  hush: use FEATURE_SH_NOFORK to enable NOFORK trick
  adduser: prefer to call addgroup --gid, not non-std addgroup -g
  adduser: safe username passing to passwd/addgroup
  basename,dirname,freeramdisk,rx,raidautorun,runsv,chvt: skip "--" argument
  blkid: optional support for TYPE="fstype"
  busybox.conf: USER.GROUP is _optional_
  busybox: fail if --install is not given an absolute path
  bzip2: plug memory leak on every processed file
  chrt: -m can be used without any arguments. Closes 2989
  chrt: correct opt_complementary. Closes 2977
  cpio: allow cpio -i to take params - names of files to extract
  date,touch: treat 2-digit years better (fit them into +-50 yrs around today)
  date: add a comment about _SVID_SOURCE
  dc: fix a case where we can run off malloced space
  die_if_bad_username: tighten up a bit
  echo: do not retry on write errors
  echo: fix ENOSPC detection and some iffy code in \NNN handling
  echo: fix SEGV when run with no args
  fbset: abort on unknown options. Closes 3121
  fbset: apply modelines. Closes 3823
  fdisk: make FDISK_SUPPORT_LARGE_DISKS redundant when LFS=y
  fdisk: reinstate a short sleep between sync() and ioctl(BLKRRPART)
  fdisk_osf: simplify ifdef (incidentally, adds support for Microblaze)
  find: cater for libc w/o FNM_CASEFOLD
  find: fix a bug in !ENABLE_FEATURE_FIND_XDEV config
  find: print/print0/prune _can_ be inverted, fix it
  find: remove the hack we use to parse options first, replace with simpler code
  fuser: fix inverted access() check. Closes 3799
  getty: add sleep before initial tcdrain; reduce another sleep from 1 to 0.1s
  getty: do clear CLOCAL and CRTSCTS unless told otherwise
  getty: do not clear all c_cflag's (we were clearing baud bits!)
  getty: document bits we don't set - maybe we should set some of them?
  getty: fix -i (was ignored)
  getty: flush _only_ input after switching to the next baud rate
  getty: simplify macros; improve VSWTC[H] compat
  halt/reboot: better message if /sbin/telinit is not found
  httpd: send correct mtime for .gz files
  hwclock: use locale-specific date output format
  id: correct getgroups usage
  id: fix inverted if (!ENABLE_DESKTOP)
  init: fix a case where execv's 1st arg was wrong
  init: simpler handling of leading dash in commands
  insmod: check for module read errors
  insmod/modprobe: fix parameter loading problem for 2.4 kernels. Closes 3223
  iplink: tweak includes to work on Android
  iproute: fix handling of "dev IFACE" selector
  iproute: fix parsing and matching of "short" IP addrs like 10/8
  kill[all[5]],pkill: make signal list show signal numbers, and show RTMIN/MAX
  klogd: fix the problem of delayed handling of ^C and SIGTERM
  length: disable this applet
  less: optionally query terminal size via "ESC [ 6 n". Closes 2659
  ls: -g implies -l
  ls: add support for -H
  ls: fix HAVE_STRVERSCMP check; add check for older uclibc versions
  ls: fix bits for -T, -w and --color; make -n imply -l
  ls: fix handling of symlinks by option -1
  ls: fix one-bit-off which caused -H to behave as -h
  ls: for some options, only last takes effect. Closes 2959
  ls: make -F not follow symlinks of the command line
  ls: make -v and -X actually work as intended
  ls: make -x force columnar output
  ls: print a space after each column. Closes 2941
  ls: reduce memory consumption and speed up (don't do redundant [l]stat)
  ls: widen -s (1k blocks) column from 4 to 6
  lsmod: fix unsafe usage of strlen()-1
  mailutils/*: add verbose option to sendmail; remove -m and -j from makemime
  mesg: make group/all writability configurable
  mesg: operate on stdin, not on stderr (compat)
  mktemp: make it more compatible with GNU coreutils 8.4
  modprobe-small: support compressed modules in insmod
  modprobe/insmod: fix parameter quoting
  modprobe: fix "modprobe -l name-with-dash"
  more: exit if write to stdout errors out
  more: fix tabs handling
  mount: strip multiple trailing slashes, not just one
  nmeter: deprecate %NNNd specifier, use -d MSEC instead
  ntpd: decrease ntpd -q "no response" timeout to 10 sec
  od: another fix for --strings
  od: fix "od --traditional FILE"
  od: fix -S NUM to not print chars >0x80
  parse_config: make this test applet easier to enable; fix its code
  ping: fix IPv6 pinging. Closes 3187
  ping: set not only IP_TTL, but also IP_MULTICAST_TTL
  printenv: fix environ == NULL segfault
  procps: remove PSSCAN_STAT define, users were using it incorrectly
  ps: implement -o stat
  pstree: use stdin for screen size detection
  reformime: do not require \r\n
  reset: "ESC(K" selects German, why did we use that? Change to "ESC(B" (US)
  sed: support \r in s command
  start-stop-daemon: fix "-K --test --pidfile PIDFILE" exit code
  stty: enable line discipline display and change code if __linix__
  stty: make swtch and iutf8 visible/settable
  su: document -l in --help text. Closes 2761
  tail: optimize "tail -c HUGENUM REGULAR_FILE". Closes 3763
  tar: fix a bug where autodetection + -z is messed up on extract
  tar: on extract, everything up to and including last ".." is stripped
  tar: skip leading / and handle names like abc/..////def -> def (not ///def)
  tar: store negative mtime as 0; pack very large files using base-256 encoding
  tar: support "-T -" and "-X -"
  telnetd: write utmp record with correct pid
  tftp: fix bad interaction between poll() and alarm(). Closes 3061
  tftp: fix progress bar for large (>32M) files. Closes 3499
  tftpd: add -l "log to syslog" option. Needed for inetd mode
  top: display sort indicator in memory display
  top: make it possible to feed commands via pipe
  top: replace %MEM with %VSZ in header text
  traceroute: properly reduce poll timeout
  udhcp: fix some default values from "" to NULL
  udhcpc: allow -O OPT to take numeric params
  udhcpc: emit correct secs field
  udhcpc: fix a problem with binary-encoded options
  udhcpd: reply with NAK to clients in INIT-REBOOT state w/o existing lease
  udhcpd: smaller code: do not look for REQUESTED_IP twice
  uptime: more compatible output
  wc: fix swapped -c and -m
  wget: check for final write errors for -O FILE too
  wget: chunked mode fix. Closes 3229
  wget: correctly handle rare case when we get EAGAIN _on first_ read
  wget: display 100% at the _end_ of chunked download
  wget: fix fname_out usage wrt redirects
  wget: make "wget -O FILE URL1 URL2" concatenate output
  wget: remove functions which retry on EINTR
  wget: support multiple URLs on command line
  wget: use FEATURE_COPYBUF_KB-sized buffer. Much faster for local transfers
  wget: use closed HTTP/1.1 connection, stop when we dl'ed $content_len bytes
  xargs: support --no-run-if-empty (synonym to -r)
  Eric Lammerts:
  runsvdir: do not miss closely spaced service dir changes
  Harald Becker:
  showkey: make -a work on any stdin
  Ian Wienand:
  login: apply PAM environment
  ash: clear sa_flags always
  tar: ignore file size (assume 0) for hardlinks
  James Youngman:
  ls: remove redundant constants LIST_FILENAME and LIST_SHORT
  Joachim Nilsson:
  ping: add -t TTL option
  build system: fix "make install" to skip /usr when configured so
  Keith Young:
  udhcpc: add -B option
  Kevin Cernekee:
  cttyhack: check sysfs for the name of the active console
  cttyhack: fail gracefully if the device node is missing
  Lauri Kasanen:
  pstree: new applet
  df,find_mount_point: optionally don't ignore rootfs
  modinfo: show firmware and depends fields
  fdisk: backport disk check from util-linux
  md5/shaNsum: make -c support a list of files
  Macpaul Lin:
  scripts: fix fixdep.c to let it work in Cygwin
  Maksym Kryzhanovskyy:
  iostat: code shrink ~0.5k
  fuser: code shrink
  iostat: code shrink
  Marek Bečka:
  setserial: new applet
  Nigel Hathaway:
  udhcp: add FEATURE_UDHCP_8021Q option
  udhcpc: export unrecognized options in "optNN=XXXXXXXXX" form
  Nuno Lucas:
  fbsplash: add support for 24 and 32 bit color depth
  Pascal Bellard:
  chsum: fix
  conspy: fix lost ESC key
  Pere Orga:
  whois: new applet
  pwdx: new applet
  move help text from include/usage.src.h to *.c files
  wget: fix SEGV with multiple urls and redirection
  kill: fix infinite loop when passed PIDs are not valid numbers
  uptime: add config flag to allow displaying the number of users currently logged on
  Peter Korsgaard:
  getty: wait up to 5 seconds for the output buffer to drain
  mount: ignore unknown mount options when remounting NFS mounts
  httpd: don't send error messages with gzip encoding
  setconsole: open console for writing rather than reading
  Phil Sutter:
  nameif: fix parsing of /proc/net/dev
  nameif: add matching by phy_address=NUM
  Ralf Friedl:
  df: more compatible -P behavior
  Reuben Dowle:
  ubimkvol,ubirmvol,ubirsvol,ubiupdatevol: new applets
  Rob Landley:
  patch: fix "patch at the beginning" testcase failure
  Roman Borisov:
  mount: fix wrong long option names
  mount: properly update /etc/mtab on mount --move
  mount: rprivate option fix
  mount: add --rbind option support
  diff: optimize diffing of files with the same metadata
  Ryan Phillips:
  login: set PAM RHOST
  Sergey Naumov:
  syslogd: optional support for /etc/syslog.conf
  Serj Kalichev:
  modprobe: add support for --show-depends
  modprobe: add -D option (synonym of --show-depends)
  Steve Iribarne:
  pam link error with SHARED_BUSYBOX and LIBBUSYBOX enabled
  Timo Teras:
  modprobe: use hash table. speeds up significantly if modprobe.dep is large
  parse_config: use getline. BIG speedup with glibc (~40%)
  platform.c: provide getline implementation
  Tito Ragusa:
  passwd,chpasswd: reset password in /etc/passwd to "x" if /etc/shadow was updated
  groups: new applet
  users: new applet
  Vitaly Magerya:
  wget: --post-data=STR should not encode STR, should send it verbatim
  Vladislav Grishenko:
  udhcpc: use more correct, and more importantly, more understandable BPF code
  udhcpd: optional IP selection based on MAC hash
  Wade Berrier:
  pkill/pgrep: support extended regular expressions
  Walter Harms:
  vi: fix regex search, make it selectable in config
  BusyBox 1.18.5.
  (git,
  patches,
  how to add a patch)
  Bug fix release. 1.18.5 has fixes for
  fuser (fix error in handling of PORT/PROTO argument),
  hush (fix handling of while loop with empty body),
  build system fix (was using non-portable invocation of grep).
  BusyBox 1.18.4.
  (git,
  patches,
  how to add a patch)
  Bug fix release. 1.18.4 has fixes for
  cksum,
  klogd (fix "delayed" death on signals),
  modutils (handling of spaces in module arguments for Linux 2.4),
  wget (fix for downloads encoded using chunked encoding),
  build system fix for "make install" and "make menuconfig".
  BusyBox 1.18.3.
  (git,
  patches,
  how to add a patch)
  Bug fix release. 1.18.3 has fixes for
  hush (fix for "cmd & [Enter]" behavior),
  modprobe-small (better handling of "insmod BAD_MODULE_NAME"),
  modprobe (reverted bad change affecting module parameters with spaces),
  ping (IPv6 fix),
  tar (fix for "tar -xzf FILE.tgz"),
  udhcp (fix for options specified in hex),
  wc (-c and -m were swapped),
  libbb (fixed a case when fork+(exec error) was leaving a zombie),
  build system (does not force FEATURE_SUID anymore).
  BusyBox 1.18.2.
  (git,
  patches,
  how to add a patch)
  Bug fix release. 1.18.2 has fixes for
  bzip2 (bzip2 many_files* was leaking memory),
  cpio (was not allowing list of extracted files on command line),
  httpd (now sends correct Last-Modified: header for gzipped files),
  hush (was showing wrong prompt on empty interactive input),
  mkswap (build fix for selinux-enabled config),
  modprobe-small (support gzipped modules in insmod),
  tftp (fix timing out in progress meter enabled build),
  and build failures in some configs.
  BusyBox 1.18.1.
  (git,
  patches,
  how to add a patch)
  Bug fix release. 1.18.1 has fixes for
  build system for installations where sh is dash (Ubuntu is one),
  SEGV in sha hashing of passwords,
  runsvdir sometimes not noticing directory changes,
  compatibility with compilers which don't allow declarations inside for() statements.
  BusyBox 1.18.0.
  (git,
  patches,
  how to add a patch)
  Sizes of busybox-1.17.4 and busybox-1.18.0 (with equivalent config, static uclibc build):
  text data bss dec hex filename
  831950 453 7224 839627 ccfcb busybox-1.17.4/busybox
  832282 450 7212 839944 cd108 busybox-1.18.0/busybox
  Alexander Shishkin:
  pmap: new applet. +1k
  add-shell, remove-shell: new applets
  *: introduce and use xmkstemp. -65 bytes
  fix out-of-tree build's recursion
  ash: fix $! value when traps are set
  ulimit: set both hard and soft limits by default
  stat: remove superfluous setXXent() calls, plug memory leak
  tail: free tailbuf upon cleaning up
  smemcap: close /proc handle upon cleaning up
  login: free fromhost upon cleaning up
  mount: pass NULL, not "", as "data" to mount syscall if we have no opts
  Baruch Siach:
  nandwrite: new applet
  nanddump: new applet
  Bernhard Reutner-Fischer:
  find_stray_empty_lines: make it work
  Bradley M. Kuhn:
  wget: implement -T SEC; rework progress meter to not use signals (it was unsafe)
  Carmelo AMOROSO:
  insmod: do not add a pair of "" around the arguments of the module
  Christian Hornung:
  ip: fix command line option parsing of "ip route get ..."
  Cristian Ionescu-Idbohrn:
  remove redundant ENABLE_DESKTOP in procps/ps.c
  Dan Fandrich:
  improve portability of tests
  rename a struct member from "interrupt"
  testsuite: show the number of failures after a test run
  fix some test cases
  tar: add a test for extraction of read-only directory
  avoid side effects in putc(), which may be implemented as a macro
  fix a couple of failing tar tests
  fix build failure for pmap
  mark some more applets NOEXEC/NOFORK
  Daniel Dickinson:
  syslogd: close/re-resolve/reopen remote sockets on some sendto() errors
  Denys Vlasenko:
  build system: make 3.82 compat fix. Closes bug 2323
  base64: new applet
  platform.h: regularize endian detection
  md5 and shaN: big shrink
  libbb/process_escape_sequence.c: fix recently broken handling of \\
  libbb: add xfstat function
  libbb: factor out common code from mpstat/iostat
  libbb: fix fallout from last patch to obscure() (my mistake). +143 bytes
  libbb: introduce and use common crc32 routine
  libbb: introduce and use strcpy_and_process_escape_sequences
  libbb: merge mail and uudecode's base64 decoders
  libbb: move read_base64 to libbb/uuencode.c
  lineedit: partially rewrite and clean up tab completion code
  lineedit: do not hang on error, but return error indicator
  lineedit: limit ASK_TERMINAL to the case when we can't find out the width
  *: deinline SWAP_xE64 on 32-bit CPUs. Wins !90 bytes both on 32 and 64 bits
  *: pass md5/shaN context pointer as 1st arg, not last
  *: use SWAP_BE64 instead of open-coding it
  shell/math.c: improved in various ways
  shell: remove lash and bbsh
  ash: add a testcase for bug 2281 (currently fails)
  ash: add another ${v/a/b} test we currently fail
  ash: add missing casts to match CTLfoo
  ash: fix another bit of var_bash4 bug
  ash: fix another bug detected by var_bash4.tests
  ash: fix dequoting error detected by var_bash4 test
  ash: fix signal and "set -e" interaction
  hush: add support for "set -o pipefail"
  hush: add support for ${var/pattern/repl}, conditional on bash compat
  hush: add support for set -x
  hush: implement brace expansion
  hush: make set -x support optional
  hush: optional support for history saving
  hush: fix EXIT trap display inside exit trap handler
  hush: fix another corner case with backslashes in heredocs
  hush: fix backslash and terminator handling in <<[-]["]heredoc["]
  hush: fix globbing+backslashes in unquoted $var expansion
  hush: fix handling of \" in quoted/unquoted `cmd`
  hush: fix handling of backslashes in variable assignment
  hush: fix improper handling of newline and hash chars in a few corner cases
  hush: fix multiple dependent variable expansion cases
  hush: fix set -- q w e; (IFS='' echo "$*"; IFS=''; echo "$*"); echo "$*"
  hush: fix var_bash3.tests and var_bash5.tests failures
  hush: fix "cmd | var=`cmd` | cmd" handling
  awk: 00.123 is not a octal constant; neither is 009.123 - fixed
  awk: fix SEGV on closing non-opened file
  bbconfig: add COMPRESS_BBCONFIG option
  cmp: with -s, do not report open errors
  crond: check mtime on crontab dir every minute, and reread if changed
  dc: make it use long longs for integer ops
  decompress_bunzip2: handle concatenated .bz2 files; speedup
  depmod: generate "new-style" modules.dep with relative paths
  diff: make diff -r much less eager to recurse into directories
  dmesg: more correct skipping of <N> perfix
  dnsd: fix 64-bit bug 2539
  dos2unix: fix SEGV when run w/o parameters
  find: add rudimentary support for -exec {} +
  free: add -b/k/m/g options; remove 4 TB limitation. +100 bytes
  free: more compatible output. +16 bytes. Closes bug 2383
  grep: cap insanely big -B NUM values to MAX_INT / 8. Closes bug 2653
  grep: fix -o match with empty string (suggested by Colin Watson (cjwatson@ubuntu.com))
  ifupdown: %client%, not %clientid%
  ifupdown: add manual method for IPv6. Closes bug 2497
  init: do not clear CRTSCTS (fix from Debian bug 528560)
  init: do not sleep forever on usage errors
  init: if PID!=1, show clearer error message
  ip: fix "ip r" breakage
  klogd: do not log partial lines
  ls: fix -lg to show group (was showing user)
  lzop: fix misordered "v=NULL; free(v)"
  man: add compatibility with man-db
  mdev: fix non-working device deletion, add a test for that
  mkswap: clear 1st kilobyte. Closes bug 1831
  mktemp: fix "mktemp /path/to/tempfile.XXXXXX"
  mktemp: fix for dir/file.XXXXXX param (by Rob). +9 bytes
  modprobe-simple: do not error out on "rmmod module" if module is unloaded ok
  modutils: explain why we no longer quote params
  mv: implement -n option
  nandwrite: complain on malformed -s NUM
  nc: fix SEGV on -v when NC_EXTRA is off
  netstat: fix IPv6 problem (garbage in scope_id)
  netstat: was using buffers one byte short for scanf (no place for NUL) - fixed
  ntpd: allow peer-less (standalone stratum 1 server) operation
  ntpd: with -q, exit after 60 seconds even if time is not synced
  patch: add -N and a test for it (fails for now)
  patch: busyboxify by migrating from toybox to busybox helpers
  patch: fix -N regression
  patch: support "patch [FILE [PATCH]]" format
  sed: fix sed -i: unlike without -i, it does not forget ranges
  sed: make N command behave as in GNU sed
  seq: exit on write errors
  sleep: fix fractional arguments in non-POSIX locale
  sleep: make it non-NOFORK. Fixes ^C in standalone shell
  smemcap: use correct tar magic
  sort: -o FILE should create/truncate FILE
  split: handle "-" file name correctly
  telnet: convert CR NUL -> CR on input. Closes bug 2569
  telnet: do not check for 0 return from poll (it's impossible)
  top: add tie breaking for topmem mode
  udhcpc: emit maxsize option in all non-NAK type packets
  udhcpc: periodically reread our ifindex and mac
  udhcpc: reduce stack usage by de-inlining routines with on-stack pkt buf
  udhcpc: remove -c CLIENTID, it is hard to use, -x 61:hexstring does the same better
  udhcpc: remove now-unneeded definitions of vendor and client-id opts
  udhcpd: reduce stack usage by ~700 bytes. +28 bytes code size
  umount: do not (ab)use PATH_MAX as mntent buffer size
  unicode: update unicode_width on !unicode branch too. Closes bug 2593
  vi: fix "ask terminal" code
  wc: add support for -m
  Eric Lammerts:
  stat: fix mtime/ctime/atime
  Gilles Espinasse:
  patch: implement -E option
  Harald Becker:
  deluser: make it simpler, fix inability to delete user from group
  Holger Blasum:
  update docs/new-applet-HOWTO.txt
  Javier Viguera:
  find_stray_empty_lines: fix tail "invalid context" error
  Jeremie Koenig:
  readlink: use xmalloc_realpath()
  mark Linux-specific configuration options
  init,loginutils: termios portability fixes
  init,halt: portability improvements
  init: make the initial $TERM value configurable
  libbb.h: add device names for Hurd and FreeBSD
  mkdir: fix -p on FreeBSD
  libbb: conditionalize AF_* usage in error reporting
  tcpsvd,udpsvd: conditionalize usage of SO_ORIGINAL_DST
  less: remove misguided dependency on PLATFORM_LINUX
  bootchartd: mounting tmpfs is Linux-specific
  vlock: disable linux console calls on other systems
  cttyhack: serial console detection is Linux-specific
  klogd: make it work on non-linux systems
  stty: sort out preprocessor conditionals
  Kevin Cernekee:
  docs: change CVS references to git
  docs: sync up AUTHORS and busybox_footer.pod
  fdisk: initial stab at GPT partition support
  Lauri Kasanen:
  modprobe: make -l open the right file
  libbb: remove unused variable
  Lukas Huba:
  patch: implement -E option
  Macpaul Lin:
  fdisk: add support for NDS32 architecture
  modutils: add support for NDS32 architecture
  Marek Polacek:
  mpstat: new applet. ~5.5k
  iostat: new applet. 2800 bytes
  powertop: new applet
  *: s/perror/bb_simple_perror_msg/g
  *: use _exit() in sighandlers
  showkey: do not use exit-thru-sighandler
  bloat-o-meter: make it python3 compliant
  Matheus Izvekov:
  diff: fix "diff dir1 dir2/". Closes bug 2203
  Mike Frysinger:
  depmod.pl: add recursive sanity check
  build system: allow SKIP_STRIP to be set in the env
  gen_build_files.sh: rewrite with sed
  inetd: if argv[0] is not specified, set it to program name
  Mike Shal:
  lineedit: fix tab-completion of file names with spaces
  Nguyen Thai Ngoc Duy:
  wget: flush output to network before receving reply
  Pascal Bellard:
  depmod: accept and ignore -u, -q, -C FILE
  cpio: avoid 'not created: newer or same age file exists' message for dirs
  Peter Korsgaard:
  httpd: optional support for gzip-compressed pages
  httpd: simplified "gzip" test
  Richard Braun:
  tune2fs: implement -c and -i options
  Rob Landley:
  nbd-client: new applet
  patch: replace it with toybox's implementation
  patch: deal with omitted ",len" in hunk headers (default len to 1)
  awk: reduce ifdef forest
  Sergey Naumov:
  blockdev: new applet
  Souf Oued:
  acpid: add config file and map file
  Thomas Chou:
  mkmakefile: make 3.82 fix
  Tito Ragusa:
  deluser: deluser/delgroup size reduction and improvements
  Vladimir Dronnikov:
  sendmail: fix assumption that headers should have a space after the colon
  Vladislav Grishenko:
  udhcp: add support for 0x21 ROUTES and 0xf9 MS_STATIC_ROUTES options
  udhcpc: fix OPTION_IP_PAIR parsing
  Waldemar Brodkorb:
  OpenBSD compatibility
  Wolfram Sang:
  lineedit: create history files with mode 0600
  BusyBox 1.17.4.
  (git,
  patches,
  how to add a patch)
  Bug fix release. 1.17.4 has fixes for
  dnsd (fix for 64-bit builds),
  ip route (fixed bug of misplaced argv++),
  ls (-g was showing user instead of group),
  sort (fix for -o FILE not creating FILE),
  unicode (fixed bug in build with disabled unicode support).
  BusyBox 1.17.3.
  (git,
  patches,
  how to add a patch)
  Bug fix release. 1.17.3 has fixes for
  ip (build fix for older systems),
  hush (fix for handling of backslashes in unquoted $var expansion),
  line editing (fixed handling of EIO error and tab expansion for non-ASCII file names).
  BusyBox 1.17.2.
  (git,
  patches,
  how to add a patch)
  Bug fix release. 1.17.2 has fixes for
  build system (now works with make 3.82),
  grep (zero length match could loop forever with -o),
  mdev (/dev nodes were never deleted),
  mktemp (fix for patterns with slashes),
  sed (fixes to -i option and N command),
  shell ($! was sometimes set to a wrong value;
  ulimit without both -H and -S now sets both hard and soft limits)
  Patch applet is completely replaced by a more capable
  implementation from toybox (Rob Landley's code).
  Aboriginal Linux needs it.
  BusyBox 1.17.1.
  (git,
  patches,
  how to add a patch)
  Bug fix release. 1.17.1 has fixes for
  build system (out-of-tree build was broken),
  acpid (fix for older kernel headers),
  depmod (now generates new-style modules.dep with relative paths),
  diff (fix for "diff DIR1 DIR2/" - note the trailing slash),
  dos2unix (fix for invocation without parameters),
  ip r (was not working since "r" abbreviates both "route" and "rule"; aliased to "route" now),
  mktemp (fix regression which prevented kernel builds),
  modprobe (fix modprobe -l),
  vi (fix in "ask terminal" code),
  wget (fix for progress indicator)
  BusyBox 1.17.0.
  (git,
  patches,
  how to add a patch)
  Sizes of busybox-1.17.0 and busybox-1.16.2 (with equivalent config, static uclibc build):
  text data bss dec hex filename
  819343 441 7068 826852 c9de4 busybox-1.16.2
  819623 441 7076 827140 c9f04 busybox-1.17.0
  Changes since previous release:
  New applets:
  Other changes:
  BusyBox 1.16.2.
  (git,
  patches,
  how to add a patch)
  Bug fix release. 1.16.2 has fixes for ash (complex cases of stdin redirection,
  memory reallocation bug fix), cpio ("NNN blocks" goes to stderr now),
  udhcp (last byte of hosthame was truncated), dnsd (misaligned access),
  hush (in some cases $# was wrong), hwclock (subsecond sync code removed),
  sed (a corner case with line continuation is fixed).
  BusyBox 1.16.1.
  (git,
  patches,
  how to add a patch)
  Bug fix release. 1.16.1 has fixes for ash (SEGV with 'trap' and 'jobs'),
  beep (pause was 1000 times too small), udhcpd (SEGV with -v), fbsplash
  (re-enable drawing of images with size different than screen size),
  hush (exec was not picking up applets in standalone mode), blkid
  (a few newer swap formats supported), md5sum/shaNsum (accept -bt options),
  syslogd (logfile had mode 0666), tail (a case where we tried to write
  negative number of bytes), tftpd (open without third argument),
  touch (-d wasn't working as it should), wc (with one file, don't print
  any leading spaces), wget (SEGV if proxy is specified in environment),
  some toolchain compatibility fixes, help text fixes,
  build system fix (defconfig was not updated).
  BusyBox 1.16.0.
  (git,
  patches,
  how to add a patch)
  Sizes of busybox-1.16.0 and busybox-1.15.3 (with equivalent config, static uclibc build):
  text data bss dec hex filename
  816619 453 7436 824508 c94bc busybox-1.15.3/busybox
  812074 453 7300 819827 c8273 busybox-1.16.0/busybox
  BusyBox 1.15.3.
  (git,
  patches,
  how to add a patch)
  Bug fix release. 1.15.3 has fixes for ash (compilation with signed chars,
  SIGHUP handling fix), awk, flash_eraseall (fix for newer kernel headers),
  grep, mount (mount -a won't mount everyting again on 2nd run), ping
  (fix unaligned access), split (accepts "-" as stdin now), build system
  (parallel build).
  BusyBox 1.15.2.
  (git,
  patches,
  how to add a patch)
  Bug fix release. 1.15.2 has fixes for ash and hush (`trap` handling),
  dd (fixed handling of I/O errors), find (fix for -follow and symlinks),
  pidof (corrected recognition of kernel thread names), sed (SEGV),
  uniq (memory leak), line editing (Ctrl-D works again), build system.
  BusyBox 1.15.1.
  (git,
  patches,
  how to add a patch)
  BusyBox 1.14.4.
  (git,
  patches,
  how to add a patch)
  Bug fix releases. 1.14.4 has fixes for ash, httpd, modprobe and the build system,
  1.15.1 has fixes for ash (unicode fix), httpd (fix for "dir index via
  interpreter" case), hush ($PWD support), inetd (fd leak fix), modprobe-small
  (fix for aliases with dashes), unlzma (SEGV on 64-bit), and generic
  unpacking routines (was not restoring mode).
  BusyBox 1.15.0.
  (git,
  patches,
  how to add a patch)
  Sizes of busybox-1.15.0 and busybox-1.14.3 (with equivalent config, static uclibc build):
  text data bss dec hex filename
  778114 454 7340 785908 bfdf4 busybox-1.14.3/busybox
  780508 445 7328 788281 c0739 busybox-1.15.0/busybox
  lash and msh are deprecated, please migrate to hush. They both are aliased to hush anyway.
  lash now prints "lash is deprecated, please use hush instead" message, msh does not (yet).
  BusyBox 1.14.3.
  (git,
  patches,
  how to add a patch)
  Bug fix release. Contains fixes in df (fix for "df /"), ls (problems with colored
  output in some configurations), ping6 (was not suid, unlike ping), test (parameter
  to "not" operator is optional), udhcpd (fixed lease file restore routine).
  BusyBox 1.14.2.
  (git,
  patches,
  how to add a patch)
  Bug fix release. Contains fixes in ash ('.' builtin), ftpd, httpd, modprobe
  (better exit code compatibility), readlink (more options supported),
  telnetd (now closes file descriptors in children, it was forgetting to do so).
  BusyBox 1.14.1.
  (git,
  patches,
  how to add a patch)
  Bug fix release. Contains fixes in acpid, awk, depmod, dhcp, gzip, mdev,
  modprobe, sysctl; libbb fixes.
  hush is significantly updated.
  We've migrated from SVN to GIT. SVN is frozen read-only before the conversion,
  so check out the Developing links and such for updated instructions.
  BusyBox 1.14.0.
  (git,
  patches,
  how to add a patch)
  BusyBox 1.13.4.
  (git,
  patches,
  how to add a patch)
  Sizes of busybox-1.13.4 and busybox-1.14.0 (with equivalent config, static uclibc build):
  text data bss dec hex filename
  785501 483 7036 793020 c19bc busybox.1.13.4/busybox
  788380 467 6960 795807 c249f busybox.1.14.0/busybox
  15361 0 0 15361 3c01 busybox.1.13.4/shell/hush.o
  20724 0 0 20724 50f4 busybox.1.14.0/shell/hush.o
  Most of growth is in hush. The rest shrank a bit.
  lash and msh are deprecated, please migrate to hush.
  hush had many, many fixes and features added: here documents, arithmetic evaluation, function support, and all this works on NOMMU too, safely, including 100kb-sized `command` and here documents. Here document support, arithmetic evaluation, improved ${var} operations, other fixes are by Mike Frysinger (vapier AT gentoo.org).
  BusyBox 1.13.3.
  (git,
  patches,
  how to add a patch)
  1.13.3 is a bug fix release. It has fixes for awk, depmod, init, killall, mdev,
  modprobe, printf, syslogd, tar, top, unzip, wget.
  BusyBox 1.13.2.
  (git,
  patches,
  how to add a patch)
  BusyBox 1.12.4.
  (git,
  patches,
  how to add a patch)
  Bug fix releases. 1.13.2 has fixes for crond, dc, init, ip, printf.
  1.12.4 has fixes for ip and printf.
  BusyBox 1.13.1.
  (git,
  patches,
  how to add a patch)
  BusyBox 1.12.3.
  (git,
  patches,
  how to add a patch)
  Bug fix releases. 1.13.1 has fixes for ash, option parsing, id, init,
  inotifyd, klogd, line editing and modprobe. 1.12.3 has fixes
  for option parsing and line editing.
  BusyBox 1.13.0.
  (git,
  patches,
  how to add a patch)
  BusyBox 1.12.2.
  (git,
  patches,
  how to add a patch)
  Sizes of busybox-1.12.2 and busybox-1.13.0 (with equivalent config, static uclibc build):
  text data bss dec hex filename
  778291 551 7856 786698 c010a busybox-1.12.2/busybox
  778981 551 7852 787384 c03b8 busybox-1.13.0/busybox
  New applets: blkid, devmem
  Changes since previous release:
  BusyBox 1.12.1.
  (git,
  patches,
  how to add a patch)
  BusyBox 1.11.3.
  (git,
  patches,
  how to add a patch)
  Bugfix-only releases for 1.11.x and 1.12.x branches.
  BusyBox 1.12.0.
  (git,
  patches,
  how to add a patch)
  BusyBox 1.11.2.
  (git,
  patches,
  how to add a patch)
  Sizes of busybox-1.11.2 and busybox-1.12.0 (with equivalent config, static uclibc build):
  text data bss dec hex filename
  829687 617 7052 837356 cc6ec busybox-1.11.2/busybox
  822961 594 6832 830387 cabb3 busybox-1.12.0/busybox
  New applets: rdev (Grant Erickson), setfont, showkey (both by Vladimir)
  Most significant changes since previous release (please report any regression):
  BusyBox 1.11.1.
  (git,
  patches,
  how to add a patch)
  Bugfix-only release for 1.11.x branch. It contains fixes for awk,
  bunzip2, cpio, ifupdown, ip, man, start-stop-daemon, uname and vi.
  "How to build static busybox for i486-linux-uclibc" is updated
  and tested on a fresh Fedora 9 install. Please report if it doesn't
  work for you.
  BusyBox 1.11.0.
  (git,
  patches,
  how to add a patch)
  BusyBox 1.10.4.
  (git,
  patches,
  how to add a patch)
  Sizes of busybox-1.10.4 and busybox-1.11.0 (with equivalent config, static uclibc build):
  text data bss dec hex filename
  800675 636 7080 808391 c55c7 busybox-1.10.4
  798392 611 6900 805903 c4c0f busybox-1.11.0
  New applets: inotify (Vladimir Dronnikov), man (Ivana Varekova),
  fbsplash (Michele Sanges), depmod (Bernhard Reutner-Fischer)
  We want to thank the following companies which are providing support
  for the BusyBox project:
  BusyBox 1.10.3.
  (git,
  patches,
  how to add a patch)
  Bugfix-only release for 1.10.x branch. It contains fixes for dnsd, fuser, hush,
  ip, mdev and syslogd.
  BusyBox 1.10.2.
  (git,
  patches,
  how to add a patch)
  Bugfix-only release for 1.10.x branch. It contains fixes for echo, httpd, pidof,
  start-stop-daemon, tar, taskset, tab completion in shells, build system.
  Please note that mdev was backported from current svn trunk. Please
  report if you encounter any problems with it.
  BusyBox 1.10.1.
  (git,
  patches,
  how to add a patch)
  Bugfix-only release for 1.10.x branch. It contains fixes for
  fuser, init, less, nameif, tail, taskset, tcpudp, top, udhcp.
  BusyBox 1.10.0.
  (git,
  patches,
  how to add a patch):
  Bugfix-only releases for four past branches. Links to locations
  for future hot patches are in parentheses.
  1.9.2
  (patches),
  1.8.3
  (patches),
  1.7.5
  (patches),
  1.5.2
  (patches).
  How to add a patch.
  BusyBox 1.9.1.
  (git,
  patches,
  how to add a patch)
  This is a bugfix-only release, with fixes to fsck,
  iproute, mdev, mkswap, msh, nameif, stty, test, zcip.
  hush has `command` expansion re-enabled for NOMMU, although it is
  inherently unsafe (by virtue of NOMMU's use of vfork instead of fork).
  The plan is to make this less likely to bite people in future versions.
  BusyBox 1.9.0.
  (git,
  patches,
  how to add a patch)
  Sizes of busybox-1.8.2 and busybox-1.9.0 (with almost full config, static uclibc build):
  text data bss dec hex filename
  792796 978 9724 803498 c42aa busybox-1.8.2
  783803 683 7508 791994 c15ba busybox-1.9.0
  busybox-1.8.2: busybox-1.9.0:
  input_tab 10428 echo_dg 4116
  umount_main 8252 bb_full_fd_action 4112
  rtnl_talk 8240 discard_dg 4096
  xrtnl_dump_filter 8240 echo_stream 4096
  sendMTFValues 5316 discard_stream 4096
  mainSort 4700 find_list_entry2 4096
  mkfs_minix_main 4288 readlink_main 4096
  grave 4260 ipaddr_list_or_flush 3900
  unix_do_one 4156 iproute_list_or_flush 3680
  parse_prompt 4132 insmod_main 3152
  lash is deleted from this release. hush can be configured down to almost
  the same size, but it is significantly less buggy. It even works
  on NOMMU machines (interactive mode and backticks are not working on NOMMU,
  though). "lash" applet is still available, but it runs hush.
  init has some changes in this release, please report if it causes
  problems for you.
  BusyBox 1.8.2.
  (git,
  patches,
  how to add a patch)
  BusyBox 1.7.4.
  (git,
  patches,
  how to add a patch)
  These are bugfix-only releases.
  1.8.2 contains fixes for inetd, lash, tar, tr, and build system.
  1.7.4 contains a fix for inetd.
  BusyBox 1.8.1.
  (git,
  patches,
  how to add a patch)
  This is a bugfix-only release, with fixes to login (PAM), modprobe, syslogd, telnetd, unzip.
  BusyBox 1.8.0.
  (git,
  patches,
  how to add a patch)
  Note: this is probably the very last release with lash. It will be dropped. Please migrate to hush.
  Applets which had many changes since 1.7.x:
  httpd:
  top:
  Build system improvements: libbusybox mode restored (it was lost in transition to new makefiles).
  Code and data size in comparison with 1.7.3:
  Equivalent .config, i386 uclibc static builds:
  text data bss dec hex filename
  768123 1055 10768 779946 be6aa busybox-1.7.3/busybox
  759693 974 9420 770087 bc027 busybox-1.8.0/busybox
  Other changes since previous release (abridged):
  BusyBox 1.7.3.
  (git,
  patches,
  how to add a patch)
  This is a bugfix-only release, with fixes to ash, httpd, inetd, iptun, logger, login, tail.
  BusyBox 1.7.2.
  (git,
  patches,
  how to add a patch)
  This is a bugfix-only release, with fixes to install, find, login, httpd, runsvdir, chcon, setfiles, fdisk and line editing.
  BusyBox 1.7.1.
  (git,
  patches,
  how to add a patch)
  This is a bugfix-only release, with fixes to cp, runsv, tar, busybox --install and build system.
  BusyBox 1.7.0.
  (git,
  patches,
  how to add a patch)
  Applets which had many changes since 1.6.x:
  udhcp[cd]:
  top, ps, killall, pidof:
  Build system improvements: doesn't link against libraries we don't need,
  generates verbose link output and map file, allows for custom link
  scripts (useful for removing extra padding, among other things).
  Code and data size in comparison with 1.6.1:
  Equivalent .config, i386 glibc dynamic builds:
  text data bss dec hex filename
  672671 2768 16808 692247 a9017 busybox-1.6.1/busybox
  662948 2660 13528 679136 a5ce0 busybox-1.7.0/busybox
  662783 2631 13416 678830 a5bae busybox-1.7.0/busybox.customld
  Same .config built against static uclibc:
  765021 1059 11020 777100 bdb8c busybox-1.7.0/busybox_uc
  Code/data shrink done in applets: crond, hdparm, dd, cal, od, nc, expr, uuencode,
  test, slattach, diff, ping, tr, syslogd, hwclock, zcip, find, pidof, ash, uudecode,
  runit/*, in libbb.
  Unfortunately, not much work is done on shells. This was mostly stalled
  by lack of time (read: laziness) on my part to learn how to adapt existing
  qemu-runnable image for a NOMMU architechture (available on qemu website)
  for local testing of cross-compiled busybox on my machine.
  BusyBox 1.6.1.
  (git,
  patches,
  how to add a patch)
  This is a bugfix-only release, with fixes to echo, hush, and wget.
  BusyBox 1.6.0.
  (git,
  patches,
  how to add a patch)
  Since this is a x.x.0 release, it probably does not deserve "stable"
  label. Please help making 1.6.1 stable by testing 1.6.0.
  Note that hush shell had many changes and (hopefully) is much improved now,
  but there is a possibility that it regressed in some obscure cases. Please
  report any such cases.
  lash users please note: lash is going to be deprecated in busybox 1.7.0
  and removed in the more distant future. Please migrate to hush.
  Memory usage has decreased, but we can do better still
  Other changes since previous release:
  BusyBox 1.5.1.
  (patches,
  how to add a patch)
  This is a bugfix-only release, with fixes to hdparm, hush, ifupdown, ps
  and sed.
  BusyBox 1.5.0.
  (patches,
  how to add a patch)
  Since this is a x.x.0 release, it probably does not deserve "stable"
  label. Please help making 1.5.1 stable by testing 1.5.0.
  Notable changes since previous release:
  BusyBox 1.4.2.
  This release includes only trivial fixes accumulated since 1.4.1.
  BusyBox 1.4.1.
  (patches)
  This release includes only trivial fixes accumulated since 1.4.0.
  BusyBox 1.4.0.
  (patches)
  Since this is a x.x.0 release, it probably is a bit less "stable"
  than usual.
  BusyBox 1.3.2.
  This release includes only one trivial fix accumulated since 1.3.1
  BusyBox 1.3.1.
  (patches)
  Closing 2006 with new release. It includes only trivial fixes accumulated since 1.3.0
  BusyBox 1.3.0.
  (patches)
  This release has CONFIG_DESKTOP option which enables features
  needed for busybox usage on desktop machine. For example, find, chmod
  and chown get several less frequently used options, od is significantly
  bigger but matches GNU coreutils, etc. Intended to eventually make
  busybox a viable alternative for "standard" utilities for slightly
  adventurous desktop users.
  Note that GnuPG key used to sign this release is different.
  1.2.2.1 is also signed post-factum now. Sorry for the mess.
  BusyBox 1.2.2.1.
  Added compile-time warning that static linking against glibc
  produces buggy executables.
  It's a bit overdue, but
  here is
  BusyBox 1.2.2.
  This release has dozens of fixes backported from the ongoing development
  branch. There are a couple of bugfixes to sed, two fixes to documentation
  generation (BusyBox.html shouldn't have USE() macros in it anymore), fix
  umount to report the right errno on failure and to umount block devices by
  name with newer kernels, fix mount to handle symlinks properly, make mdev
  delete device nodes when called for hotplug remove, fix a segfault
  in traceroute, a minor portability fix to md5sum option parsing, a build
  fix for httpd with old gccs, an options parsing tweak to hdparm, make test
  fail gracefully when getgroups() returns -1, fix a race condition in
  modprobe when two instances run at once (hotplug does this), make "tar xf
  foo.tar dir/dir" extract all subdirectories, make our getty initialize the
  terminal more like mingetty, an selinux build fix, an endianness fix in
  ping6, fix for zcip defending addresses, clean up some global variables in
  gzip to save memory, fix sulogin -tNNN, a help text tweak, several warning
  fixes and build fixes, fixup dnsd a bit, and a partridge in a pear tree.
  As Linux Weekly News noted,
  this is my (Rob's) last release of BusyBox. The new maintainer is Denis
  Vlasenko, I'm off to do other things.
  The email address gpl@busybox.net is now the recommended way to contact
  the Software Freedom Law Center to report BusyBox license violations.
  Since nobody seems to have objected too loudly over the weekend, I
  might as well point you all at
  Busybox
  1.2.1, a bugfix-only release with no new features.
  It has three shell fixes (two to lash: going "var=value" without
  saying "export" should now work, plus a missing null pointer check, and
  one to ash when redirecting output to a file that fills up.) Fix three
  embarassing thinkos in the new dmesg command. Two build tweaks
  (dependencies for the compressed usage messages and running make in the
  libbb subdirectory). One fix to tar so it can extract git-generated
  tarballs (rather than barfing on the pax extensions). And a partridge
  in a pear... Ahem.
  But wait, there's more! A passwd changing fix so an empty
  gecos field doesn't trigger a false objection that the new passwd contains
  the gecos field. Make all our setuid() and setgid() calls check the return
  value in case somebody's using per-process resource limits that prevent
  a user from having too many processes (and thus prevent a process from
  switching away from root, in which case the process will now _die_ rather
  than continue with root privileges). A fix to adduser to make sure that
  /etc/group gets updated. And a fix to modprobe to look for modules.conf
  in the right place on 2.6 kernels.
  The -devel branch has been stabilized and the result is
  Busybox
  1.2.0. Lots of stuff changed, I need to work up a decent changelog
  over the weekend.
  I'm still experimenting with how long is best for the development
  cycle, and since we've got some largeish projects queued up I'm going to
  try a longer one. Expect 1.3.0 in December. (Expect 1.2.1 any time
  we fix enough bugs. :)
  Update: Here are the first few bug fixes that will go into 1.2.1.
  BusyBox
  1.1.3 is another bugfix release. It makes passwd use salt, fixes a
  memory freeing bug in ls, fixes "build all sources at once" mode, makes
  mount -a not abort on the first failure, fixes msh so ctrl-c doesn't kill
  background processes, makes patch work with patch hunks that don't have a
  timestamp, make less's text search a lot more robust (the old one could
  segfault), and fixes readlink -f when built against uClibc.
  Expect 1.2.0 sometime next month, which won't be a bugfix release.
  You can now download BusyBox 1.1.2, a bug fix release consisting of 11 patches
  backported from the development branch: Some build fixes, several fixes
  for mount and nfsmount, a fix for insmod on big endian systems, a fix for
  find -xdev, and a fix for comm. Check the file "changelog" in the tarball
  for more info.
  The next new development release (1.2.0) is slated for June. A 1.1.3
  will be released before then if more bug fixes crop up. (The new plan is
  to have a 1.x.0 new development release every 3 months, with 1.x.y stable
  bugfix only releases based on that as appropriate.)
  One issue Erik Andersen wanted to resolve when handing off BusyBox
  maintainership to Rob Landley was license enforcement. BusyBox and
  uClibc's existing license enforcement efforts (pro-bono representation
  by Erik's father's law firm, and the
  Hall of Shame), haven't
  scaled to match the popularity of the projects. So we put our heads
  together and did the obvious thing: ask Pamela Jones of
  Groklaw for suggestions. She
  referred us to the fine folks at softwarefreedom.org.
  As a result, we're pleased to announce that the
  Software Freedom Law Center
  has agreed to represent BusyBox and uClibc. We join a number of other
  free and open source software projects (such as
  X.org,
  Wine, and
  Plone
  in being represented by a fairly cool bunch of lawyers, which is not a
  phrase you get to use every day.
  The new maintainer is Rob Landley, and the new release is BusyBox 1.1.1. Expect a "what's new" document in a few days. (Also, Erik and I have have another announcement pending...)
  Update: Rather than put out an endless stream of 1.1.1.x releases,
  the various small fixes have been collected together into a
  patch,
  and new fixes will be appended to that as needed. Expect 1.1.2 around
  June.
  The new stable release is
  BusyBox
  1.1.0. It has a number of improvements, including several new applets.
  (It also has a few rough spots,
  but we're trying out a "release early, release often" strategy to see how
  that works. Expect 1.1.1 sometime in March.)
  The development branch of busybox is stable enough for wider testing, so
  you can now
  download,
  the first prerelease of 1.1.0. This prerelease includes a lot of
  new
  functionality: new applets, new features, and extensive rewrites of
  several existing applets. This prerelease should be noticeably more
  standards
  compliant than earlier versions of busybox, although we're
  still working out the bugs.
  A new stable release (BusyBox
  1.01) is now available for download, containing over a hundred
  small
  fixes that have cropped up since the 1.00 release.
  Bug reports sometimes get lost when posted to the mailing list. The
  developers of BusyBox BusyBox,.
  When you take a careful look at nearly every embedded Linux device or
  software distribution shipping today, you will find a copy of BusyBox.
  With countless routers, set top boxes, wireless access points, PDAs, and
  who knows what else, the future for Linux and BusyBox on embedded devices
  is looking very bright.
  It is therefore with great satisfaction that I declare each and every
  device already shipping with BusyBox is now officially out of date.
  The highly anticipated release of BusyBox 1.00 has arrived!
  Over three years in development, BusyBox 1.00 represents a tremendous
  improvement over the old 0.60.x stable series. Now featuring a Linux
  KernelConf based configuration system (as used by the Linux kernel),
  Linux 2.6 kernel support, many many new applets, and the development
  work and testing of thousands of people from around the world.
  If you are already using BusyBox, you are strongly encouraged to upgrade to
  BusyBox 1.00. If you are considering developing an embedded Linux device
  or software distribution, you may wish to investigate if using BusyBox is
  right for your application. If you need help getting started using
  BusyBox, if you wish to donate to help cover expenses, or if you find a bug
  and need help reporting it, you are invited to visit the BusyBox FAQ.
  As usual you can download busybox here.
  Have Fun!
  Here goes release candidate 3...
  The changelog has all the details.
  And as usual you can download busybox here.
  Here goes release candidate 2...
  Have Fun!
  Here goes release candidate 1... This fixes all (most?) of the problems
  that have turned up since -pre10. In particular, loading and unloading of
  kernel modules with 2.6.x kernels should be working much better.
  I really want to get BusyBox 1.0.0 released soon and I see no real
  reason why the 1.0.0 release shouldn't happen with things pretty much as
  is. BusyBox is in good shape at the moment, and it works nicely for
  everything that I'm doing with it. And from the reports I've been getting,
  it works nicely for what most everyone else is doing with it as well.
  There will eventually be a 1.0.1 anyway, so we might as well get on with
  it. No, BusyBox is not perfect. No piece of software ever is. And while
  there is still plenty that can be done to improve things, most of that work
  is waiting till we can get a solid 1.0.0 release out the door....
  Please do not bother to send in patches adding cool new features at this
  time. Only bug-fix patches will be accepted. If you have submitted a
  bug-fixing patch to the busybox mailing list and no one has emailed you
  explaining why your patch was rejected, it is safe to say that your patch
  has been lost or forgotten. That happens sometimes. Please re-submit your
  bug-fixing patch to the BusyBox mailing list, and be sure to put "[PATCH]"
  at the beginning of the email subject line!
  Have Fun!
  On a less happy note, My 92 year old grandmother (my dad's mom) passed away
  yesterday (June 19th). The funeral will be Thursday in a little town about
  2 hours south of my home. I've checked and there is absolutely no way I
  could be back in time for the funeral if I attend OLS and give my presentation
  as scheduled.
  As such, it is with great reluctance and sadness that I have come
  to the conclusion I will have to make my appologies and skip OLS
  this year.
  Ok, I lied. It turns out that -pre9 will not be the final BusyBox
  pre-release. With any luck however -pre10 will be, since I really
  want to get BusyBox 1.0.0 released very soon. As usual, please do not
  bother to send in patches adding cool new features at this time. Only
  bug-fix patches will be accepted. It would also be very helpful if
  people could continue to review the BusyBox documentation and submit
  improvements.
  Have Fun!
  Here goes the final BusyBox pre-release... This is your last chance for
  bug fixes. With luck this will be released as BusyBox 1.0.0 later this
  week. Please do not bother to send in patches adding cool new features at
  this time. Only bug-fix patches will be accepted. It would also be
  very helpful if people could help review the BusyBox documentation
  and submit improvements. I've spent a lot of time updating the
  documentation to make it better match reality, but I could really use some
  assistance in checking that the features supported by the various applets
  match the features listed in the documentation.
  I had hoped to get this released a month ago, but
  another release on 1 March 2004 has kept me busy... very helpful if people could
  help review the BusyBox documentation and submit improvements. It would be
  especially helpful if people could check that the features supported by the
  various applets match the features listed in the documentation.
  The changelog has all the details.
  And as usual you can download busybox here.
  There was a bug in -pre6 that broke argument parsing for a
  number of applets, since a variable was not being zeroed out
  properly. This release is primarily intended to fix that one
  problem. In addition, this release fixes several other
  problems, including a rewrite by mjn3 of the code for parsing
  busybox mailing list.
  The changelog has all
  the details. And as usual you can
  download busybox here.
  Here goes the next pre-release for the new BusyBox stable
  series. This release adds a number of size optimizations,
  updates udhcp, fixes up 2.6 modutils support, updates ash
  and the shell command line editing, and the usual pile of
  bug fixes both large and small. Things appear to be
  settling down now, so with a bit of luck and some testing
  perhaps we can finish off the -pre series in February and
  move on to the final 1.0.0 release... If you see any
  problems, of have suggestions to make, as always, please
  feel free to email the busybox mailing list.
  People who rely on the daily BusyBox snapshots
  should be aware that snapshots of the old busybox 0.60.x
  series are no longer available. Daily snapshots are now
  only available for the BusyBox 1.0.0 series and now use
  the naming scheme "busybox-<date>.tar.bz2". Please
  adjust any build scripts using the old naming scheme accordingly.
  Here goes the next pre-release for the new BusyBox stable
  series. The most obvious thing in this release is a fix for
  a terribly stupid bug in mount that prevented it from working
  properly unless you specified the filesystem type. This
  release also fixes a few compile problems, updates udhcp,
  fixes a silly bug in fdisk, fixes ifup/ifdown to behave like
  the Debian version, updates devfsd, updates the 2.6.x
  modutils support, add a new 'rx' applet, removes the obsolete
  'loadacm' applet, fixes a few tar bugs, fixes a sed bug, and
  a few other odd fixes.
  If you see any problems, of have suggestions to make, as
  always, please feel free to send an email to the busybox
  mailing list.
  Here goes the fourth pre-release for the new BusyBox stable
  series. This release includes major rework to sed, lots of
  rework on tar, a new tiny implementation of bunzip2, a new
  devfsd applet, support for 2.6.x kernel modules, updates to
  the ash shell, sha1sum and md5sum have been merged into a
  common applet, the dpkg applets has been cleaned up, and tons
  of random bugs have been fixed. Thanks everyone for all the
  testing, bug reports, and patches! Once again, a big
  thank-you goes to Glenn McGrath (bug1) for stepping in and
  helping get patches merged!
  And of course, if you are reading this, you might have noticed
  the busybox website has been completely reworked. Hopefully
  things are now somewhat easier to navigate... If you see any
  problems, of have suggestions to make, as always, please feel
  free to send an email to the busybox mailing list.
  Have Fun!
  Here goes the third pre-release for the new BusyBox stable
  series. The last prerelease has held up quite well under
  testing, but a number of problems have turned up as the number
  of people using it has increased. Thanks everyone for all
  the testing, bug reports, and patches!
  If you have submitted a patch or a bug report to the busybox
  mailing list and no one has emailed you explaining why your
  patch was rejected, it is safe to say that your patch has
  somehow gotten lost or forgotten. That happens sometimes.
  Please re-submit your patch or bug report to the BusyBox
  mailing list!
  The point of the "-preX" versions is to get a larger group of
  people and vendors testing, so any problems that turn up can be
  fixed prior to the final 1.0.0 release. The main feature
  (besides additional testing) that is still still on the TODO
  list before the final BusyBox 1.0.0 release is sorting out the
  modutils issues. For the new 2.6.x kernels, we already have
  patches adding insmod and rmmod support and those need to be
  integrated. For 2.4.x kernels, for which busybox only supports
  a limited number of architectures, we may want to invest a bit
  more work before we cut 1.0.0. Or we may just leave 2.4.x
  module loading alone.
  I had hoped this release would be out a month ago. And of
  course, it wasn't since Erik became busy getting a release of
  uClibc
  out the door. Many thanks to Glenn McGrath (bug1) for
  stepping in and helping get a bunch of patches merged! I am
  not even going to state a date for releasing BusyBox 1.0.0
  -pre4 (or the final 1.0.0). We're aiming for late September...
  But if this release proves as to be exceptionally stable (or
  exceptionally unstable!), the next release may be very soon
  indeed.
  Have Fun!
  Here goes another pre release for the new BusyBox stable
  series. The last prerelease (pre1) was given quite a lot of
  testing (thanks everyone!) which has helped turn up a number of
  bugs, and these problems have now been fixed.
  Highlights of -pre2 include updating the 'ash' shell to sync up
  with the Debian 'dash' shell, a new 'hdparm' applet was added,
  init again supports pivot_root, The 'reboot' 'halt' and
  'poweroff' applets can now be used without using busybox init.
  an ifconfig buffer overflow was fixed, losetup now allows
  read-write loop devices, uClinux daemon support was added, the
  'watchdog', 'fdisk', and 'kill' applets were rewritten, there were
  tons of doc updates, and there were many other bugs fixed.
  If you have submitted a patch and it is not included in this
  release and Erik has not emailed you explaining why your patch
  was rejected, it is safe to say that he has lost your patch.
  That happens sometimes. Please re-submit your patch to the
  BusyBox mailing list.
  The point of the "-preX" versions is to get a larger group of
  people and vendors testing, so any problems that turn up can be
  fixed prior to the final 1.0.0 release. The main feature that
  is still still on the TODO list before the final BusyBox 1.0.0
  release is adding module support for the new 2.6.x kernels. If
  necessary, a -pre3 BusyBox release will happen on August 6th.
  Hopefully (i.e. unless some horrible catastrophic problem
  turns up) the final BusyBox 1.0.0 release will be ready by
  then...
  The changelog has all
  the details. As usual you can download busybox here. if you really want too.
  I am very pleased to announce that the BusyBox 0.60.5 (stable)
  is now available for download. This is a bugfix release for
  the stable series to address all the problems that have turned
  up since the last release. Unfortunately, the previous release
  had a few nasty bugs (i.e. init could deadlock, gunzip -c tried
  to delete source files, cp -a wouldn't copy symlinks, and init
  was not always providing controlling ttys when it should have).
  I know I said that the previous release would be the end of the
  0.60.x series. Well, it turns out I'm a liar. But this time I
  mean it (just like last time ;-). This will be the last
  release for the 0.60.x series -- all further development work
  will be done for the development busybox tree. Expect the development
  version to have its first real release very very soon now...
  The changelog has all
  the details. As usual you can download busybox here.
  I am very pleased to announce that the BusyBox 0.60.4
  (stable) is now available for download. This is primarily
  a bugfix release for the stable series to address all
  the problems that have turned up since the last
  release. This will be the last release for the 0.60.x series.
  I mean it this time -- all further development work will be done
  on the development busybox tree, which is quite solid now and
  should soon be getting its first real release.
  I am very pleased to announce that the BusyBox 0.60.3 (stable) is
  now available for download. This is primarily a bugfix release
  for the stable series. A number of problems have turned up since
  the last release, and this should address most of those problems.
  This should be the last release for the 0.60.x series. The
  development busybox tree has been progressing nicely, and will
  hopefully be ready to become the next stable release.
  Busybox.net is now much more available, thanks to
  the fine folks at
  who are providing hosting for busybox.net and
  uclibc.org. In addition, we now have two mirrors:
  in Canada and
  in Germany. I hope this makes things much more
  accessible for everyone!
  Thanks to the generosity of a number of busybox
  users, we have been able to purchase busybox.net
  (which is where you are probably reading this).
  Right now, busybox.net and uclibc.org are both
  living on my home system (at the end of my DSL
  line). I apologize for the abrupt move off of
  busybox.lineo.com. Unfortunately, I no longer have
  the access needed to keep that system updated (for
  example, you might notice the daily snapshots there
  stopped some time ago).
  Busybox.net is currently hosted on my home
  server, at the end of a DSL line. Unfortunately,
  the load on them is quite heavy. To address this,
  I'm trying to make arrangements to get busybox.net
  co-located directly at an ISP. To assist in the
  co-location effort, Mark Whitley
  (author of busybox sed, cut, and grep) has donated
  his NetWinder computer
  for hosting busybox.net and uclibc.org. Once this
  system is co-located, the current speed problems
  should be completely eliminated. Hopefully, too,
  some of you will volunteer to set up some mirror
  sites, to help to distribute the load a bit.
  Since some people expressed concern over BusyBox
  donations, let me assure you that no one is getting
  rich here. All BusyBox and uClibc donations will be
  spent paying for bandwidth and needed hardware
  upgrades. For example, Mark's NetWinder currently
  has just 64Meg of memory. As demonstrated when
  google spidered the site the other day, 64 Megs in
  not enough, so I'm going to be ordering 256Megs of
  ram and a larger hard drive for the box today. So
  far, donations received have been sufficient to
  cover almost all expenses. In the future, we may
  have co-location fees to worry about, but for now
  we are ok. A HUGE thank-you goes out to
  everyone that has contributed!
  -Erik
  We am very pleased to announce that the BusyBox
  0.60.2 (stable) is now released to the world. This
  one is primarily a bugfix release for the stable
  series, and it should take care of most everyone's
  needs till we can get the nice new stuff we have
  been working on in CVS ready to release (with the
  wonderful new buildsystem). The biggest change in
  this release (beyond bugfixes) is the fact that msh
  (the minix shell) has been re-worked by Vladimir N.
  Oleynik (vodz) and so it no longer crashes when
  told to do complex things with backticks.
  This release has been tested on x86, ARM, and
  powerpc using glibc 2.2.4, libc5, and uClibc, so it
  should work with just about any Linux system you
  throw it at. See the changelog for most
  of the details. The last release was
  very solid for people, and this one should
  be even better.
  As usual BusyBox 0.60.2 can be downloaded from.
  Have Fun.
  -Erik
  I was going to pay it all myself, but my wife didn't like that
  idea at all (big surprise). It turns out <insert argument
  where she wins and I don't> she has better ideas
  about what we should spend our money on that don't involve
  busybox. She suggested I should ask for contributions on the
  mailing list and web page. So...
  I am hoping that if everyone could contribute a bit, we could pick
  up the busybox.net domain name and cover the bandwidth costs. I
  know that busybox is being used by a lot of companies as well as
  individuals -- hopefully people and companies that are willing to
  contribute back a bit. So if everyone could please help out, that
  would be wonderful!
  The
  changelog has all
  the details. As usual BusyBox 0.60.1 can be downloaded from.
  Have Fun!
  Those wanting an easy way to test the 0.60.0 release with uClibc can
  use User-Mode Linux
  to give it a try by downloading and compiling
  buildroot.tar.gz.
  You don't have to be root or reboot your machine to run test this way.
  Preconfigured User-Mode Linux kernel source is also on busybox.net.
  Another cool thing is the nifty
  BusyBox Tutorial contributed by K Computing. This requires
  a ShockWave plugin (or standalone viewer), so you may want to grab the
  the GPLed shockwave viewer from here
  to view the tutorial.
  Finally, In case you didn't notice anything odd about the
  version number of this release, let me point out that this release
  is not 0.53, because I bumped the version number up a
  bit. This reflects the fact that this release is intended to form
  a new stable BusyBox release series. If you need to rely on a
  stable version of BusyBox, you should plan on using the stable
  0.60.x series. If bugs show up then I will release 0.60.1, then
  0.60.2, etc... This is also intended to deal with the fact that
  the BusyBox build system will be getting a major overhaul for the
  next release and I don't want that to break products that people
  are shipping. To avoid that, the new build system will be
  released as part of a new BusyBox development series that will
  have some not-yet-decided-on odd version number. Once things
  stabilize and the new build system is working for everyone, then
  I will release that as a new stable release series.
  The
  changelog has all
  the details. As usual BusyBox 0.60.0 can be downloaded from.
  The
  changelog covers
  some of the more obvious details, but there are many many things that
  are not mentioned, but have been improved in subtle ways. As usual,
  BusyBox 0.52 can be downloaded from.
  (Note that while the number of applets in Busybox has increased, you
  can still configure Busybox to be as small as you want by selectively
  turning off whichever applets you don't need.)
  There are a number of improvements in this release as well. For
  one thing, the wget applet is greatly improved. Dmitry Zakharov
  added FTP support, and Laurence Anderson make wget fully RFC
  compliant for HTTP 1.1. The mechanism for including utility
  functions in previous releases was clumsy and error prone. Now
  all utility functions are part of a new libbb library, which makes
  maintaining utility functions much simpler. And BusyBox now
  compiles on itanium systems (thanks to the Debian itanium porters
  for letting me use their system!).
  You can read the
  changelog for
  complete details. BusyBox 0.51 can be downloaded from.
  Because you asked for it, we have made available a Busybox boot floppy
  image. Here's how you use it:
  If you want to look at the contents of the initrd image, do this:
  mount ./busybox.floppy.img /mnt -o loop -t msdos
  cp /mnt/initrd.gz /tmp
  umount /mnt
  gunzip /tmp/initrd.gz
  mount /tmp/initrd /mnt -o loop -t minix
  lash (the busybox shell) is still with us, fixed up a bit so it
  now behaves itself quite nicely. It really is quite usable as
  long as you don't expect it to provide Bourne shell grammer.
  Standard things like pipes, redirects, command line editing, and
  environment variable expansion work great. But we have found that
  this shell, while very usable, does not provide an extensible
  framework for adding in full Bourne shell behavior. So the first order of
  business as we begin working on the next BusyBox release will be to merge in the new shell
  currently in progress at
  Larry Doolittle's website.
  Special thanks go out to Matt Kraai and Larry Doolittle for all their
  work on this release, and for keeping on top of things while I've been
  out of town.
  Special Note
  BusyBox 0.49 was supposed to have replaced lash, the BusyBox
  shell, with a new shell that understands full Bourne shell/Posix shell grammer.
  Well, that simply didn't happen in time for this release. A new
  shell that will eventually replace lash is already under
  construction. This new shell is being developed by Larry
  Doolittle, and could use all of our help. Please see the work in
  progress on Larry's website
  and help out if you can. This shell will be included in the next
  release of BusyBox.
  The curious can get a list of some of the more interesting changes by reading
  the changelog.
  Many thanks go out to the many many people that have contributed to
  this release, especially Matt Kraai, Larry Doolittle, and Kent Robotti.
  Also, some exciting infrastructure news! Busybox now has its own
  mailing list,
  publically browsable
  CVS tree,
  anonymous
  CVS access, and
  for those that are actively contributing there is even
  CVS write access.
  I think this will be a huge help to the ongoing development of BusyBox.
  Also, for the curious, there is no 0.44 release. Somehow 0.44 got announced
  a few weeks ago prior to its actually being released. To avoid any confusion
  we are just skipping 0.44.
  Many thanks go out to the many people that have contributed to this release
  of BusyBox (esp. Pavel Roskin)!
  #include <syslog.h>
  int do_log(char* msg, int delay)
  {
  openlog("testlog", LOG_PID, LOG_DAEMON);
  while(1) {
  syslog(LOG_ERR, "%s: testing one, two, three\n", msg);
  sleep(delay);
  }
  closelog();
  return(0);
  };
  int main(void)
  {
  if (fork()==0)
  do_log("A", 2);
  do_log("B", 3);
  }
  Karl M. Hegbloom has created a fix for the problem.
  Thanks Karl!
  Many thanks go out to the fine people that have helped by submitting patches
  and bug reports; particularly instrumental in helping for this release were
  Karl Hegbloom, Pavel Roskin, Friedrich Vedder, Emanuele Caratti,
  Bob Tinsley, Nicolas Pitre, Avery Pennarun, Arne Bernin, John Beppu, and Jim Gleason.
  There were others so if I somehow forgot to mention you, I'm very sorry.
  You can grab BusyBox 0.43 tarballs here.
  The pre-release can be found here.
  Please let me know ASAP if you find any bugs.
  Anyway, I'm glad to note that despite the much-faster-than-we-were-expecting
  labor, both Shaunalei and our new baby boy are doing wonderfully.
  So now that I am done with my excuse for the slow release cycle...
  Progress on the next release of BusyBox has been slow but steady. I expect
  to have a release sometime during the first week of April. This release will
  include a number of important changes, including the addition of a shell, a
  re-write of tar (to accommodate the Linux Router Project), and syslogd can now
  accept multiple concurrent connections, fixing lots of unexpected blocking
  problems.