diff mbox series

[1/2] kconfig: fence choices and menuconfigs with comments in .config too

Message ID 20210319193150.267510-2-alobakin@pm.me (mailing list archive)
State New
Headers show
Series kconfig: fence choices and menuconfigs with comments in .config too | expand

Commit Message

Alexander Lobakin March 19, 2021, 7:32 p.m. UTC
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
diff mbox series

Patch

diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index 2568dbe16ed6..e4f0a21fd469 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -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);