From f4ee8c859c3d3fe6c5b540bffa6a0b6f320f8b3e Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Sun, 11 Nov 2007 15:27:00 +0800 Subject: [EXPAND] Expand here-documents in the current shell environment Previously we always expanded here-documents in a subshell. This is contrary to the POSIX specification and how other shells behave. What's more this slows down many expansions due to the extra fork (however, it must be said that it is possible for it speed up certain expansions by running it simultaneously with the command on two CPUs). This patch move the expansion into the current shell environment. Test case: unset a cat <<- EOF > /dev/null ${a=NOT} EOF echo ${a}BAD Old result: BAD New result: NOTBAD --- src/expand.c | 12 ------------ 1 file changed, 12 deletions(-) (limited to 'src/expand.c') diff --git a/src/expand.c b/src/expand.c index ee699e8..f3d63c4 100644 --- a/src/expand.c +++ b/src/expand.c @@ -177,18 +177,6 @@ static inline const char *getpwhome(const char *name) } -/* - * Expand shell variables and backquotes inside a here document. - */ - -void -expandhere(union node *arg, int fd) -{ - expandarg(arg, (struct arglist *)NULL, EXP_QUOTED); - xwrite(fd, stackblock(), expdest - (char *)stackblock()); -} - - /* * Perform variable substitution and command substitution on an argument, * placing the resulting list of arguments in arglist. If EXP_FULL is true, -- cgit 1.4.1