aboutsummaryrefslogtreecommitdiff
path: root/console-tools (unfollow)
Commit message (Collapse)AuthorFilesLines
2 daysshells: add tests missing from last commitRon Yorston4-0/+30
2 daysash: redir: Retry open on EINTRRon Yorston2-69/+93
Apply upstream commit 9b67dde8c. Adds 8 bytes in the 32-bit build.
3 daysash: eval: Reset handler when entering a subshellRon Yorston1-14/+33
Apply upstream commit 81274d8b3. On Windows it isn't necessary to reset the exception handler in evalbackcmd() or evalpipe(), as that will have been done by forkshell_init(). The globals_misc structure now contains a setjmp() buffer. On 64-bit Windows this needs 16-byte alignment. This is achieved in the forkshell data structure by placing the globals_misc data immediately after the 16-byte aligned forkshell data. Saves 144 bytes in the 64-bit build.
5 daysash: jobs: Block signals during tcsetpgrpRon Yorston1-1/+16
Merge upstream commit 4ce8afe6b. This has no effect on Windows.
5 daysash: eval: Add vfork supportRon Yorston4-36/+128
Merge upstream commit df154028d. Since we don't have vfork() on Windows we continue to use the spawn_forkshell() mechanism. Although there is some rearrangement of the code it's functionally the same.
5 daysash: rename got_sigchld, doing_jobctl, and INT_ON/OFF to match dashRon Yorston1-158/+158
Merge upstream commit 9f490785e. The changes are cosmetic, to bring the code into line with dash.
9 dayshush: changes to comments and whitespace, no code changesbusyboxDenys Vlasenko1-8/+8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
9 daysmake: override commands for single-colon target ruleRon Yorston1-7/+30
If more than one single-colon target rule has commands only the last set of commands should be used. Previously the presence of more than one single-colon target rule with commands was treated as an error. Adds 88-112 bytes.
10 daysash: implement <<<here_string syntaxDenys Vlasenko3-26/+129
function old new delta write2pipe - 133 +133 .rodata 105992 106009 +17 readtoken1 3101 3111 +10 cmdtxt 631 641 +10 nodesize 27 28 +1 redirect 961 916 -45 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 4/1 up/down: 171/-45) Total: 126 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-28tls: rewrite Schannel codeRFL8902-268/+283
The previous code had issues with buffer management, resulting in failures.
2025-08-26ls: add '-g' and '-C' to usage messageRon Yorston1-0/+5
For some reason upstream doesn't include the '-g' option in the usage message for 'ls'. Commit 551bfdb97 (ls: implement -q, fix -w0, reduce startup time) added a description but left it commented out. It didn't add 'g' to the list of options. 'C' appears in the list but its description is commented out. Adds 24-32 bytes. (GitHub issue #517)
2025-08-22lineedit: fix PS1='\W' for root directoryRon Yorston1-1/+1
An upstream bug caused '\W' to return an empty string for the root directory of any drive. bash displays '/' in similar circumstances on Linux. Adds 16 bytes. (GitHub issue #516)
2025-08-21tr: an escaped dash doesn't indicate a rangeRon Yorston2-0/+11
Upstream commit d683c5c2f1 (tr: support octal ranges) broke the previous behaviour that an escaped dash doesn't indicate a range: '[p\-r]' should match 'p', '-' or 'r', not 'p', 'q' or 'r'. Add a special case to handle this. Adds 16 bytes. (GitHub issue #515)
2025-08-18hush: fix several syntax corner cases with function definitionsDenys Vlasenko9-2/+37
function old new delta parse_stream 3063 3075 +12 done_word 777 784 +7 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 19/0) Total: 19 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-18hush: shrink "function" codeDenys Vlasenko1-11/+11
function old new delta done_word 766 777 +11 static.reserved_match 16 12 -4 reserved_list 240 168 -72 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/2 up/down: 11/-76) Total: -65 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-18hush: do not SEGV on if { echo foo; } then { echo bar; } fiDenys Vlasenko1-5/+4
For some reason, it was only happening in interactive use function old new delta initialize_context 39 54 +15 parse_stream 3077 3063 -14 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/1 up/down: 15/-14) Total: 1 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-18hush: disentangle keyword detection, no logic changesDenys Vlasenko1-25/+27
function old new delta done_word 790 766 -24 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-18tls: various schannel fixesRFL8901-135/+61
2025-08-17win32: fix return value of isatty()Ron Yorston1-1/+1
Changes to the ls applet upstream assumed that the return value of isatty() followed the C standard and would be 0 or 1. The wrapper for Windows' _isatty() didn't allow for it returning a non-zero value for a tty, not 1. This confused ls. Fix the wrapper. (GitHub issue #513)
2025-08-17hush: make "function" keyword support optionalDenys Vlasenko1-11/+22
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-17hush: with --login, errors /etc/profile in must not exit shellDenys Vlasenko1-3/+8
function old new delta die_if_script 28 34 +6 hush_main 1146 1150 +4 run_list 1031 1028 -3 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/1 up/down: 10/-3) Total: 7 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-17hush: recognize "function FUNC { cmd; }" syntaxDenys Vlasenko1-43/+103
function old new delta reserved_list - 240 +240 parse_stream 2923 3077 +154 done_word 771 790 +19 .rodata 105975 105992 +17 static.reserved_match 12 16 +4 static.reserved_list 168 - -168 ------------------------------------------------------------------------------ (add/remove: 1/1 grow/shrink: 4/0 up/down: 434/-168) Total: 266 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-17hush: remove always-true conditionalDenys Vlasenko1-1/+0
function old new delta parse_stream 2940 2923 -17 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-17hush: fix infinite loop expanding alias a="nice&&a"Denys Vlasenko1-6/+45
function old new delta parse_stream 2857 2940 +83 i_peek 55 69 +14 i_free_alias_buffer 33 37 +4 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 101/0) Total: 101 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-17hush: comment fixesDenys Vlasenko1-2/+1
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-17hush: make "alias" print aliases in properly escaped formDenys Vlasenko1-31/+21
function old new delta print_pfx_escaped_nl - 83 +83 builtin_alias 216 218 +2 .rodata 105985 105975 -10 parse_stream 2873 2857 -16 builtin_set 301 259 -42 builtin_readonly 107 59 -48 builtin_export 145 93 -52 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 1/5 up/down: 85/-168) Total: -83 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-17hush: fix nested alias expansionDenys Vlasenko1-5/+10
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-17hush: optional alias supportDenys Vlasenko1-44/+388
function old new delta parse_stream 2540 2873 +333 i_getch 85 410 +325 builtin_alias - 216 +216 builtin_unalias - 185 +185 .rodata 105806 105985 +179 word_matches_alias - 82 +82 find_alias_slot - 77 +77 end_of_alias_name - 69 +69 builtin_type 128 179 +51 i_free_alias_buffer - 33 +33 enable_all_aliases - 29 +29 bltins1 396 420 +24 o_reset_to_empty_unquoted - 21 +21 run_pipe 1554 1566 +12 i_peek 57 55 -2 parse_redirect 351 346 -5 redirect_opt_num 63 53 -10 encode_then_append_var_plusminus 552 532 -20 done_word 796 771 -25 i_getch_interactive 308 - -308 ------------------------------------------------------------------------------ (add/remove: 8/1 grow/shrink: 6/5 up/down: 1636/-370) Total: 1266 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-16hush: optimization in set_local_var()Denys Vlasenko1-6/+6
function old new delta set_local_var 416 409 -7 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-15hush: implement <<<here_string syntaxDenys Vlasenko3-41/+137
function old new delta setup_heredoc 299 351 +52 parse_stream 2514 2540 +26 parse_redirect 335 351 +16 redir_table 40 48 +8 static.setup_redirects 394 400 +6 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 5/0 up/down: 108/0) Total: 108 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-14hush: allow faster parsing for "./:@" charactersDenys Vlasenko1-2/+7
function old new delta parse_stream 2513 2514 +1 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-14hush: shrink syntax error handlingDenys Vlasenko1-28/+52
Was trying to add code to reject more invalid "case" syntaxes, but it's not that easy function old new delta done_word 795 796 +1 parse_stream 2529 2513 -16 .rodata 105825 105806 -19 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/2 up/down: 1/-35) Total: -34 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-14hush: undo incorrect change which allows a'b'=c to be assignmentDenys Vlasenko5-22/+20
While at it, remove now-unused WORD_IS_KEYWORD Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-14hush: explain "empty quoted str marker" trickDenys Vlasenko1-5/+11
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-14hush: improve code readability, no logic changesDenys Vlasenko1-22/+25
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-14hush: move tickquote1.tests to hush-bugs/ - it's a known bugDenys Vlasenko2-0/+0
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-14hush: remove the is_blank danceDenys Vlasenko5-76/+75
function old new delta parse_stream 2566 2524 -42 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-14hush: remove two strchr's from the hottest parsing loopDenys Vlasenko1-88/+85
function old new delta parse_stream 2572 2566 -6 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-13hush: optimize decoding of $'str' - avoid extra function call if we canDenys Vlasenko1-5/+4
function old new delta parse_stream 2565 2572 +7 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-13hush: shrink i_getch, rename two functionsDenys Vlasenko1-28/+23
Final link with: <none> function old new delta i_getch_interactive - 308 +308 i_getch 102 85 -17 fgetc_interactive 309 - -309 ------------------------------------------------------------------------------ (add/remove: 1/1 grow/shrink: 0/1 up/down: 308/-326) Total: -18 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-13hush: ~5% faster parsing of typical shell scriptsDenys Vlasenko1-13/+19
0-9,A-Z,a-z are never special and just go into the current word. function old new delta parse_stream 2476 2565 +89 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-13hush: create a macro IS_NULL_WORD to test for null shell wordDenys Vlasenko1-16/+14
No logic changes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-13hush: fix a corner case in "case" stmt, ctx_dsemicolon is in fact unusedDenys Vlasenko5-53/+55
function old new delta parse_stream 2446 2476 +30 done_word 797 800 +3 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 33/0) Total: 33 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-12hush: allow nested negation "! ! ! CMD" - bash 5.2.15 allows itDenys Vlasenko3-73/+71
Also, deindent "ch == EOF" code branch in parse_stream() function old new delta done_word 799 797 -2 parse_stream 2453 2446 -7 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-9) Total: -9 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-12hush: drop ctx_inverted, use pipe->pi_invertedDenys Vlasenko2-20/+25
function old new delta done_word 776 799 +23 parse_stream 2456 2453 -3 done_pipe 252 242 -10 .rodata 105837 105825 -12 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/3 up/down: 23/-25) Total: -2 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-12hush: do not segfault on "for </dev/null v in..."Denys Vlasenko3-113/+124
This is not accepted by bash, we may also disallow this, but for now, at least do not crash Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-12Use Windows API for checksums on ARM64Ron Yorston1-1/+1
The ARM64 build had native Windows support for TLS by default, but not checksums. Add this, so the ARM 64 build matches the Unicode build.
2025-08-12Post-merge fixesRon Yorston3-7/+88
Upstream has moved some functions from networking/tls.c to a new file, libbb/hash_hmac.c. The merge didn't adjust this code to allow it to work with the native Windows checksum API. This only matters if FEATURE_USE_CNG_API is enabled and CONFIG_FEATURE_TLS_SCHANNEL isn't. In that case the wget applet fails to handle https. None of the default configurations has this combination, but it should work. Make it so. The Windows code doesn't implement hmac_block(), as that's only used for password encryption which isn't currently supported. The variadic function hmac_peek_hash() isn't declared FAST_FUNC, as that causes clang to issue many warnings.
2025-08-11hush: test for, and disallow several invalid syntaxesDenys Vlasenko21-25/+96
function old new delta parse_stream 2292 2456 +164 done_pipe 231 252 +21 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 185/0) Total: 185 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-08-11ash: parser: Invalid redirections are run-time, not syntax errorsDenys Vlasenko1-1/+1
Upstream commit Date: Wed, 14 Dec 2022 02:06:05 +0100 parser: Invalid redirections are run-time, not syntax errors This fixes a long-standing bug where echo 'echo >&a' | sh errors out with sh: 2: Syntax error: Bad fd number despite the error being on line 1 This patch makes the error sh: 1: Bad fd number: a as expected Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>