| confdata.c | 22 +++++++++++++++++++--- |
| 1 file changed, 19 insertions(+), 3 deletions(-) |
| =================================================================== |
| --- config.orig/confdata.c |
| void conf_set_all_new_symbols(enum conf_def_mode mode) |
| struct symbol *sym, *csym; |
| + if (mode == def_random) { |
| + char *endp, *env = getenv("KCONFIG_PROBABILITY"); |
| + int tmp = (int)strtol(env, &endp, 10); |
| + if (*endp == '\0' && tmp >= 0 && tmp <= 100) |
| for_all_symbols(i, sym) { |
| sym->def[S_DEF_USER].tri = no; |
| - cnt = sym_get_type(sym) == S_TRISTATE ? 3 : 2; |
| - sym->def[S_DEF_USER].tri = (tristate)(rand() % cnt); |
| + cnt = (rand() % 100) - (100 - prob); |
| + sym->def[S_DEF_USER].tri = no; |
| + if ((sym_get_type(sym) == S_TRISTATE) |
| + sym->def[S_DEF_USER].tri = mod; |
| + sym->def[S_DEF_USER].tri = yes; |