To have a better understanding of the dotconfig blocks, mention if a particular block-commented section is a choice or a menu{,config}. Before: x x Timers subsystem x CONFIG_TICK_ONESHOT=y CONFIG_NO_HZ_COMMON=y x x Timer tick handling x x CONFIG_HZ_PERIODIC is not set CONFIG_NO_HZ_IDLE=y x end of Timer tick handling x CONFIG_NO_HZ is not set CONFIG_HIGH_RES_TIMERS=y x end of Timers subsystem After: x x Timers subsystem menu x CONFIG_TICK_ONESHOT=y CONFIG_NO_HZ_COMMON=y x x Timer tick handling choice x x CONFIG_HZ_PERIODIC is not set CONFIG_NO_HZ_IDLE=y x end of Timer tick handling choice x CONFIG_NO_HZ is not set CONFIG_HIGH_RES_TIMERS=y x end of Timers subsystem menu Signed-off-by: Alexander Lobakin <alobakin@xxxxx> --- scripts/kconfig/confdata.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c index e4f0a21fd469..3f50d8b82a54 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c @@ -822,6 +822,17 @@ int conf_write_defconfig(const char *filename) return 0; } +static const char *menu_type_string(const struct menu *menu) +{ + if (menu->sym && (menu->sym->flags & SYMBOL_CHOICE)) + return " choice"; + + if (menu->prompt && menu->prompt->type == P_MENU) + return " menu"; + + return ""; +} + int conf_write(const char *name) { FILE *out; @@ -876,8 +887,8 @@ int conf_write(const char *name) str = menu_get_prompt(menu); fprintf(out, "\n" "#\n" - "# %s\n" - "#\n", str); + "# %s%s\n" + "#\n", str, menu_type_string(menu)); need_newline = false; } @@ -905,7 +916,8 @@ int conf_write(const char *name) (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); + fprintf(out, "# end of %s%s\n", str, + menu_type_string(menu)); need_newline = true; } if (menu->next) { -- 2.31.0