aboutsummaryrefslogtreecommitdiff
path: root/docs/sigint.htm (unfollow)
Commit message (Collapse)AuthorFilesLines
4 daysvi: warn about range in ':!' commandRon Yorston1-0/+6
Currently vi in Busybox doesn't support filtering text through an external command with ':1,2!cmd'. Instead it behaves as if no range had been supplied and displays the output of the command. Issue a warning and do nothing in such cases. Adds 32 bytes. (GitHub issue #524)
7 daysls: restore functionality of --colorRon Yorston1-1/+2
Since upstream commit 551bfdb97 (ls: implement -q, fix -w0, reduce startup time) was merged the '--color' option behaves as though the default argument 'always' had been specified. This is due to an explict short option for '--color' being given, but without specifying that an argument is expected. (GitHub issue #522)
13 daysash: move 100 bytes off global .data / .bss, no logic changesRon Yorston1-80/+79
Apply upstream commit f6fb3c603. This moves some static data into globals_misc. The Windows port had already moved commandname, so only g_parsefile and basepf are new. Some changes had to be made to the forkshell code. Adds 148-176 bytes.
13 daysshells: add tests missing from last commitRon Yorston4-0/+30
13 daysash: redir: Retry open on EINTRRon Yorston2-69/+93
Apply upstream commit 9b67dde8c. Adds 8 bytes in the 32-bit build.
2025-09-09ash: 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.
2025-09-07ash: jobs: Block signals during tcsetpgrpRon Yorston1-1/+16
Merge upstream commit 4ce8afe6b. This has no effect on Windows.
2025-09-07ash: 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.
2025-09-07ash: 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.
2025-09-03hush: changes to comments and whitespace, no code changesbusyboxDenys Vlasenko1-8/+8
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2025-09-03make: 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.
2025-09-02ash: 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.