Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 20 May 2018 17:25:52 +0000 (UTC)
From:      Jilles Tjoelker <jilles@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r333927 - in head/bin/sh: . tests/expansion
Message-ID:  <201805201725.w4KHPqje059288@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jilles
Date: Sun May 20 17:25:52 2018
New Revision: 333927
URL: https://svnweb.freebsd.org/changeset/base/333927

Log:
  sh: Allow unquoted newlines in word in ${param+word} etc.
  
  POSIX requires accepting unquoted newlines in word in parameter expansions
  like ${param+word}, ${param#word}, although the Bourne shell did not support
  it, it is not commonly used and might make it harder to find a missing
  closing brace.
  
  It was also strange that something like
  
  foo="${bar#
  }"
  
  was rejected.
  
  Reported by:	Martijn Dekker via Robert Elz

Added:
  head/bin/sh/tests/expansion/plus-minus9.0   (contents, props changed)
  head/bin/sh/tests/expansion/trim10.0   (contents, props changed)
  head/bin/sh/tests/expansion/trim11.0   (contents, props changed)
Modified:
  head/bin/sh/parser.c
  head/bin/sh/tests/expansion/Makefile

Modified: head/bin/sh/parser.c
==============================================================================
--- head/bin/sh/parser.c	Sun May 20 16:03:21 2018	(r333926)
+++ head/bin/sh/parser.c	Sun May 20 17:25:52 2018	(r333927)
@@ -1434,7 +1434,8 @@ readtoken1(int firstc, char const *initialsyntax, cons
 
 			switch(synentry) {
 			case CNL:	/* '\n' */
-				if (state[level].syntax == BASESYNTAX)
+				if (level == 0 &&
+				    state[level].syntax == BASESYNTAX)
 					goto endword;	/* exit outer loop */
 				USTPUTC(c, out);
 				plinno++;

Modified: head/bin/sh/tests/expansion/Makefile
==============================================================================
--- head/bin/sh/tests/expansion/Makefile	Sun May 20 16:03:21 2018	(r333926)
+++ head/bin/sh/tests/expansion/Makefile	Sun May 20 17:25:52 2018	(r333927)
@@ -84,6 +84,7 @@ ${PACKAGE}FILES+=	plus-minus5.0
 ${PACKAGE}FILES+=	plus-minus6.0
 ${PACKAGE}FILES+=	plus-minus7.0
 ${PACKAGE}FILES+=	plus-minus8.0
+${PACKAGE}FILES+=	plus-minus9.0
 ${PACKAGE}FILES+=	question1.0
 ${PACKAGE}FILES+=	readonly1.0
 ${PACKAGE}FILES+=	redir1.0
@@ -101,5 +102,7 @@ ${PACKAGE}FILES+=	trim6.0
 ${PACKAGE}FILES+=	trim7.0
 ${PACKAGE}FILES+=	trim8.0
 ${PACKAGE}FILES+=	trim9.0
+${PACKAGE}FILES+=	trim10.0
+${PACKAGE}FILES+=	trim11.0
 
 .include <bsd.test.mk>

Added: head/bin/sh/tests/expansion/plus-minus9.0
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/bin/sh/tests/expansion/plus-minus9.0	Sun May 20 17:25:52 2018	(r333927)
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+a=1
+b=${a+
+}
+n='
+'
+[ "$b" = "$n" ]

Added: head/bin/sh/tests/expansion/trim10.0
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/bin/sh/tests/expansion/trim10.0	Sun May 20 17:25:52 2018	(r333927)
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+a='z
+'
+b=${a%
+}
+[ "$b" = z ]

Added: head/bin/sh/tests/expansion/trim11.0
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/bin/sh/tests/expansion/trim11.0	Sun May 20 17:25:52 2018	(r333927)
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+a='z
+'
+b="${a%
+}"
+[ "$b" = z ]



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201805201725.w4KHPqje059288>