Commit Graph

1030 Commits

Author SHA1 Message Date
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
Bernhard Reutner-Fischer
3e8669f359 - wrap overlong lines (Cristian Ionescu-Idbohrn)
- s/\.  /. /g;# (me)
2008-07-22 18:27:53 +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
7ae1cc16b4 msh: fix "while...continue" bug 3884. 2008-07-20 23:03:23 +00:00
Denis Vlasenko
c185e290ee config help fixes 2008-07-16 23:45:11 +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
3177ba0852 ash: small code shrink 2008-07-13 20:39:23 +00:00
Denis Vlasenko
e7067e38ea ash: fix segfault in "command -v" 2008-07-11 23:09:34 +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
fa0b56db76 sendmail: fix wrong vfork usage here too
*: shorten error texts

function                                             old     new   delta
launch_helper                                          -     151    +151
vfork_or_die                                          20       -     -20
sendgetmail_main                                    1946    1848     -98
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/1 up/down: 151/-118)           Total: 33 bytes
2008-07-01 16:09:07 +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
ce13b76002 libbb: shrink monotonic_XXX functions, introduce monotonic_ns
(unused for now)

function                                             old     new   delta
get_mono                                               -      31     +31
sv_main                                             1228    1234      +6
expand                                              1693    1697      +4
get_address                                          178     181      +3
utoa_to_buf                                          108     110      +2
builtin_exit                                          46      48      +2
qrealloc                                              36      33      -3
qgravechar                                           109     106      -3
ash_main                                            1383    1380      -3
grep_file                                            850     846      -4
popstring                                            140     134      -6
monotonic_us                                          85      60     -25
monotonic_sec                                         41      16     -25
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 5/7 up/down: 48/-69)            Total: -21 bytes
2008-06-29 02:25:53 +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
26bc57d8b2 ash: improve comments 2008-06-27 00:29:34 +00:00
Denis Vlasenko
448d30ee17 ash: fix very weak $RANDOM generator; and move even more things
out of data/bss

   text    data     bss     dec     hex filename
 807935     611    6884  815430   c7146 busybox_old
 808035     611    6868  815514   c719a busybox_unstripped
2008-06-27 00:24:11 +00:00
Denis Vlasenko
843cbd54d1 ash: move stuff out of data/bss
text    data     bss     dec     hex filename
 807939     611    6900  815450   c715a busybox_old
 807935     611    6884  815430   c7146 busybox_unstripped
2008-06-27 00:23:18 +00:00
Denis Vlasenko
f5d8c90d73 style fixes, no code changes 2008-06-26 14:32:57 +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
2f5d0cd511 ash: trivial code readability fixes 2008-06-23 13:24:19 +00:00
Denis Vlasenko
2b75a94118 ash: improve readability of the code. No real code changes. 2008-06-23 13:06:34 +00:00
Denis Vlasenko
ef527f50e6 ash: optional support for $'...\t...\n...' bashism
function                                             old     new   delta
readtoken1                                          2824    3172    +348
static.C_escapes                                       -      18     +18
parse_command                                       1504    1500      -4
SIT                                                   89      83      -6
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/2 up/down: 366/-10)           Total: 356 bytes
2008-06-23 01:52:30 +00:00
Denis Vlasenko
b07a496229 ash: minor shrink (mostly smallints) and variable renaming
function                                             old     new   delta
optschanged                                           85      91      +6
tryexec                                              115     118      +3
xxreadtoken                                          290     292      +2
raise_error_unexpected_syntax                         75      77      +2
bltincmd                                               6       8      +2
parseheredoc                                         128     129      +1
static.is_interactive                                  4       1      -3
readtoken                                            156     153      -3
lasttoken                                              4       1      -3
evalcommand                                         1147    1144      -3
checkkwd                                               4       1      -3
back_exitstatus                                        4       1      -3
pipeline                                             282     276      -6
list                                                 369     360      -9
ash_main                                            1402    1393      -9
options                                              616     606     -10
readtoken1                                          2823    2811     -12
parse_command                                       1529    1507     -22
------------------------------------------------------------------------------
(add/remove: 2/2 grow/shrink: 6/12 up/down: 21/-91)           Total: -70 bytes
   text    data     bss     dec     hex filename
 807603     611    6908  815122   c7012 busybox_old
 807545     611    6900  815056   c6fd0 busybox_unstripped
2008-06-22 13:16:23 +00:00
Denis Vlasenko
9cd4c76b50 ash: fix "shift BIGNUM" and "read with no variable name" bugs.
omg. hush testsuite helps to find bugs in ash! what next?

function                                             old     new   delta
static.arg_REPLY                                       -       8      +8
readcmd                                             1023    1021      -2
shiftcmd                                             129     125      -4
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 0/2 up/down: 8/-6)                Total: 2 bytes
2008-06-18 19:22:19 +00:00
Denis Vlasenko
1ba323e5b6 cosmetics in hush testsuites 2008-06-18 17:53:57 +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
985de15bf3 hush: expand quote3.tests and move from hush-bugs to hush-parsing 2008-06-18 09:22:31 +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
988339259f move glob_and_assign.tests from hush-bugs to hush-glob 2008-06-17 07:26:52 +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
32d8423e63 hush: delete hush-bugs/glob_and_vars.tests for real 2008-06-16 12:53:33 +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