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
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
30db43b5c5
hush: fix passing of $n on NOMMU
2009-04-05 02:10:39 +00:00
Denis Vlasenko
16a0c74f63
hush: fix hush-misc/break5.tests NOMMU failure
...
function old new delta
hush_main 1118 1144 +26
re_execute_shell 188 204 +16
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 42/0) Total: 42 bytes
2009-04-05 01:46:59 +00:00
Denis Vlasenko
0bb4a23506
hush: fix all testsuite failures on NOMMU except memory leak.
...
known TODOs: we do not pass traps and positional args yet.
2009-04-05 01:42:59 +00:00
Denis Vlasenko
609f2ab434
hush: enable NOMMU re-execution logic. Some testsuite entries
...
fail on NOMMU. Before it was much worse.
No regressions on MMU, size:
function old new delta
handle_dollar 626 632 +6
run_list 2018 2022 +4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 10/0) Total: 10 bytes
2009-04-04 23:15:14 +00:00
Denis Vlasenko
9aa7d6fdc5
hush: preparatory patch for NOMMU-safe { list } handling.
...
function old new delta
o_addblock - 58 +58
o_addstr_with_NUL - 27 +27
builtin_exit 47 49 +2
run_list 2020 2018 -2
o_addstrauto 27 - -27
parse_stream 1508 1461 -47
o_addstr 58 - -58
------------------------------------------------------------------------------
(add/remove: 2/2 grow/shrink: 1/2 up/down: 87/-134) Total: -47 bytes
2009-04-04 22:47:50 +00:00
Denis Vlasenko
34d4d89b2d
hush: fix NOMMU hangs in pseudo_exec_argv. Add forgotted setting
...
of signal mask. Reuse same help string in all shells.
function old new delta
builtin_exit 49 47 -2
pseudo_exec_argv 149 145 -4
builtin_help 74 63 -11
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-17) Total: -17 bytes
text data bss dec hex filename
825379 476 7616 833471 cb7bf busybox_old
825341 476 7616 833433 cb799 busybox_unstripped
2009-04-04 20:24:37 +00:00
Denis Vlasenko
552433bc5a
hush: fix "var=val >file" not creating file
...
function old new delta
static.null_ptr - 4 +4
run_list 2018 2020 +2
handle_dollar 667 626 -41
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/1 up/down: 6/-41) Total: -35 bytes
2009-04-04 19:29:21 +00:00
Denis Vlasenko
a24c8caeb2
hush: remove code which errors out on $- and $_, it's useless;
...
wrap some longish lines
function old new delta
handle_dollar 667 626 -41
2009-04-04 15:24:40 +00:00
Denis Vlasenko
7c9861214b
hush: remove CHAR_xxx constants
2009-04-04 12:15:42 +00:00
Denis Vlasenko
6da69cddc0
hush: get rid of charmap[]
...
function old new delta
parse_stream 1447 1508 +61
get_local_var_value - 31 +31
run_list 2018 2020 +2
pseudo_exec_argv 151 149 -2
maybe_set_sighandler 50 47 -3
hush_exit 93 90 -3
builtin_wait 275 272 -3
check_and_run_traps 169 164 -5
hush_main 985 977 -8
file_get 260 240 -20
builtin_trap 438 414 -24
set_in_charmap 30 - -30
lookup_param 31 - -31
parse_and_run_stream 153 54 -99
------------------------------------------------------------------------------
(add/remove: 1/2 grow/shrink: 2/9 up/down: 94/-228) Total: -134 bytes
2009-04-04 12:12:58 +00:00
Mike Frysinger
dfa9de7176
simplify maybe_die() slightly
2009-04-03 22:48:10 +00:00
Denis Vlasenko
db2a9b683a
hush: finally make cmd
safe on NOMMU
...
function old new delta
generate_stream_from_string - 157 +157
expand_variables 2050 2003 -47
generate_stream_from_list 139 - -139
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/1 up/down: 157/-186) Total: -29 bytes
2009-04-03 22:31:18 +00:00
Denis Vlasenko
e0755e58ca
hush: yet another randomconfig fix
2009-04-03 21:16:45 +00:00
Denis Vlasenko
60b392fd5b
hush: randomconfig fixes
2009-04-03 19:14:32 +00:00
Denis Vlasenko
b6e6556b31
hush: improve parse_stream: does not require parsing context struct;
...
cleans up on syntax errors (we used to leak memory in this case);
much simplified interface to the rest of hush.
function old new delta
parse_stream 1204 1447 +243
done_word 658 669 +11
static_get 22 28 +6
builtin_source 84 89 +5
parse_and_run_file 27 30 +3
parse_and_run_string 31 27 -4
builtin_eval 55 50 -5
hush_main 991 985 -6
free_pipe_list 39 31 -8
free_pipe 210 189 -21
expand_variables 2242 2199 -43
parse_and_run_stream 289 153 -136
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 5/7 up/down: 268/-223) Total: 45 bytes
2009-04-03 16:49:04 +00:00
Denis Vlasenko
240c255d8b
hush: simplify parse_stream
...
function old new delta
parse_and_run_stream 292 289 -3
parse_stream 1218 1204 -14
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-17) Total: -17 bytes
2009-04-03 03:45:05 +00:00
Denis Vlasenko
3718168b87
hush: fix bug with local environment vars in pipes; simplify parse_stream()
...
function old new delta
parse_stream 1238 1218 -20
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-20) Total: -20 bytes
2009-04-03 03:19:15 +00:00
Denis Vlasenko
f9f7429346
hush: explain parsing context structure
...
plug leak in setup_redirect on error path
function old new delta
done_command 84 86 +2
done_word 657 658 +1
done_pipe 105 106 +1
initialize_context 39 38 -1
setup_redirect 219 212 -7
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/2 up/down: 4/-8) Total: -4 bytes
2009-04-03 00:07:05 +00:00
Denis Vlasenko
027e3fddb5
hush: straighten parse_stream() API a bit
...
function old new delta
parse_stream 1240 1238 -2
expand_variables 2272 2242 -30
parse_and_run_stream 338 292 -46
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-78) Total: -78 bytes
2009-04-02 22:50:40 +00:00
Denis Vlasenko
b7aaae9052
hush: rename ->o_quote to ->o_escape
...
hush_test/hush-arith/*: new tests for arithmetic evaluation
2009-04-02 20:17:49 +00:00
Mike Frysinger
7a79afa3ca
Arithmetic Expansion is supported now in hush, so drop from TODO
2009-04-02 17:06:35 +00:00
Denis Vlasenko
f328e00b10
hush: do not inadvertently parse $((1 + "22")) as ok.
...
-20 bytes code size
2009-04-02 16:55:38 +00:00
Denis Vlasenko
2f1d394214
hush: make
...
a=55; echo $(($a + 1)) $((1 + $((2)) + `echo $a`))
work as expected
function old new delta
handle_dollar - 667 +667
parse_stream_dquoted - 316 +316
expand_variables 2124 2272 +148
is_assignment 134 215 +81
parse_stream 2038 1240 -798
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 2/1 up/down: 1212/-798) Total: 414 bytes
2009-04-02 16:31:29 +00:00
Denis Vlasenko
b29eb6ed25
shells: do not need to have math state global
...
function old new delta
ash_arith - 143 +143
expand_variables 2102 2124 +22
popstring 134 140 +6
parse_command 1460 1463 +3
trapcmd 236 238 +2
changepath 197 196 -1
raise_interrupt 86 83 -3
hush_main 1012 991 -21
ash_main 1388 1364 -24
arith_set_local_var 73 34 -39
dash_arith 117 - -117
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 4/5 up/down: 176/-205) Total: -29 bytes
2009-04-02 13:46:27 +00:00
Mike Frysinger
98c52645c0
split math code out of ash and into a standalone library so we can use it in any shell (like hush!)
2009-04-02 10:02:37 +00:00
Denis Vlasenko
7566bae197
hush: fix wait builtin
...
function old new delta
builtin_wait 174 275 +101
sigwaitinfo - 48 +48
__GI_sigwaitinfo - 48 +48
check_and_run_traps 133 169 +36
checkjobs 349 380 +31
hush_main 971 991 +20
static.zero_timespec - 8 +8
run_list 2010 2016 +6
file_get 254 260 +6
static.zero_ts 8 - -8
------------------------------------------------------------------------------
(add/remove: 3/1 grow/shrink: 6/0 up/down: 304/-8) Total: 296 bytes
2009-03-31 17:24:49 +00:00
Denis Vlasenko
1b62ead313
hush: don't lie in comment
2009-03-31 13:13:17 +00:00
Denis Vlasenko
7b830e78f2
hush: fix comments, no code changes
2009-03-31 13:05:32 +00:00
Denis Vlasenko
422cd7c81c
hush: make ^C work again, ^Z probably isn't working
...
function old new delta
file_get 219 254 +35
check_and_run_traps 122 133 +11
run_list 2001 2010 +9
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 55/0) Total: 55 bytes
2009-03-31 12:41:52 +00:00
Denis Vlasenko
abedaac842
hush: do not reset sighaldlers after fork - instead, prevent them from doing any harm
...
if they will be called. saves many sigaction calls on every fork.
function old new delta
hush_main 887 971 +84
sigexit 54 65 +11
run_list 2006 2001 -5
maybe_set_sighandler 76 50 -26
set_fatal_sighandler 186 - -186
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 2/2 up/down: 95/-217) Total: -122 bytes
2009-03-31 12:03:40 +00:00
Denis Vlasenko
d5762932fb
hush: rework signal and trap handling. Some smaller bits are TODO,
...
expect minor breakage
function old new delta
set_fatal_sighandler 12 186 +174
check_and_run_traps - 122 +122
maybe_set_sighandler - 76 +76
hush_main 831 887 +56
sigtimedwait - 50 +50
__GI_sigtimedwait - 50 +50
hush_exit 49 93 +44
set_mode 749 777 +28
pseudo_exec_argv 131 151 +20
static.zero_ts - 8 +8
expand_variables 1962 1970 +8
builtin_wait 172 174 +2
set_misc_sighandler 12 - -12
set_jobctrl_sighandler 12 - -12
handler_ctrl_c 16 - -16
builtin_set_mode 28 - -28
handle_trap 97 - -97
handler_ctrl_z 107 - -107
builtin_trap 545 438 -107
run_list 2149 2006 -143
------------------------------------------------------------------------------
(add/remove: 5/6 grow/shrink: 7/2 up/down: 638/-522) Total: 116 bytes
2009-03-31 11:22:57 +00:00
Mike Frysinger
d690f68554
implement unset
semantics as required by POSIX
2009-03-30 06:50:54 +00:00
Mike Frysinger
0080ea7992
update trap
poisx link
2009-03-30 03:50:07 +00:00
Mike Frysinger
87824e0e50
do not automatically display job information when the shell is not interactive
2009-03-30 00:19:30 +00:00
Mike Frysinger
9f8128f480
first pass at trap
support in hush
2009-03-29 23:49:37 +00:00
Mike Frysinger
40b8dc410e
use bb_strtou() in umask/wait and check errno to see if there was a problem rather than using endp
2009-03-29 00:50:30 +00:00
Mike Frysinger
8ec1c9dc6e
make sure we check job status whenever updating the prompt
2009-03-29 00:45:26 +00:00
Mike Frysinger
7c3e52c1bd
do not let handle_dollar() accept vars that start with a digit
2009-03-28 21:06:22 +00:00
Mike Frysinger
56bdea1b43
implement wait
builtin
2009-03-28 20:01:58 +00:00
Denis Vlasenko
701ac1864b
randomconfig fix
2009-03-28 19:22:08 +00:00
Mike Frysinger
5a82845f60
update the normally disabled debug code around the syntax() func to use new maybe_die()
2009-03-28 19:09:04 +00:00
Mike Frysinger
6379bb4fde
implement most POSIX parameter expansions (~+500bytes)
2009-03-28 18:55:03 +00:00
Mike Frysinger
25a6ca0dd4
split up feature todo by posix/bash
2009-03-28 13:59:26 +00:00
Mike Frysinger
ad88d5a4cf
unify set
handling with command line processing, fixup set
argv processing so it doesnt clobber argv when setting options, and barf on unhandled set options
2009-03-28 13:44:51 +00:00
Mike Frysinger
19a7ea126a
handle the "-s" command line option that POSIX requires
2009-03-28 13:02:11 +00:00
Mike Frysinger
a71cfa8aa1
rename "-f" (fake) option to "-n" to match POSIX
2009-03-28 12:57:54 +00:00
Mike Frysinger
d006edb2ca
tweak format modifier in debug code to fixup gcc warning
2009-03-28 12:43:53 +00:00
Mike Frysinger
ec2c655702
convert some of the ENABLE_FEATURE_EDITING from CPP if to C if
2009-03-28 12:24:44 +00:00
Mike Frysinger
39456a18a1
stop lying about [[ test support
2009-03-28 12:21:57 +00:00
Mike Frysinger
bfc0fae952
enable most job functions on no-mmu systems
2009-03-26 18:14:16 +00:00
Mike Frysinger
b2705e1652
do not make startup banner depend on job support
2009-03-23 08:44:02 +00:00
Mike Frysinger
ddbee974b4
move parse_stream out of ENABLE_HUSH_TICK to avoid implicit decl/build error
2009-03-22 22:48:41 +00:00
Denis Vlasenko
424f79b48f
hush: rearrange functions to reduce amount of forward references.
...
Minimal code changes.
2009-03-22 14:23:34 +00:00
Denis Vlasenko
e1300f6fc7
hush: fix segv at repeated "set -- a b c" + "shift"
2009-03-22 11:41:18 +00:00
Denis Vlasenko
786ce17d6d
hush: fix strcpy of potentially overlapping strings
2009-03-21 21:51:11 +00:00
Denis Vlasenko
a8b6dff97f
hush: fix bug 207 and "hush -c" parameter passing.
...
Now hush -c 'printf "%s\n" "$@"' (prints "\n")
and hush -c 'printf "%s\n" "$@"' qwe asd (prints "asd\n")
both work correctly
2009-03-20 12:05:14 +00:00
Denis Vlasenko
11fb7cf5af
hush: fix set [--] params. Closes bug 199.
...
function old new delta
builtin_set 55 194 +139
add_strings_to_strings - 130 +130
add_string_to_strings 110 26 -84
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/1 up/down: 269/-84) Total: 185 bytes
2009-03-20 10:13:08 +00:00
Denis Vlasenko
76ddc2e3e4
libbb: add bb_unsetenv (taken from hush).
...
udhcpc: stop filtering environment passed to the script.
crond: fix uncovered potential bug (failing unsetenv)
mdev: fix uncovered potential bug (failing unsetenv)
tcp, udpsvd: fix uncovered potential bug (failing unsetenv)
function old new delta
safe_setenv - 58 +58
bb_unsetenv - 55 +55
builtin_unset 139 138 -1
tcpudpsvd_main 1843 1830 -13
free_strings_and_unsetenv 87 53 -34
udhcp_run_script 1186 1133 -53
safe_setenv4 62 - -62
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 0/4 up/down: 113/-163) Total: -50 bytes
2008-12-30 05:05:31 +00:00
Denis Vlasenko
61befda93b
ash,hush: add TODO for rare build failure
...
*: remove some redundant includes
2008-11-25 01:36:03 +00:00
Denis Vlasenko
9504e444b8
whitespace fixes, no code changes
2008-10-29 01:19:15 +00:00
Denis Vlasenko
ddc8ae3003
hush: add TODO
2008-10-14 12:50:34 +00:00
Denis Vlasenko
371de4acf7
hush: next small step towards functions
2008-10-14 12:43:13 +00:00
Denis Vlasenko
f886fd2bc7
hush: fix NOMMU bug (analogous to preceding commit for MMU)
2008-10-13 12:36:05 +00:00
Denis Vlasenko
22d10a0292
hush: fix trashing of environment by local env vars:
...
a=a; a=b cmd; - a was unset!
+57 bytes
function old new delta
add_string_to_strings - 110 +110
putenv_all - 27 +27
run_list 2086 2111 +25
free_strings - 7 +7
free_pipe 210 208 -2
add_malloced_string_to_strings 110 - -110
------------------------------------------------------------------------------
(add/remove: 3/1 grow/shrink: 1/1 up/down: 169/-112) Total: 57 bytes
2008-10-13 08:53:43 +00:00
Denis Vlasenko
afd7a8d744
hush: fix environment and memory leaks, add tests for them
...
function old new delta
add_malloced_string_to_strings - 110 +110
run_list 1999 2086 +87
free_strings_and_unsetenv - 87 +87
hush_version_str - 18 +18
pseudo_exec_argv 139 146 +7
static.version_str 17 - -17
free_pipe 237 210 -27
done_word 790 642 -148
------------------------------------------------------------------------------
(add/remove: 3/1 grow/shrink: 2/2 up/down: 309/-192) Total: 117 bytes
2008-10-09 16:29:44 +00:00
Denis Vlasenko
c373527e4f
hush: preparatory work for implementing functions
2008-10-09 12:58:26 +00:00
Denis Vlasenko
9af22c7626
hush: massive renaming of ill-named structures and fields
...
hush: error out on constructs like:
$ abc(def) - was working as if it was (abcdef)
$ case b in abc(a|(b) echo YES; esac - was ignoring 'abc' and extra '('
2008-10-09 12:54:58 +00:00
Bernhard Reutner-Fischer
864329d674
- fix compilation on OSF/1
2008-09-25 10:55:05 +00:00
Denis Vlasenko
2b576b8e76
hush: fix mishandling of a'b'c=fff as assignments. They are not.
...
function old new delta
parse_stream 1920 2004 +84
done_word 715 752 +37
parse_and_run_stream 328 333 +5
builtin_exec 25 29 +4
pseudo_exec_argv 138 139 +1
run_list 2006 1999 -7
is_assignment 215 134 -81
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 5/2 up/down: 131/-88) Total: 43 bytes
2008-08-04 00:46:07 +00:00
Denis Vlasenko
c8bec9a085
hush: remove a comment about already fixed bug
2008-08-03 22:27:50 +00:00
Denis Vlasenko
d498131168
hush: support $_NUMBERS variable names
2008-07-31 10:34:48 +00:00
Denis Vlasenko
f173607520
hush: fix "case ... in <newline> word)..."
2008-07-31 10:09:26 +00:00
Denis Vlasenko
fbeeb328b8
hush: support "pattern1|pattern2...)" in case statements
...
parse_stream 1847 1861 +14
run_list 1995 2006 +11
2008-07-31 00:17:01 +00:00
Denis Vlasenko
4f504a9e57
hush: trivial code shrink
...
function old new delta
builtin_continue 48 22 -26
2008-07-29 19:48:30 +00:00
Denis Vlasenko
87a8655f46
hush: use G.xxx instead of #define xxx G.xxx. We have too many globals
...
there and #defines get messy. Remove one write-only G.variable.
2008-07-29 19:43:10 +00:00
Denis Vlasenko
ff29b4fc42
randomconfig fix
2008-07-29 13:57:59 +00:00
Denis Vlasenko
4554b721ad
hush: small fix for repeated continue and fix for wrong loop depth count
...
after Ctrl-C; with testcase for first one
2008-07-29 13:36:09 +00:00
Denis Vlasenko
45cb9f9581
hush: fix inverted check (was making all break's to act as "break 99999")
2008-07-29 11:47:46 +00:00
Denis Vlasenko
fcf37c3183
hush: fix break'ing out of {} and () groups; with testcase
...
function old new delta
builtin_break 93 129 +36
builtin_continue 21 47 +26
run_list 1973 1976 +3
2008-07-29 11:37:15 +00:00
Denis Vlasenko
d91afa33fd
randomconfig fixes
2008-07-29 11:10:01 +00:00
Denis Vlasenko
dadfb4975b
hush: add #defines to switch off break/continue if loops are not supported
...
*: remove a few inline keywords
no code changes
2008-07-29 10:16:05 +00:00
Denis Vlasenko
918a34b9e0
hush: fix "while false; ..." exitcode; add testsuites
2008-07-28 23:17:31 +00:00
Denis Vlasenko
6a2d40f239
hush: support "break N" and "continue N"
...
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-28 23:07:06 +00:00
Denis Vlasenko
bcb25537d0
hush: implement break and continue
...
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-28 23:04:34 +00:00
Denis Vlasenko
cf22c89f9a
hush: in run_list(), some loop_top ops seems to be superfluous.
...
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-28 15:17:44 +00:00
Denis Vlasenko
12acec5ad4
hush: in run_list(), last_cond_code seems to be superfluous. comment it out
...
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-28 15:15:59 +00:00
Denis Vlasenko
5e052cab17
hush: explain run_list() in detail; small optimizations
...
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-28 15:15:09 +00:00
Denis Vlasenko
be709c24d4
hush: finish and enable optional case...esac support. Code size cost:
...
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-28 00:01:16 +00:00
Denis Vlasenko
5415c856ea
libbb: [x]fopen_for_{read,write} introduced and used.
...
(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 23:05:26 +00:00
Bernhard Reutner-Fischer
a53de7f7c2
- fix spelling
2008-07-21 13:46:54 +00:00
Denis Vlasenko
757361f9f5
hush: fix "... pattern) cmd;; esac" case
2008-07-14 08:26:47 +00:00
Denis Vlasenko
395ae45216
hush: delete unused field in struct child.
...
reinstate needed check for invalid syntax.
document command parsing in hush_doc.txt.
2008-07-14 06:29:38 +00:00
Denis Vlasenko
17f02e79f4
hush: add case statement support. It is incomplete and disabled for now.
...
costs ~300 bytes when enabled.
2008-07-14 04:32:29 +00:00
Denis Vlasenko
6bdff08e6c
hush: compile fixes for !LOOPS case
2008-07-09 20:14:53 +00:00
Denis Vlasenko
733e3fbc2f
hush: support "for if in do done then; do echo $if; done" case
...
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-06 10:01:13 +00:00
Denis Vlasenko
ff182a3d68
hush: support "for v; do ... done" syntax (implied 'in "$@"')
2008-07-05 20:29:59 +00:00
Denis Vlasenko
afdcd12ed7
hush: fix a case where "$@" must expand to no word at all
2008-07-05 17:40:04 +00:00
Denis Vlasenko
a60f84ebf0
*: rename ATTRIBUTE_XXX to just XXX.
2008-07-05 09:18:54 +00:00
Denis Vlasenko
82604e9730
revert last two commits. vfork cannot be used in subroutine,
...
it trashes stack on return
2008-07-01 15:59:42 +00:00
Denis Vlasenko
58d60c3333
*: introduce and use xfork()
...
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 11:11:24 +00:00
Denis Vlasenko
3da5572bfa
*: introduce and use xvfork()
...
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-07-01 10:40:41 +00:00
Denis Vlasenko
defc1ea340
*: introduce and use FAST_FUNC: regparm on i386, otherwise no-on
...
text data bss dec hex filename
808035 611 6868 815514 c719a busybox_old
804472 611 6868 811951 c63af busybox_unstripped
2008-06-27 02:52:20 +00:00
Denis Vlasenko
7049ff8696
whitespace fixes. no code changes
2008-06-25 09:53:17 +00:00
Denis Vlasenko
5ec6132c98
hush: ifdef out parts which are not needed
...
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-24 00:50:07 +00:00
Denis Vlasenko
003f9fb213
hush: kill some old unused fields; small code shrink
...
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-24 00:47:58 +00:00
Denis Vlasenko
cc3f20b9bd
fix breakage found by randomconfig
2008-06-23 22:31:52 +00:00
Denis Vlasenko
211b59be43
hush: trivial fix in debug code
2008-06-23 16:28:53 +00:00
Denis Vlasenko
324a3fdf87
fix globbing in unquoted $* and $@
2008-06-18 17:49:58 +00:00
Denis Vlasenko
55789c6646
hush: fix a bug with backslashes improperly handled in unquoted variables.
...
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-18 16:30:42 +00:00
Denis Vlasenko
ab876cd107
hush: add testsuite for "no globbing in redirection" rule.
...
simplify redirection habdling
2008-06-18 16:29:32 +00:00
Denis Vlasenko
c1c63b622d
hush: fix last hush-bugs testcase (disappearing "", $empty"" etc)
2008-06-18 09:20:35 +00:00
Denis Vlasenko
16c2fea280
hush: fix $$ handling
2008-06-17 12:28:44 +00:00
Denis Vlasenko
6eaf8deddd
hush: fix "for a in; do echo 'I should never run'; done" bug
2008-06-17 12:09:21 +00:00
Denis Vlasenko
30c9cc5b17
hush: continue fixing quoting and subst: fix glob_and_assign.tests.
2008-06-17 07:24:29 +00:00
Denis Vlasenko
c7985b76c5
hush: cleanup pass, the biggest is - moved builtins to the end of the file,
...
they really annoy in the middle of parser code. no real code changes.
2008-06-17 05:43:38 +00:00
Denis Vlasenko
b61e13d247
hush: fix memory leak. it was actually rather invloved problem.
...
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-17 05:11:43 +00:00
Denis Vlasenko
ccce59d562
hush: fixing fallout from last big glob fix:
...
fix segfault; identify where we leak memory
function old new delta
expand_strvec_to_strvec 353 336 -17
2008-06-16 14:35:57 +00:00
Denis Vlasenko
82dfec3e4e
hush: fix hush-bugs/glob_and_vars.tests testcase:
...
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-16 12:47:11 +00:00
Denis Vlasenko
5703c22a51
hush: eliminate PARSEFLAG_SEMICOLON and ctx->parse_type field.
...
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-15 11:49:42 +00:00
Denis Vlasenko
f8d01d3f66
hush: fix a bug where we were requiring semicolon here: (cmd;)
...
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-14 17:13:20 +00:00
Denis Vlasenko
dd316dd283
hush: add support for ':'; create testsuite entries
...
text data bss dec hex filename
809569 612 7044 817225 c7849 busybox_old
809528 612 7044 817184 c7820 busybox_unstripped
2008-06-14 15:50:55 +00:00
Denis Vlasenko
a84420062a
hush: support "! cmd | cmd" negation
...
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-14 11:00:17 +00:00
Denis Vlasenko
7e3d33b6ce
hush: speed up o_addX{chr,str}
...
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-12 13:31:04 +00:00
Denis Vlasenko
76db5adbf7
hush: fix for nested $()s with escapes + testsuite
2008-06-12 12:58:20 +00:00
Denis Vlasenko
87f40bac14
hush: more backtick and quoting fixes...
2008-06-10 22:39:37 +00:00
Denis Vlasenko
43360e5178
hush: fix escaping of \[*?; add testsuites for these and for globbing
2008-06-10 20:13:40 +00:00
Denis Vlasenko
2e76c3f901
hush: fix yet another fallout
...
hush: move fixed testsuites out of hush-bugs/*
2008-06-10 18:27:50 +00:00
Denis Vlasenko
895bea2303
hush: fix some fallout from prev commits, add testsuite
2008-06-10 18:06:24 +00:00
Denis Vlasenko
46ccdcb96e
hush: search/and/replace style cleanups, no code changes
2008-06-10 18:05:12 +00:00
Denis Vlasenko
7b4f3f13d3
hush: fix two nasty bugs:
...
hush-bugs/tick2.tests: ok
hush-bugs/tick.tests: ok
function old new delta
parse_stream 1332 1557 +225
b_addptr - 97 +97
add_till_backquote - 82 +82
b_addstr - 58 +58
b_grow_by - 50 +50
setup_string_in_str - 29 +29
expand_variables 1196 1199 +3
expand_on_ifs 100 97 -3
b_addqchr 57 50 -7
parse_and_run_string 48 31 -17
lookup_param 27 - -27
b_addchr 75 45 -30
count_ifs 44 - -44
process_command_subs 222 - -222
------------------------------------------------------------------------------
(add/remove: 5/3 grow/shrink: 2/4 up/down: 544/-350) Total: 194 bytes
text data bss dec hex filename
759354 604 6684 766642 bb2b2 busybox_old
759534 604 6684 766822 bb366 busybox_unstripped
2008-06-10 18:04:32 +00:00
Denis Vlasenko
76d50418b3
hush: fix a memory leak in NOMMU case
2008-06-10 16:19:39 +00:00
Denis Vlasenko
3fe4f986a0
less: fix a case when regexp matches ""
...
hush: remove wrong comment, expand another one
2008-06-09 16:02:39 +00:00
Denis Vlasenko
4830fc565a
hush: make it ignore SIGINT etc in a config wich has no job control
2008-05-25 21:50:55 +00:00
Bernhard Reutner-Fischer
636a1f85e8
- use EXIT_{SUCCESS,FAILURE}. No object-code changes
2008-05-19 09:29:47 +00:00
Denis Vlasenko
7465dbcf2a
ash: speed up NOFORK code in ash by eliminating second find_applet().
...
some code reduction along the way.
function old new delta
run_list 1971 1981 +10
run_nofork_applet_prime 181 182 +1
unsetcmd 97 96 -1
delete_cmd_entry 54 53 -1
describe_command 399 397 -2
cmdlookup 152 150 -2
evaltreenr 602 599 -3
evaltree 602 599 -3
clearcmdentry 101 98 -3
cdcmd 675 672 -3
hashcmd 305 301 -4
find_command 933 910 -23
evalcommand 1371 1229 -142
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/11 up/down: 11/-187) Total: -176 bytes
2008-04-13 02:25:53 +00:00
Denis Vlasenko
0b6c6a9c9f
lpd: fix OOM vulnerability (was eating arbitrarily large commands)
2008-03-24 00:04:42 +00:00
Denis Vlasenko
c93b162248
patch: shrink by Pascal Bellard <pascal.bellard AT ads-lu.com> (-80 bytes)
...
*: removal of #include <getopt.h>
2008-03-23 22:55:25 +00:00
Denis Vlasenko
f90ab183d6
*: use fopen_or_warn in few more places
2008-03-20 21:19:35 +00:00
Denis Vlasenko
68404f13d4
*: add -Wunused-parameter; fix resulting breakage
...
function old new delta
procps_scan 1265 1298 +33
aliascmd 278 283 +5
parse_file_cmd 116 120 +4
dname_enc 373 377 +4
setcmd 90 93 +3
execcmd 57 60 +3
count_lines 72 74 +2
process_command_subs 340 339 -1
test_main 409 407 -2
mknod_main 179 177 -2
handle_incoming_and_exit 2653 2651 -2
argstr 1312 1310 -2
shiftcmd 131 128 -3
exitcmd 46 43 -3
dotcmd 297 294 -3
breakcmd 86 83 -3
evalpipe 353 349 -4
evalcommand 1180 1176 -4
evalcmd 109 105 -4
send_tree 374 369 -5
mkfifo_main 82 77 -5
evalsubshell 152 147 -5
typecmd 75 69 -6
letcmd 61 55 -6
add_cmd 1190 1183 -7
main 891 883 -8
ash_main 1415 1407 -8
parse_stream 1377 1367 -10
alloc_procps_scan 55 - -55
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 7/21 up/down: 54/-148) Total: -94 bytes
text data bss dec hex filename
797195 658 7428 805281 c49a1 busybox_old
797101 658 7428 805187 c4943 busybox_unstripped
2008-03-17 09:00:54 +00:00
Denis Vlasenko
3f165fa5b3
libbb: introduce and use sigprocmask_allsigs and sigaction_set.
...
libbb: rename sig_pause to wait_for_any_sig.
2008-03-17 08:29:08 +00:00
Denis Vlasenko
8e2cfec1cd
libbb: introduse and use signal_[no_]SA_RESTART_empty_mask and sigaction_set
...
signal_SA_RESTART_empty_mask - 65 +65
signal_no_SA_RESTART_empty_mask - 54 +54
dd_main 1325 1369 +44
sigaction_set - 19 +19
dname_enc 373 377 +4
UNSPEC_print 64 66 +2
setsignal 296 294 -2
bb_signals_recursive 95 92 -3
bb_askpass 367 361 -6
inetd_main 1810 1797 -13
rx_main 912 883 -29
sigdelset 32 - -32
__sigdelset 32 - -32
__GI_sigdelset 32 - -32
sighup_handler 84 37 -47
arping_main 1844 1797 -47
fsck_main 1869 1807 -62
run_list 1917 1844 -73
vlock_main 492 409 -83
progressmeter 883 798 -85
handle_incoming_and_exit 2737 2651 -86
------------------------------------------------------------------------------
(add/remove: 3/3 grow/shrink: 3/12 up/down: 188/-632) Total: -444 bytes
2008-03-12 23:19:35 +00:00
Denis Vlasenko
574f2f4394
*: add optimization barrier to all "G trick" locations
2008-02-27 18:41:59 +00:00
Denis Vlasenko
400d8bb45e
less,klogd,syslogd,nc,tcpudp: exit on signal by killing itself, not exit(1)
...
*: minor shrink
2008-02-24 13:36:01 +00:00
Denis Vlasenko
e376d454bb
libbb: introduce and use nonblock_safe_read(). Yay!
...
Our shells are immune from this nasty O_NONBLOCK now!
function old new delta
nonblock_safe_read - 78 +78
file_get 276 295 +19
generateMTFValues 428 435 +7
read_line_input 1776 1772 -4
preadbuffer 543 450 -93
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 2/2 up/down: 104/-97) Total: 7 bytes
text data bss dec hex filename
615190 715 23924 639829 9c355 busybox_old
615168 715 23924 639807 9c33f busybox_unstripped
2008-02-20 22:23:24 +00:00
Denis Vlasenko
25591c322c
libbb: introduce bb_signals and bb_signals_recursive,
...
which sets same handler for many signals. sig_catch is nuked
(bb_signals_recursive is more descriptive name).
*: use them as appropriate.
function old new delta
bb_signals_recursive - 95 +95
bb_signals - 52 +52
run_command 258 273 +15
svlogd_main 1368 1377 +9
runsv_main 1746 1752 +6
runsvdir_main 1643 1646 +3
UNSPEC_print 64 66 +2
time_main 1128 1127 -1
...
resize_main 246 210 -36
sig_catch 63 - -63
set_fatal_sighandler 85 14 -71
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 5/24 up/down: 182/-548) Total: -366 bytes
2008-02-16 22:58:56 +00:00
Denis Vlasenko
284d0faed6
random s/short/int/
...
add_cmd 1189 1190 +1
xconnect_ftpdata 118 117 -1
data_align 86 84 -2
process_files 2101 2096 -5
forkexec 1345 1334 -11
2008-02-16 13:18:17 +00:00
Denis Vlasenko
83177991c8
hush: die_sllep needs restoring only if job control is on
2008-02-11 08:44:36 +00:00
Denis Vlasenko
08126f665d
hush: close-on-exec interactive_fd
2008-02-11 08:39:11 +00:00
Denis Vlasenko
459a5ad410
hush: set CLOEXEC on script file being executed
2008-02-11 08:35:03 +00:00
Denis Vlasenko
4ecfcdcced
hush: fix the comment
2008-02-11 08:32:31 +00:00
Denis Vlasenko
c04163a289
hush: reset die_sleep to 0 in child after fork
2008-02-11 08:30:53 +00:00
Denis Vlasenko
05743d7949
hush: reinstate cmd
handling for NOMMU (with fat big warning).
...
hush: fix a case where none of pipe members could be started
because of fork failure
hush: rename functions: xxx_real -> xxx
hush: try to add a bit more of vfork-friendliness
hush: add rudimentary design docs
hush: add TODO (newly discovered bug with globbing)
2008-02-10 12:10:08 +00:00
Denis Vlasenko
847fa779af
*: tidy up usage of char **environ
2008-01-28 22:45:43 +00:00
Denis Vlasenko
d2c450ce81
hush: report [v]fork failures
...
hush: more correct handling of piping
config: add CONFIG_NOMMU
2008-01-08 20:32:12 +00:00
Denis Vlasenko
fb0eba706c
libbb: introduce and use safe_waitpid (loops in EINTR)
...
*: use more approproate (shorter) versions of wait()
function old new delta
safe_waitpid - 48 +48
wait_any_nohang - 17 +17
send_tree 365 369 +4
processorstop 432 435 +3
text_yank 110 108 -2
make_human_readable_str 202 200 -2
crond_main 1368 1366 -2
handle_sigchld 49 43 -6
reapchild 166 159 -7
custom 260 250 -10
checkscript 191 177 -14
wait_nohang 17 - -17
wait_pid 43 - -43
------------------------------------------------------------------------------
(add/remove: 2/2 grow/shrink: 2/7 up/down: 72/-103) Total: -31 bytes
2008-01-02 19:55:04 +00:00
Denis Vlasenko
3b4921674e
hush: fixlet for NOMMU
...
update TODO_config_nommu
2007-12-24 14:26:57 +00:00
Denis Vlasenko
1aa7e477b1
reorganize applet table. Eliminates pointers to names.
...
Should be a big win for libbusybox. busybox wins too:
text data bss dec hex filename
776524 929 9100 786553 c0079 busybox_old
775903 929 9100 785932 bfe0c busybox_unstripped
2007-11-28 06:49:03 +00:00
Denis Vlasenko
fe5e23bf75
remove echo_main -> bb_echo indirection
2007-11-24 02:23:51 +00:00
Denis Vlasenko
c3c6659f12
hush: fix segfault in "echo $@" when we have no arguments
2007-11-24 00:22:42 +00:00
Denis Vlasenko
96702ca945
kill lash. "lash" builtin still exists, but it runs hush.
2007-11-23 23:28:55 +00:00
Denis Vlasenko
5bc593ccb8
hush: implement echo builtin
...
builtin_echo - 36 +36
bltins 384 396 +12
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/0 up/down: 48/0) Total: 48 bytes
2007-11-23 21:20:21 +00:00
Denis Vlasenko
cccdc4e01a
hush: fix $ expansion in redirections, add testcase for that
2007-11-23 21:08:38 +00:00
Denis Vlasenko
835068637e
hush: implement test builtin
2007-11-23 13:11:42 +00:00
Denis Vlasenko
f962a0354e
hush: plug memory leak
2007-11-23 12:50:54 +00:00
Denis Vlasenko
9b49a5ed85
add -fvisibility=hidden to CC flags, mark XXX_main functions
...
EXTERNALLY_VISIBLE. 5% size reduction of libbusybox.so
2007-10-11 10:05:36 +00:00
Denis Vlasenko
82d38dab91
get rid of global "struct bb_applet *current_applet"
2007-10-10 14:38:47 +00:00
Denis Vlasenko
d65ea39ffc
hush: fix glob() abuse. Code was making unfounded assumptions how
...
glob() works, and it broke horribly on specific uclibc config.
2007-10-01 10:02:25 +00:00
Denis Vlasenko
ff0976248a
hush: int->smallint for flag vars; make some names more "greppable"
2007-10-01 10:00:45 +00:00
Denis Vlasenko
8412d7959a
hush: feeble attempt at making it more NOMMU-friendly
2007-10-01 09:59:47 +00:00
Denis Vlasenko
a0898170d8
hush: stop doing manual acounting of open fd's, kernel can do it for us
2007-10-01 09:59:01 +00:00
Denis Vlasenko
96e1b38586
introduce and use close_on_exec_on(fd). -50 bytes.
2007-09-30 23:50:48 +00:00
Denis Vlasenko
4daad9004d
introduce bb_putchar(). saves ~1800 on uclibc (less on glibc).
2007-09-27 10:20:47 +00:00
Denis Vlasenko
6ca409e0e4
trylink: produce even more info about final link stage
...
trylink: explain how to modify link and drastically decrease amount
of padding (unfortunately, needs hand editing ATM).
*: add ALIGN1 / ALIGN2 to global strings and arrays of bytes and shorts
size saving: 0.5k
2007-08-12 20:58:27 +00:00
Denis Vlasenko
80b8b39899
Consolidate ARRAY_SIZE macro; remove one unneeded global var (walter harms <wharms@bfs.de>)
2007-06-25 10:55:35 +00:00
Denis Vlasenko
ca525b4f24
*: BB_BANNER -> bb_banner (it is not a const or #define)!
...
correct_password: explain in detail why it is ok to use bb_banner
fsck_minix: make it print bb version, not it's own (outdated/irrelevant) one
Marginal size difference:
text data bss dec hex filename
679119 2700 15632 697451 aa46b busybox_old
679091 2700 15632 697423 aa44f busybox_unstripped
2007-06-13 12:27:17 +00:00
Denis Vlasenko
d67cef2425
hush: fix read builtin to not read ahead past eol and to not use
...
insane amounts of stack. Testsuite updated.
2007-06-13 06:47:47 +00:00
Denis Vlasenko
bdbbb7ec49
make busybox --install work even if /proc/self/exe doesn't exist
...
# size busybox_old busybox_unstripped
text data bss dec hex filename
680095 2704 15648 698447 aa84f busybox_old
680099 2704 15648 698451 aa853 busybox_unstripped
2007-06-08 15:02:55 +00:00
Denis Vlasenko
27f79ff03d
hush: trivial buglet found by randomconfig testing
2007-05-30 00:55:52 +00:00
Denis Vlasenko
4b924f3a5c
whitespace fixes
2007-05-30 00:29:55 +00:00
Denis Vlasenko
b6adbf1be2
usage.c: remove reference to busybox.h
...
*: s/include "busybox.h"/include "libbb.h"
2007-05-26 19:00:18 +00:00
Denis Vlasenko
5a6aeddfa7
xpipe: introduce (saves ~170 bytes)
...
udhcp/signalpipe.c: use pipe instead of socketpair.
2007-05-26 16:44:20 +00:00
Denis Vlasenko
ba7cf260fd
hush: fix 'echo abcsleep 5
def' + Ctrl-Z and Ctrl-C bugs. +50 bytes of code.
2007-05-25 14:34:30 +00:00
Denis Vlasenko
0a83fc3984
hush: avoid duplicating HUSH_VERSION
2007-05-25 11:12:32 +00:00
Denis Vlasenko
201c72a8d6
hush: micro-optimization in new variable code
2007-05-25 10:00:36 +00:00
Denis Vlasenko
28c0f0f4fe
hush: we can't do without variable->value member, saving 25 bytes of code
...
and some runtime memory. Rename few variables.
2007-05-25 02:46:01 +00:00
Denis Vlasenko
d76c049cc4
hush: rework variable storage and environment handling.
...
More that -100 bytes of code + memory leak plugged.
Added a testcase for it.
2007-05-25 02:16:25 +00:00
Denis Vlasenko
5a1437d835
hush: fix segfaulting syntax error in interactive hush
2007-05-24 13:22:47 +00:00
Denis Vlasenko
b055001b6a
hush: fix handling of unmatched ${name (without closing '}') -
...
was eating all remaining input, potentially megabytes.
nofork: save/restore die_jmp too
nofork: use -2222 instead of -111 as "special" return valur for zero
(-111 is used by some applets. -2222 won't fit in exitcode and thus safer)
2007-05-24 12:18:16 +00:00
Denis Vlasenko
90e485ce79
hush: make syntax error messages a bit more useful
2007-05-23 15:22:50 +00:00
Denis Vlasenko
170435c575
hush: fix job control with eval /bin/external_prog
...
hush: fix parsing of unterminated "str with no EOL
hush: improved make_string() (smaller, faster, needs less RAM)
hush: renamed several functions
2007-05-23 13:01:10 +00:00
Denis Vlasenko
1a7358612f
hush: fix a bit different instance of "No EOL" bug,
...
add testsuite for that. Expand another testsuite.
2007-05-23 00:32:25 +00:00
Denis Vlasenko
0681033918
hush: add 3 CONFIG_xxx, allowing for smaller and less capable hush.
...
Minimal hush is ~9k now (lash is ~7k).
2007-05-21 23:30:54 +00:00
Denis Vlasenko
219e88d050
hush: using smallints where we can. save ~20 bytes in code and
...
some data storage at runtime.
2007-05-21 10:18:23 +00:00
Denis Vlasenko
004baba2d6
hush: fix shift + $0 bug; add testcase
2007-05-20 22:22:18 +00:00
Denis Vlasenko
262d765351
hush: trivial size optimization
2007-05-20 21:52:49 +00:00
Denis Vlasenko
14b5dd9943
hush: make process substitution configurable; add a testcase
2007-05-20 21:51:38 +00:00
Denis Vlasenko
c8be5ee325
hush: do "struct globals" trick. hush.o data+bss = 0 bytes now.
...
+60 bytes to image, but -8000 bytes in bss.
2007-05-17 15:38:46 +00:00
Denis Vlasenko
b6a741ffa7
hush: consolidated variable expansion for assignments and "normal" one.
...
-435 bytes. Tested against testsuite.
2007-05-17 14:38:17 +00:00
Denis Vlasenko
96f67dc69d
more compile fixes from randomconfig run
2007-05-17 13:02:41 +00:00
Denis Vlasenko
c666f71e3b
hush: take care of several easy FIXMEs. -228 bytes.
2007-05-16 22:18:54 +00:00
Denis Vlasenko
831dcc439c
hush: another microscopic typo fix
2007-05-16 15:05:36 +00:00
Denis Vlasenko
c29903221d
hush: fix English in comment
2007-05-16 12:57:12 +00:00
Denis Vlasenko
3e7b0e6120
hush: simplify read builtin; fix set_local_var (misplaced 'goto skip;')
2007-05-16 12:52:15 +00:00
Denis Vlasenko
1f4cf517f5
hush: fix expansion of quoted $VAR, $* and $@
2007-05-16 10:39:24 +00:00
Denis Vlasenko
8f6bdb42df
hush: fix incorrect processing of echo "'$var'".
...
hush: rename map[] and MAP_xxx, making them easier to understand.
hush: move testcase (which now passes) from hush-bugs to hush-parsing
2007-05-16 09:36:55 +00:00
Denis Vlasenko
764d59d488
hush: more fixes to variable expansion, more testcases
2007-05-14 16:23:23 +00:00
Denis Vlasenko
03eb8bf6ce
hush: move towards more correct variable expansion
...
hush: fix a few cases in FOR v IN ... construct
unfortunately, code growth is big - ~600 bytes
2007-05-14 16:19:34 +00:00
Denis Vlasenko
602d13cba5
hush: fix '{ false; echo $?; }' bug.
...
hush: expand testsuite. variable expansion is still very broken
2007-05-13 18:34:53 +00:00
Denis Vlasenko
3e9aaae5dc
hush: fix bug in interactive shell introduced yesterday
...
hush: fix `process subst` (2 bugs)
NB: will delete and re-add hush_test in order to change file modes
2007-05-11 12:56:43 +00:00
Denis Vlasenko
e0a336747c
hush: fix "unterminated last line loops forever" bug
...
hush: add testsuite infrastructure
2007-05-10 23:06:55 +00:00
Denis Vlasenko
53079d494e
hush: fix recent breakage (VAR=VAL stopped working)
2007-05-10 23:05:28 +00:00
Denis Vlasenko
21f0d4c55e
hush: fix double-free in "echo TEST &"
2007-05-06 14:15:42 +00:00
Denis Vlasenko
dd4cb2b31e
hush: stop generating extra empty pipes in parse stage.
2007-05-05 15:11:40 +00:00
Denis Vlasenko
a6c467f6d1
hush: preparatory patch for removing extra empty pipes generation
...
in parse stage. No real code change here.
2007-05-05 15:10:52 +00:00
Denis Vlasenko
ac0e5ab96a
hush: fix "while true; do true; done" + ctrl-z
2007-05-04 21:37:27 +00:00
Denis Vlasenko
400c5b6fc6
hush: add parse tree debug print
2007-05-04 13:07:27 +00:00
Denis Vlasenko
e725bfe6e0
hush: fix "true | exit 3; echo $?" bug
2007-05-03 22:45:39 +00:00
Denis Vlasenko
f2fffd0014
hush: remove env builtin (it is buggy). Add comments
2007-05-02 23:39:04 +00:00
Denis Vlasenko
d01ff13454
hush: simplify debugging prints a little bit
2007-05-02 21:40:23 +00:00
Denis Vlasenko
4ac530c0ef
hush: add debugging for tracing execution,
...
add FIXME for 'true | exit 3; echo $?' case
2007-05-02 15:35:45 +00:00
Denis Vlasenko
ef36ead370
hush: fix incorrect exitcodes without job control
2007-05-02 15:34:47 +00:00
Denis Vlasenko
e3f2f89891
hush: make job control and interactiveness configurable, part 2
2007-04-28 16:48:27 +00:00
Denis Vlasenko
b81b3df1fa
hush: make job control and interactiveness configurable, part 1
2007-04-28 16:48:04 +00:00
Denis Vlasenko
0937be5fa6
hush: make hush properly detect EOF on stdin (even interactive one -
...
think about pty being destroyed) and exit.
2007-04-28 16:47:08 +00:00
Denis Vlasenko
b5eaabb322
hush: add Ctrl-C handling to nofork case
2007-04-28 16:45:59 +00:00
Denis Vlasenko
3ac0e00553
hush: better signal handling across ctrl-z
2007-04-28 16:45:22 +00:00
Denis Vlasenko
18e19f2b0d
hush: fix nofork + ctrl-Z clobbering of globals
2007-04-28 16:43:18 +00:00
Denis Vlasenko
a6a1785a30
hush: add ctrl-Z handling for nofork'ed case
2007-04-28 16:42:11 +00:00
Denis Vlasenko
1359da6ac7
hush: make Ctrl-Z work (at least sometimes)
2007-04-21 23:27:30 +00:00
Denis Vlasenko
762d35c75f
hust: add a comment
2007-04-21 17:28:51 +00:00
Denis Vlasenko
52881e9f23
hush: fix more backgrounding bugs. Plenty of them remains still.
2007-04-21 13:42:52 +00:00
Denis Vlasenko
2f1bb36a55
hush: explain why "pipe; exit $?" doesn't show correct exitcode
2007-04-21 10:01:14 +00:00
Denis Vlasenko
87cb2db703
hush: do not print message if killed by signal;
...
move some functions up before main()
2007-04-21 10:00:01 +00:00
Denis Vlasenko
54e7ffb3a4
hush: begin fixing non-functional job control
2007-04-21 00:03:36 +00:00
Denis Vlasenko
5f786c24e4
hush: small code shrink; style fixes
2007-04-20 08:35:45 +00:00
Denis Vlasenko
516a0ca2dc
ps: add -o tty and -o rss support
...
1373 14 24 1411 583 busybox.t1/procps/ps.o
1462 14 24 1500 5dc busybox.t2/procps/ps.o
2007-04-19 14:46:14 +00:00
Denis Vlasenko
55b2de71d7
hush: remove stray semicolon (should change nothing)
2007-04-18 17:21:28 +00:00
Denis Vlasenko
7d4c44e1b1
shells: remove few statics and duplicated code
...
(much more of the same remains, alas)
function old new delta
doset 330 332 +2
warn 53 51 -2
onecommand 463 461 -2
ioecho 40 38 -2
forkexec 1412 1410 -2
err 81 79 -2
setdash 59 56 -3
flag 4 - -4
msh_main 1389 1384 -5
eval 388 381 -7
subgetc 759 747 -12
static.local 14 - -14
b_adduint 70 52 -18
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 1/10 up/down: 2/-73) Total: -71 bytes
2007-04-16 22:34:39 +00:00
Denis Vlasenko
ac678ec2f1
style fixes, no code changes
2007-04-16 22:32:04 +00:00
Denis Vlasenko
8a28e620ce
lash: recognize and use NOFORK applets
...
lash,hush: fix kill buglet (didn't properly recognize ESRCH)
2007-04-14 11:16:29 +00:00