2018-07-12 21:50 GMT+09:00 Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx>: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Make it possible to answer "m or y" or "y or m" to > oldconfig so that scripted kernel builds can easily > enable new features not present in the existing .config. > > The particular use case I have in mind is continuous integration > where you probably want to test build any new features. Currently > you would have to either blindly try both 'y' and 'm' answers > or parse the output to know which one will be accepted. > > Cc: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> > Cc: linux-kbuild@xxxxxxxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > scripts/kconfig/conf.c | 26 ++++++++++++++++++++++---- > 1 file changed, 22 insertions(+), 4 deletions(-) > > diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c > index 671ff5364497..8038f9a6b9f4 100644 > --- a/scripts/kconfig/conf.c > +++ b/scripts/kconfig/conf.c > @@ -201,15 +201,33 @@ static int conf_sym(struct menu *menu) > continue; > case 'm': > case 'M': > - newval = mod; > - if (!line[1]) > + if (!strcmp(line, "m or y") || > + !strcmp(line, "M or Y")) { > + if (sym_tristate_within_range(sym, mod)) > + newval = mod; > + else > + newval = yes; > break; > + } else { > + newval = mod; > + if (!line[1]) > + break; > + } > continue; > case 'y': > case 'Y': > - newval = yes; > - if (!line[1] || !strcmp(&line[1], "es")) > + if (!strcmp(line, "y or m") || > + !strcmp(line, "Y or M")) { > + if (sym_tristate_within_range(sym, yes)) > + newval = yes; > + else > + newval = mod; > break; > + } else { > + newval = yes; > + if (!line[1] || !strcmp(&line[1], "es")) > + break; > + } > continue; > case 0: > newval = oldval; Hmm. Instead of hard-coding specific patterns, can you implement this in a more generic way? For example, how about this? Use '/' as a delimiter so that user input will be "m/y", "y/m", "m/n", etc. Split the input string into tokens by strtok() or something. Iterate over the tokens until sym_set_tristate_value() succeeds. Thanks. > -- > 2.16.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Best Regards Masahiro Yamada -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html