forked from Minki/linux
kconfig: refactor conf_write_heading()
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>
This commit is contained in:
parent
229d0cfae5
commit
ca51b26b4a
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user