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 <aloba...@pm.me>
---
 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


Reply via email to