Blame SPECS/ksh-20120801-heresub.patch

Packit 992a25
diff -up ksh-20120801/src/cmd/ksh93/sh/lex.c.heresub ksh-20120801/src/cmd/ksh93/sh/lex.c
Packit 992a25
--- ksh-20120801/src/cmd/ksh93/sh/lex.c.heresub	2014-05-21 16:48:42.635700984 +0200
Packit 992a25
+++ ksh-20120801/src/cmd/ksh93/sh/lex.c	2014-05-21 16:48:42.678700772 +0200
Packit 992a25
@@ -1557,6 +1557,7 @@ static int comsub(register Lex_t *lp, in
Packit 992a25
 {
Packit 992a25
 	register int	n,c,count=1;
Packit 992a25
 	register int	line=lp->sh->inlineno;
Packit 992a25
+	struct ionod	*inheredoc = lp->heredoc;
Packit 992a25
 	char *first,*cp=fcseek(0),word[5];
Packit 992a25
 	int off, messages=0, assignok=lp->assignok, csub;
Packit 992a25
 	struct lexstate	save;
Packit 992a25
@@ -1683,7 +1684,7 @@ done:
Packit 992a25
 	lp->lexd.dolparen--;
Packit 992a25
 	lp->lex = save;
Packit 992a25
 	lp->assignok = (endchar(lp)==RBRACT?assignok:0);
Packit 992a25
-	if(lp->heredoc)
Packit 992a25
+	if(lp->heredoc && !inheredoc)
Packit 992a25
 		errormsg(SH_DICT,ERROR_exit(SYNBAD),e_lexsyntax5,lp->sh->inlineno,lp->heredoc->ioname);
Packit 992a25
 	return(messages);
Packit 992a25
 }
Packit 992a25
diff -up ksh-20120801/src/cmd/ksh93/sh/macro.c.heresub ksh-20120801/src/cmd/ksh93/sh/macro.c
Packit 992a25
--- ksh-20120801/src/cmd/ksh93/sh/macro.c.heresub	2014-05-21 16:48:42.650700910 +0200
Packit 992a25
+++ ksh-20120801/src/cmd/ksh93/sh/macro.c	2014-05-21 16:48:42.678700772 +0200
Packit 992a25
@@ -2085,7 +2085,7 @@ static void comsubst(Mac_t *mp,register
Packit 992a25
 			}
Packit 992a25
 			sfputc(stkp,c);
Packit 992a25
 		}
Packit 992a25
-		sfputc(stkp,' ');
Packit 992a25
+		sfputc(stkp,'\n');
Packit 992a25
 		c = stktell(stkp);
Packit 992a25
 		str=stkfreeze(stkp,1);
Packit 992a25
 		/* disable verbose and don't save in history file */