Loading scripts/kconfig/confdata.c +57 −37 Original line number Diff line number Diff line Loading @@ -1058,13 +1058,53 @@ static int conf_touch_deps(void) return 0; } static int __conf_write_autoconf(const char *filename, void (*print_symbol)(FILE *, struct symbol *), const struct comment_style *comment_style) { char tmp[PATH_MAX]; FILE *file; struct symbol *sym; int ret, i; if (make_parent_dir(filename)) return -1; ret = snprintf(tmp, sizeof(tmp), "%s.tmp", filename); if (ret >= sizeof(tmp)) /* check truncation */ return -1; file = fopen(tmp, "w"); if (!file) { perror("fopen"); return -1; } conf_write_heading(file, comment_style); for_all_symbols(i, sym) if ((sym->flags & SYMBOL_WRITE) && sym->name) print_symbol(file, sym); /* check possible errors in conf_write_heading() and print_symbol() */ if (ferror(file)) return -1; fclose(file); if (rename(tmp, filename)) { perror("rename"); return -1; } return 0; } int conf_write_autoconf(int overwrite) { struct symbol *sym; const char *name; const char *autoconf_name = conf_get_autoconfig_name(); FILE *out, *out_h; int i; int ret, i; if (!overwrite && is_present(autoconf_name)) return 0; Loading @@ -1074,45 +1114,25 @@ int conf_write_autoconf(int overwrite) if (conf_touch_deps()) return 1; out = fopen(".tmpconfig", "w"); if (!out) return 1; out_h = fopen(".tmpconfig.h", "w"); if (!out_h) { fclose(out); return 1; } conf_write_heading(out, &comment_style_pound); conf_write_heading(out_h, &comment_style_c); for_all_symbols(i, sym) { for_all_symbols(i, sym) sym_calc_value(sym); if (!(sym->flags & SYMBOL_WRITE) || !sym->name) continue; /* write symbols to auto.conf and autoconf.h */ print_symbol_for_autoconf(out, sym); print_symbol_for_c(out_h, sym); } fclose(out); fclose(out_h); name = conf_get_autoheader_name(); if (make_parent_dir(name)) return 1; if (rename(".tmpconfig.h", name)) return 1; ret = __conf_write_autoconf(conf_get_autoheader_name(), print_symbol_for_c, &comment_style_c); if (ret) return ret; if (make_parent_dir(autoconf_name)) return 1; /* * This must be the last step, kbuild has a dependency on auto.conf * and this marks the successful completion of the previous steps. * Create include/config/auto.conf. This must be the last step because * Kbuild has a dependency on auto.conf and this marks the successful * completion of the previous steps. */ if (rename(".tmpconfig", autoconf_name)) return 1; ret = __conf_write_autoconf(conf_get_autoconfig_name(), print_symbol_for_autoconf, &comment_style_pound); if (ret) return ret; return 0; } Loading Loading
scripts/kconfig/confdata.c +57 −37 Original line number Diff line number Diff line Loading @@ -1058,13 +1058,53 @@ static int conf_touch_deps(void) return 0; } static int __conf_write_autoconf(const char *filename, void (*print_symbol)(FILE *, struct symbol *), const struct comment_style *comment_style) { char tmp[PATH_MAX]; FILE *file; struct symbol *sym; int ret, i; if (make_parent_dir(filename)) return -1; ret = snprintf(tmp, sizeof(tmp), "%s.tmp", filename); if (ret >= sizeof(tmp)) /* check truncation */ return -1; file = fopen(tmp, "w"); if (!file) { perror("fopen"); return -1; } conf_write_heading(file, comment_style); for_all_symbols(i, sym) if ((sym->flags & SYMBOL_WRITE) && sym->name) print_symbol(file, sym); /* check possible errors in conf_write_heading() and print_symbol() */ if (ferror(file)) return -1; fclose(file); if (rename(tmp, filename)) { perror("rename"); return -1; } return 0; } int conf_write_autoconf(int overwrite) { struct symbol *sym; const char *name; const char *autoconf_name = conf_get_autoconfig_name(); FILE *out, *out_h; int i; int ret, i; if (!overwrite && is_present(autoconf_name)) return 0; Loading @@ -1074,45 +1114,25 @@ int conf_write_autoconf(int overwrite) if (conf_touch_deps()) return 1; out = fopen(".tmpconfig", "w"); if (!out) return 1; out_h = fopen(".tmpconfig.h", "w"); if (!out_h) { fclose(out); return 1; } conf_write_heading(out, &comment_style_pound); conf_write_heading(out_h, &comment_style_c); for_all_symbols(i, sym) { for_all_symbols(i, sym) sym_calc_value(sym); if (!(sym->flags & SYMBOL_WRITE) || !sym->name) continue; /* write symbols to auto.conf and autoconf.h */ print_symbol_for_autoconf(out, sym); print_symbol_for_c(out_h, sym); } fclose(out); fclose(out_h); name = conf_get_autoheader_name(); if (make_parent_dir(name)) return 1; if (rename(".tmpconfig.h", name)) return 1; ret = __conf_write_autoconf(conf_get_autoheader_name(), print_symbol_for_c, &comment_style_c); if (ret) return ret; if (make_parent_dir(autoconf_name)) return 1; /* * This must be the last step, kbuild has a dependency on auto.conf * and this marks the successful completion of the previous steps. * Create include/config/auto.conf. This must be the last step because * Kbuild has a dependency on auto.conf and this marks the successful * completion of the previous steps. */ if (rename(".tmpconfig", autoconf_name)) return 1; ret = __conf_write_autoconf(conf_get_autoconfig_name(), print_symbol_for_autoconf, &comment_style_pound); if (ret) return ret; return 0; } Loading