Go to file
Denys Vlasenko d005c9f4c7 libbb.h: inline byteswaps
function                                             old     new   delta
recv_and_process_peer_pkt                           2173    2245     +72
machtime_dg                                           97     114     +17
machtime_stream                                       29      45     +16
fmt_time_bernstein_25                                132     139      +7
aesgcm_GHASH                                         183     184      +1
dumpleases_main                                      519     516      -3
__bswap_32                                             3       -      -3
udhcp_run_script                                     743     739      -4
tls_xread_record                                     634     630      -4
select_lease_time                                     56      52      -4
rdate_main                                           260     256      -4
get_prefix                                           327     323      -4
udhcp_listen_socket                                  185     180      -5
sha1_process_block64                                 361     356      -5
sendping6                                             81      76      -5
sendping4                                            107     102      -5
read32                                                27      22      -5
ll_proto_a2n                                         112     107      -5
bb_lookup_port                                       102      97      -5
udhcpc_main                                         2615    2609      -6
tftpd_main                                           579     573      -6
str2sockaddr                                         558     552      -6
GMULT                                                136     130      -6
sha1_end                                              73      66      -7
ntpd_main                                           1361    1354      -7
ntohl                                                  7       -      -7
inet_addr_match                                       93      86      -7
htonl                                                  7       -      -7
do_iplink                                           1259    1252      -7
do_add_or_delete                                    1138    1131      -7
create_and_bind_or_die                               117     110      -7
bind_for_passive_mode                                124     117      -7
xconnect_ftpdata                                      98      90      -8
rpm_getint                                           118     110      -8
read_leases                                          304     296      -8
read_config                                          216     208      -8
udhcp_send_kernel_packet                             336     327      -9
udhcp_recv_kernel_packet                             143     134      -9
sha256_process_block64                               451     442      -9
d6_send_kernel_packet_from_client_data_ifindex       275     266      -9
write_leases                                         215     205     -10
wget_main                                           2518    2508     -10
udhcpd_main                                         1528    1518     -10
tftp_protocol                                       2019    2009     -10
ftpd_main                                           2159    2149     -10
des_crypt                                           1318    1308     -10
send_ACK                                             138     127     -11
ipaddr_modify                                       1618    1607     -11
udhcp_str2optset                                     650     638     -12
init_d6_packet                                       115     103     -12
xwrite_encrypted                                     512     499     -13
tls_handshake                                       2060    2047     -13
pscan_main                                           607     594     -13
perform_d6_release                                   240     227     -13
ip_port_str                                          135     122     -13
handle_incoming_and_exit                            2230    2217     -13
INET_setroute                                        751     737     -14
traceroute_init                                     1153    1137     -16
nc_main                                             1055    1039     -16
udhcp_init_header                                     92      75     -17
volume_id_probe_hfs_hfsplus                          512     494     -18
send_offer                                           455     435     -20
do_lzo_decompress                                    507     487     -20
add_client_options                                   229     209     -20
ipcalc_main                                          554     533     -21
dhcprelay_main                                       966     943     -23
change_listen_mode                                   345     321     -24
send_packet                                          188     162     -26
static.xmalloc_optname_optval                        709     681     -28
rpm_gettags                                          447     419     -28
machtime                                              28       -     -28
catcher                                              299     270     -29
sfp_to_d                                              78      48     -30
reread_config_file                                   917     886     -31
lfp_to_d                                              84      51     -33
udhcp_recv_raw_packet                                594     559     -35
nbdclient_main                                      1182    1145     -37
d_to_lfp                                             137     100     -37
lzo_compress                                         567     529     -38
d6_recv_raw_packet                                   299     254     -45
d_to_sfp                                             133      85     -48
d6_send_raw_packet_from_client_data_ifindex          427     379     -48
common_ping_main                                    1935    1887     -48
udhcp_send_raw_packet                                467     416     -51
zcip_main                                           1219    1160     -59
udhcpc6_main                                        2636    2568     -68
do_lzo_compress                                      327     258     -69
send_arp_request                                     201     129     -72
common_traceroute_main                              1699    1621     -78
arpping                                              523     437     -86
arping_main                                         1597    1481    -116
print_tunnel                                         678     550    -128
dnsd_main                                           1304    1164    -140
parse_args                                          1370    1169    -201
------------------------------------------------------------------------------
(add/remove: 0/6 grow/shrink: 5/85 up/down: 113/-2246)      Total: -2133 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-04-24 11:54:50 +02:00
applets fix "warning array subscript has type 'char'" 2021-04-14 19:12:43 +02:00
applets_sh mim: run scripts from a specification file 2020-04-30 17:23:08 +02:00
arch build system: combat gcc zealotry in data alignment, now for x86_64 too 2020-12-15 18:39:05 +01:00
archival unzip: add -t 2021-04-14 21:34:00 +02:00
configs build system: drop PLATFORM_LINUX 2020-08-13 17:12:56 +02:00
console-tools build system: drop PLATFORM_LINUX 2020-08-13 17:12:56 +02:00
coreutils echo: fix !ENABLE_FEATURE_FANCY_ECHO build 2021-04-14 18:55:30 +02:00
debianutils help text tweaks 2020-12-18 04:12:51 +01:00
docs dd: add 'oflag=append' 2019-02-14 13:01:46 +01:00
e2fsprogs decrease paddign: gcc-9.3.1 slaps 32-byte alignment on arrays willy-nilly 2020-11-30 13:03:03 +01:00
editors vi: make de-indentation with ctrl-D more like vim 2021-04-20 11:21:43 +02:00
examples examples: remove /sbin/ prefixes, system should be configured with $PATH to find utilities 2020-12-13 21:35:26 +01:00
findutils nsenter: stop option parsing on 1st non-option 2020-12-12 08:44:32 +01:00
include libbb.h: inline byteswaps 2021-04-24 11:54:50 +02:00
init *: use fopen helpers where appropriate 2020-12-30 00:16:27 +01:00
klibc-utils resume: write offset in /sys/power/resume_offset 2021-03-20 14:01:04 +01:00
libbb fix gcc-11.0 warnings 2021-04-14 17:52:18 +02:00
libpwdgrp whitespace and comment format fixes, no code changes 2017-10-05 15:33:28 +02:00
loginutils login: implement LOGIN_TIMEOUT 2021-03-19 00:27:44 +01:00
mailutils Fix mail compilation on the FreeBSD 2021-01-04 13:28:31 +01:00
miscutils platform.h: fix for Bionic >= 21 not having wait3() 2021-04-14 22:14:36 +02:00
modutils modprobe-small: convert to new recursive_action() API 2020-12-29 17:02:06 +01:00
networking libbb.h: inline byteswaps 2021-04-24 11:54:50 +02:00
printutils libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
procps libbb: introduce and use fputs_stdout 2021-02-03 20:52:40 +01:00
qemu_multiarch_testing qemu_multiarch_testing: small improvements 2017-01-02 13:48:06 +01:00
runit libbb: introduce and use xgettimeofday(), do not truncate 64-bit time_t in shells 2020-12-30 23:48:01 +01:00
scripts gcc-version.sh: fix for "invalid number" message during Android NDK builds 2021-04-22 09:21:39 +02:00
selinux *: --help text tweaks 2021-04-14 15:15:45 +02:00
shell hush: beautify ^D handling to match ash / bash 2021-04-13 16:42:17 +02:00
sysklogd libbb: introduce and use fputs_stdout 2021-02-03 20:52:40 +01:00
testsuite dd: support iflag=count_bytes 2021-04-13 21:35:57 +02:00
util-linux libbb: introduce and use fputs_stdout 2021-02-03 20:52:40 +01:00
.gitignore Treat custom and applet scripts as applets 2018-11-17 21:16:33 +01:00
.indent.pro
AUTHORS paste: new applet 2017-03-23 17:35:52 +01:00
Config.in build system: make -static-libgcc selectable in config 2020-12-16 21:53:05 +01:00
INSTALL Tweak INSTALL text 2012-04-17 12:28:13 +02:00
LICENSE LICENSE: update address of the FSF 2009-05-06 05:28:53 -04:00
make_single_applets.sh make_single_applets.sh: switch off nologin deps option 2020-06-24 16:36:44 +02:00
Makefile trylink: do not drop libs from CONFIG_EXTRA_LDLIBS 2021-02-23 23:09:49 +01:00
Makefile.custom applets/install: don't try to install nothing 2018-04-15 12:07:22 +02:00
Makefile.flags Makefile.flags: add a test for -lrt availability 2021-04-14 19:01:53 +02:00
Makefile.help build system: "make hosttools" doesn't exist, remove it from "make help" 2014-01-09 11:03:46 +01:00
NOFORK_NOEXEC.lst mv: make it NOEXEC 2018-01-14 14:41:52 +01:00
NOFORK_NOEXEC.sh NOFORK_NOEXEC.sh: a script to find "interesting" applets 2018-01-14 14:44:30 +01:00
README typo fix 2015-05-03 18:24:33 +02:00
size_single_applets.sh config: add size information for three more applets 2018-12-28 13:37:44 +01:00
TODO libbb: remove vdprintf 2017-07-29 17:30:21 +02:00
TODO_unicode ls: unicode fixes 2010-01-31 05:15:38 +01:00

