Commit Graph

1201 Commits

Author SHA1 Message Date
Denis Vlasenko
c8653f62f2 hush: make it possible to have interactive shell on non-ctty.
init=/bin/hush: shows prompt, history works, etc.

function                                             old     new   delta
hush_main                                            888     925     +37
block_signals                                        139     152     +13
builtin_fg_bg                                        284     293      +9
checkjobs_and_fg_shell                                35      41      +6
sigexit                                               65      66      +1
reset_traps_to_defaults                              165     164      -1
parse_stream                                        2200    2184     -16
run_list                                            2502    2475     -27
getpgid                                               35       -     -35
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 5/3 up/down: 66/-79)            Total: -13 bytes
2009-04-27 23:29:14 +00:00
Denis Vlasenko
42e4af3119 make leak test more robust by unsetting all vars 2009-04-26 23:25:36 +00:00
Denis Vlasenko
28e67966f3 hush: make getopt32 usable in builtins. use it in unset.
more uses are expected in the future.

function                                             old     new   delta
getopt32                                            1356    1393     +37
builtin_export                                       256     266     +10
builtin_unset                                        418     380     -38
2009-04-26 23:22:40 +00:00
Denis Vlasenko
572930027d hush: nommu fix for function passing 2009-04-26 20:06:14 +00:00
Denis Vlasenko
5b7589eb27 hush: fix SEGV in % expansion
function                                             old     new   delta
expand_variables                                    2203    2217     +14
2009-04-26 11:25:19 +00:00
Mike Frysinger
26cf2831d7 do not tell people they can enter "help" if help has actually been disabled 2009-04-24 06:40:30 +00:00
Mike Frysinger
67c1c7b456 use get_local_var_value() rather than getenv() when working with PS1/PS2/HOME, respect the PS2 env var, and make sure that the prompt changes whenever PS1/PS2 changes so we dont have to re-exec the shell to get a changed prompt 2009-04-24 06:26:18 +00:00
Denis Vlasenko
f9d4fc3cf8 switch_root: improve behavior on error; improve help text
*: make "can't execute '%s'" message uniform
2009-04-21 20:40:51 +00:00
Denis Vlasenko
950bd72966 hush: speed up set_local_var
function                                             old     new   delta
set_local_var                                        265     290     +25
2009-04-21 11:23:56 +00:00
Denis Vlasenko
5e34ff29bc *: mass renaming of USE_XXXX to IF_XXXX
and SKIP_XXXX to IF_NOT_XXXX - the second one was especially
badly named. It was not skipping anything!
2009-04-21 11:09:40 +00:00
Denis Vlasenko
ad4bd0548a hush: export -n support
function                                             old     new   delta
builtin_export                                       206     256     +50
set_local_var                                        248     265     +17
expand_variables                                    2204    2203      -1
2009-04-20 22:04:21 +00:00
Denis Vlasenko
d40fa397e4 hush: add two testcases 2009-04-20 10:52:31 +00:00
Denis Vlasenko
8c64e033c0 hush: fix stdin of backgrounded pipe
function                                             old     new   delta
run_list                                            2450    2502     +52
2009-04-20 00:34:01 +00:00
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