ash: allow shell scripts to be embedded in the binary
authorDenys Vlasenko <vda.linux@googlemail.com>
Thu, 1 Nov 2018 08:53:25 +0000 (09:53 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Thu, 1 Nov 2018 09:15:13 +0000 (10:15 +0100)
commit4f2ef4a836be37b25808c94f41c7c85895db6f93
treee224e4f3b8513b35655da80b26369d42bd62d24d
parent552796791f8c5aa12dfb790e3a94c2d905f367ee
ash: allow shell scripts to be embedded in the binary

To assist in the deployment of shell scripts it may be convenient
to embed them in the BusyBox binary.

'Embed scripts in the binary' takes any files in the directory
'embed', concatenates them with null separators, compresses them
and embeds them in the binary.

When scripts are embedded in the binary, scripts can be run as
'busybox SCRIPT [ARGS]' or by usual (sym)link mechanism.

embed/nologin is provided as an example.

function                                             old     new   delta
packed_scripts                                         -     123    +123
unpack_scripts                                         -      87     +87
ash_main                                            1103    1171     +68
run_applet_and_exit                                   78     128     +50
get_script_content                                     -      32     +32
script_names                                           -      10     +10
expmeta                                              663     659      -4
------------------------------------------------------------------------------
(add/remove: 4/0 grow/shrink: 2/1 up/down: 370/-4)            Total: 366 bytes

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Makefile
applets_sh/nologin [deleted file]
archival/libarchive/Kbuild.src
embed/nologin [new file with mode: 0755]
include/.gitignore
include/libbb.h
libbb/appletlib.c
libbb/lineedit.c
scripts/embedded_scripts [new file with mode: 0755]
shell/ash.c