Denys Vlasenko
aaaaaa5ad6
less,microcom,lineedit: use common routine to set raw termios
...
function old new delta
get_termios_and_make_raw - 139 +139
xget1 39 8 -31
read_line_input 3912 3867 -45
less_main 2525 2471 -54
set_termios_to_raw 116 36 -80
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/4 up/down: 139/-210) Total: -71 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-09-15 17:14:01 +02:00
Denys Vlasenko
8187e01438
*: use ESC define instead of "\033"; use ESC[m instead of ESC[0m
...
text data bss dec hex filename
922535 481 6832 929848 e3038 busybox_old
922534 481 6832 929847 e3037 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-09-13 22:48:30 +02:00
Denys Vlasenko
84ea60ed65
line editing: make read_line_input() not take timeout param
...
It's almost always -1.
function old new delta
read_line_input 3902 3912 +10
new_line_input_t 24 31 +7
pgetc 583 585 +2
save_command_ps_at_cur_history 80 78 -2
read_line 76 74 -2
fgetc_interactive 246 244 -2
addLines 84 82 -2
doCommands 2226 2222 -4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/5 up/down: 19/-12) Total: 7 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-08-02 17:27:28 +02:00
Denys Vlasenko
f128bdbbd7
shell: make standalone shell tab-complete "busybox"
...
function old new delta
busybox_main - 624 +624
packed_usage 31758 31777 +19
applet_names 2638 2646 +8
applet_main 1528 1532 +4
applet_install_loc 191 192 +1
run_applet_and_exit 681 78 -603
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 4/1 up/down: 656/-603) Total: 53 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-07-29 00:59:24 +02:00
Denys Vlasenko
01ccdd1d3c
libbb: consolidate the code to set termios unbuffered mode
...
function old new delta
set_termios_to_raw - 116 +116
count_lines 72 74 +2
powertop_main 1458 1430 -28
top_main 943 914 -29
more_main 759 714 -45
fsck_minix_main 2969 2921 -48
conspy_main 1197 1135 -62
rawmode 99 36 -63
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/6 up/down: 118/-275) Total: -157 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2017-01-11 16:17:59 +01:00
Denys Vlasenko
038a977d47
lineedit: simplify code a bit
...
function old new delta
lineedit_read_key 155 162 +7
put_prompt 51 46 -5
read_line_input 3722 3715 -7
cmdedit_setwidth 81 50 -31
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/3 up/down: 7/-43) Total: -36 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2016-11-28 01:10:16 +01:00
Denys Vlasenko
bff71d3b9d
lineedit: fix two bugs in SIGWINCH signal handling
...
(1) restore entire sigaction, not only signal handler function
(2) do not use stdio when not sure WINCH did not interrupt a printf() or such.
function old new delta
cmdedit_setwidth - 81 +81
read_line_input 3682 3722 +40
lineedit_read_key 138 155 +17
put_prompt 55 51 -4
win_changed 93 47 -46
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 2/2 up/down: 138/-50) Total: 88 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2016-11-27 22:25:07 +01:00
Denys Vlasenko
4b89d512b1
ash,hush: make ^C in interactive mode visually much closer to bash behavior
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2016-11-25 03:41:03 +01:00
Rostislav Skudnov
2e4ef38743
lineedit: fix handling of repeating Alt-b, Alt-f, Alt-d, Alt-Backspace
...
These key combinations should repeat correctly when the keys are
pressed and held.
Before this change, they do this erratically - many repeats are "eaten"
because they are treated as unrecognized ESC seqs:
ESC 0x7f is treated by Alt+baskspace, but ESC 0x7f ESC 0x7f ESC 0x7f
is unrecognized.
Escape sequences corresponding to these key combinations are moved from
read_line_input to lineedit_read_key.
Also, these key sequences are now enabled regardless of whether
FEATURE_EDITING_VI is set, since Vim does not actually support these key
combinations, but they are present in readline library.
function old new delta
static.esccmds 93 103 +10
read_line_input 3737 3687 -50
Signed-off-by: Rostislav Skudnov <rostislav@tuxera.com >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2016-11-24 15:04:00 +01:00
Denys Vlasenko
1336052a49
lineedit: fix completion with applet names. closes 9361
...
Patch by Ron Yorston <rmy@pobox.com >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2016-10-24 01:25:05 +02:00
Natanael Copa
7e6f9316a8
lineedit: trivial codeshrink for vi-mode
...
Introduce and use BB_isalnum_or_underscore().
function old new delta
BB_isalnum_or_underscore - 43 +43
vi_word_motion 162 150 -12
vi_end_motion 163 145 -18
vi_back_motion 198 179 -19
BB_isalnum 39 - -39
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/3 up/down: 43/-88) Total: -45 bytes
Signed-off-by: Natanael Copa <ncopa@alpinelinux.org >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2016-08-14 23:30:29 +02:00
Ron Yorston
2b91958dff
Rewrite iteration through applet names to save a few bytes
...
function old new delta
run_applet_and_exit 758 755 -3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-3) Total: -3 bytes
In standalone shell mode the saving increases to 17 bytes.
Signed-off-by: Ron Yorston <rmy@pobox.com >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2016-04-15 22:13:51 +02:00
Ron Yorston
f23264b35f
lineedit: search applets as well as PATH for tab completion
...
In standalone shell mode search the applet table as well as PATH
when tab completing a command.
Use a stupid linear search: we're also about to read all the
directories on PATH so efficiency isn't a big concern.
function old new delta
add_match - 53 +53
complete_cmd_dir_file 687 724 +37
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/0 up/down: 90/0) Total: 90 bytes
Signed-off-by: Ron Yorston <rmy@frippery.org >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2015-10-30 19:49:33 +01:00
Denys Vlasenko
8dff01d06a
libbb: introduce and use is_prefixed_with()
...
function old new delta
is_prefixed_with - 18 +18
complete_username 78 77 -1
man_main 737 735 -2
fsck_device 429 427 -2
unpack_ar_archive 80 76 -4
strip_unsafe_prefix 105 101 -4
singlemount 1054 1050 -4
rtc_adjtime_is_utc 90 86 -4
resolve_mount_spec 88 84 -4
parse_one_line 1029 1025 -4
parse_conf 1460 1456 -4
may_wakeup 83 79 -4
loadkmap_main 219 215 -4
get_irqs_from_stat 103 99 -4
get_header_cpio 913 909 -4
findfs_main 79 75 -4
fbsplash_main 1230 1226 -4
load_crontab 776 771 -5
expand_vars_to_list 1151 1146 -5
date_main 881 876 -5
skip_dev_pfx 30 24 -6
make_device 2199 2193 -6
complete_cmd_dir_file 773 767 -6
run_applet_and_exit 715 708 -7
uudecode_main 321 313 -8
pwdx_main 197 189 -8
execute 568 560 -8
i2cdetect_main 1186 1176 -10
procps_scan 1242 1230 -12
procps_read_smaps 1017 1005 -12
process_module 746 734 -12
patch_main 1903 1891 -12
nfsmount 3572 3560 -12
stack_machine 126 112 -14
process_timer_stats 449 435 -14
match_fstype 111 97 -14
do_ipaddr 1344 1330 -14
open_list_and_close 359 343 -16
get_header_tar 1795 1779 -16
prepend_new_eth_table 340 323 -17
fsck_main 1811 1794 -17
find_iface_state 56 38 -18
dnsd_main 1321 1303 -18
base_device 179 158 -21
find_keyword 104 82 -22
handle_incoming_and_exit 2785 2762 -23
parse_and_put_prompt 774 746 -28
modinfo 347 317 -30
find_action 204 171 -33
update_passwd 1470 1436 -34
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/49 up/down: 18/-540) Total: -522 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2015-03-12 17:48:34 +01:00
Denys Vlasenko
23cfaab47d
libpwdgrp: use getpwent() instead of getpwent_r()
...
function old new delta
massage_data_for_non_r_func - 90 +90
bb_internal_getpwent - 69 +69
getXXnam_r 94 162 +68
fill_bounds 131 128 -3
deluser_main 355 310 -45
complete_username 123 78 -45
getXXnam 163 90 -73
massage_data_for_r_func 103 - -103
bb_internal_getpwent_r 121 - -121
------------------------------------------------------------------------------
(add/remove: 2/2 grow/shrink: 1/5 up/down: 227/-407) Total: -163 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2015-02-07 21:21:02 +01:00
Ron Yorston
20cd31a2d7
lineedit: don't block when looking for escape sequence in vi-mode
...
In vi-mode lineedit tries to detect some escape sequences.
After the ESC it reads the next character to check for certain
values. This read should have a timeout or a user-entered ESC to
switch to command mode doesn't properly handle the next character.
Signed-off-by: Ron Yorston <rmy@tigress.co.uk >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2014-12-15 13:30:58 +01:00
Denys Vlasenko
d598a8d4e6
lineedit: don't fall back to simple line input if tty is in raw mode
...
Testcase: shell command input after python ^Z should still work
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2014-12-10 17:22:13 +01:00
Denys Vlasenko
79df481dc4
lineedit: fix trivial build failure
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2014-01-10 14:38:26 +01:00
Denys Vlasenko
1b9ac21166
lineedit: use unicode_strwidth instead of unicode_strlen
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2013-08-20 16:13:05 +02:00
Denys Vlasenko
e66a56de23
lineedit: fix multi-line PS1 handling: calculate PS1 length from last \n
...
function old new delta
parse_and_put_prompt 755 774 +19
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2013-08-19 16:45:04 +02:00
Denys Vlasenko
7a18043a96
lineedit: improve Unicode handling (still buggy though)
...
function old new delta
unicode_strlen - 31 +31
read_line_input 3876 3879 +3
lineedit_read_key 255 246 -9
parse_and_put_prompt 785 755 -30
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/2 up/down: 34/-39) Total: -5 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2013-08-19 16:44:05 +02:00
Flemming Madsen
d96ffda62e
ash,hush: history builtin
...
function old new delta
show_history - 39 +39
builtin_history - 16 +16
historycmd - 13 +13
bltins1 312 324 +12
builtintab 336 344 +8
popstring 134 140 +6
hush_main 1048 1046 -2
ash_main 1398 1396 -2
size_from_HISTFILESIZE 44 40 -4
------------------------------------------------------------------------------
(add/remove: 3/0 grow/shrink: 3/3 up/down: 94/-8) Total: 86 bytes
Signed-off-by: Flemming Madsen <busybox@themadsens.dk >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2013-04-07 18:47:24 +02:00
Denys Vlasenko
8172d054db
lineedit: \W on "/bin" should show "bin", not "/bin"
...
function old new delta
parse_and_put_prompt 793 785 -8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2013-03-29 13:21:53 +01:00
Denys Vlasenko
1d14569a66
lineedit: implement \T \t \A \@ prompts escapes, fix \W escape, drop \!
...
function old new delta
parse_and_put_prompt 742 793 +51
read_line_input 3836 3826 -10
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2013-03-29 13:10:23 +01:00
Denys Vlasenko
6c852bfcad
lineedit: add handling of \H in prompt
...
Based on the patch by Arnaud Rébillout <rebillout@syscom.ch >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2013-03-28 13:20:12 +01:00
Shawn J. Goff
46031da862
lineedit: initialize delptr
...
In vi mode, the 'p' and 'P' commands caused a segfault when nothing had
been put in the buffer yet because the delptr was not initialized.
Signed-off-by: Shawn J. Goff <shawn7400@gmail.com >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2013-02-27 18:30:05 +01:00
Denys Vlasenko
b2320370be
lineedit: in !EDITING config, return -1 on fgets error
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2012-09-27 16:03:49 +02:00
Cliff Frey
4919565c15
lineedit: fix Alt-D when cursor==0
...
Signed-off-by: Cliff Frey <cliff@meraki.com >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2012-08-07 17:59:40 +02:00
Dennis Groenen
deee356a62
lineedit: histfile can get emptied when CONFIG_FEATURE_EDITING_SAVE_ON_EXIT=y
...
When CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is set to y, the histfile
will get cleared if the total amount of history lines is less than MAX_HISTORY.
Only if the histfile is not empty _and_ the amount of lines currently
in memory are equal to or greater than MAX_HISTORY, history saving will
work as expected with this feature enabled.
Output from defconfig + CONFIG_FEATURE_EDITING_SAVE_ON_EXIT=y:
$ echo "foo" > ~/.ash_history
$ ./busybox ash
~/busybox/a $ echo "bar" > /dev/null
~/busybox/a $ exit
$ cat ~/.ash_history
$
Output with the patch applied and same config as above:
$ echo "foo" > ~/.ash_history
$ ./busybox ash
~/busybox/b $ echo "bar" > /dev/null
~/busybox/b $ exit
$ cat ~/.ash_history
foo
echo "bar" > /dev/null
exit
$
Signed-off-by: Dennis Groenen <tj.groenen at gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2012-04-26 11:19:38 +02:00
Denys Vlasenko
56443cdbdd
whitespace fixes
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2012-04-20 15:07:22 +02:00
Denys Vlasenko
7ce209b9d4
shell_builtin_read: set cc[VMIN] to 1; lineedit: don't clear c_cc[VINTR]
...
First change fixes "read -n NUM". Apparently poll() won't report
data availability if cc[VMIN] > 1 until there are at least cc[VMIN] bytes.
function old new delta
read_line_input 3885 3877 -8
shell_builtin_read 1097 1087 -10
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-18) Total: -18 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2012-01-15 22:58:06 +01:00
Denys Vlasenko
c0cae52662
lineedit: fix build failure
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2011-11-04 01:09:09 +01:00
Denys Vlasenko
9ce09bc9cb
lineedit: add support for M-b, M-f, M-d, M-Backspace
...
function old new delta
ctrl_left - 96 +96
ctrl_right - 76 +76
static.esccmds 81 93 +12
read_line_input 3876 3885 +9
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 2/0 up/down: 193/0) Total: 193 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2011-11-03 13:28:22 +01:00
Denys Vlasenko
e45af7ad17
lineedit: remove SAVE_HISTORY bit, ->hist_file can be used as indicator
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2011-09-04 16:15:24 +02:00
Denys Vlasenko
bede215cf1
lineedit: add support for history saving on exit
...
Based on the patch by Dennis Groenen <tj.groenen@gmail.com >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2011-09-04 16:12:33 +02:00
Denys Vlasenko
4840ae8a06
lineedit: fix atomic replace of history file; hush: fix $HISTFILE handling
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2011-09-04 15:28:03 +02:00
Denys Vlasenko
a669eca3a2
libbb/lineedit: implement optional Ctrl-R history search
...
function old new delta
read_line_input 3433 3957 +524
load_string 77 90 +13
input_tab 1086 1069 -17
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 537/-17) Total: 520 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2011-07-11 07:36:59 +02:00
Alexey Fomenko
232ebaa568
lineedit: fix rare SEGV; mark a few FIXMEs
...
Signed-off-by: Alexey Fomenko <ext-alexey.fomenko@nokia.com >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2011-05-20 04:26:29 +02:00
Denys Vlasenko
e3d8d077b7
small fix for HISTFILESIZE
...
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2011-03-31 14:39:38 +02:00
Denys Vlasenko
2c4de5b045
ash,hush: optional support for $HISTFILESIZE.
...
Based on patch from Alexey Fomenko (ext-alexey.fomenko AT nokia.com)
function old new delta
size_from_HISTFILESIZE - 44 +44
hush_main 998 1025 +27
ash_main 1348 1374 +26
read_line_input 3361 3372 +11
new_line_input_t 17 24 +7
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2011-03-31 13:16:52 +02:00
Denys Vlasenko
353680aa46
lineedit: fixes for CONFIG_UNICODE_USING_LOCALE=y
...
function old new delta
load_string 45 91 +46
save_string 40 82 +42
reinit_unicode 34 61 +27
BB_PUTCHAR 97 120 +23
init_unicode 17 37 +20
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 5/0 up/down: 158/0) Total: 158 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2011-03-27 01:18:07 +01:00
Denys Vlasenko
66c5b12dbf
ash: fix TMOUT not restoring tty attributes
...
function old new delta
pgetc 420 500 +80
readtoken1 3202 3239 +37
read_line_input 3316 3337 +21
udhcpc_main 2610 2630 +20
file_get 266 272 +6
expandarg 958 963 +5
localcmd 257 259 +2
addLines 85 87 +2
read_line 94 95 +1
ed_main 2540 2541 +1
timed_out 1 - -1
lineedit_read_key 256 255 -1
alrm_sighandler 44 - -44
cmdloop 539 434 -105
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 10/2 up/down: 175/-151) Total: 24 bytes
text data bss dec hex filename
887379 936 17200 905515 dd12b busybox_old
887411 936 17192 905539 dd143 busybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2011-02-08 05:07:02 +01:00
Mike Shal
f3763033e4
lineedit: fix tab-completion of filenames with spaces
...
Using ash in busybox git version dea28e1e , tab completion doesn't seem
to work properly for filenames that have special characters (such as
spaces) in them. For example, with filenames "foo bar" and "foo zap",
typing "ls fo<TAB>" correctly expands to "ls foo\ ", but then
continuing to type "b<TAB>" will produce "ls foo\ bbar", which is not
correct (the 'b' is duplicated).
Signed-off-by: Mike Shal <marfey@gmail.com >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2010-11-22 03:49:18 +01:00
Wolfram Sang
2e9aeae4db
lineedit: create history files with mode 0600
...
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2010-11-15 02:58:28 +01:00
Marek Polacek
7b18107384
*: use _exit() in sighandlers; showkey: do not use exit-thru-sighandler
...
While at it, make ESC sequences more readable; and removed check for
isatty(stdin) in reset. Code shrink:
text data bss dec hex filename
884771 936 17216 902923 dc70b busybox_old
884723 936 17216 902875 dc6db busybox_unstripped
Signed-off-by: Marek Polacek <mmpolacek@gmail.com >
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com >
2010-10-28 21:34:56 +02:00
Denys Vlasenko
d55f599440
lineedit: do not hang on error, but return error indicator.
...
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com >
2010-09-07 18:40:53 +02:00
Denys Vlasenko
3926363214
lineedit: on tab completion, show filenames obly in all cases (bash compat)
...
function old new delta
complete_cmd_dir_file 731 730 -1
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com >
2010-09-03 14:11:08 +02:00
Denys Vlasenko
76939e7b72
lineedit: allocate matchBuf only temporarily: saves MAX_LINELEN bytes
...
function old new delta
input_tab 1027 1041 +14
build_match_prefix 590 562 -28
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 14/-28) Total: -14 bytes
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com >
2010-09-03 14:09:24 +02:00
Denys Vlasenko
ba0e103a66
lineedit: de-indent large block in input_tab. No logic changes.
...
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com >
2010-09-03 14:08:24 +02:00
Denys Vlasenko
a46e16ef52
lineedit: rename tmp -> chosen_match; small code shrink
...
function old new delta
input_tab 1016 1012 -4
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com >
2010-09-03 13:05:51 +02:00