aboutsummaryrefslogtreecommitdiff
path: root/shell/hush.c
AgeCommit message (Collapse)Author
2008-07-29hush: use G.xxx instead of #define xxx G.xxx. We have too many globalsDenis Vlasenko
there and #defines get messy. Remove one write-only G.variable.
2008-07-29randomconfig fixDenis Vlasenko
2008-07-29hush: small fix for repeated continue and fix for wrong loop depth countDenis Vlasenko
after Ctrl-C; with testcase for first one
2008-07-29hush: fix inverted check (was making all break's to act as "break 99999")Denis Vlasenko
2008-07-29hush: fix break'ing out of {} and () groups; with testcaseDenis Vlasenko
function old new delta builtin_break 93 129 +36 builtin_continue 21 47 +26 run_list 1973 1976 +3
2008-07-29randomconfig fixesDenis Vlasenko
2008-07-29hush: add #defines to switch off break/continue if loops are not supportedDenis Vlasenko
*: remove a few inline keywords no code changes
2008-07-28hush: fix "while false; ..." exitcode; add testsuitesDenis Vlasenko
2008-07-28hush: support "break N" and "continue N"Denis Vlasenko
fix non-detection of builtins and applets in "v=break; ...; $v; ..." case add testsuite entries for the above function old new delta builtin_break 12 93 +81 run_list 1948 1971 +23 builtin_continue 12 21 +9 pseudo_exec_argv 132 138 +6 builtin_exec 23 25 +2 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 5/0 up/down: 121/0) Total: 121 bytes
2008-07-28hush: implement break and continueDenis Vlasenko
function old new delta bltins 252 276 +24 builtin_continue - 12 +12 builtin_break - 12 +12 static.version_str 18 17 -1 run_list 1984 1948 -36 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 1/2 up/down: 48/-27) Total: 11 bytes
2008-07-28hush: in run_list(), some loop_top ops seems to be superfluous.Denis Vlasenko
comment them out. Also, use separate temp variable for verification loop, helps gcc to optimize better. function old new delta run_list 2039 1984 -55
2008-07-28hush: in run_list(), last_cond_code seems to be superfluous. comment it outDenis Vlasenko
function old new delta run_list 2055 2039 -16 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-16) Total: -16 bytes
2008-07-28hush: explain run_list() in detail; small optimizationsDenis Vlasenko
function old new delta hush_main 785 786 +1 expand_variables 1447 1448 +1 builtin_exit 48 49 +1 builtin_eval 54 55 +1 run_list 2075 2055 -20 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 4/1 up/down: 4/-20) Total: -16 bytes
2008-07-28hush: finish and enable optional case...esac support. Code size cost:Denis Vlasenko
function old new delta run_list 1891 2075 +184 parse_stream 1764 1847 +83 expand_strvec_to_string - 83 +83 done_word 647 715 +68 static.reserved_list 144 168 +24 static.reserved_match - 12 +12 done_pipe 95 105 +10 builtin_exit 48 46 -2 builtin_eval 127 54 -73 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 5/2 up/down: 464/-75) Total: 389 bytes
2008-07-21libbb: [x]fopen_for_{read,write} introduced and used.Denis Vlasenko
(by Valdimir) function old new delta config_open2 - 41 +41 config_read 507 542 +35 find_pair 169 187 +18 fopen_for_write - 14 +14 fopen_for_read - 14 +14 find_main 406 418 +12 xfopen_for_write - 10 +10 xfopen_for_read - 10 +10 popstring 134 140 +6 parse_inittab 396 401 +5 next_token 923 928 +5 pack_gzip 1659 1661 +2 bb__parsespent 117 119 +2 fallbackSort 1719 1717 -2 evalvar 1376 1374 -2 qrealloc 36 33 -3 ... ... ... ... singlemount 4579 4569 -10 process_stdin 443 433 -10 patch_main 1111 1101 -10 ifupdown_main 2175 2165 -10 file_action_grep 90 80 -10 uuidcache_init 649 637 -12 hush_main 797 785 -12 read_config 230 217 -13 dpkg_main 3835 3820 -15 read_line_input 3134 3110 -24 sysctl_main 232 203 -29 config_open 40 10 -30 WARN_BAD_LINE 44 - -44 login_main 1714 1575 -139 ------------------------------------------------------------------------------ (add/remove: 5/1 grow/shrink: 8/74 up/down: 174/-737) Total: -563 bytes
2008-07-21- fix spellingBernhard Reutner-Fischer
2008-07-14hush: fix "... pattern) cmd;; esac" caseDenis Vlasenko
2008-07-14hush: delete unused field in struct child.Denis Vlasenko
reinstate needed check for invalid syntax. document command parsing in hush_doc.txt.
2008-07-14hush: add case statement support. It is incomplete and disabled for now.Denis Vlasenko
costs ~300 bytes when enabled.
2008-07-09hush: compile fixes for !LOOPS caseDenis Vlasenko
2008-07-06hush: support "for if in do done then; do echo $if; done" caseDenis Vlasenko
function old new delta done_pipe 83 95 +12 parse_stream 1758 1764 +6 done_word 674 647 -27 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/1 up/down: 18/-27) Total: -9 bytes
2008-07-05hush: support "for v; do ... done" syntax (implied 'in "$@"')Denis Vlasenko
2008-07-05hush: fix a case where "$@" must expand to no word at allDenis Vlasenko
2008-07-05*: rename ATTRIBUTE_XXX to just XXX.Denis Vlasenko
2008-07-01revert last two commits. vfork cannot be used in subroutine,Denis Vlasenko
it trashes stack on return
2008-07-01*: introduce and use xfork()Denis Vlasenko
function old new delta xfork - 20 +20 msh_main 1377 1380 +3 mod_process 455 446 -9 forkexit_or_rexec 30 17 -13 expand_variables 1434 1421 -13 open_transformer 91 76 -15 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 1/4 up/down: 23/-50) Total: -27 bytes
2008-07-01*: introduce and use xvfork()Denis Vlasenko
function old new delta time_main 1052 1285 +233 crontab_main 623 856 +233 ifupdown_main 2202 2403 +201 xvfork - 20 +20 passwd_main 1049 1053 +4 grave 1068 1066 -2 script_main 935 921 -14 vfork_or_die 20 - -20 vfork_compressor 206 175 -31 open_as_user 109 - -109 popen2 218 - -218 edit_file 910 690 -220 run_command 268 - -268 ------------------------------------------------------------------------------ (add/remove: 1/4 grow/shrink: 4/4 up/down: 691/-882) Total: -191 bytes
2008-06-27*: introduce and use FAST_FUNC: regparm on i386, otherwise no-onDenis Vlasenko
text data bss dec hex filename 808035 611 6868 815514 c719a busybox_old 804472 611 6868 811951 c63af busybox_unstripped
2008-06-25whitespace fixes. no code changesDenis Vlasenko
2008-06-24hush: ifdef out parts which are not neededDenis Vlasenko
if neither loops nor ifs are supported. Code savings: function old new delta parse_stream 1758 1757 -1 checkjobs 335 318 -17 done_pipe 74 52 -22 expand_variables 1437 1407 -30 run_list 1232 1189 -43 parse_and_run_stream 328 267 -61 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/6 up/down: 0/-174) Total: -174 bytes
2008-06-24hush: kill some old unused fields; small code shrinkDenis Vlasenko
function old new delta builtin_exit 48 47 -1 checkjobs 351 335 -16 checkjobs_and_fg_shell 60 35 -25 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-42) Total: -42 bytes
2008-06-23fix breakage found by randomconfigDenis Vlasenko
2008-06-23hush: trivial fix in debug codeDenis Vlasenko
2008-06-18fix globbing in unquoted $* and $@Denis Vlasenko
2008-06-18hush: fix a bug with backslashes improperly handled in unquoted variables.Denis Vlasenko
with previous patch: function old new delta parse_stream 1638 1758 +120 expand_on_ifs 97 174 +77 free_pipe 206 237 +31 setup_redirect 217 220 +3 setup_redirects 143 144 +1 done_word 698 688 -10 free_strings 38 - -38 expand_variables 1451 1403 -48 ------------------------------------------------------------------------------ (add/remove: 0/1 grow/shrink: 5/2 up/down: 232/-96) Total: 136 bytes
2008-06-18hush: add testsuite for "no globbing in redirection" rule.Denis Vlasenko
simplify redirection habdling
2008-06-18hush: fix last hush-bugs testcase (disappearing "", $empty"" etc)Denis Vlasenko
2008-06-17hush: fix $$ handlingDenis Vlasenko
2008-06-17hush: fix "for a in; do echo 'I should never run'; done" bugDenis Vlasenko
2008-06-17hush: continue fixing quoting and subst: fix glob_and_assign.tests.Denis Vlasenko
2008-06-17hush: cleanup pass, the biggest is - moved builtins to the end of the file,Denis Vlasenko
they really annoy in the middle of parser code. no real code changes.
2008-06-17hush: fix memory leak. it was actually rather invloved problem.Denis Vlasenko
Now finally glob/variable expansion is done IN THE RIGHT ORDER! It opens up a possibility to cleanly fix remaining known bugs. function old new delta o_save_ptr 115 286 +171 o_save_ptr_helper - 115 +115 done_word 591 690 +99 o_get_last_ptr - 31 +31 expand_on_ifs 125 97 -28 add_string_to_strings 28 - -28 run_list 1895 1862 -33 debug_print_strings 42 - -42 add_strings_to_strings 126 - -126 expand_variables 1550 1394 -156 o_debug_list 168 - -168 expand_strvec_to_strvec 388 10 -378 ------------------------------------------------------------------------------ (add/remove: 2/4 grow/shrink: 2/4 up/down: 416/-959) Total: -543 bytes
2008-06-16hush: fixing fallout from last big glob fix:Denis Vlasenko
fix segfault; identify where we leak memory function old new delta expand_strvec_to_strvec 353 336 -17
2008-06-16hush: fix hush-bugs/glob_and_vars.tests testcase:Denis Vlasenko
globbing is now done _after_ variable/`cmd` substitution function old new delta expand_strvec_to_strvec 7 353 +346 expand_variables 1348 1383 +35 add_string_to_strings - 28 +28 globhack 114 - -114 done_word 778 579 -199 ------------------------------------------------------------------------------ (add/remove: 1/1 grow/shrink: 2/1 up/down: 409/-313) Total: 96 bytes
2008-06-15hush: eliminate PARSEFLAG_SEMICOLON and ctx->parse_type field.Denis Vlasenko
function old new delta parse_and_run_file 30 27 -3 hush_main 795 792 -3 initialize_context 45 39 -6 done_word 791 778 -13 parse_and_run_stream 375 338 -37 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/5 up/down: 0/-62) Total: -62 bytes
2008-06-14hush: fix a bug where we were requiring semicolon here: (cmd;)Denis Vlasenko
also fix a bug where after error prompt is not shown. function old new delta parse_stream 1612 1638 +26 parse_and_run_stream 361 375 +14 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 40/0) Total: 40 bytes
2008-06-14hush: add support for ':'; create testsuite entriesDenis Vlasenko
text data bss dec hex filename 809569 612 7044 817225 c7849 busybox_old 809528 612 7044 817184 c7820 busybox_unstripped
2008-06-14hush: support "! cmd | cmd" negationDenis Vlasenko
function old new delta done_word 749 791 +42 run_list 1821 1859 +38 checkjobs 334 351 +17 done_pipe 61 74 +13 static.reserved_list 132 144 +12 initialize_context 53 45 -8 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 5/1 up/down: 122/-8) Total: 114 bytes
2008-06-12hush: speed up o_addX{chr,str}Denis Vlasenko
function old new delta o_addQstr - 162 +162 o_addQchr - 89 +89 o_addstr - 58 +58 o_addqchr 50 81 +31 expand_on_ifs 103 97 -6 add_till_backquote 92 82 -10 expand_variables 1281 1217 -64 parse_stream 1675 1609 -66 o_addqstr 155 - -155 ------------------------------------------------------------------------------ (add/remove: 3/1 grow/shrink: 1/4 up/down: 340/-301) Total: 39 bytes text data bss dec hex filename 759870 604 6684 767158 bb4b6 busybox_old 759909 604 6684 767197 bb4dd busybox_unstripped
2008-06-12hush: fix for nested $()s with escapes + testsuiteDenis Vlasenko