Please see the LICENSE file for details on copying and usage.
Please refer to the INSTALL file for instructions on how to build.

What is busybox:

  BusyBox combines tiny versions of many common UNIX utilities into a single
  small executable.  It provides minimalist replacements for most of the
  utilities you usually find in bzip2, coreutils, dhcp, diffutils, e2fsprogs,
  file, findutils, gawk, grep, inetutils, less, modutils, net-tools, procps,
  sed, shadow, sysklogd, sysvinit, tar, util-linux, and vim.  The utilities
  in BusyBox often have fewer options than their full-featured cousins;
  however, the options that are included provide the expected functionality
  and behave very much like their larger counterparts.

  BusyBox has been written with size-optimization and limited resources in
  mind, both to produce small binaries and to reduce run-time memory usage.
  Busybox is also extremely modular so you can easily include or exclude
  commands (or features) at compile time.  This makes it easy to customize
  embedded systems; to create a working system, just add /dev, /etc, and a
  Linux kernel.  Busybox (usually together with uClibc) has also been used as
  a component of "thin client" desktop systems, live-CD distributions, rescue
  disks, installers, and so on.

  BusyBox provides a fairly complete POSIX environment for any small system,
  both embedded environments and more full featured systems concerned about
  space.  Busybox is slowly working towards implementing the full Single Unix
  Specification V3 (http://www.opengroup.org/onlinepubs/009695399/), but isn't
  there yet (and for size reasons will probably support at most UTF-8 for
  internationalization).  We are also interested in passing the Linux Test
  Project (http://ltp.sourceforge.net).

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

Using busybox:

  BusyBox is extremely configurable.  This allows you to include only the
  components and options you need, thereby reducing binary size.  Run 'make
  config' or 'make menuconfig' to select the functionality that you wish to
  enable.  (See 'make help' for more commands.)

  The behavior of busybox is determined by the name it's called under: as
  "cp" it behaves like cp, as "sed" it behaves like sed, and so on.  Called
  as "busybox" it takes the second argument as the name of the applet to
  run (I.E. "./busybox ls -l /proc").

  The "standalone shell" mode is an easy way to try out busybox; this is a
  command shell that calls the built-in applets without needing them to be
  installed in the path.  (Note that this requires /proc to be mounted, if
  testing from a boot floppy or in a chroot environment.)

  The build automatically generates a file "busybox.links", which is used by
  'make install' to create symlinks to the BusyBox binary for all compiled in
  commands.  This uses the CONFIG_PREFIX environment variable to specify
  where to install, and installs hardlinks or symlinks depending
  on the configuration preferences.  (You can also manually run
  the install script at "applets/install.sh").

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

Downloading the current source code:

  Source for the latest released version, as well as daily snapshots, can always
  be downloaded from

    http://busybox.net/downloads/

  You can browse the up to the minute source code and change history online.

    http://git.busybox.net/busybox/

  Anonymous GIT access is available.  For instructions, check out:

    http://www.busybox.net/source.html

  For those that are actively contributing and would like to check files in,
  see:

    http://busybox.net/developer.html

  The developers also have a bug and patch tracking system
  (https://bugs.busybox.net) although posting a bug/patch to the mailing list
  is generally a faster way of getting it fixed, and the complete archive of
  what happened is the git changelog.

  Note: if you want to compile busybox in a busybox environment you must
  select CONFIG_DESKTOP.

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

Getting help:

  when you find you need help, you can check out the busybox mailing list
  archives at http://busybox.net/lists/busybox/ or even join
  the mailing list if you are interested.

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

Bugs:

  if you find bugs, please submit a detailed bug report to the busybox mailing
  list at busybox@busybox.net.  a well-written bug report should include a
  transcript of a shell session that demonstrates the bad behavior and enables
  anyone else to duplicate the bug on their own machine. the following is such
  an example:

    to: busybox@busybox.net
    from: diligent@testing.linux.org
    subject: /bin/date doesn't work

    package: busybox
    version: 1.00

    when i execute busybox 'date' it produces unexpected results.
    with gnu date i get the following output:

	$ date
	fri oct  8 14:19:41 mdt 2004

    but when i use busybox date i get this instead:

	$ date
	illegal instruction

    i am using debian unstable, kernel version 2.4.25-vrs2 on a netwinder,
    and the latest uclibc from cvs.

	-diligent

  note the careful description and use of examples showing not only what
  busybox does, but also a counter example showing what an equivalent app
  does (or pointing to the text of a relevant standard).  Bug reports lacking
  such detail may never be fixed...  Thanks for understanding.

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

Portability:

  Busybox is developed and tested on Linux 2.4 and 2.6 kernels, compiled
  with gcc (the unit-at-a-time optimizations in version 3.4 and later are
  worth upgrading to get, but older versions should work), and linked against
  uClibc (0.9.27 or greater) or glibc (2.2 or greater).  In such an
  environment, the full set of busybox features should work, and if
  anything doesn't we want to know about it so we can fix it.

  There are many other environments out there, in which busybox may build
  and run just fine.  We just don't test them.  Since busybox consists of a
  large number of more or less independent applets, portability is a question
  of which features work where.  Some busybox applets (such as cat and rm) are
  highly portable and likely to work just about anywhere, while others (such as
  insmod and losetup) require recent Linux kernels with recent C libraries.

  Earlier versions of Linux and glibc may or may not work, for any given
  configuration.  Linux 2.2 or earlier should mostly work (there's still
  some support code in things like mount.c) but this is no longer regularly
  tested, and inherently won't support certain features (such as long files
  and --bind mounts).  The same is true for glibc 2.0 and 2.1: expect a higher
  testing and debugging burden using such old infrastructure.  (The busybox
  developers are not very interested in supporting these older versions, but
  will probably accept small self-contained patches to fix simple problems.)

  Some environments are not recommended.  Early versions of uClibc were buggy
  and missing many features: upgrade.  Linking against libc5 or dietlibc is
  not supported and not interesting to the busybox developers.  (The first is
  obsolete and has no known size or feature advantages over uClibc, the second
  has known bugs that its developers have actively refused to fix.)  Ancient
  Linux kernels (2.0.x and earlier) are similarly uninteresting.

  In theory it's possible to use Busybox under other operating systems (such as
  MacOS X, Solaris, Cygwin, or the BSD Fork Du Jour).  This generally involves
  a different kernel and a different C library at the same time.  While it
  should be possible to port the majority of the code to work in one of
  these environments, don't be surprised if it doesn't work out of the box.  If
  you're into that sort of thing, start small (selecting just a few applets)
  and work your way up.

  In 2005 Shaun Jackman has ported busybox to a combination of newlib
  and libgloss, and some of his patches have been integrated.

Supported hardware:

  BusyBox in general will build on any architecture supported by gcc.  We
  support both 32 and 64 bit platforms, and both big and little endian
  systems.

  Under 2.4 Linux kernels, kernel module loading was implemented in a
  platform-specific manner.  Busybox's insmod utility has been reported to
  work under ARM, CRIS, H8/300, x86, ia64, x86_64, m68k, MIPS, PowerPC, S390,
  SH3/4/5, Sparc, and v850e.  Anything else probably won't work.

  The module loading mechanism for the 2.6 kernel is much more generic, and
  we believe 2.6.x kernel module loading support should work on all
  architectures supported by the kernel.

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

Please feed suggestions, bug reports, insults, and bribes back to the busybox
mailing list:

	busybox@busybox.net

and/or maintainer:

	Denys Vlasenko
	<vda.linux@googlemail.com>