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