busybox/libbb
Ron Yorston 3778898f97 Treat custom and applet scripts as applets
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>
2018-11-17 21:16:33 +01:00
..
appletlib.c Treat custom and applet scripts as applets 2018-11-17 21:16:33 +01:00
ask_confirmation.c xargs: use bb_ask_y_confirmation_FILE() instead of homegrown copy 2018-04-07 15:23:10 +02:00
auto_string.c
bb_askpass.c libbb: switch bb_ask_noecho() to "mallocing" string return API 2018-04-07 15:50:30 +02:00
bb_bswap_64.c
bb_cat.c fix errors found with make_single_applets.sh 2017-04-12 15:48:19 +02:00
bb_do_delay.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
bb_getgroups.c libbb: new function bb_getgroups() - allocating wrapper around getgroups() 2017-07-04 18:56:45 +02:00
bb_getsockname.c libbb: introduce and use bb_getsockname() 2018-02-11 14:55:46 +01:00
bb_pwd.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
bb_qsort.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
bb_strtod.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
bb_strtonum.c printf: fix printf "%u\n" +18446744073709551614 2018-10-30 23:24:18 +01:00
bbunit.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
capability.c libbb: compile capability code only if FEATURE_SETPRIV_CAPABILITIES or RUN_INIT 2018-02-21 20:13:39 +01:00
change_identity.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
chomp.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
common_bufsiz.c config: deindent all help texts 2017-07-21 09:50:55 +02:00
compare_string_array.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
concat_path_file.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
concat_subpath_file.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
Config.src restore documentation on the build config language 2018-06-06 15:16:48 +02:00
copy_file.c libbb: fix use-after-free in copy_file 2018-09-03 10:25:29 +02:00
copyfd.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
correct_password.c libbb: rename bb_ask -> bb_ask_noecho, bb_ask_confirmation -> bb_ask_y_confirmation 2018-04-07 15:08:12 +02:00
crc32.c libbb: commonalize a bit of little-endian CRC32 table generation code 2018-02-01 10:56:19 +01:00
default_error_retval.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
device_open.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
die_if_bad_username.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
dump.c hexdump: fix short file of zero butes treated as dup 2018-07-03 16:29:06 +02:00
duration.c fix !CONFIG_FLOAT_DURATION build 2018-08-26 16:32:16 +02:00
endofname.c
executable.c which: fix TODO with NOFORK+malloc_failure misbehaving 2018-01-12 13:21:33 +01:00
fclose_nonstdin.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
fflush_stdout_and_exit.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
fgets_str.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
find_mount_point.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
find_pid_by_name.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
find_root_device.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
full_write.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
get_console.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
get_cpu_count.c
get_last_path_component.c
get_line_from_file.c libbb: in xmalloc_fgets(), use size_t for bb_get_chunk_from_file() 2018-09-02 18:48:09 +02:00
get_shell_name.c
get_volsize.c
getopt32.c hush: GETOPT_RESET() _after_ getopts too. 2017-08-29 14:32:17 +02:00
getopt_allopts.c getopt32: factor out code to treat all args as options 2017-08-04 16:33:23 +02:00
getpty.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
hash_md5_sha.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
hash_md5prime.c tls: add 2nd cipher_id, TLS_RSA_WITH_AES_128_CBC_SHA, so far it doesn't work 2017-01-24 16:00:54 +01:00
herror_msg.c
human_readable.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
in_ether.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
inet_cksum.c
inet_common.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
inode_hash.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
isdirectory.c do not include <sys/stat.h> just before "libbb.h", it's there already 2017-10-05 14:41:36 +02:00
isqrt.c libbb: move isqrt from factor, use it in diff too 2017-04-11 07:34:56 +02:00
Kbuild.src libbb: compile obscure() only if FEATURE_PASSWD_WEAK_CHECK=y 2018-01-04 15:21:25 +01:00
kernel_version.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
last_char_is.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
lineedit_ptr_hack.c
lineedit.c Treat custom and applet scripts as applets 2018-11-17 21:16:33 +01:00
llist.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
logenv.c
login.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
loop.c testsuite/mount.tests: fix false positive 2018-06-28 14:10:00 +02:00
make_directory.c fix compile failure in previous commit 2018-02-06 18:01:39 +01:00
makedev.c
match_fstype.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
messages.c which: fix TODO with NOFORK+malloc_failure misbehaving 2018-01-12 13:21:33 +01:00
missing_syscalls.c make busybox more portable 2018-03-04 23:15:59 +01:00
mode_string.c do not include <sys/stat.h> just before "libbb.h", it's there already 2017-10-05 14:41:36 +02:00
mtab.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
nuke_str.c whitespace fixes 2018-07-17 15:04:17 +02:00
obscure.c
parse_config.c getopt32: remove opt_complementary 2017-08-08 21:55:02 +02:00
parse_mode.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
percent_decode.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
perror_msg.c
perror_nomsg_and_die.c
perror_nomsg.c
pidfile.c
platform.c
print_flags.c whitespace and comment format fixes, no code changes 2017-10-05 15:33:28 +02:00
print_numbered_lines.c cat: fix "cat -An" ignoring -n; make numbering go througn all files 2017-07-14 10:47:18 +02:00
printable_string.c unzip: use printable_string() for printing filenames 2018-09-30 16:56:56 +02:00
printable.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
process_escape_sequence.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
procps.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
progress.c progress meter: add disabled code for a more stable ETA 2018-02-13 16:48:52 +01:00
ptr_to_globals.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
pw_encrypt_des.c do not use `a' quoting style in comments 2017-08-02 14:26:33 +02:00
pw_encrypt_md5.c
pw_encrypt_sha.c tls: add 2nd cipher_id, TLS_RSA_WITH_AES_128_CBC_SHA, so far it doesn't work 2017-01-24 16:00:54 +01:00
pw_encrypt.c libbb: crypt() in newer glibc requires include <crypt.h> 2018-06-27 09:45:20 +02:00
read_key.c
read_printf.c
read.c
README
recursive_action.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
remove_file.c remove_file: don't call rmdir if remove_file return failure 2018-09-09 20:16:04 +02:00
replace.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
rtc.c
run_shell.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
safe_gethostname.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
safe_poll.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
safe_strncpy.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
safe_write.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
securetty.c libbb: fix "error: redefinition of 'is_tty_secure'" 2017-04-13 17:55:05 +02:00
selinux_common.c
setup_environment.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
signals.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
simplify_path.c
single_argv.c
skip_whitespace.c libbb: Use return value from is_prefixed_with() 2018-02-27 13:35:40 +01:00
speed_table.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
str_tolower.c
strrstr.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
sysconf.c
time.c date: do not allow "month #20" and such, closes 11356 2018-09-23 20:27:32 +02:00
trim.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
u_signal_names.c libbb/u_signal_names.c: don't check errno after bb_strtou 2018-10-31 11:28:37 +01:00
ubi.c ubi tools: ubiupdatevol supports "-" input and actually respects -s SIZE 2017-08-07 16:00:25 +02:00
udp_io.c udp_io, traceroute: Standardise IPv6 PKTINFO handling to be portable 2017-10-30 16:06:50 +01:00
unicode.c unzip: use printable_string() for printing filenames 2018-09-30 16:56:56 +02:00
update_passwd.c fix breakage found by mass one-applet builds 2016-12-23 02:42:26 +01:00
utmp.c
uuencode.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
verror_msg.c
vfork_daemon_rexec.c make busybox more portable 2018-03-04 23:15:59 +01:00
warn_ignoring_args.c
wfopen_input.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
wfopen.c libbb: new function bb_die_memory_exhausted 2018-04-01 19:59:37 +02:00
write.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
xatonum_template.c
xatonum.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
xconnect.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
xfunc_die.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
xfuncs_printf.c hush: fix nested redirects colliding with script fds 2018-07-24 16:54:41 +02:00
xfuncs.c less: fix fallout from "use common routine to set raw termios" 2018-04-16 10:24:48 +02:00
xgetcwd.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
xgethostbyname.c
xreadlink.c whitespace fix 2018-05-26 17:42:00 +02:00
xrealloc_vector.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00
xregcomp.c whitespace and comment format fixes, no code changes 2017-10-05 14:40:24 +02:00

Please see the LICENSE file for copyright information (GPLv2)

libbb is BusyBox's utility library.  All of this stuff used to be stuffed into
a single file named utility.c.  When I split utility.c to create libbb, some of
the very oldest stuff ended up without their original copyright and licensing
information (which is now lost in the mists of time).  If you see something
that you wrote that is mis-attributed, do let me know so we can fix that up.

	Erik Andersen
	<andersen@codepoet.org>