mirror of
https://github.com/mirror/make.git
synced 2025-01-04 01:10:26 +08:00
Formerly variable.c.~10~
This commit is contained in:
parent
b001b6a55a
commit
b732b99c0b
77
variable.c
77
variable.c
@ -558,8 +558,7 @@ try_variable_definition (line, origin)
|
|||||||
p = next_token (p);
|
p = next_token (p);
|
||||||
|
|
||||||
return define_variable (beg, end - beg,
|
return define_variable (beg, end - beg,
|
||||||
/* !!! compile frob */
|
recursive ? p : variable_expand (p),
|
||||||
(recursive && !compiling) ? p : variable_expand (p),
|
|
||||||
origin, recursive);
|
origin, recursive);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -696,77 +695,3 @@ print_file_variables (file)
|
|||||||
if (file->variables != 0)
|
if (file->variables != 0)
|
||||||
print_variable_set (file->variables->set, "# ");
|
print_variable_set (file->variables->set, "# ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* !!!! compile frobbing: frobbed try_variable_definition. */
|
|
||||||
|
|
||||||
void
|
|
||||||
enter_variable (struct variable *variable)
|
|
||||||
{
|
|
||||||
struct variable_set *set = &global_variable_set;
|
|
||||||
register unsigned int hashval;
|
|
||||||
register char *p;
|
|
||||||
register struct variable *v;
|
|
||||||
|
|
||||||
hashval = 0;
|
|
||||||
for (p = variable->name; *p != '\0'; ++p)
|
|
||||||
HASH (hashval, *p);
|
|
||||||
hashval %= set->buckets;
|
|
||||||
|
|
||||||
for (v = set->table[hashval]; v != 0; v = v->next)
|
|
||||||
if (streq (v->name, variable->name))
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (v == 0)
|
|
||||||
{
|
|
||||||
variable->next = set->table[hashval];
|
|
||||||
set->table[hashval] = variable;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (env_overrides && v->origin == o_env)
|
|
||||||
/* V came from in the environment. Since it was defined
|
|
||||||
before the switches were parsed, it wasn't affected by -e. */
|
|
||||||
v->origin = o_env_override;
|
|
||||||
|
|
||||||
/* A variable of this name is already defined.
|
|
||||||
If the old definition is from a stronger source
|
|
||||||
than this one, don't redefine it. */
|
|
||||||
if ((int) variable->origin >= (int) v->origin)
|
|
||||||
{
|
|
||||||
v->value = variable->value;
|
|
||||||
v->origin = variable->origin;
|
|
||||||
v->recursive = variable->recursive;
|
|
||||||
if (v->export == v_default || variable->export != v_default)
|
|
||||||
v->export = variable->export;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct variable *
|
|
||||||
variable_global_linear_list ()
|
|
||||||
{
|
|
||||||
struct variable_set *set = &global_variable_set;
|
|
||||||
register unsigned int bucket;
|
|
||||||
register struct variable *v, *nextv;
|
|
||||||
struct variable *chain = NULL;
|
|
||||||
|
|
||||||
for (bucket = 0; bucket < set->buckets; ++bucket)
|
|
||||||
for (v = set->table[bucket]; v != NULL; v = nextv)
|
|
||||||
{
|
|
||||||
nextv = v->next;
|
|
||||||
switch (v->origin)
|
|
||||||
{
|
|
||||||
case o_file:
|
|
||||||
case o_command:
|
|
||||||
case o_override:
|
|
||||||
v->next = chain;
|
|
||||||
chain = v;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return chain;
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user