diff options
| -rw-r--r-- | hush.c | 5 | ||||
| -rw-r--r-- | shell/hush.c | 5 | 
2 files changed, 8 insertions, 2 deletions
@@ -2010,7 +2010,10 @@ int parse_stream(o_string *dest, struct p_context *ctx,  		} else {  			if (m==2) {  /* unquoted IFS */  				done_word(dest, ctx); -				if (ch=='\n') done_pipe(ctx,PIPE_SEQ); +				/* If we aren't performing a substitution, treat a newline as a +				 * command separator.  */ +				if (end_trigger != '\0' && ch=='\n') +					done_pipe(ctx,PIPE_SEQ);  			}  			if (ch == end_trigger && !dest->quote && ctx->w==RES_NONE) {  				debug_printf("leaving parse_stream\n"); diff --git a/shell/hush.c b/shell/hush.c index c55d86f5d..01fd33486 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -2010,7 +2010,10 @@ int parse_stream(o_string *dest, struct p_context *ctx,  		} else {  			if (m==2) {  /* unquoted IFS */  				done_word(dest, ctx); -				if (ch=='\n') done_pipe(ctx,PIPE_SEQ); +				/* If we aren't performing a substitution, treat a newline as a +				 * command separator.  */ +				if (end_trigger != '\0' && ch=='\n') +					done_pipe(ctx,PIPE_SEQ);  			}  			if (ch == end_trigger && !dest->quote && ctx->w==RES_NONE) {  				debug_printf("leaving parse_stream\n");  | 
