]> git.ipfire.org Git - thirdparty/make.git/commitdiff
Formerly variable.c.~3~
authorRoland McGrath <roland@redhat.com>
Mon, 4 May 1992 22:37:22 +0000 (22:37 +0000)
committerRoland McGrath <roland@redhat.com>
Mon, 4 May 1992 22:37:22 +0000 (22:37 +0000)
variable.c

index c5a63dc728f60ae12b9835e7ae87da72fc190d5c..16e5ada7fb0610f5b1d942a4292b54c5f5bfc7d1 100644 (file)
@@ -423,6 +423,8 @@ initialize_variable_output ()
   return variable_buffer;
 }
 \f
+int export_all_variables;
+
 /* Create a new environment for FILE's commands.
    The child's MAKELEVEL variable is incremented.  */
 
@@ -441,6 +443,7 @@ target_environment (file)
   register unsigned int i;
   register unsigned nvariables;
   char **result;
+  unsigned int mklev_hash;
 
   /* Find the lowest number of buckets in any set in the list.  */
   s = file->variables;
@@ -449,6 +452,14 @@ target_environment (file)
     if (s->set->buckets < buckets)
       buckets = s->set->buckets;
 
+  /* Find the hash value of `MAKELEVEL' will fall into.  */
+  {
+    char *p = "MAKELEVEL";
+    mklev_hash = 0;
+    while (*p != '\0')
+      HASH (mklev_hash, *p++);
+  }
+
   /* Temporarily allocate a table with that many buckets.  */
   table = (struct variable_bucket **)
     alloca (buckets * sizeof (struct variable_bucket *));
@@ -470,10 +481,17 @@ target_environment (file)
              register struct variable_bucket *ov;
              register char *p = v->name;
 
+             if (i == mklev_hash % set->buckets
+                 && streq (v->name, "MAKELEVEL"))
+               /* Don't include MAKELEVEL because it will be
+                  added specially at the end.  */
+               continue;
+
              switch (v->export)
                {
                case v_default:
-                 if (v->origin != o_command
+                 if (!export_all_variables
+                     && v->origin != o_command
                      && v->origin != o_env && v->origin != o_env_override
                      && !(v->origin == o_file && getenv (p) != 0))
                    continue;