From cf197b755095494fbc705d10e83fd24bdf070c4b Mon Sep 17 00:00:00 2001 From: Roland McGrath <roland@redhat.com> Date: Mon, 25 Jan 1993 21:42:31 +0000 Subject: [PATCH] Formerly variable.c.~17~ --- variable.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/variable.c b/variable.c index 2254639f..b77293f6 100644 --- a/variable.c +++ b/variable.c @@ -490,11 +490,18 @@ target_environment (file) for (b = table[i]; b != 0; b = b->next) { register struct variable *v = b->variable; - /* If V is recursively expanded, expand its value. */ - char *value = v->recursive ? recursively_expand (v) : v->value; - result[nvariables++] = concat (v->name, "=", value); - if (v->recursive) - free (value); + /* If V is recursively expanded and didn't come from the environment, + expand its value. If it came from the environment, it should + go back into the environment unchanged. */ + if (v->recursive + && v->origin != o_env && v->origin != o_env_override) + { + char *value = recursively_expand (v); + result[nvariables++] = concat (v->name, "=", value); + free (value); + } + else + result[nvariables++] = concat (v->name, "=", v->value); } } result[nvariables] = (char *) xmalloc (100);