@@ -869,17 +869,20 @@ int conf_write(const char *name)
menu = rootmenu.list;
while (menu) {
sym = menu->sym;
- if (!sym) {
- if (!menu_is_visible(menu))
- goto next;
+
+ if ((!sym || (sym->flags & SYMBOL_CHOICE) ||
+ (menu->prompt && menu->prompt->type == P_MENU)) &&
+ menu_is_visible(menu)) {
str = menu_get_prompt(menu);
fprintf(out, "\n"
"#\n"
"# %s\n"
"#\n", str);
need_newline = false;
- } else if (!(sym->flags & SYMBOL_CHOICE) &&
- !(sym->flags & SYMBOL_WRITTEN)) {
+ }
+
+ if (sym && !(sym->flags & SYMBOL_CHOICE) &&
+ !(sym->flags & SYMBOL_WRITTEN)) {
sym_calc_value(sym);
if (!(sym->flags & SYMBOL_WRITE))
goto next;
@@ -896,11 +899,11 @@ int conf_write(const char *name)
menu = menu->list;
continue;
}
- if (menu->next)
- menu = menu->next;
- else while ((menu = menu->parent)) {
- if (!menu->sym && menu_is_visible(menu) &&
- menu != &rootmenu) {
+
+ do {
+ if (((menu->sym && menu->sym->flags & SYMBOL_CHOICE) ||
+ (menu->prompt && menu->prompt->type == P_MENU)) &&
+ menu_is_visible(menu) && menu != &rootmenu) {
str = menu_get_prompt(menu);
fprintf(out, "# end of %s\n", str);
need_newline = true;
@@ -909,7 +912,7 @@ int conf_write(const char *name)
menu = menu->next;
break;
}
- }
+ } while ((menu = menu->parent));
}
fclose(out);
Comment blocks are now generated in .config only for menus. Provide them for choices and menuconfigs too to greatly improve dotconfig readability. Choices before: CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y CONFIG_HAVE_LD_DEAD_CODE_DATA_ELIMINATION=y Choices after: CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y CONFIG_HAVE_LD_DEAD_CODE_DATA_ELIMINATION=y Menuconfigs before: CONFIG_RESET_CONTROLLER=y Menuconfigs after: CONFIG_RESET_CONTROLLER=y Signed-off-by: Alexander Lobakin <alobakin@pm.me> --- scripts/kconfig/confdata.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) -- 2.31.0