summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2009-02-22 19:47:52 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2009-02-22 19:47:52 +0800
commit22e8fb41be2bfd0e6757c80d6365af9080a3b4a1 (patch)
tree911ba3e5f5f5971ee505704a323e43fcc0d03b88 /src
parent[JOBS] Do not close stderr when /dev/tty fails to open (diff)
downloaddash-22e8fb41be2bfd0e6757c80d6365af9080a3b4a1.tar.gz
dash-22e8fb41be2bfd0e6757c80d6365af9080a3b4a1.zip
[PARSER] Allow newlines after var name in for statements
POSIX allows newlines before the "in" keyword in for statements
so we should too.

Thanks to Maximilian Bernöcker for reporting this.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to '')
-rw-r--r--src/parser.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/parser.c b/src/parser.c
index ab66f30..425c457 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -357,7 +357,7 @@ TRACE(("expecting DO got %s %s\n", tokname[got], got == TWORD ? wordtext : ""));
 		n1 = (union node *)stalloc(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) {
@@ -383,7 +383,7 @@ TRACE(("expecting DO got %s %s\n", tokname[got], got == TWORD ? wordtext : ""));
 			 * 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++;
 		}
 		checkkwd = CHKNL | CHKKWD | CHKALIAS;