kumquat-buildroot/package/config/patches/09-implement-kconfig-probability.patch

44 lines
1.1 KiB
Diff
Raw Normal View History

---
confdata.c | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
Index: config.clean/confdata.c
===================================================================
--- config.clean.orig/confdata.c
+++ config.clean/confdata.c
@@ -812,7 +812,16 @@
struct symbol *sym, *csym;
struct property *prop;
struct expr *e;
- int i, cnt, def;
+ int i, cnt, def, prob = 50;
+
+ if (mode == def_random) {
+ char *endp, *env = getenv("KCONFIG_PROBABILITY");
+ if (env && *env) {
+ int tmp = (int)strtol(env, &endp, 10);
+ if (*endp == '\0' && tmp >= 0 && tmp <= 100)
+ prob = tmp;
+ }
+ }
for_all_symbols(i, sym) {
if (sym_has_value(sym))
@@ -831,7 +840,15 @@
sym->def[S_DEF_USER].tri = no;
break;
case def_random:
- sym->def[S_DEF_USER].tri = (tristate)(rand() % 3);
+ cnt = (rand() % 100) - (100 - prob);
+ if (cnt < 0)
+ sym->def[S_DEF_USER].tri = no;
+ else
+ if ((sym_get_type(sym) == S_TRISTATE)
+ && (cnt > prob/2))
+ sym->def[S_DEF_USER].tri = mod;
+ else
+ sym->def[S_DEF_USER].tri = yes;
break;
default:
continue;