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
Denis Vlasenko
f5294e1f4c
hush: use NOFORK applets as appropriate. Net reduction of code size.
2007-04-14 10:09:57 +00:00
Denis Vlasenko
fbf6dea5a2
hush: more style fixes.
2007-04-13 19:56:56 +00:00
Denis Vlasenko
f03dbeda90
hush: comment out and replace bug in set_local_var:
...
- if (value == 0 && ++value == 0) {
+ /*if (value == 0 && ++value == 0) ??? -vda */
+ if (value == NULL || value[1] == '\0') {
Style fixes.
2007-04-13 19:55:50 +00:00
Denis Vlasenko
7cced6e574
fix realloc-of-non-malloced pointer, and reduce size while at it
2007-04-12 17:08:53 +00:00
Denis Vlasenko
831a20f512
pass a copy of argv[i] to NOFORK applets (they may permute it etc).
...
set/save/restore more shared global variables whan call one applet from another
2007-04-12 12:27:32 +00:00
Denis Vlasenko
50f7f446ec
bb_full_fd_action: remove potential xmalloc from NOFORK path
...
cat: stop using stdio.h opens
libbb: introduce & use open[3]_or_warn
function old new delta
open3_or_warn - 54 +54
bb_cat 115 144 +29
open_or_warn - 25 +25
unlzma 2404 2412 +8
chattr_main 334 339 +5
xstrtoul_range_sfx 251 255 +4
telnet_main 1514 1510 -4
static.opt 4 - -4
qgravechar 122 118 -4
fuser_add_pid 61 54 -7
fuser_add_inode 154 147 -7
writeFileToTarball 1542 1534 -8
refresh 1156 1148 -8
do_show 856 846 -10
read_leases 212 200 -12
setup_redirects 236 222 -14
iproute_list_or_flush 1582 1568 -14
read_config 427 411 -16
write_leases 284 264 -20
hash_file 338 318 -20
copy_file 1760 1740 -20
do_iproute 2610 2588 -22
bb_full_fd_action 320 269 -51
open_to_or_warn 103 49 -54
fuser_main 1660 1596 -64
.rodata 131160 131096 -64
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 4/19 up/down: 125/-423) Total: -298 bytes
2007-04-11 23:20:53 +00:00
Denis Vlasenko
6398cf477d
style fixes, no code changes.
2007-04-11 17:04:29 +00:00
Denis Vlasenko
e4f2d064b0
rename: run_applet_by_name -> run_applet_and_exit
2007-04-11 17:03:19 +00:00
Denis Vlasenko
80d14beae9
Rename two config options:
...
FEATURE_SH_STANDALONE_SHELL => FEATURE_SH_STANDALONE
FEATURE_EXEC_PREFER_APPLETS => FEATURE_PREFER_APPLETS
Make SH_STANDALONE depend on PREFER_APPLETS.
getopt.c: more randomconfig-induced fixes
2007-04-10 23:03:30 +00:00
Denis Vlasenko
ff131b980d
style fixes. No code changes.
2007-04-10 15:42:06 +00:00
Denis Vlasenko
219d14d514
random style fixes (extra spaces deleted)
2007-03-24 15:40:16 +00:00
Denis Vlasenko
6ca0444420
syslogd: fix "readpath bug" by using readlink instead
...
libbb: rename xgetcwd and xreadlink
2007-02-11 16:19:28 +00:00
Denis Vlasenko
06af216528
suppress warnings about easch <applet>_main() having
...
no preceding prototype
2007-02-03 17:28:39 +00:00
Denis Vlasenko
4c97863109
assorted fixes for bugs found with randomconfig
2007-02-03 03:31:13 +00:00
Denis Vlasenko
bb81c5831a
hush: style fixes
2007-01-30 22:32:09 +00:00
Denis Vlasenko
c72c1ed932
hush: now it's -Wwrite-strings clean
2007-01-30 22:31:26 +00:00
Denis Vlasenko
0c886c65de
hush: style fixes
2007-01-30 22:30:09 +00:00
Denis Vlasenko
15d78fb724
hust: -Wwrite-strings fixes
2007-01-30 22:28:21 +00:00
Denis Vlasenko
b6aae0f381
preparatory patch for -Wwrite-strings #2
2007-01-29 22:51:25 +00:00
Denis Vlasenko
38f6319421
cmdedit is not a 'command' editing anymore, it's just editing (generic),
...
so rename stuff accordingly.
2007-01-22 09:03:07 +00:00
Denis Vlasenko
8e1c71529c
Convert cmdedit into more generic line input facility
...
(make history and completion optional at runtime).
Use it for fdisk, as an example.
Some unrelated fixes in fdisk are also here.
2007-01-22 07:21:38 +00:00
Denis Vlasenko
9af7c9d6b6
openvt,getty,vfork_daemon_rexec,mount: tighten up fd cleanup code
...
(will close all fd's > 2 on daemonization now)
getty: fix "getty -" support, and also do not try to chown/chmod "-"
telnetd: fix "lost ctty" bug
Yet another attempt on saner function names:
bb_sanitize_server_stdio(0/1) -> bb_sanitize_stdio() + bb_daemonize();
2007-01-19 21:19:35 +00:00
Denis Vlasenko
bf0a201008
style fixes
...
last xcalloc replaced by xzalloc
2006-12-26 10:42:51 +00:00
Denis Vlasenko
d9e15f2068
style cleanup: return(a) -> return a, part 2
2006-11-27 16:49:55 +00:00
Denis Vlasenko
079f8afa0a
style cleanup: return(a) -> return a, part 1
2006-11-27 16:49:31 +00:00
Denis Vlasenko
e1a0d486e4
message string changes, mostly for consistency, also -32 bytes in .rodata
2006-10-20 13:28:22 +00:00
Denis Vlasenko
8de82bf84f
hush.c: stop using __FILE__ (bad in out-of-tree builds)
2006-10-11 21:38:33 +00:00
Denis Vlasenko
a959588b80
Yet another silly little byte saving. couldn't -> cannot
2006-09-29 21:30:43 +00:00
Rob Landley
215c61d3c2
Unbreak allbareconfig.
2006-09-15 04:10:05 +00:00
Rob Landley
88621d7398
Svn 16007 broke the build under gcc 4.0.3. This fixes up some of the damage
...
(the e2fsprogs directory is too twisty and evil to easily fix, but I plan
to rewrite it anyway so I'll just bump that up in priority a bit).
2006-08-29 19:41:06 +00:00
Rob Landley
d921b2ecc0
Remove bb_ prefixes from xfuncs.c (and a few other places), consolidate
...
things like xasprintf() into xfuncs.c, remove xprint_file_by_name() (it only
had one user), clean up lots of #includes... General cleanup pass. What I've
been doing for the last couple days.
And it conflicts! I've removed httpd.c from this checkin due to somebody else
touching that file. It builds for me. I have to catch a bus. (Now you know
why I'm looking forward to Mercurial.)
2006-08-03 15:41:12 +00:00
Rob Landley
53702e53ba
Replace the previous checkin with the correct fix.
2006-07-19 21:43:53 +00:00
"Robert P. J. Day"
3e4da920bd
For now, get around the error that "child" might be uninitialized.
2006-07-18 12:05:43 +00:00
"Robert P. J. Day"
177c9f3128
Get rid of all "#if 0" content.
2006-07-01 14:30:28 +00:00
"Robert P. J. Day"
f350160963
Remove "#if 1" directives.
2006-07-01 12:19:39 +00:00
Rob Landley
5483de1cb7
Cleanup patch from Shaun Jackman converting %m to perror.
2006-06-20 21:35:26 +00:00
Bernhard Reutner-Fischer
e15d7573a1
- move #include busybox.h to the very top so we pull in the config
...
and eventual platform specific includes in early.
2006-06-02 20:56:16 +00:00
Rob Landley
75cc0cace3
I was playing around with a dependency generator a couple weeks ago and I found
...
some #include files that aren't in the tree. No biggie...
2006-02-24 03:15:34 +00:00
"Vladimir N. Oleynik"
dd1ccddf1b
moved BB_BANNER to applets/version.c file: make kernel like version,
...
removed depend loop: busybox.h depend with BB_BT, and all sources depend with busybox.h
2006-02-16 15:40:24 +00:00
"Vladimir N. Oleynik"
4ccd2b4697
quick analize signed->unsigned: protect overflow of map[char], getchar->EOF. Use ATTRIBUTE_UNUSE.
2006-01-31 09:27:48 +00:00
Eric Andersen
a68ea1cb93
fix up yet more annoying signed/unsigned and mixed type errors
2006-01-30 22:48:39 +00:00
Tim Riker
c1ef7bdd8d
just whitespace
2006-01-25 00:08:53 +00:00
Bernhard Reutner-Fischer
86f5c9906b
- add platform.h.
...
- use shorter boilerplate while at it.
2006-01-22 22:55:11 +00:00
Rob Landley
032e2cbf20
Uninitialized variable causing intermittent syntax errors (bug 449).
2005-12-12 06:52:45 +00:00
"Vladimir N. Oleynik"
485d7cbdf1
data --> text
2005-10-17 09:48:57 +00:00
"Vladimir N. Oleynik"
19c370167a
Reduce exported from hush applet
2005-09-22 14:33:15 +00:00
Eric Andersen
aff114c33d
Larry Doolittle writes:
...
This is a bulk spelling fix patch against busybox-1.00-pre10.
If anyone gets a corrupted copy (and cares), let me know and
I will make alternate arrangements.
Erik - please apply.
Authors - please check that I didn't corrupt any meaning.
Package importers - see if any of these changes should be
passed to the upstream authors.
I glossed over lots of sloppy capitalizations, missing apostrophes,
mixed American/British spellings, and German-style compound words.
What is "pretect redefined for test" in cmdedit.c?
Good luck on the 1.00 release!
- Larry
2004-04-14 17:51:38 +00:00
Eric Andersen
99fcd168cc
Wolfgang Denk writes:
...
He,
there is a bug in HUSH's handling of "if" / "elif" commands:
$ if true
> then
> echo 1
> elif
> true
> then
> echo 2
> elif
> true
> then
> echo 3
> else
> echo 4
> fi
1
2
3
$
The same bug exists in all versions of HUSH from BB v0.60.x up to and
including v1.00-pre9. The attached patch fixes this:
$ if true
> then
> echo 1
> elif
> true
> then
> echo 2
> elif
> true
> then
> echo 3
> else
> echo 4
> fi
1
$
Best regards,
Wolfgang Denk
2004-04-12 21:41:29 +00:00
Eric Andersen
e3efc9230c
Jamie Guinan writes:
...
It looks like latest uClibc defines ARCH_HAS_MMU, but a few busybox files
test UCLIBC_HAS_MMU, resulting in vfork() getting called instead of
fork(), etc.
Patch below. Only tested for lash.
Cheers,
-Jamie
2004-04-12 17:59:24 +00:00
Eric Andersen
075dd81c44
Remove the CONFIG_FEATURE_SH_APPLETS_ALWAYS_WIN option. It was sortof
...
stupid and didn't work properly anyways.
2004-04-07 09:34:27 +00:00
Eric Andersen
70060d25d2
s/fileno\(stdin\)/STDIN_FILENO/g
...
s/fileno\(stdout\)/STDOUT_FILENO/g
2004-03-27 10:02:48 +00:00
Eric Andersen
c7bda1ce65
Remove trailing whitespace. Update copyright to include 2004.
2004-03-15 08:29:22 +00:00
Eric Andersen
cb81e6484d
Update a bunch of docs. Run a script to update my email addr.
2003-07-14 21:21:08 +00:00
Manuel Novoa III
cad5364599
Major coreutils update.
2003-03-19 09:13:01 +00:00
Eric Andersen
da15a496e2
Make hush comple once again
2002-12-06 21:37:08 +00:00
Aaron Lehmann
a170e1c858
Change if(x)free(x); to free(x);
2002-11-28 11:27:31 +00:00
Eric Andersen
4c9b68f0e0
Nice patch from Wolfgang Denk <wd@denx.de> to provide hush with
...
shell loops (for, while, until) and control operators (||, &&)
2002-04-13 12:33:41 +00:00
Eric Andersen
eaecbf33f7
Fixup some silly prototype warnings
2001-10-31 10:41:31 +00:00
Eric Andersen
72f9a4277f
Add in some (theoretical) uClinux support. Some init cleanups
2001-10-28 05:12:20 +00:00
Eric Andersen
bdfd0d78bc
Major rework of the directory structure and the entire build system.
...
-Erik
2001-10-24 05:00:29 +00:00
Eric Andersen
d63dee4019
Add an option to make the shells not advertise their busybox nature
2001-10-19 00:22:23 +00:00
Matt Kraai
2d91deba45
Allow multiple shells to be enabled.
2001-08-01 17:21:35 +00:00
Eric Andersen
7467c8d3b6
Patch from vodz:
...
Changed email address
cmdedit API change
optimizations for traceroute and md5sum
added a new shared create_icmp_socket() function
2001-07-12 20:26:32 +00:00
Eric Andersen
028b65b060
More thrashing about trying to make hush behave itself wrt job
...
control...
2001-06-28 01:10:11 +00:00
Eric Andersen
5c66d06104
Explicitly call setsid()
2001-06-26 23:16:31 +00:00
Eric Andersen
a90f20b1c3
Don't choke if /etc/profile is not available
2001-06-26 23:00:21 +00:00
Glenn L McGrath
78b0e379d7
Vladimir's last_patch_15
2001-06-26 02:06:08 +00:00
Eric Andersen
6c947d289f
Fix the code for establishing a controlling terminal.
...
-Erik
2001-06-25 22:24:38 +00:00
Eric Andersen
52a97ca00c
Some more cleanups. Of special importance, never free a pipe
...
that still has running jobs. Instead, we ignore it and expect
it to be cleaned by the background job stuff.
-Erik
2001-06-22 06:49:26 +00:00
Eric Andersen
c798b07762
Some cleanups for hush. Saves about 350bytes.
...
-Erik
2001-06-22 06:23:03 +00:00
Eric Andersen
04407e522b
Another hush update from Larry:
...
Fixes the interaction between if/then/else/fi syntax and variables.
I planned to do it right from the beginning, but my implementation
was buggy. Also adds the relevant test cases. Also adds some old
Matt Kraai variable test cases that got left out somehow.
2001-06-07 16:42:05 +00:00
Eric Andersen
817e73cb63
A patch from Larry to fix pathological things like '>""'
2001-06-06 17:56:09 +00:00
Matt Kraai
c616e53ca2
Don't close file descriptors when we are duplicating them.
2001-06-05 16:50:08 +00:00
Eric Andersen
4f6753e586
Cope gracefully when people type something, then hit ^C.
...
-Erik
2001-05-31 17:17:12 +00:00
Eric Andersen
a813afc24f
Plug another memory leak
2001-05-24 16:19:36 +00:00
Eric Andersen
a15dc15f12
Plug another memory leak in hush. This one showed up when backticked
...
commands were run. This one was sure a bugger to find.
-Erik
2001-05-23 23:46:09 +00:00
Eric Andersen
bf7df04ec1
Fix a massive memory leak in the run_list_test() function.
...
Rename run_list_test() as free_pipe_list().
Rename run_pipe_test() as free_pipe().
-Erik
2001-05-23 22:18:35 +00:00
Matt Kraai
bdd4eced84
Commit a patch by Larry Doolittle which fixes recursive calls to file_peek,
...
and improves some debugging messages.
2001-05-23 17:43:00 +00:00
Eric Andersen
57e6a49e5b
Excellent. This patch from Larry fixes the behavior of hush
...
when builtins are included in pipes.
2001-05-22 22:34:51 +00:00
Eric Andersen
9978576f15
Fix this case. No, really this time.
...
unset FOO
export FOO=bar
FOO=baz
echo "global env: " `env | grep ^FOO`
echo "local env: " `set | grep ^FOO`
-Erik
2001-05-22 21:37:48 +00:00
Eric Andersen
aeb44c4da6
Fix a race. Sometimes by the time we got to checkjobs(), the
...
pipe struct had already been freed. Return immediately if the
pipe is NULL.
2001-05-22 20:29:00 +00:00
Eric Andersen
816867858b
Oops. Remove some debug noise I left in.
2001-05-22 19:23:35 +00:00
Eric Andersen
94ac244dea
Updates from both Vladimir and Larry
2001-05-22 19:05:18 +00:00
Eric Andersen
004015e9c4
Patch from Lars Kellogg-Stedman <lars@larsshack.org> to fix bug
...
#1130 (i.e. When you turn on features it should always ADD features)
2001-05-21 20:30:51 +00:00
Eric Andersen
ada18ff0f5
The latest patch from Larry
2001-05-21 16:18:22 +00:00
Eric Andersen
9ffb7dd9a4
This is a patch from Vladimir:
...
> I rewrite *local_variable* function in hush.c with:
> 1) remove many memory leaks
> 2) add support read_only protect (require write builtin function for set this,
> I write this special for variable HUSH_VERION=0.01)
> 3) commad read set only local variable now
> 4) remove many error messages if "set unset export" not defined variable
> (bash syntax not put and set error code). Hmm, if I set result to -1, you hush
> called waitpid and returned with error "no waitpid" ( i not found place this
> error).
> 5) destroy error in new version check xgetcwd()==NULL and set "(unknow)" -
> this have error: crashe in next call `pwd`, but xgetcwd(not null) called
> free(arg).
> 6) next add integraion with libbb
Valdimir's patch missed two cases of local variable handling
FOO=bar
export FOO=baz
unset FOO
and
export FOO=bar
FOO=baz
which were working before, so I fixed those two cases.
2001-05-19 03:00:46 +00:00
Eric Andersen
bfae2529b8
It turns out job control in both hush and lash was broken by the
...
signal handling in cmdedit.c. Disabling it makes the shells behave
themselves again. hush isn't quite there, but is getting close...
-Erik
2001-05-17 00:14:27 +00:00
Eric Andersen
bc604a2f41
Move init of a bunch of globals into main so we are at least
...
a bit more reentrant.
-Erik
2001-05-16 05:24:03 +00:00
Eric Andersen
f72f562b2f
Fix the behavior of local shell variables to match that of bash and ash.
...
-Erik
2001-05-15 23:21:41 +00:00
Eric Andersen
15649c11f3
Oops. I left in some debug noise.
2001-05-15 17:28:26 +00:00
Eric Andersen
20a69a77d2
Write set_local_var() and fixup lookup_param() so you can now use
...
shell local variables.
-Erik
2001-05-15 17:24:44 +00:00
Eric Andersen
78a7c99f7f
This patch covers one big part of variable handling.
...
$ a=b foo
should be handled correctly.
$ a=b
is parsed OK, but the actual variable setting is not
yet written. Except for some weird exceptions related
to quoting rules, this code passes (matches ash behavior)
all the tests I threw at it.
If someone now writes set_local_var(), and updates lookup_param()
to match, we can claim success!
- Larry
2001-05-15 16:30:25 +00:00
Eric Andersen
cfa88ecb72
Fix up some silly warnings
2001-05-11 18:08:16 +00:00
Eric Andersen
5f265b755a
Fix a segfault in lash, hush, and cmdedit. Each of these used
...
xgetcwd, but did not check the return for a NULL, and then continued
to call strlen on the NULL when the cwd had been removed from under it.
-Erik
2001-05-11 16:58:46 +00:00
Eric Andersen
9d94deabd3
Use xgetcwd
2001-05-11 16:36:03 +00:00
Eric Andersen
1a6d39b259
A few more structural updates for job control.
...
-Erik
2001-05-08 05:11:54 +00:00
Eric Andersen
0a36de0580
Fix a stupid segfault caused by dereferencing a NULL ptr.
...
-Erik
2001-05-08 04:25:46 +00:00
Eric Andersen
45e92ba2ce
This patch from Evin Robertson <nitfol@my-deja.com> fixes export so it works.
...
This way leaks memory, but oh well. We will probably fix that when we get
around to doing local variables.
2001-05-07 23:53:09 +00:00
Eric Andersen
83a2ae2184
More hush updates from Larry:
...
Update some comments. Generate partial placeholders for the missing
builtins. Write builtin_umask. Properly treat exec without arguments
as a means to open/close files within the running script. Implement
"4<&-" that encodes for file descriptor closure.
2001-05-07 17:59:25 +00:00
Eric Andersen
2dcfba7117
Larry's variant on Evin Robertson's fix to what I messed up
...
trying to make job control work. This fix makes it so that
hush doesn't error out when init hasn't set up job control,
as in when init=/bin/sh
2001-05-04 22:13:37 +00:00
Matt Kraai
d24f878546
Don't reset parents context when we encounter an terminator. Fixes
...
if true; then if true; then true; fi; fi
2001-05-04 21:20:20 +00:00
Eric Andersen
e5ffb911e8
If it fails to run a builtin, let it fall through to
...
exec the real thing.
-Erik
2001-05-04 16:30:29 +00:00
Matt Kraai
80abc45182
Move up waitpid error check so that errno isn't clobbered by tcsetpgrp.
2001-05-02 21:48:17 +00:00
Eric Andersen
0fcd447d59
Some more job control updates. It will now sucessfully background
...
stuff. Good luck getting things back into the foreground though...
-Erik
2001-05-02 20:12:03 +00:00
Matt Kraai
20a3069ec0
Don't treat newline as pipe separator when processing substitutions.
2001-05-02 17:52:49 +00:00
Matt Kraai
9f8caf134f
Fix $(...) construction. Noted and patched by Larry Doolittle
...
<ldoolitt@recycle.lbl.gov>. I'm just a patch whore. :)
2001-05-02 16:26:12 +00:00
Eric Andersen
bafd94f154
First pass at getting job control working. This gets the infrastructure
...
in place, but something is still missing/wrong in there. Testing with
'grep foo &' seems to put _hush_ into the background. Pondering...
-Erik
2001-05-02 16:11:59 +00:00
Matt Kraai
1c8a59ab95
Use the current pgrp, not pid, when resetting the foreground process group.
...
Fixes bizarre suspension when executing `echo`.
2001-05-02 15:37:09 +00:00
Matt Kraai
f162e7d09d
Don't segfault if the first word is the empty string.
2001-05-02 14:48:48 +00:00
Eric Andersen
e67c3ce327
Another update from Larry:
...
Makes hush return code equal to that of the last command executed.
Fixes the mode where input comes from a file.
2001-05-02 02:09:36 +00:00
Eric Andersen
4ed5e37d4b
Another hush update from Larry:
...
Minor improvements. Something is still broken with running
scripts via "hush filename". All the following are now handled
acceptably (matches ash, not bash).
if true; then echo foo1; fi
if
true; then echo foo2; fi
if true; false; then echo bar; else echo foo3; fi
if true || false; then echo foo4; fi
- Larry
2001-05-01 01:49:50 +00:00
Eric Andersen
aac75e5a78
Some more hush.c updates from Larry Doolittle.
2001-04-30 18:18:45 +00:00
Eric Andersen
088875fec4
Use BUFSIZ for the_command to match size used in cmdedit
2001-04-27 07:49:41 +00:00
Eric Andersen
af44a0e8f4
An update to hush from Larry:
...
It should recover more smoothly from syntax errors, and it now
has a decent guess when the reserved word construct is over
(or not) to control execution and prompting. I took out all the
redundant standalone test copies of libbb routines, but left in a
hook so I can include those for my testing. I'll post that include
file on my web site.
- Larry
2001-04-27 07:26:12 +00:00
Eric Andersen
25f2703015
This is the initial checkin of Larry Doolittle's hush.c, using his
...
April 25, 2001 snapshot, adjusted a bit by me so it has cmdedit support.
This checkin also removes sh.c. In the future sh.c will be a symlink to
your shell of choice. For now, this symlink will default to pointing to
lash.c (as in the past). If you change the symlink to point to hush.c,
then thats what you will get. This symlink business is a temporary situation,
which will be cleaned up Real Soon Now(tm).
-Erik
2001-04-26 23:22:31 +00:00