Commit Graph

1238 Commits

Author SHA1 Message Date
Denis Vlasenko
dcd78c4d0f hush: fix "export not_yet_defined_var", fix parsing of "cmd | }"
corner case; improve hush_leaktool.sh;
 fix some false positives in testsuite

function                                             old     new   delta
builtin_export                                       191     206     +15
parse_stream                                        2196    2200      +4
2009-04-19 23:07:51 +00:00
Denis Vlasenko
9f8d938172 same as previous, but -100 bytes 2009-04-19 14:03:11 +00:00
Denis Vlasenko
bf25fbccb9 hush: fix handling of } which is not a closing one in { cmd; }
function                                             old     new   delta
parse_stream                                        2176    2302    +126
builtin_unset                                        381     387      +6
2009-04-19 13:57:51 +00:00
Mike Frysinger
885b6f29ae fix build errors when function support is turned off 2009-04-18 21:04:25 +00:00
Denis Vlasenko
6008d8a3cc hush: fix thinko in error msg 2009-04-18 13:05:10 +00:00
Denis Vlasenko
38e626df4d hush: fix "trap -- handler SIGs..."; escape handlers in "trap" output 2009-04-18 12:58:19 +00:00
Denis Vlasenko
730106767e hush: fix thinko in unset_func 2009-04-18 11:25:18 +00:00
Denis Vlasenko
40e84374ec hush: implement unset -f; beautify the handling of signal-killed pipe
four TODOs are gone

function                                             old     new   delta
builtin_unset                                        271     364     +93
checkjobs                                            394     428     +34
builtin_exit                                          49      47      -2
2009-04-18 11:23:38 +00:00
Denis Vlasenko
eb85849b50 hush: deal with umask TODO (symbolic modes)
function                                             old     new   delta
builtin_umask                                         79     125     +46
2009-04-18 02:06:54 +00:00
Denis Vlasenko
6b9e05392b hush: implement proper SIGHUP handling
function                                             old     new   delta
check_and_run_traps                                  164     229     +65
insert_bg_job                                        376     366     -10
hush_main                                            937     927     -10
2009-04-18 01:23:21 +00:00
Denis Vlasenko
7b9e5c57ae builtin_return's parameter is not unused 2009-04-17 23:53:15 +00:00
Denis Vlasenko
3d40d8e655 hush: return builtin by Bayram Kurumahmut (kbayram AT ubicom.com)
~+200 bytes
2009-04-17 23:44:18 +00:00
Denis Vlasenko
270b1c3f68 hush: set $n properly for "source" builtin
function                                             old     new   delta
restore_G_args                                         -      78     +78
save_and_replace_G_args                                -      64     +64
builtin_source                                        72     107     +35
run_list                                            2549    2367    -182
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 1/1 up/down: 177/-182)           Total: -5 bytes
2009-04-17 18:54:50 +00:00
Denis Vlasenko
4ea187fd62 hush: fix non-interactive response to pipe being stopped.
function                                             old     new   delta
checkjobs                                            380     394     +14
2009-04-17 14:35:43 +00:00
Denis Vlasenko
e4bd4f2cc8 hush: unblock TERM, INT, HUP in child shells too. 2009-04-17 13:52:51 +00:00
Denis Vlasenko
f8c1f02d2f hush: disallow "{echo hi; }" (require whitespace)
and "{ echo hi }" (require semicolon or &)

