busybox/libbb
Ron Yorston 7d1c7d8337 ash,hush: use HOME for tab completion and prompts
ash and hush correctly use the value of HOME for tilde expansion.
However the line editing code in libbb obtains the user's home
directory by calling getpwuid().  Thus tildes in tab completion
and prompts may be interpreted differently than in tilde expansion.

When the line editing code is invoked from a shell make it use the
shell's interpretation of tilde.  This is similar to how GNU readline
and bash collaborate.

function                                             old     new   delta
get_homedir_or_NULL                                   29      72     +43
optschanged                                          119     126      +7
hush_main                                           1204    1211      +7
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 57/0)               Total: 57 bytes

v2: Always check for HOME before trying the password database:  this
    is what GNU readline does.

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2022-06-26 18:05:50 +02:00
..
appletlib.c style fix 2022-05-01 17:06:00 +02:00
ask_confirmation.c
auto_string.c
bb_askpass.c libbb: introduce and use fputs_stdout 2021-02-03 20:52:40 +01:00
bb_bswap_64.c
bb_cat.c
bb_do_delay.c libbb: make msleep() result in only one syscall instead of looping 2020-12-11 16:48:47 +01:00
bb_getgroups.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
bb_getsockname.c
bb_pwd.c
bb_qsort.c
bb_strtod.c
bb_strtonum.c
bbunit.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
capability.c decrease paddign: gcc-9.3.1 slaps 32-byte alignment on arrays willy-nilly 2020-11-30 13:03:03 +01:00
change_identity.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
chomp.c
common_bufsiz.c
compare_string_array.c libbb: code shrink and speed up index_in_strings() 2021-02-02 14:37:37 +01:00
concat_path_file.c
concat_subpath_file.c
Config.src libbb/sha1: update config help text with new performance numbers 2022-02-18 17:09:51 +01:00
const_hack.c Make const ptr assign as function call in clang 2021-10-09 22:30:45 +02:00
copy_file.c cp: implement -n 2021-06-22 15:28:34 +02:00
copyfd.c libbb: create and use mmap() helpers 2020-12-14 18:25:28 +01:00
correct_password.c
crc32.c
default_error_retval.c
device_open.c
die_if_bad_username.c Fixes for Hurd build 2020-12-17 11:22:44 +01:00
dump.c *: add NOINLINEs where code noticeably shrinks 2021-10-10 13:50:53 +02:00
duration.c timeout,top,watch,ping: parse NN.N fractional duration in locales with other separators 2021-03-23 13:50:02 +01:00
endofname.c
executable.c libbb: rename run_shell() to exec_shell() 2020-12-02 21:28:47 +01:00
fclose_nonstdin.c
fflush_stdout_and_exit.c libbb: fflush_stdout_and_exit(0) still exits with _error_ (not 0!) if fflush fails 2022-01-04 23:36:16 +01:00
fgets_str.c libbb: code shrink fgets_str 2021-02-03 20:43:07 +01:00
find_mount_point.c libbbb: find_mount_point() too eager to stat mounted devices 2019-04-29 17:59:08 +02:00
find_pid_by_name.c pidof: support "pidof /path/to/binary" case 2019-06-15 18:35:39 +02:00
find_root_device.c
full_write.c dd: fix handling of short result of full_write(), closes 11711 2019-05-14 17:49:14 +02:00
get_console.c *: slap on a few ALIGN* where appropriate 2022-02-06 19:53:10 +01:00
get_cpu_count.c
get_last_path_component.c
get_line_from_file.c
get_shell_name.c
get_volsize.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
getopt32.c *: slap on a few ALIGN_PTR where appropriate 2022-02-06 20:07:12 +01:00
getopt_allopts.c
getpty.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
hash_md5_sha256_x86-32_shaNI.S libbb/sha256: explicitly use sha256rnds2's %xmm0 (MSG) argument 2022-02-12 00:52:12 +01:00
hash_md5_sha256_x86-64_shaNI.S libbb/sha256: explicitly use sha256rnds2's %xmm0 (MSG) argument 2022-02-12 00:52:12 +01:00
hash_md5_sha_x86-32_shaNI.S libbb/sha1: revert last commit: pshufb is a SSSE3 insn, can't use it 2022-02-11 14:53:26 +01:00
hash_md5_sha_x86-64_shaNI.S libbb/sha1: revert last commit: pshufb is a SSSE3 insn, can't use it 2022-02-11 14:53:26 +01:00
hash_md5_sha_x86-64.S whitespace fixes 2022-02-11 23:03:27 +01:00
hash_md5_sha_x86-64.S.sh whitespace fixes 2022-02-11 23:03:27 +01:00
hash_md5_sha.c libbb/sha256: optional x86 hardware accelerated hashing 2022-02-03 14:58:02 +01:00
hash_md5prime.c
herror_msg.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
human_readable.c
in_ether.c
inet_cksum.c gcc-9.x warning fixes 2020-10-01 03:07:22 +02:00
inet_common.c
inode_hash.c
isdirectory.c
isqrt.c
iterate_on_dir.c move iterate_on_dir() from e2fsprogs to libbb 2021-06-24 11:42:55 +02:00
Kbuild.src libbb/sha256: optional x86 hardware accelerated hashing 2022-02-03 14:58:02 +01:00
kernel_version.c avoid using strok - eliminates use of hidden global variable 2020-10-06 02:36:47 +02:00
last_char_is.c libbb: shrink last_char_is(), no longer allow NULL string argument 2020-07-19 20:49:22 +02:00
lineedit_ptr_hack.c
lineedit.c ash,hush: use HOME for tab completion and prompts 2022-06-26 18:05:50 +02:00
llist.c
logenv.c
login.c libbb: introduce and use fputs_stdout 2021-02-03 20:52:40 +01:00
loop.c mount: if we race with other loop mount, we forget to close loop dev 2020-12-17 23:38:06 +01:00
make_directory.c
makedev.c
match_fstype.c
messages.c
missing_syscalls.c Remove stime() function calls 2019-11-19 13:08:25 +01:00
mode_string.c libbb: clarify what bb_mode_string() generates 2021-09-17 17:10:38 +02:00
mtab.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
nuke_str.c
obscure.c
parse_config.c
parse_mode.c libbb: code shrink bb_parse_mode 2021-09-17 00:47:23 +02:00
percent_decode.c
perror_msg.c
perror_nomsg_and_die.c libbb: restore special handling of nomsg errors 2022-06-26 17:17:02 +02:00
perror_nomsg.c libbb: restore special handling of nomsg errors 2022-06-26 17:17:02 +02:00
pidfile.c
platform.c ash: placate -Werror=format-security 2021-02-18 13:45:49 +01:00
print_flags.c
print_numbered_lines.c libbb: introduce and use fputs_stdout 2021-02-03 20:52:40 +01:00
printable_string.c
printable.c
process_escape_sequence.c
procps.c libbb/procps: smaller global data for username/groupname cache 2020-12-30 01:04:56 +01:00
progress.c
ptr_to_globals.c libbb: extend "errno pointer" trick to other than __GLIBC__ 2020-10-01 00:34:44 +02:00
pw_encrypt_des.c libbb: code shrink in des encryption, in setup_salt() 2021-11-28 12:21:23 +01:00
pw_encrypt_md5.c
pw_encrypt_sha.c
pw_encrypt.c Fix missing "crypt.h" compilation error on the FreeBSD 2021-01-04 13:28:28 +01:00
read_key.c libbb: shrink lineedit_read_key() 2022-01-18 00:36:42 +01:00
read_printf.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
read.c libbb: Converted safe_read to safe_write format 2019-10-09 14:35:55 +02:00
README
recursive_action.c libbb: shrink recursive_action() by reducing memory pressure 2020-10-01 21:52:16 +02:00
remove_file.c libbb: do not check closedir() in remove_file() 2021-06-24 17:39:57 +02:00
replace.c replace: count_strstr - Handle an edge case where sub is empty 2019-10-09 14:39:41 +02:00
rtc.c move ADJTIME_PATH define to header files 2020-12-17 20:53:43 +01:00
run_shell.c libbb: exec_login_shell() - new function 2020-12-02 21:51:08 +01:00
safe_gethostname.c
safe_poll.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
safe_strncpy.c
safe_write.c
securetty.c
selinux_common.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
setup_environment.c libbb: introduce and use chdir_or_warn() 2022-01-13 12:56:10 +01:00
signals.c runsv: robustify signal handling - SIGTERM to child between vfork and exec could mess things up 2021-06-05 16:20:05 +02:00
simplify_path.c
single_argv.c
skip_whitespace.c
speed_table.c decrease paddign: gcc-9.3.1 slaps 32-byte alignment on arrays willy-nilly 2020-11-30 13:03:03 +01:00
str_tolower.c
strrstr.c
sysconf.c
time.c libbb: code shrink parse_datestr (again) 2021-09-18 22:55:46 +02:00
trim.c
u_signal_names.c
ubi.c
udp_io.c
unicode.c unicode: relax array alignment for tables 2020-11-30 11:30:17 +01:00
update_passwd.c update_passwd: fix context variable 2021-01-14 17:03:25 +01:00
utmp.c
uuencode.c base32/64: "truncated base64 input" -> "truncated input" 2020-11-28 13:43:54 +01:00
verror_msg.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
vfork_daemon_rexec.c libbb: code shrink: introduce and use [_]exit_SUCCESS() 2022-01-05 22:16:06 +01:00
warn_ignoring_args.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
wfopen_input.c
wfopen.c
write.c
xatonum_template.c
xatonum.c decrease paddign: gcc-9.3.1 slaps 32-byte alignment on arrays willy-nilly 2020-11-30 13:03:03 +01:00
xconnect.c libbb: reuse "bad port" error message string 2021-09-10 09:48:55 +02:00
xfunc_die.c
xfuncs_printf.c libbb: introduce and use chdir_or_warn() 2022-01-13 12:56:10 +01:00
xfuncs.c libbb: code shrink: introduce and use [_]exit_SUCCESS() 2022-01-05 22:16:06 +01:00
xgetcwd.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
xgethostbyname.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
xreadlink.c libbb: better coreutils compatibility for realpath 2021-10-09 01:47:12 +02:00
xrealloc_vector.c
xregcomp.c

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>