aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Shishkin <virtuoso@slind.org>2010-02-25 17:55:40 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2010-02-26 08:48:56 +0100
commitd03cd3be241d38e6edbe5329a53b276eeaa7528e (patch)
tree6e5c60bdbb0a655c7ac3a691a9ebef9bcd2b4494
parent2e73d84c02c6dd4945838665ce0167bddbb7f1c8 (diff)
downloadbusybox-d03cd3be241d38e6edbe5329a53b276eeaa7528e.tar.gz
awk: skip whitespace between array name and subscript
It is supported in both mawk and gawk and there are actually scripts out there that use this "flexibility". function old new delta next_token 1144 1152 +8 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 8/0) Total: 8 bytes Signed-off-by: Alexander Shishkin <virtuoso@slind.org> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--editors/awk.c2
-rwxr-xr-xtestsuite/awk.tests3
2 files changed, 4 insertions, 1 deletions
diff --git a/editors/awk.c b/editors/awk.c
index bc8b0dad1..b9bc01f16 100644
--- a/editors/awk.c
+++ b/editors/awk.c
@@ -1046,7 +1046,7 @@ static uint32_t next_token(uint32_t expected)
*(p-1) = '\0';
tc = TC_VARIABLE;
/* also consume whitespace between functionname and bracket */
- if (!(expected & TC_VARIABLE))
+ if (!(expected & TC_VARIABLE) || (expected & TC_ARRAY))
skip_spaces(&p);
if (*p == '(') {
tc = TC_FUNCTION;
diff --git a/testsuite/awk.tests b/testsuite/awk.tests
index 7910c8875..03d464969 100755
--- a/testsuite/awk.tests
+++ b/testsuite/awk.tests
@@ -64,4 +64,7 @@ testing "awk string cast (bug 725)" \
"0\nnumber\n" \
"" ""
+testing "awk handles whitespace before array subscript" \
+ "awk 'BEGIN { arr [3] = 1; print arr [3] }'" "1\n" "" ""
+
exit $FAILCOUNT