function                                             old     new   delta
parse_stream                                        2098    2176     +78
done_command                                          98      84     -14
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 78/-14)             Total: 64 bytes
2009-04-17 11:55:42 +00:00
Denis Vlasenko
fa4ca7889e hush: add a TODO 2009-04-16 12:00:15 +00:00
Denis Vlasenko
bb929517a8 hush: fix "if { echo foo; } then { echo bar; } fi" parsing
function                                             old     new   delta
done_word                                            728     793     +65
parse_stream                                        2084    2098     +14
2009-04-16 10:59:40 +00:00
Denis Vlasenko
74a931ac9e hush: stop ignoring ^Z in child shells 2009-04-15 23:29:44 +00:00
Denis Vlasenko
c4ada79343 hush: remove old disabled ^Z handling 2009-04-15 23:29:00 +00:00
Denis Vlasenko
41ddecd9ed hush: fix heredoc_huge.tests broken in last commits 2009-04-15 21:58:14 +00:00
Denis Vlasenko
c376db332c hush: remove TODO comment itself :) 2009-04-15 21:49:48 +00:00
Denis Vlasenko
27014ed5cb hush: deal with a TODO: move argv_from_re_execing out of globals
function                                             old     new   delta
generate_stream_from_string                          156     165      +9
setup_heredoc                                        312     320      +8
re_execute_shell                                     387     391      +4
pseudo_exec_argv                                     129     133      +4
run_pipe                                            1790    1783      -7
clean_up_after_re_execute                             30       -     -30
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 4/1 up/down: 25/-37)            Total: -12 bytes
2009-04-15 21:48:23 +00:00
Denis Vlasenko
7f9593753a randomconfig fixes 2009-04-14 08:06:59 +00:00
Denis Vlasenko
2b2183a77d hush: make function support configurable 2009-04-13 14:23:12 +00:00
Denis Vlasenko
bc56974062 hush: pass functions to child shells on NOMMU
function                                             old     new   delta
new_function                                           -     123    +123
hush_main                                           1198    1262     +64
re_execute_shell                                     341     387     +46
run_pipe                                            1872    1790     -82
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 2/1 up/down: 233/-82)           Total: 151 bytes
2009-04-12 20:35:19 +00:00
Denis Vlasenko
135cecbbce ash: fix warning in debug build 2009-04-12 00:00:57 +00:00
Denis Vlasenko
c43430f1b9 hush: remove functions from TODOs 2009-04-11 11:07:22 +00:00
Denis Vlasenko
0701dca88c hush: improve debugging output 2009-04-11 10:38:47 +00:00
Denis Vlasenko
ed055214bb hush: fix "while...do f1() {a;}; f1; f1 {b;}; f1; done" bug 2009-04-11 10:37:10 +00:00
Denis Vlasenko
75bccfa375 hush: tweak tests 2009-04-10 23:48:03 +00:00
Denis Vlasenko
ce4acbbab6 hush: add function tests 2009-04-10 23:23:41 +00:00
Denis Vlasenko
6ba6f546ac hush: pass $n to functions
function                                             old     new   delta
run_pipe                                            1183    1325    +142
run_list                                            1219    1220      +1
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 143/0)             Total: 143 bytes
2009-04-10 21:57:50 +00:00
Denis Vlasenko
c0ea329297 hush: fix a few thinkos in function support; make it work on NOMMU;
functions in child shells now even have $n passed to them! :)
 (in main shell it still doesn't work)
2009-04-10 21:22:02 +00:00
Denis Vlasenko
b7d8c0dbbd hush: first stab at function support. argv passing is not coded yet.
Only very rudimentary testing was done.
 With function support off, code growth is zero, with it on:

function                                             old     new   delta
run_list                                            2158    2339    +181
parse_stream                                        1929    2044    +115
find_builtin                                          24      67     +43
find_function                                          -      36     +36
file_get                                             244     264     +20
pseudo_exec_argv                                     145     160     +15
free_strings                                           -       7      +7
free_pipe                                            183     181      -2
done_word                                            735     728      -7
expand_variables                                    2227    2204     -23
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 5/3 up/down: 417/-32)           Total: 385 bytes
2009-04-10 19:05:43 +00:00
Denis Vlasenko
835fcfd33d hush: reinstate accidentally reverted comment fix 2009-04-10 13:51:56 +00:00
Denis Vlasenko
0b677d8337 hush: fix some TODOs. TODO in export builting: +250 bytes.
simplify unexpected EOF handling.

function                                             old     new   delta
builtin_export                                       117     374    +257
o_reset_to_empty_unquoted                              -      21     +21
parse_stream                                        1926    1929      +3
syntax_error_unterm_ch                                31      32      +1
handle_dollar                                        644     641      -3
parse_stream_dquoted                                 307     298      -9
add_till_backquote                                   106      97      -9
add_till_closing_paren                               303     286     -17
o_reset                                               21       -     -21
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 3/4 up/down: 282/-59)           Total: 223 bytes
2009-04-10 13:49:10 +00:00
Denis Vlasenko
1fd1ea4395 hush: tighten up "for" variable name check.
Add TODOs.
 Disable redir4.right part where we differ from bash.
 It is not a bug per standards.
 Add a few tests, one is in hush-bugs section:
 and_or_and_backgrounding.right. It will likely bite users
 in real world usage.
2009-04-10 12:03:20 +00:00
Denis Vlasenko
551bdfecb7 hush: fix typo in comment 2009-04-10 11:13:26 +00:00
Denis Vlasenko
ed7823738c fix segfault on syntax error code path 2009-04-10 00:45:02 +00:00
Denis Vlasenko
c96865f445 hush: readability improvements.
fix some more obscure bugs.
 a new redir4.tests is known to fail.
