aboutsummaryrefslogtreecommitdiff
path: root/shell (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* | ash: code shrink ps_cmdRon Yorston2021-09-081-6/+12
| | | | | | | | | | | | | | The ps_cmd member of struct procstat isn't used in the WIN32 port. Remove references to it. Saves 80 bytes.
* | ash: code shrinkRon Yorston2021-09-051-10/+6
| | | | | | | | | | | | Tweak the code to handle /etc/profile. Looks tidier and saves 8 bytes.
* | ash: restrict valid job idsRon Yorston2021-09-051-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | Although job control is disabled in busybox-w32 getjob() is still compiled in because it's used by waitcmd(). Job ids of the form '%string' or '%?string' don't work, though, because the command isn't stored in the job structure. Disable the code to handle them. Job ids '%%', '%+', '%-' and '%num' are still allowed and some of them are (successfully) used in the ash tests. Saves 144 bytes.
* | ash: omit handling of stopped jobsRon Yorston2021-09-051-1/+10
| | | | | | | | | | | | | | Since Windows doesn't really know about stopped jobs don't bother to compile some code that deals with them. Saves 120 bytes.
* | Merge branch 'busybox' into mergeRon Yorston2021-08-1724-20/+248
|\|
| * hush: fix "error: invalid preprocessing directive ##"Denys Vlasenko2021-08-151-1/+1
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * hush: tweak ${var/pattern/repl} optimizationDenys Vlasenko2021-07-271-5/+4
| | | | | | | | | | | | | | function old new delta expand_one_var 2507 2502 -5 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * hush: optimize ${var/pattern/repl} for trivial patternsDenys Vlasenko2021-07-272-2/+14
| | | | | | | | | | | | | | function old new delta expand_one_var 2353 2507 +154 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * shell: update psubst testcasesDenys Vlasenko2021-07-278-6/+53
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * hush: add missed "undef"Denys Vlasenko2021-07-271-3/+3
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * hush: implement $'str' bashismDenys Vlasenko2021-07-267-1/+138
| | | | | | | | | | | | | | | | | | | | | | function old new delta parse_dollar_squote - 441 +441 encode_then_expand_vararg 359 380 +21 parse_stream 2252 2271 +19 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 2/0 up/down: 481/0) Total: 481 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ahell: update testsuiteDenys Vlasenko2021-07-257-3/+33
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: speed up ${v//pattern/repl}Denys Vlasenko2021-07-251-7/+10
| | | | | | | | | | | | | | function old new delta subevalvar 1447 1457 +10 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | ash: reset ANSI emulation at promptRon Yorston2021-08-011-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | It appears that MSYS2/Cygwin applications turn off virtual terminal processing. This caused literal ANSI escape sequences to be echoed in the shell, which assumed the console state it had applied would remain unchanged. Add a call to skip_ansi_emulation(TRUE) before issuing a shell prompt to ensure that the state is correct. GitHub issue #223.
* | win32: code shrink using is_prefixed_with()Ron Yorston2021-07-281-4/+4
| | | | | | | | | | | | | | Use is_prefixed_with() rather than strncmp() in a few places, and the case-insensitive analogues. Saves 96 bytes in 64-bit build, 192 bytes in 32-bit.
* | Merge branch 'busybox' into mergeRon Yorston2021-07-241-3/+27
|\|
| * ash: speed up ${v//pattern/repl} if !ASH_OPTIMIZE_FOR_SIZEDenys Vlasenko2021-07-221-3/+27
| | | | | | | | | | | | | | | | | | | | function old new delta subevalvar 1353 1447 +94 .rodata 104179 104184 +5 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 99/0) Total: 99 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | ash, libbb: don't affect POSIX buildRon Yorston2021-07-131-11/+15
| | | | | | | | | | Tweak code to avoid contamination of the POSIX build. There weren't any adverse effects, but better safe than sorry.
* | ash: tidy code, no functional changeRon Yorston2021-07-121-24/+14
| | | | | | | | | | | | If we know fs_size is nonzero there's no point in having SAVE_PTR2 and SAVE_PTR3 macros. The code is slightly tidier if we only use SAVE_PTR.
* | Merge branch 'busybox' into mergeRon Yorston2021-06-2815-11/+97
|\|
| * ash: parser: Fix VSLENGTH parsing with trailing garbageDenys Vlasenko2021-06-251-6/+3
| | | | | | | | | | | | | | Let's adopt Herbert Xu's patch, not waiting for it to reach dash git: hush already has a similar fix. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: revert accidental change (should have been separate)Denys Vlasenko2021-06-251-3/+6
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * e2fsprogs/*: remove ioctl calling obfuscationDenys Vlasenko2021-06-231-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | function old new delta change_attributes 326 416 +90 list_attributes 222 248 +26 close_silently 22 - -22 .rodata 103722 103692 -30 fgetsetversion 74 - -74 fgetsetprojid 107 - -107 fgetsetflags 148 - -148 ------------------------------------------------------------------------------ (add/remove: 0/4 grow/shrink: 2/1 up/down: 116/-381) Total: -265 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * hush: fix bkslash+newline handling and number validation in ${NN} and ${#NN}Denys Vlasenko2021-06-196-2/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | Entering "${1a}" into interactive shell was making it exit. function old new delta parse_dollar 824 958 +134 i_getch_and_eat_bkslash_nl - 44 +44 parse_expr 917 938 +21 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 2/0 up/down: 199/0) Total: 199 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * hush: fix handling of "cmd && &"Denys Vlasenko2021-06-151-1/+5
| | | | | | | | | | | | | | function old new delta done_pipe 213 231 +18 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * hush: fix handling of \^C and "^C"Denys Vlasenko2021-06-159-0/+23
| | | | | | | | | | | | | | | | | | | | function old new delta parse_stream 2238 2252 +14 encode_string 243 256 +13 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 27/0) Total: 27 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * *: more --help tweaksDenys Vlasenko2021-06-152-2/+2
| | | | | | | | | | | | | | function old new delta packed_usage 33552 33541 -11 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * *: --help tweaksDenys Vlasenko2021-06-142-2/+2
| | | | | | | | | | | | | | function old new delta packed_usage 33589 33552 -37 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | ash: prevent issue with ctrl-c and echo in loopRon Yorston2021-06-181-0/+23
| | | | | | | | | | | | | | | | | | | | Interrupting a loop like this: while true; do echo hello; done with ctrl-c caused the shell to exit. Turning off interrupts around the calls to echo_main() and printf_main() improves matters, though isn't a complete cure.
* | Merge branch 'busybox' into mergeRon Yorston2021-06-076-29/+356
|\|
| * ash: save Ron's patch from oblivionDenys Vlasenko2021-06-061-0/+135
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * shells: do not allow bare "read" in non-bash compat configsDenys Vlasenko2021-06-063-4/+15
| | | | | | | | | | | | | | | | On Sat, Feb 9, 2019 Cristian Ionescu-Idbohrn wrote: > In my case (at work), I have to watch and prevent people from doing > unportable things. For me, that's a burden. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: add process substitution in bash-compatibility modeRon Yorston2021-06-053-17/+185
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Process substitution is a Korn shell feature that's also available in bash and some other shells. This patch implements process substitution in ash when ASH_BASH_COMPAT is enabled. function old new delta argstr 1386 1522 +136 strtodest - 52 +52 readtoken1 3346 3392 +46 .rodata 183206 183250 +44 unwindredir - 28 +28 cmdloop 365 372 +7 static.spclchars 10 12 +2 cmdputs 380 367 -13 exitreset 86 69 -17 evalcommand 1754 1737 -17 varvalue 675 634 -41 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 5/4 up/down: 315/-88) Total: 227 bytes text data bss dec hex filename 953967 4219 1904 960090 ea65a busybox_old 954192 4219 1904 960315 ea73b busybox_unstripped v2: Replace array of file descriptors with a linked list. Include tests that were unaccountably omitted from v1. v3: Update linked list code to the intended version. v4: Change order of conditional code in cmdputs(). v5: Use existing popredir() mechanism to manage file descriptors. v6: Rebase to latest version of BusyBox ash. Reduce code churn. Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * shell: also do word splitting when -d DELIM is usedEicke Herbertz2021-06-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The original commit 3bef5d89b0 introduced an additional check for an unset `opt_d` before doing word splitting. I'm unsure why it's there in the first place, but the commit message also describes a different behaviour than what -d actually does in bash, while the code mostly does the right thing. `opt_d` sets the line delimiter for read to stop reading and should not affect word splitting. Testcase: $ echo qwe rty | { read -d Z a b; echo a:$a b:$b; } a:qwe b:rty function old new delta shell_builtin_read 1314 1304 -10 Signed-off-by: Eicke Herbertz <wolletd@posteo.de> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2021-05-141-5/+7
|\|
| * hush: beautify ^D handling to match ash / bashDenys Vlasenko2021-04-131-0/+2
| | | | | | | | | | | | | | function old new delta fgetc_interactive 227 244 +17 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * hush: make LINENO selectable without BASH-COMPATDenys Vlasenko2021-03-101-5/+5
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | ash: correctly identify applet in getopt() error messagesRon Yorston2021-03-021-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | With the default configuration most applets are run from the shell via run_noexec_applet_and_exit(). If the applet runs getopt() and an error is detected the message takes the form: sh: unknown option -- q This happens because mingw-w64's implementation of getopt() uses the global variable __argv[0] as the name of the program. Avoid the misleading message by setting __argv[0] as appropriate.
* | Merge branch 'busybox' into mergeRon Yorston2021-03-011-3/+1
|\|
| * ash: placate -Werror=format-securityDenys Vlasenko2021-02-181-3/+1
| | | | | | | | | | | | | | | | | | | | "In function 'sprint_status48': error: format not a string literal and no format arguments" function old new delta sprint_status48 160 158 -2 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | win32: move is_absolute_path()Ron Yorston2021-03-011-3/+0
| | | | | | | | | | Make is_absolute_path() a function rather than a macro and move it from ash.c into mingw.c.
* | ash: code shrinkRon Yorston2021-02-141-1/+1
| | | | | | | | | | Since there's only one call to mingw_spawn_forkshell() we might as well just call spawnve() directly from ash.
* | win32: code shrinkRon Yorston2021-02-131-1/+1
| | | | | | | | | | | | | | | | Rewrite the recent change to tab completion so it only needs one call to sprintf. Then replace sprintf with strcpy/stpcpy, both there and in a couple of other places. Saves 40 bytes.
* | win32: code shrinkRon Yorston2021-02-061-0/+2
| | | | | | | | | | Don't compile some code that isn't currently supported for WIN32. Saves 24 bytes.
* | Merge branch 'busybox' into mergeRon Yorston2021-02-051-1/+1
|\|
| * libbb: introduce and use fputs_stdoutRon Yorston2021-02-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | function old new delta fputs_stdout - 12 +12 zxc_vm_process 7237 7230 -7 yes_main 85 78 -7 write_block 380 373 -7 wrapf 305 298 -7 strings_main 437 430 -7 show_bridge 353 346 -7 rev_main 384 377 -7 put_prompt_custom 58 51 -7 put_cur_glyph_and_inc_cursor 168 161 -7 print_numbered_lines 152 145 -7 print_named_ascii 130 123 -7 print_name 135 128 -7 print_login_issue 386 379 -7 print_ascii 208 201 -7 powertop_main 1249 1242 -7 od_main 1789 1782 -7 logread_main 518 511 -7 head_main 804 797 -7 display_process_list 1319 1312 -7 cut_main 1002 995 -7 bb_dump_dump 1550 1543 -7 bb_ask_noecho 393 386 -7 baseNUM_main 702 695 -7 expand_main 755 745 -10 dumpleases_main 497 487 -10 write1 12 - -12 putcsi 37 23 -14 print_login_prompt 55 41 -14 paste_main 525 511 -14 cat_main 440 426 -14 print_it 245 230 -15 print_addrinfo 1188 1171 -17 print_rule 770 750 -20 print_linkinfo 842 822 -20 httpd_main 791 771 -20 ------------------------------------------------------------------------------ (add/remove: 1/1 grow/shrink: 0/34 up/down: 12/-341) Total: -329 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | ash: alter handling of interactive ^CFRP-3812-g12e14ebbaRon Yorston2021-01-181-1/+3
| | | | | | | | | | | | | | | | Upstream commit 4ac35a30d (ash: make interactive ^C break out of PS2 mode) doesn't work for WIN32. It causes the shell to exit when ^C is pressed on the command line. Call raise_interrupt() instead of raise(SIGINT).
* | Merge branch 'busybox' into mergeRon Yorston2021-01-1411-263/+380
|\|
| * ash: match bash behavior for ${empty_var/*/repl}Denys Vlasenko2021-01-092-4/+4
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: fix ${unset_var/pattern/repl}Denys Vlasenko2021-01-093-1/+5
| | | | | | | | | | | | | | function old new delta subevalvar 1349 1353 +4 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>