summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/main.c b/main.c
index 412079a..31f4416 100644
--- a/main.c
+++ b/main.c
@@ -498,9 +498,15 @@ main (argc, argv, envp)
for (i = 0; envp[i] != 0; ++i)
{
register char *ep = envp[i];
- while (*ep++ != '=')
- ;
- (void) define_variable (envp[i], ep - envp[i] - 1, ep, o_env, 1);
+ while (*ep != '=')
+ ++ep;
+ define_variable (envp[i], ep - envp[i], ep + 1, o_env, 1)
+ /* Force exportation of every variable culled from the environment.
+ We used to rely on target_environment's v_default code to do this.
+ But that does not work for the case where an environment variable
+ is redefined in a makefile with `override'; it should then still
+ be exported, because it was originally in the environment. */
+ ->export = v_export;
}
/* Decode the switches. */