2009-04-10 00:20:58 +00:00
Mike Frysinger
e05f9286a9 add test cases for parameter substitution with unset/null strings 2009-04-09 23:01:47 +00:00
Mike Frysinger
57e746781c dont crash if the variable we do substitution on is not set 2009-04-09 23:00:33 +00:00
Denis Vlasenko
d68ae08cde hush: shrink and make more versatile error-reporting machinery
function                                             old     new   delta
syntax_error_unterm_ch                                 -      31     +31
syntax_error_unterm_str                                -      14     +14
parse_stream                                        2356    2361      +5
syntax_error_at                                       12      14      +2
syntax_error                                          25      27      +2
syntax_error_unterminated                             28       -     -28
expand_variables                                    2063    2031     -32
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 3/1 up/down: 54/-60)             Total: -6 bytes
   text    data     bss     dec     hex filename
  67278     197    3184   70659   11403 busybox_old
  67228     197    3184   70609   113d1 busybox_unstripped
2009-04-09 20:41:34 +00:00
Denis Vlasenko
05d3b7cc0d hush: deal with some easier TODOs
function                                             old     new   delta
is_well_formed_var_name                                -      87     +87
builtin_read                                          49      86     +37
die_if_script                                          -      31     +31
syntax_error_unterminated                              -      28     +28
syntax_error                                          26      51     +25
done_word                                            768     788     +20
syntax_error_at                                        -      12     +12
parse_stream_dquoted                                 320     328      +8
expand_variables                                    2064    2063      -1
run_list                                            1225    1220      -5
add_till_closing_paren                               308     303      -5
add_till_backquote                                   111     106      -5
handle_dollar                                        812     803      -9
parse_stream                                        2378    2356     -22
parse_redirect                                       408     372     -36
maybe_die                                             44       -     -44
is_assignment                                        215     134     -81
------------------------------------------------------------------------------
(add/remove: 4/1 grow/shrink: 4/8 up/down: 248/-208)           Total: 40 bytes
2009-04-09 19:16:15 +00:00
Denis Vlasenko
1943aec2ec hush: plug the leak of expanded heredoc 2009-04-09 14:15:57 +00:00
Denis Vlasenko
efea9d2819 hush: fix EXIT trap recursion case; check redirection failures
function                                             old     new   delta                          
run_pipe                                            1299    1328     +29                          
hush_exit                                             90     102     +12                          
hush_main                                           1172    1179      +7                          
run_list                                            1226    1225      -1                          
------------------------------------------------------------------------------                    
(add/remove: 0/0 grow/shrink: 3/1 up/down: 48/-1)              Total: 47 bytes
2009-04-09 13:43:11 +00:00
Denis Vlasenko
f81e8dbc74 *: make "pragma GCC visibility push(hidden)" less ugly 2009-04-09 12:35:13 +00:00
Mike Frysinger
327fd47f36 skip some tests when fancy echo support is turned off 2009-04-09 07:50:18 +00:00
Mike Frysinger
c3d91952d6 we arent testing echo -n here so use printf instead 2009-04-09 07:50:02 +00:00
Mike Frysinger
20300d0129 source the .config so tests can signal they need to be skipped due to feature disable 2009-04-09 07:49:43 +00:00
Denis Vlasenko
f50caac53c hush: typo in comment 2009-04-09 01:40:15 +00:00
Denis Vlasenko
a2218dd862 hush: fix thinko in re_execute_shell; pass even less junk to heredoc helper
function                                             old     new   delta
re_execute_shell                                     284     314     +30
setup_heredoc                                        290     303     +13
execv                                                 23       -     -23
2009-04-09 01:39:02 +00:00
Denis Vlasenko
5c090a96f9 hush: more rodust detection of unterminated strings etc;
fix a case where we forget to copy `cmd` text;
 optimize nommu heredoc helper by not passing environment to it;
 add several tests

