aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/kconfig/confdata.c
diff options
context:
space:
mode:
authorRoman Zippel <zippel@linux-m68k.org>2006-06-08 22:12:41 -0700
committerSam Ravnborg <sam@mars.ravnborg.org>2006-06-09 07:31:30 +0200
commit0c1822e6991a10da6dc391f0a2e2cf5fb2e31238 (patch)
treef86393b38a29d7f5e3ef34b060e04fb34c283044 /scripts/kconfig/confdata.c
parentc0e150acde52e4661675539bf5323309270f2e83 (diff)
downloadlinux-0c1822e6991a10da6dc391f0a2e2cf5fb2e31238.tar.gz
kconfig: allow multiple default values per symbol
Extend struct symbol to allow storing multiple default values, which can be used to hold multiple configurations. Signed-off-by: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Diffstat (limited to 'scripts/kconfig/confdata.c')
-rw-r--r--scripts/kconfig/confdata.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index 2da4a8d775a58..54ca1a786d255 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -134,11 +134,11 @@ load:
case S_INT:
case S_HEX:
case S_STRING:
- if (sym->user.val)
- free(sym->user.val);
+ if (sym->def[S_DEF_USER].val)
+ free(sym->def[S_DEF_USER].val);
default:
- sym->user.val = NULL;
- sym->user.tri = no;
+ sym->def[S_DEF_USER].val = NULL;
+ sym->def[S_DEF_USER].tri = no;
}
}
@@ -166,7 +166,7 @@ load:
switch (sym->type) {
case S_BOOLEAN:
case S_TRISTATE:
- sym->user.tri = no;
+ sym->def[S_DEF_USER].tri = no;
sym->flags &= ~SYMBOL_NEW;
break;
default:
@@ -196,18 +196,18 @@ load:
switch (sym->type) {
case S_TRISTATE:
if (p[0] == 'm') {
- sym->user.tri = mod;
+ sym->def[S_DEF_USER].tri = mod;
sym->flags &= ~SYMBOL_NEW;
break;
}
case S_BOOLEAN:
if (p[0] == 'y') {
- sym->user.tri = yes;
+ sym->def[S_DEF_USER].tri = yes;
sym->flags &= ~SYMBOL_NEW;
break;
}
if (p[0] == 'n') {
- sym->user.tri = no;
+ sym->def[S_DEF_USER].tri = no;
sym->flags &= ~SYMBOL_NEW;
break;
}
@@ -230,7 +230,7 @@ load:
case S_INT:
case S_HEX:
if (sym_string_valid(sym, p)) {
- sym->user.val = strdup(p);
+ sym->def[S_DEF_USER].val = strdup(p);
sym->flags &= ~SYMBOL_NEW;
} else {
conf_warning("symbol value '%s' invalid for %s", p, sym->name);
@@ -249,24 +249,24 @@ load:
}
if (sym && sym_is_choice_value(sym)) {
struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
- switch (sym->user.tri) {
+ switch (sym->def[S_DEF_USER].tri) {
case no:
break;
case mod:
- if (cs->user.tri == yes) {
+ if (cs->def[S_DEF_USER].tri == yes) {
conf_warning("%s creates inconsistent choice state", sym->name);
cs->flags |= SYMBOL_NEW;
}
break;
case yes:
- if (cs->user.tri != no) {
+ if (cs->def[S_DEF_USER].tri != no) {
conf_warning("%s creates inconsistent choice state", sym->name);
cs->flags |= SYMBOL_NEW;
} else
- cs->user.val = sym;
+ cs->def[S_DEF_USER].val = sym;
break;
}
- cs->user.tri = E_OR(cs->user.tri, sym->user.tri);
+ cs->def[S_DEF_USER].tri = E_OR(cs->def[S_DEF_USER].tri, sym->def[S_DEF_USER].tri);
}
}
fclose(in);
@@ -297,12 +297,12 @@ int conf_read(const char *name)
switch (sym->type) {
case S_BOOLEAN:
case S_TRISTATE:
- if (sym->user.tri != sym_get_tristate_value(sym))
+ if (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym))
break;
if (!sym_is_choice(sym))
goto sym_ok;
default:
- if (!strcmp(sym->curr.val, sym->user.val))
+ if (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val))
goto sym_ok;
break;
}
@@ -319,7 +319,7 @@ int conf_read(const char *name)
case S_STRING:
case S_INT:
case S_HEX:
- if (!sym_string_within_range(sym, sym->user.val)) {
+ if (!sym_string_within_range(sym, sym->def[S_DEF_USER].val)) {
sym->flags |= SYMBOL_NEW;
sym->flags &= ~SYMBOL_VALID;
}