aboutsummaryrefslogtreecommitdiff
path: root/shell/ash.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* | Merge branch 'busybox' into mergeRon Yorston2018-02-131-79/+251
|\|
| * ash: make it possible to disable "const global ptr" optimizationDenys Vlasenko2018-01-281-3/+16
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: add LINENO supportDenys Vlasenko2018-01-271-32/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is a backport from dash of the combination of: [SHELL] Add preliminary LINENO support [VAR] Fix varinit ordering that broke fc [SHELL] Improve LINENO support function old new delta parse_command 1604 1677 +73 calcsize 156 223 +67 copynode 196 258 +62 evalcommand 1546 1606 +60 ash_main 1046 1103 +57 lookupvar 51 106 +55 evalcase 269 317 +48 evaltree 501 547 +46 evalfor 156 200 +44 evalsubshell 156 195 +39 raise_error_syntax 11 29 +18 varinit_data 120 132 +12 evalfun 270 280 +10 funcline - 4 +4 cmdtxt 569 572 +3 trapcmd 306 304 -2 ash_vmsg 153 150 -3 startlinno 4 - -4 funcnest 4 - -4 xxreadtoken 263 250 -13 readtoken1 2645 2602 -43 ------------------------------------------------------------------------------ (add/remove: 1/2 grow/shrink: 14/4 up/down: 598/-69) Total: 529 bytes text data bss dec hex filename 932834 481 6864 940179 e5893 busybox_old 933375 481 6856 940712 e5aa8 busybox_unstripped Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * hush: add HUSH_BASH_SOURCE_CURDIR config option, to be on par with ashDenys Vlasenko2018-01-271-2/+2
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: introduce a config option to search current directory for sourced filesDenys Vlasenko2018-01-261-1/+12
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: add support for command_not_found_handle hook function (bashism)William Pitcock2018-01-241-1/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This implements support for the command_not_found_handle hook function, which is useful for allowing package managers to suggest packages which could provide the command. Unlike bash, however, we ignore exit codes from the hook function and always return the correct POSIX error code (EX_NOTFOUND). function old new delta find_command 911 990 +79 Signed-off-by: William Pitcock <nenolod@dereferenced.org> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: a bit of NOFORK code should only be active if FEATURE_SH_STANDALONE=yDenys Vlasenko2018-01-151-1/+3
| | | | | | | | | | | | | | function old new delta evalcommand 1546 1420 -126 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: ALWAYS_INLINE grabstackblock()Denys Vlasenko2018-01-101-1/+1
| | | | | | | | | | | | | | function old new delta grabstackblock 5 - -5 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: make ${v:N:M} more robust for very large M by clamping to MIN/MAX_INTDenys Vlasenko2018-01-101-13/+25
| | | | | | | | | | | | | | | | | | | | | | Before this patch, "${v:2:0x100000001}" = "${v:2:1}", and similarly, constructs like "${v:2:9999999999}" may give wrong result due to int overflows. function old new delta substr_atoi - 43 +43 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: add comment explaining last changeDenys Vlasenko2018-01-091-6/+6
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: fix var_bash5.tests - ${VAR/pattern/repl} constructDenys Vlasenko2018-01-091-25/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | function old new delta subevalvar 1198 1279 +81 rmescapes 308 330 +22 preglob 8 10 +2 parsefname 152 154 +2 expandarg 973 975 +2 argstr 1144 1146 +2 mklocal 290 288 -2 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 6/1 up/down: 111/-2) Total: 109 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: fail if 'shift' operand is out of rangeIngo van Lil2018-01-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the numeric argument passed to ash's 'shift' built-in is greater than '$#' the command performs no operation and exits successfully. It should return a non-zero exit code instead: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#shift This is consistent with bash and hush. function old new delta shiftcmd 122 120 -2 Signed-off-by: Ingo van Lil <inguin@gmx.de> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * randomconfig fixesDenys Vlasenko2017-12-311-1/+1
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2017-11-031-21/+84
|\|
| * ash: fix nofork bug where environment is not properly passed to a commandDenys Vlasenko2017-11-031-5/+40
| | | | | | | | | | | | | | | | | | | | | | | | function old new delta listvars 144 252 +108 evalcommand 1500 1546 +46 showvars 142 147 +5 shellexec 242 245 +3 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 4/0 up/down: 162/0) Total: 162 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: retain envvars with bad names in initial environment. Closes 10231Denys Vlasenko2017-11-021-4/+22
| | | | | | | | | | | | | | Reworks "ash: [VAR] Sanitise environment variable names on entry" commit. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * whitespace fixesDenys Vlasenko2017-10-121-3/+3
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * typo fixDenys Vlasenko2017-10-121-1/+1
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: survive failures in $PS1 expansion. Closes 10371Denys Vlasenko2017-10-121-1/+18
| | | | | | | | | | | | | | function old new delta expandstr 120 209 +89 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * use %m printf specifier where appropriateDenys Vlasenko2017-09-291-8/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | function old new delta out 85 75 -10 udhcpd_main 1472 1461 -11 open_stdio_to_tty 98 85 -13 init_exec 245 232 -13 udhcpc_main 2763 2749 -14 do_cmd 4771 4755 -16 status_line_bold_errno 32 14 -18 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/7 up/down: 0/-95) Total: -95 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | Merge branch 'busybox' into mergeRon Yorston2017-09-271-7/+7
|\|
| * ash: more s/error/perror/ for better error reportingDenys Vlasenko2017-08-231-5/+5
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: when cd fails, say whyJohannes Schindelin2017-08-231-1/+1
| | | | | | | | | | Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: report reason when a script file could not be openedJohannes Schindelin2017-08-231-1/+1
| | | | | | | | | | | | | | | | It is always nicer to give the user some sort of indication why an operation failed. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | ash: stop assuming that pointers and ints are interchangeableJohannes Schindelin2017-08-311-3/+3
| | | | | | | | | | | | | | | | This is a companion patch to db169a143 (win32: ash: forkshell_init(), 2010-04-14). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Ron Yorston <rmy@pobox.com>
* | ash: avoid assumption about sizeof(long) == sizeof(void *)Johannes Schindelin2017-08-311-1/+1
| | | | | | | | | | | | | | | | This change fixes a minor bug in eea918c5e (win32: ash: spawn_forkshell(), 2010-04-14). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Ron Yorston <rmy@pobox.com>
* | win32: shrink code to detect .exe filesRon Yorston2017-08-301-9/+4
| | | | | | | | | | | | | | | | Add a function (has_exe_suffix) to replace explicit code to check if a filename ends with '.exe. or '.com'. Also shrink code that checks for '.exe' or '.com' on PATH in shell's find_command function.
* | Revert "ash: allow long-running nofork applets to be interrupted"Ron Yorston2017-08-221-9/+1
| | | | | | | | | | | | | | This reverts commit f5051d07f196a8ff7aeaae762333d5aa2b824088. Upstream made 'yes' and 'seq' NOEXEC rather than NOFORK which also solves the problem, though NOEXEC doesn't provide any gain in busybox-w32.
* | Merge branch 'busybox' into mergeRon Yorston2017-08-221-42/+110
|\|
| * ash: unset OPTARG if getopts exits 1, support OPTERR=0 behaviorDenys Vlasenko2017-08-151-2/+11
| | | | | | | | | | | | | | function old new delta getoptscmd 522 547 +25 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash,hush: comment and debug tweaks, no code changesDenys Vlasenko2017-08-151-2/+3
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: one "current line = 1" might be missing, fix thatDenys Vlasenko2017-08-141-4/+5
| | | | | | | | | | | | | | I'm not sure this is necessary, but dash has this init here. Just in case, do it too. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: [PARSER] Catch variable length expansions on non-existant specialsDenys Vlasenko2017-08-141-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Upstream commit: Date: Thu, 30 Oct 2014 11:53:35 +0800 [PARSER] Catch variable length expansions on non-existant specials Currently we only check special variable names that follow directly after $ or ${. So errors such as ${#&} are not caught. This patch fixes that by moving the is_special check to just before we print out the special variable name. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> function old new delta readtoken1 2630 2635 +5 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: fix "unset OPTIND" throwing an error messageDenys Vlasenko2017-08-111-1/+3
| | | | | | | | | | | | | | Added test was failing quite severely. Now only one subtest fails (OPTERR=0 has no effect). Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * hush: optional times builtinDenys Vlasenko2017-08-101-7/+9
| | | | | | | | | | | | | | | | | | | | | | function old new delta builtin_times - 108 +108 bltins1 360 372 +12 static.times_tbl - 9 +9 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 1/0 up/down: 129/0) Total: 129 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: implement -d DELIM option for readJohannes Schindelin2017-08-091-3/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The POSIX standard only requires the read builtin to handle -r: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/read.html However, Bash introduced the option -d <DELIM> to override IFS for just one invocation, and it is quite useful. It is also super easy to implement in BusyBox' ash, so let's do that. The motivation: This option is used by Git's test suite. function old new delta .rodata 163505 163587 +82 shell_builtin_read 1244 1289 +45 readcmd 233 259 +26 builtin_read 258 263 +5 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 4/0 up/down: 158/0) Total: 158 bytes Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * noexec: consolidate codeDenys Vlasenko2017-08-071-7/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | function old new delta run_noexec_applet_and_exit - 61 +61 find_applet_by_name 128 124 -4 run_applet_no_and_exit 441 434 -7 tryexec 169 152 -17 pseudo_exec_argv 338 321 -17 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/6 up/down: 61/-48) Total: 13 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * noexec: do GETOPT_RESET() before entering APPLET_main()Denys Vlasenko2017-08-071-0/+1
| | | | | | | | | | | | | | | | | | | | hush -c 'yes | head -1' was not happy. function old new delta tryexec 159 169 +10 pseudo_exec_argv 328 338 +10 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * noexec: set comm field for noexecsDenys Vlasenko2017-08-071-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | function old new delta set_task_comm - 18 +18 tryexec 152 159 +7 pseudo_exec_argv 321 328 +7 main 106 97 -9 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 3/2 up/down: 34/-13) Total: 23 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * free,stat: make NOEXECDenys Vlasenko2017-08-071-0/+2
| | | | | | | | | | | | pkill/pgrep/pidof uncovered another quirk: what about noexec's _process names_? Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: do not set a signal to SIG_DFL if it already isDenys Vlasenko2017-08-061-1/+7
| | | | | | | | | | | | | | function old new delta setsignal 312 338 +26 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: BASH_XTRACEFD bashismDenys Vlasenko2017-08-041-0/+10
| | | | | | | | | | | | | | | | | | Based on patch by Johannes Schindelin <johannes.schindelin@gmx.de> function old new delta evalcommand 1447 1500 +53 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: remove no-longer-used variableJohannes Schindelin2017-08-041-2/+0
| | | | | | | | | | | | | | | | | | | | | | As of 035486c75 (ash: significant overhaul of redirect saving logic, 2017-07-31), the sv_pos variable is no longer used (just assigned to, with no further effect). Let's just remove it. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: INT_OFF/INT_ON around run_nofork_applet()Denys Vlasenko2017-08-041-3/+19
| | | | | | | | | | | | | | function old new delta evalcommand 1441 1447 +6 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * sheel: improve comments on signal handlingDenys Vlasenko2017-08-041-11/+16
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * ash: add a fixme comment at run_nofork_appletDenys Vlasenko2017-08-031-1/+3
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * line editing: make read_line_input() not take timeout paramDenys Vlasenko2017-08-021-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * do not use `a' quoting style in commentsDenys Vlasenko2017-08-021-1/+1
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | ash: improvements to ctrl-c handlingRon Yorston2017-08-031-1/+4
| | | | | | | | | | | | | | | | | | | | Setting pending_int *before* hSIGINT improves the behaviour when interrupting a shell script. Echo '^C' to the console when handling an interrupt. Increment shlvl in forkshell_init. On non-WIN32 platforms this was done in forkchild.
* | ash: fixes to wait statusRon Yorston2017-08-031-2/+2
| | | | | | | | | | Replace W* macros with versions from GNU C library. Change wait status values to match.