function                                             old     new   delta
add_till_closing_paren                               256     308     +52
parse_stream                                        2337    2378     +41
add_till_backquote                                    82     111     +29
re_execute_shell                                     269     284     +15
handle_dollar                                        802     812     +10
parse_stream_dquoted                                 316     320      +4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 6/0 up/down: 151/0)             Total: 151 bytes
2009-04-08 21:51:33 +00:00
Denis Vlasenko
ffe6f80851 expand leak_all1.tests 2009-04-08 16:59:24 +00:00
Denis Vlasenko
14725f82b6 slight tweak to the leak detector 2009-04-08 16:46:45 +00:00
Denis Vlasenko
cc90f44402 hush: plug leak in run_pipe(). NOMMU only. 2009-04-08 16:40:34 +00:00
Denis Vlasenko
08daf564ae hush: add a leak test which currently fails 2009-04-08 12:11:23 +00:00
Denis Vlasenko
c73b70c701 hush: add leak detector helper; fix/add tests for it
function                                             old     new   delta
builtin_memleak                                        -      92     +92
bltins                                               288     300     +12
2009-04-08 11:48:57 +00:00
Denis Vlasenko
3dfb035d8d hush: echo \2>file fix 2009-04-08 09:29:14 +00:00
Denis Vlasenko
02d6f1ad72 hush: fix heredoc expansion of $var and cmd
function                                             old     new   delta
expand_pseudo_dquoted                                  -     104    +104
setup_heredoc                                        215     275     +60
done_word                                            669     691     +22
parse_stream                                        1899    1902      +3
setup_redirects                                      196     191      -5
free_pipe                                            189     183      -6
expand_variables                                    2349    2229    -120
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 3/3 up/down: 189/-131)           Total: 58 bytes
2009-04-07 19:56:55 +00:00
Denis Vlasenko
25af86f73d hush: fix wrong comment 2009-04-07 13:29:27 +00:00
Denis Vlasenko
af07b7c5b6 hush: fix heredoc <<- handling.
hush-misc/heredoc2.tests testcase needs only one fix now -
 $var and `cmd` expancsion in heredocs

function                                             old     new   delta
parse_redirect                                       265     306     +41
parse_stream                                        1866    1899     +33
2009-04-07 13:26:18 +00:00
Denis Vlasenko
50f3aa4547 hush: NOMMU-safe support of big heredocs
function                                             old     new   delta
setup_heredoc                                        116     215     +99
2009-04-07 10:52:40 +00:00
Mike Frysinger
d4a24f2aae here documents have been added, so drop from TODO 2009-04-07 07:28:25 +00:00
Mike Frysinger
932e111418 use sleep rather than usleep 2009-04-07 06:08:14 +00:00
Mike Frysinger
b509c9c670 add a pathological test case for here doc related to eof marker and other ugly corner cases 2009-04-07 06:06:05 +00:00
Mike Frysinger
a4f331d3c3 implement support for parameter substitution via #/% operators 2009-04-07 06:03:22 +00:00
Denis Vlasenko
6c9be7f451 hush: heredoc support, based on patch by Mike Frysinger (vapier AT gentoo.org)
some TODOs are to be attacked later

