[git commit] ash: allow newline after variable name in for loop

Denys Vlasenko vda.linux at googlemail.com
Thu Oct 29 18:30:55 UTC 2015


commit: http://git.busybox.net/busybox/commit/?id=ab80e01cd9865571875b5dde7d2f88dea3331969
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

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 at pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 shell/ash.c                       |    4 ++--
 shell/ash_test/ash-misc/for.right |    1 +
 shell/ash_test/ash-misc/for.tests |    5 +++++
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/shell/ash.c b/shell/ash.c
index 17121aa..3339666 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 = ≈
 			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 0000000..d86bac9
--- /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 0000000..4889a9f
--- /dev/null
+++ b/shell/ash_test/ash-misc/for.tests
@@ -0,0 +1,5 @@
+for i
+in OK
+do
+	echo $i
+done


More information about the busybox-cvs mailing list