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