public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Masahiro Yamada <masahiroy@kernel.org>
To: linux-kbuild@vger.kernel.org
Cc: Masahiro Yamada <masahiroy@kernel.org>, linux-kernel@vger.kernel.org
Subject: [PATCH 02/10] kconfig: refactor conf_write_heading()
Date: Fri,  1 Oct 2021 14:32:45 +0900	[thread overview]
Message-ID: <20211001053253.1223316-2-masahiroy@kernel.org> (raw)
In-Reply-To: <20211001053253.1223316-1-masahiroy@kernel.org>

All the call sites of conf_write_heading() pass NULL to the third
argument, and it is not used in the function.

Also, the print_comment hooks are doing much more complex than
needed.

Rewrite the code.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/kconfig/confdata.c | 95 +++++++++++++-------------------------
 1 file changed, 33 insertions(+), 62 deletions(-)

diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index 9b2271eb43d6..ed1bb8ba971b 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -161,7 +161,6 @@ static int conf_touch_dep(const char *name)
 
 struct conf_printer {
 	void (*print_symbol)(FILE *, struct symbol *, const char *, void *);
-	void (*print_comment)(FILE *, const char *, void *);
 };
 
 static void conf_warning(const char *fmt, ...)
@@ -594,6 +593,36 @@ int conf_read(const char *name)
 	return 0;
 }
 
+struct comment_style {
+	const char *comment_line;
+	const char *comment_block_begin;
+	const char *comment_block_end;
+};
+
+static const struct comment_style comment_style_pound = {
+	.comment_line = "#",
+	.comment_block_begin = "#",
+	.comment_block_end = "#",
+};
+
+static const struct comment_style comment_style_c = {
+	.comment_line = " *",
+	.comment_block_begin = "/*",
+	.comment_block_end = " */",
+};
+
+static void conf_write_heading(FILE *fp, const struct comment_style *cs)
+{
+	fprintf(fp, "%s\n", cs->comment_block_begin);
+
+	fprintf(fp, "%s Automatically generated file; DO NOT EDIT.\n",
+		cs->comment_line);
+
+	fprintf(fp, "%s %s\n", cs->comment_line, rootmenu.prompt->text);
+
+	fprintf(fp, "%s\n", cs->comment_block_end);
+}
+
 /*
  * Kconfig configuration printer
  *
@@ -625,30 +654,9 @@ kconfig_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
 	fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, value);
 }
 
-static void
-kconfig_print_comment(FILE *fp, const char *value, void *arg)
-{
-	const char *p = value;
-	size_t l;
-
-	for (;;) {
-		l = strcspn(p, "\n");
-		fprintf(fp, "#");
-		if (l) {
-			fprintf(fp, " ");
-			xfwrite(p, l, 1, fp);
-			p += l;
-		}
-		fprintf(fp, "\n");
-		if (*p++ == '\0')
-			break;
-	}
-}
-
 static struct conf_printer kconfig_printer_cb =
 {
 	.print_symbol = kconfig_print_symbol,
-	.print_comment = kconfig_print_comment,
 };
 
 /*
@@ -697,32 +705,9 @@ header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
 
 }
 
-static void
-header_print_comment(FILE *fp, const char *value, void *arg)
-{
-	const char *p = value;
-	size_t l;
-
-	fprintf(fp, "/*\n");
-	for (;;) {
-		l = strcspn(p, "\n");
-		fprintf(fp, " *");
-		if (l) {
-			fprintf(fp, " ");
-			xfwrite(p, l, 1, fp);
-			p += l;
-		}
-		fprintf(fp, "\n");
-		if (*p++ == '\0')
-			break;
-	}
-	fprintf(fp, " */\n");
-}
-
 static struct conf_printer header_printer_cb =
 {
 	.print_symbol = header_print_symbol,
-	.print_comment = header_print_comment,
 };
 
 static void conf_write_symbol(FILE *fp, struct symbol *sym,
@@ -746,20 +731,6 @@ static void conf_write_symbol(FILE *fp, struct symbol *sym,
 	free(escaped);
 }
 
-static void
-conf_write_heading(FILE *fp, struct conf_printer *printer, void *printer_arg)
-{
-	char buf[256];
-
-	snprintf(buf, sizeof(buf),
-	    "\n"
-	    "Automatically generated file; DO NOT EDIT.\n"
-	    "%s\n",
-	    rootmenu.prompt->text);
-
-	printer->print_comment(fp, buf, printer_arg);
-}
-
 /*
  * Write out a minimal config.
  * All values that has default values are skipped as this is redundant.
@@ -876,7 +847,7 @@ int conf_write(const char *name)
 	if (!out)
 		return 1;
 
-	conf_write_heading(out, &kconfig_printer_cb, NULL);
+	conf_write_heading(out, &comment_style_pound);
 
 	if (!conf_get_changed())
 		sym_clear_all_valid();
@@ -1080,8 +1051,8 @@ int conf_write_autoconf(int overwrite)
 		return 1;
 	}
 
-	conf_write_heading(out, &kconfig_printer_cb, NULL);
-	conf_write_heading(out_h, &header_printer_cb, NULL);
+	conf_write_heading(out, &comment_style_pound);
+	conf_write_heading(out_h, &comment_style_c);
 
 	for_all_symbols(i, sym) {
 		sym_calc_value(sym);
-- 
2.30.2


  reply	other threads:[~2021-10-01  5:33 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-01  5:32 [PATCH 01/10] kconfig: remove 'const' from the return type of sym_escape_string_value() Masahiro Yamada
2021-10-01  5:32 ` Masahiro Yamada [this message]
2021-10-01  5:32 ` [PATCH 03/10] kconfig: refactor conf_write_symbol() Masahiro Yamada
2021-10-28  5:16   ` Boris Kolpackov
2021-11-05  8:46     ` Masahiro Yamada
2021-11-05 11:40       ` Boris Kolpackov
2021-10-01  5:32 ` [PATCH 04/10] kconfig: refactor listnewconfig code Masahiro Yamada
2021-10-01  5:32 ` [PATCH 05/10] kconfig: move sym_escape_string_value() to confdata.c Masahiro Yamada
2021-10-01  5:32 ` [PATCH 06/10] kconfig: add conf_get_autoheader_name() Masahiro Yamada
2021-10-01  5:32 ` [PATCH 07/10] kconfig: refactor conf_write_autoconf() Masahiro Yamada
2021-10-01  5:32 ` [PATCH 08/10] kconfig: refactor conf_write_dep() Masahiro Yamada
2021-10-01  5:32 ` [PATCH 09/10] kconfig: refactor conf_touch_dep() Masahiro Yamada
2021-10-01  5:32 ` [PATCH 10/10] [for next only] kconfig: generate include/generated/rustc_cfg Masahiro Yamada
2021-10-01 11:28   ` n.schier
2021-10-02  8:59     ` Masahiro Yamada
2021-10-05 15:37 ` [PATCH 01/10] kconfig: remove 'const' from the return type of sym_escape_string_value() Masahiro Yamada

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211001053253.1223316-2-masahiroy@kernel.org \
    --to=masahiroy@kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox