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
d29084dd7d
testcase for the last fix
2008-10-13 08:54:42 +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
Denis Vlasenko
834dee785d
ash: support &> redirection (bashism). ~90 bytes of code
2008-10-07 09:18:30 +00:00
Denis Vlasenko
176d49d4f7
ash: some beautification work, no code changes
2008-10-06 09:51:47 +00:00
Denis Vlasenko
559691a3bf
ash: implement ">&file" bashism. ~100 bytes.
2008-10-05 18:39:31 +00:00
Denis Vlasenko
d6855d1b50
style fixes, no code changes
2008-09-27 14:03:25 +00:00
Bernhard Reutner-Fischer
864329d674
- fix compilation on OSF/1
2008-09-25 10:55:05 +00:00
Denis Vlasenko
34c73c499b
ash: fix "(cat < file)" hang introduced by rev 22944.
2008-08-16 11:48:02 +00:00
Bernhard Reutner-Fischer
1dbc643dd3
- fix typo
2008-08-06 17:39:30 +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
c90e1be01b
ash: bash compat: "shift $BIGNUM" is equivalent to "shift 1"
2008-07-30 15:35:05 +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
38c89210d6
documentation fix
2008-07-28 00:06:02 +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
8dbea7dbb1
ash: add slightly different testcase
2008-07-26 14:20:04 +00:00
Denis Vlasenko
5c13270359
ash: fix testcase to not sleep for whole 10 seconds,
...
gets annoying pretty fast. Also fix wrong message there.
2008-07-26 13:53:42 +00:00
Denis Vlasenko
87d5fd984e
ash: fix typo
2008-07-26 13:48:35 +00:00
Denis Vlasenko
4e19a9c81a
ash: hopefully close bug 4324. With testcase.
...
function old new delta
evaltree 621 869 +248
popstring 134 140 +6
2008-07-26 13:45:57 +00:00
Denis Vlasenko
2b2e267b43
ash: testsuite entries for last change
2008-07-25 13:40:06 +00:00
Denis Vlasenko
6a0ad25061
ash: dont allow e.g. exec <&10 to attach to stript's fd!
...
function old new delta
is_hidden_fd - 61 +61
redirect 1135 1164 +29
popstring 134 140 +6
printf_main 635 637 +2
evalvar 1374 1376 +2
echo_main 294 296 +2
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 5/0 up/down: 102/0) Total: 102 bytes
2008-07-25 13:34:05 +00:00
Denis Vlasenko
22f7414843
ash: prevent exec NN>&- from closing fd used for script reading
2008-07-24 22:34:43 +00:00
Denis Vlasenko
5a867317bb
ash: fix a bug where redirection fds were not closed afterwards.
...
optimize close+fcntl(DUPFD) into dup2. add testsuites.
function old new delta
copyfd 47 68 +21
argstr 1311 1298 -13
popredir 148 131 -17
redirect 1139 1107 -32
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/3 up/down: 21/-62) Total: -41 bytes
2008-07-24 19:46:38 +00:00
Denis Vlasenko
6fbb43bc3c
ash: teach ash about 123>file. It could take only 0..9 before
...
function old new delta
redirect 1052 1139 +87
need_to_remember - 36 +36
popredir 132 148 +16
fixredir 86 101 +15
readtoken1 3130 3143 +13
evalvar 1374 1376 +2
popstring 140 134 -6
cmdtxt 592 561 -31
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 5/2 up/down: 169/-37) Total: 132 bytes
2008-07-24 19:44:41 +00:00
Denis Vlasenko
6514c5e35c
ash: ducument where "no fds > 9 in redirects" limitation is.
...
no code changes.
2008-07-24 13:41:37 +00:00
Denis Vlasenko
8d924ecf38
ash: ditch dupredirect(), it was only making code harder to read.
...
incorporate it in its single callsite.
function old new delta
redirect 1054 1052 -2
changepath 196 194 -2
2008-07-24 11:34:27 +00:00
Denis Vlasenko
0b76964ae1
ash: explain redirect code a bit
...
function old new delta
redirect 1059 1054 -5
2008-07-24 07:54:57 +00:00
Denis Vlasenko
2dc240c0d6
ash: code shrink
...
function old new delta
copynode 171 180 +9
evaltreenr 615 621 +6
evaltree 615 621 +6
calcsize 121 127 +6
evalpipe 349 350 +1
redirect 1059 1057 -2
parseheredoc 129 126 -3
makename 35 32 -3
expredir 130 127 -3
parsefname 224 219 -5
popstring 140 134 -6
pipeline 276 268 -8
list 360 351 -9
readtoken1 3157 3130 -27
parse_command 1504 1460 -44
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 5/10 up/down: 28/-110) Total: -82 bytes
2008-07-24 06:07:50 +00:00