kconfig: refactor conf_write_heading()
authorMasahiro Yamada <masahiroy@kernel.org>
Fri, 1 Oct 2021 05:32:45 +0000 (14:32 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Mon, 11 Oct 2021 14:13:14 +0000 (23:13 +0900)
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

index 9b2271e..83e324b 100644 (file)
@@ -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 *decoration;
+       const char *prefix;
+       const char *postfix;
+};
+
+static const struct comment_style comment_style_pound = {
+       .decoration = "#",
+       .prefix = "#",
+       .postfix = "#",
+};
+
+static const struct comment_style comment_style_c = {
+       .decoration = " *",
+       .prefix = "/*",
+       .postfix = " */",
+};
+
+static void conf_write_heading(FILE *fp, const struct comment_style *cs)
+{
+       fprintf(fp, "%s\n", cs->prefix);
+
+       fprintf(fp, "%s Automatically generated file; DO NOT EDIT.\n",
+               cs->decoration);
+
+       fprintf(fp, "%s %s\n", cs->decoration, rootmenu.prompt->text);
+
+       fprintf(fp, "%s\n", cs->postfix);
+}
+
 /*
  * 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);