aboutsummaryrefslogtreecommitdiff
path: root/applets (follow)
Commit message (Collapse)AuthorAgeFilesLines
* busybox: add option to install to Unix-style pathsRon Yorston2020-08-141-1/+1
| | | | | The command 'busybox --install -u' installs links to Unix-style paths in the system drive.
* ps: add support for the args columnRon Yorston2019-01-081-5/+4
| | | | | | | | | Implement read_cmdline() for WIN32 by storing the command line in the same way as the applet name. The applet name is actually used for the comm column which is truncated to COMM_LEN. Using this as the size of the bb_comm array avoids the need to calculate MAX_APPLET_NAME_LEN.
* Merge branch 'busybox' into mergeRon Yorston2018-11-282-1/+25
|\
| * build system: prevent duplicate applet namesRon Yorston2018-11-271-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | The embedded script feature makes it easier to create applets with duplicate names. Currently in such cases the build succeeds but the resulting executable doesn't work as the developer intended. Catch duplicate names when the applet tables are being generated and make the build fail. Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * Treat custom and applet scripts as appletsRon Yorston2018-11-171-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | BusyBox has support for embedded shell scripts. Two types can be distinguished: custom scripts and scripts implementing applets. Custom scripts should be placed in the 'embed' directory at build time. They are given a default applet configuration and appear as applets to the user but no further configuration is possible. Applet scripts are integrated with the BusyBox build system and are intended to be used to ship standard applets that just happen to be implemented as scripts. They can be configured at build time and appear just like native applets. Such scripts should be placed in the 'applets_sh' directory. A stub C program should be written to provide the usual applet configuration details and placed in a suitable subsystem directory. It may be helpful to have a configuration option to enable any dependencies the script requires: see the 'nologin' applet for an example. function old new delta scripted_main - 41 +41 applet_names 2773 2781 +8 applet_main 1600 1604 +4 i2cdetect_main 672 674 +2 applet_suid 100 101 +1 applet_install_loc 200 201 +1 applet_flags 100 101 +1 packed_usage 33180 33179 -1 tryexec 159 152 -7 evalcommand 1661 1653 -8 script_names 9 - -9 packed_scripts 123 114 -9 complete_cmd_dir_file 826 811 -15 shellexec 271 254 -17 find_command 1007 990 -17 busybox_main 642 624 -18 run_applet_and_exit 100 78 -22 find_script_by_name 51 - -51 ------------------------------------------------------------------------------ (add/remove: 1/2 grow/shrink: 6/9 up/down: 58/-174) Total: -116 bytes text data bss dec hex filename 950034 477 7296 957807 e9d6f busybox_old 949918 477 7296 957691 e9cfb busybox_unstripped Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2018-09-101-1/+1
|\|
| * install.sh: don't clobber dangling symlinksBaruch Siach2018-07-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Symlinks in a subdirectory that is to become target rootfs are sometimes dangling because they link to canonical file names that are not present on the host, but are present relative to the target rootfs root. Don't copy over dangling symlinks when noclobber is enabled The -e test treats dangling symlinks as non-existent files. Add -h test that returns true for all symlinks. Cc: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Baruch Siach <baruch@tkos.co.il> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2018-05-132-4/+18
|\|
| * applets/install: don't try to install nothingYann E. MORIN2018-04-151-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 952d5a6024e7 (applets/install: accept more than one install option) changed the way we handle install options: before that commit, a missing install type would mean to install nothing; after, we would iterate over options, so we would never notice there was a mising option. Fix that by introducing an explicit --none option to specify to install nothing. Reported-by: Aaro Koskinen <aaro.koskinen@iki.fi> Cc: Aaro Koskinen <aaro.koskinen@iki.fi> Cc: Denys Vlasenko <vda.linux@googlemail.com> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * build system: fix parallel building issueMichael Olbrich2018-04-141-2/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The files generated by the include/config/MARKER target are in the dependency list for applets/applet_tables. If applets/applet_tables is created first during applets_dir then it will be created again later as part of $(busybox-dirs). As a result include/applet_tables.h is created again. This time while other build commands may need it. Let applets_dir depend on include/config/MARKER to avoid this particular race condition and create the header files atomically to ensure that the compiler never sees incomplete files. Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | ps: obtain applet names from other BusyBox processesRon Yorston2018-04-041-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove the code which passed applet names to child processes using environment variables. This only allowed ps to display names for its ancestors. Instead attempt to read applet names from the memory of unrelated processes. The Microsoft documentation alone wasn't enough to figure out how to do this. Additional hints from: https://stackoverflow.com/questions/4298331/exe-or-dll-image-base-address https://stackoverflow.com/questions/14467229/get-base-address-of-process
* | Merge branch 'busybox' into mergeRon Yorston2018-03-011-9/+9
|\|
| * Fix install with hardlinks and a custom PREFIX. Closes 10801Denys Vlasenko2018-02-231-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | Trying to install busybox with hardlinks and a custom PREFIX will fail for applets not in the /bin directory, because relative pathnames are used. applets/install.sh is *supposed to* use the absolute pathname for hardlinks but it fails to do so because the wrong check is used in the if statement. While fixing it, shore up other sloppy coding in applets/install.sh Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2018-02-131-24/+24
|\|
| * applets/install: accept more than one install optionYann E. MORIN2018-01-041-12/+16
| | | | | | | | | | | | | | | | Currently, it is impossible to pass more than one option to the isntall script, so it totally prevents using --noclobber. Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * applets/install: respect noclobber for script wrappers tooYann E. MORIN2018-01-041-12/+8
| | | | | | | | | | | | | | | | Simplify the handling of --noclobber so that it applies to all types of installation types, even to script wrappers. Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2017-01-081-0/+3
|\|
| * Automatically disable FEATURE_COMPRESS_USAGE for small builds.Denys Vlasenko2017-01-061-0/+3
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch busybox (up to "ash: comment out free(p) just before...")Ron Yorston2016-10-192-15/+28
|\|
| * build system: always rewrite NUM_APPLETS.hDenys Vlasenko2016-08-231-10/+11
| | | | | | | | | | | | | | Conditional rewrite can keep NUM_APPLETS.h mtime old, this causes make to try to regenerate it at every invocation. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * build system: different fix for include/applet_tables.h/include/NUM_APPLETS.hDenys Vlasenko2016-08-211-3/+16
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * build system: fix include/NUM_APPLETS.h generationDenys Vlasenko2016-08-141-5/+2
| | | | | | | | | | | | TBH, it's more like "work around my bad makefile-fu" than "fix"... Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * config: disentangle PREFER_APPLETS from SH_STANDALONE and SH_NOFORKDenys Vlasenko2016-07-221-1/+3
| | | | | | | | | | | | | | | | On user request. I thought enabling/disabling them all together is more consistent. Evidently, some people do want them to be separately selectable. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2016-07-071-0/+2
|\|
| * build system: fix a few warnings for allnoconfig buildDenys Vlasenko2016-07-051-0/+2
| | | | | | | | | | | | Not that allnoconfig build is useful in any way... Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | mingw: enable busybox --install by defaultRon Yorston2016-04-061-1/+1
|/ | | | | | | | | | | Allow FEATURE_INSTALLER to be configured and enable it in the default configuration. The behaviour is slightly different from upstream BusyBox: symbolic links are not permitted; if no target directory is provided the directory containing the busybox binary is used as the target.
* build system: finer-grained selection of search speedup table.Denys Vlasenko2016-04-021-32/+33
| | | | | | | | | | | KNOWN_APPNAME_OFFSETS=8 versus KNOWN_APPNAME_OFFSETS=0: function old new delta find_applet_by_name 55 136 +81 applet_nameofs - 14 +14 run_applet_and_exit 757 758 +1 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* applet_tables: save space by removing applet name offsetsRon Yorston2016-03-301-18/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The array applet_nameofs consumes two bytes per applet. It encodes nofork/noexec flags suid flags the offset of the applet name in the applet_name string Change the applet_table build tool to store the flags in two separate arrays (applet_flags and applet_suid). Replace applet_nameofs[] with a smaller version that only stores a limited number of offsets. This requires changes to the macros APPLET_IS_NOFORK, APPLET_IS_NOEXEC and APPLET_SUID. According to Valgrind the original find_applet_by_name required 353 cycles per call, averaged over all names. Adjusting the number of known offsets allows space to be traded off against execution time: KNOWN_OFFSETS cycles bytes (wrt KNOWN_OFFSETS = 0) 0 9057 - 2 4604 32 4 2407 75 8 1342 98 16 908 130 32 884 194 This patch uses KNOWN_OFFSETS = 8. v2: Remove some dead code from the applet_table tool; Treat the applet in the middle of the table as a special case. v3: Use the middle applet to adjust the start of the linear search as well as the last applet found. v4: Use an augmented linear search in find_applet_by_name. Drop the special treatment of the middle name from get_applet_name: most of the advantage now derives from the last stored value. v5: Don't store index in applet_nameofs, it can be calculated. v6: Tweaks by Denys function old new delta find_applet_by_name 25 125 +100 applet_suid - 92 +92 run_applet_no_and_exit 452 460 +8 run_applet_and_exit 695 697 +2 applet_name_compare 31 - -31 applet_nameofs 734 14 -720 ------------------------------------------------------------------------------ (add/remove: 1/1 grow/shrink: 3/1 up/down: 202/-751) Total: -549 bytes text data bss dec hex filename 925464 906 17160 943530 e65aa busybox_old 924915 906 17160 942981 e6385 busybox_unstripped Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Aboriginal linux/musl build fixesDenys Vlasenko2015-10-051-0/+9
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* applets: Add installation of individual binariesClayton Shotwell2015-07-011-2/+24
| | | | | | | | Adding support to install individual binaries if the option is enabled. This also installs the shared libbusybox.so.* library. Signed-off-by: Clayton Shotwell <clshotwe@rockwellcollins.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* false: make "false --help" exit with 1Denys Vlasenko2014-09-181-0/+17
| | | | | | | function old new delta run_applet_no_and_exit 447 445 -2 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* build system: use od -b instead of od -t x1Denys Vlasenko2013-11-261-6/+6
| | | | | | od -t is not available in non-CONFIG_DESKTOPed busybox od Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* build system: do not generate MAX_APPLET_NAME_LEN (unused)Denys Vlasenko2013-11-261-5/+5
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* buildsys: Add helper to list suid appletsBernhard Reutner-Fischer2013-07-261-0/+54
| | | | | | | | | | | | | Add a helper script that lists all applets that - do or may require SUID provileges (busybox.cfg.suid) - do not require SUID provileges (busybox.cfg.nosuid) Some setups prefer to build two busybox binaries, one that is suid which contains all applets that do or may require suid privileges, and a second one for all the rest (which drops suid). To ease splitting these two binaries, generate a list of CONFIG_ items for the suid binary. Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
* style fixes, no code changesDenys Vlasenko2012-09-021-1/+1
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Fix one-applet build for tcpsvdDenys Vlasenko2012-03-191-8/+1
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* applet_tables: fix single applet build failure. Closes 4009Denys Vlasenko2011-09-161-1/+8
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* applets/install.sh: afer quoting of variablesDenys Vlasenko2011-04-051-35/+34
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* fix install.shDenys Vlasenko2011-04-041-6/+10
| | | | | Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* applet_tables: do not include libbb.h, that header ir for target buildsDenys Vlasenko2011-03-281-2/+8
| | | | | | ...and applets/applet_tables.c is built on *host*. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* fix bit rot in scripts/Makefile.IMA #2Denys Vlasenko2011-03-061-0/+3
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* .gitignore: add missing ignoresBjørn Forsman2011-03-061-0/+1
| | | | | | | Ignore output files created by "make defconfig; make". Signed-off-by: Bjørn Forsman <bjorn.forsman@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* fix "make install"Bernd Jendrissek2011-02-201-1/+1
| | | | | Signed-off-by: Bernd Jendrissek <bernd.jendrissek@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* whitespace fixesDenys Vlasenko2011-02-031-2/+2
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* simpler check for odDenys Vlasenko2010-09-161-1/+2
| | | | Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
* build system: test that od is present in the host systemDenys Vlasenko2010-09-161-0/+6
| | | | Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
* *: make GNU licensing statement forms more regularDenys Vlasenko2010-08-166-6/+6
| | | | | | | This change retains "or later" state! No licensing _changes_ here, only form is adjusted (article, space between "GPL" and "v2" and so on). Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* *: fix "see file License ..." - the file is named LICENSE (in uppercase)Denys Vlasenko2010-08-162-2/+2
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* make usage_compressed.h generation _always_ update mtimeDenys Vlasenko2010-07-081-5/+1
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* randomconfig fixesDenys Vlasenko2010-07-051-2/+0
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>