projects
/
carl9170fw.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
kconfig: support simply expanded variable
[carl9170fw.git]
/
config
/
preprocess.c
diff --git
a/config/preprocess.c
b/config/preprocess.c
index 46487fe6b36cd99e9ea04cc0bc2cbe7708b98121..d103683b386edc551ffc526d28bf74434856d7b1 100644
(file)
--- a/
config/preprocess.c
+++ b/
config/preprocess.c
@@
-185,6
+185,7
@@
static LIST_HEAD(variable_list);
struct variable {
char *name;
char *value;
struct variable {
char *name;
char *value;
+ enum variable_flavor flavor;
struct list_head node;
};
struct list_head node;
};
@@
-203,15
+204,22
@@
static struct variable *variable_lookup(const char *name)
static char *variable_expand(const char *name, int argc, char *argv[])
{
struct variable *v;
static char *variable_expand(const char *name, int argc, char *argv[])
{
struct variable *v;
+ char *res;
v = variable_lookup(name);
if (!v)
return NULL;
v = variable_lookup(name);
if (!v)
return NULL;
- return expand_string_with_args(v->value, argc, argv);
+ if (v->flavor == VAR_RECURSIVE)
+ res = expand_string_with_args(v->value, argc, argv);
+ else
+ res = xstrdup(v->value);
+
+ return res;
}
}
-void variable_add(const char *name, const char *value)
+void variable_add(const char *name, const char *value,
+ enum variable_flavor flavor)
{
struct variable *v;
{
struct variable *v;
@@
-224,7
+232,12
@@
void variable_add(const char *name, const char *value)
list_add_tail(&v->node, &variable_list);
}
list_add_tail(&v->node, &variable_list);
}
- v->value = xstrdup(value);
+ v->flavor = flavor;
+
+ if (flavor == VAR_SIMPLE)
+ v->value = expand_string(value);
+ else
+ v->value = xstrdup(value);
}
static void variable_del(struct variable *v)
}
static void variable_del(struct variable *v)