function                                             old     new   delta
parse_stream                                        1461    1866    +405
parse_redirect                                         -     265    +265
setup_heredoc                                          -     116    +116
setup_redirects                                      151     196     +45
builtin_exit                                          49      47      -2
redirect_opt_num                                      61      55      -6
setup_redirect                                       212       -    -212
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 2/2 up/down: 831/-220)          Total: 611 bytes
2009-04-07 02:29:51 +00:00
Denis Vlasenko
ab2b064342 hush: s/last_return_code/last_exitcode/g 2009-04-06 18:42:11 +00:00
Denis Vlasenko
0e15138c03 hush: fix "if false; then...fi" exitcode;
trim "keyword"-less hush by 10 bytes
2009-04-06 18:40:31 +00:00
Denis Vlasenko
4ed67dd3d5 make hush-misc/*.tests executable 2009-04-06 18:10:20 +00:00
Denis Vlasenko
cd418a2670 hush: fix a bunch of obscure while/until/continue bugs
function                                             old     new   delta
run_list                                            1159    1214     +55
done_pipe                                            106     123     +17
done_command                                          86      98     +12
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 84/0)               Total: 84 bytes
2009-04-06 18:08:35 +00:00
Denis Vlasenko
8f8d013afc *.tests should be executable 2009-04-06 16:27:51 +00:00
Denis Vlasenko
715f712d15 move hush-parsing/and-or.tests to hush-misc/*
(which probably needs to be renamed to hush-execution...)
2009-04-06 16:17:51 +00:00
Mike Frysinger
3a64833eb9 add some brute force logic tests 2009-04-06 14:22:54 +00:00
Denis Vlasenko
a2b11e3395 hush: fix "false && echo yes || echo no" bug 265
function                                             old     new   delta
run_list                                            1159    1189     +30
2009-04-06 14:11:13 +00:00
Denis Vlasenko
0969a49c08 hush: beautify re_execute_shell more 2009-04-06 13:05:57 +00:00
Denis Vlasenko
34e573d2ce hush: drop allocations in re_execute_shell
function                                             old     new   delta
hush_main                                           1127    1138     +11
re_execute_shell                                     286     256     -30
clean_up_after_re_execute                             66      30     -36
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/2 up/down: 11/-66)            Total: -55 bytes
2009-04-06 12:56:28 +00:00
Mike Frysinger
3c7167b508 add tests for basic fd open/close/dupe 2009-04-06 12:36:10 +00:00
Mike Frysinger
dc4178050a fix #>&- syntax for closing fds 2009-04-06 12:35:41 +00:00
Mike Frysinger
9052600feb fix redir1 tests -- usleep isnt standard in $PATH 2009-04-06 12:34:27 +00:00
Denis Vlasenko
5e883fb00d hush: micro-optimization. -37 bytes 2009-04-06 12:28:34 +00:00
Denis Vlasenko
b1d11bf45e hush: more efficient filtering of "safe" arithmetic
function                                             old     new   delta
expand_variables                                    2170    2147     -23
2009-04-06 12:24:58 +00:00
Denis Vlasenko
d0b4a8c285 hush: add <> and () as "safe" arith chars 2009-04-06 12:09:55 +00:00
Denis Vlasenko
bfbc971f9f hush: print cd error to stderr; use fopen_or_warn in builtin_source;
prepare builtin_unset for function support
libbb: do not clear errno in fopen_or_warn

function                                             old     new   delta
builtin_unset                                        242     271     +29
fopen_or_warn                                         42      31     -11
builtin_cd                                            90      74     -16
builtin_source                                        89      72     -17
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/3 up/down: 29/-44)            Total: -15 bytes
2009-04-06 12:04:42 +00:00
Denis Vlasenko
b0a6478eef hush: fix "export a=a b=b" (was not setting and exporting b)
function                                             old     new   delta
builtin_export                                       103     117     +14
2009-04-06 11:33:07 +00:00
Denis Vlasenko
c8d27334a0 hush: update TODO list; + my usual pointless tweaks :( 2009-04-06 10:47:21 +00:00
Denis Vlasenko
d3f973eab2 hush: mark SIGHUP TODOs better; don't disable SIGHUP for now,
small tweaks to comments
2009-04-06 10:21:42 +00:00
Denis Vlasenko
a0e65120b5 hush: cosmetics, no code changes 2009-04-05 23:39:14 +00:00
Denis Vlasenko
913a201bf0 hush: strip NULs from file input, they are PITA/impossible to handle correctly
function                                             old     new   delta
file_peek                                             89      93      +4
file_get                                             260     264      +4
2009-04-05 22:17:04 +00:00
Mike Frysinger
258275d85f drop HUSH_VER_STR since it has no relevance anymore -- just use BB_VER 2009-04-05 21:19:43 +00:00
Denis Vlasenko
c4a7af55e9 hush: fix trap clearing in subshells on MMU; simplify NOMMU a bit:
function                                             old     new   delta
parse_stream_dquoted                                 335     324     -11
handle_dollar                                        849     800     -49
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-60)             Total: -60 bytes
2009-04-05 20:33:27 +00:00
Denis Vlasenko
f937528571 hush: audit and fix "interactive shell" setup code.
function                                             old     new   delta
block_signals                                          -     139    +139
maybe_set_to_sigexit                                   -      47     +47
run_list                                            2018    2030     +12
expand_variables                                    2155    2165     +10
maybe_set_sighandler                                  47       -     -47
hush_main                                            992     918     -74
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 2/1 up/down: 208/-121)           Total: 87 bytes
2009-04-05 19:13:39 +00:00
Denis Vlasenko
46f9b6db80 hush: pass $! thru re-execution; try harder on re-exec; give error
msg if re-exec didn't work; other tweaks in main()

function                                             old     new   delta
hush_main                                           1144    1199     +55
re_execute_shell                                     237     286     +49
file_get                                             240     260     +20
clean_up_after_re_execute                             58      66      +8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/0 up/down: 132/0)             Total: 132 bytes
2009-04-05 10:39:03 +00:00
Denis Vlasenko
232be3e79b hush: suppress bogus warning from 4.2.1 2009-04-05 09:16:00 +00:00
Denis Vlasenko
18f2a79f9b build system tweaks to account for latest hush changes 2009-04-05 09:02:11 +00:00
Denis Vlasenko
d85a5df159 hush: randomconfig fixes 2009-04-05 08:43:57 +00:00
Denis Vlasenko
cc4c693ec5 hush: plug the leak on NOMMU re-execute path
function                                             old     new   delta
clean_up_after_re_execute                              -      58     +58
re_execute_shell                                     226     244     +18
run_pipe                                            1271    1276      +5
generate_stream_from_string                          133     138      +5
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 3/0 up/down: 86/0)               Total: 86 bytes
2009-04-05 07:38:48 +00:00
Denis Vlasenko
c3ff48b921 fixing mode on hush-leak/leak_argv1.tests 2009-04-05 02:14:59 +00:00