aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2015-08-03 13:46:00 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2015-10-29 19:30:55 +0100
commitab80e01cd9865571875b5dde7d2f88dea3331969 (patch)
tree357ba4079551ef0624f12e2fd13e6f7d12678d6a
parent9121510dc659baf6664456796c195460468c850b (diff)
downloadbusybox-ab80e01cd9865571875b5dde7d2f88dea3331969.tar.gz
ash: allow newline after variable name in for loop
Newline is a valid delimiter between the variable name and `in` keyword in for loops. Based on commit 22e8fb4 from git://git.kernel.org/pub/scm/utils/dash/dash.git by Herbert Xu. function old new delta parse_command 1568 1563 -5 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-5) Total: -5 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--shell/ash.c4
-rw-r--r--shell/ash_test/ash-misc/for.right1
-rwxr-xr-xshell/ash_test/ash-misc/for.tests5
3 files changed, 8 insertions, 2 deletions
diff --git a/shell/ash.c b/shell/ash.c
index 17121aa9b..3339666b9 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -10913,7 +10913,7 @@ parse_command(void)
n1 = stzalloc(sizeof(struct nfor));
n1->type = NFOR;
n1->nfor.var = wordtext;
- checkkwd = CHKKWD | CHKALIAS;
+ checkkwd = CHKNL | CHKKWD | CHKALIAS;
if (readtoken() == TIN) {
app = &ap;
while (readtoken() == TWORD) {
@@ -10940,7 +10940,7 @@ parse_command(void)
* Newline or semicolon here is optional (but note
* that the original Bourne shell only allowed NL).
*/
- if (lasttoken != TNL && lasttoken != TSEMI)
+ if (lasttoken != TSEMI)
tokpushback = 1;
}
checkkwd = CHKNL | CHKKWD | CHKALIAS;
diff --git a/shell/ash_test/ash-misc/for.right b/shell/ash_test/ash-misc/for.right
new file mode 100644
index 000000000..d86bac9de
--- /dev/null
+++ b/shell/ash_test/ash-misc/for.right
@@ -0,0 +1 @@
+OK
diff --git a/shell/ash_test/ash-misc/for.tests b/shell/ash_test/ash-misc/for.tests
new file mode 100755
index 000000000..4889a9f2d
--- /dev/null
+++ b/shell/ash_test/ash-misc/for.tests
@@ -0,0 +1,5 @@
+for i
+in OK
+do
+ echo $i
+done