char *conf_get_default_confname(void) { struct stat buf; static char fullname[PATH_MAX+1]; char *env, *name; name = conf_expand_value(conf_defname); env = getenv(SRCTREE); if (env) { sprintf(fullname, "%s/%s", env, name); if (!stat(fullname, &buf)) return fullname; } return name; }
char *conf_get_default_confname(void) { struct stat buf; static char *fullname = NULL; char *env, *name; name = conf_expand_value(conf_defname); env = getenv(SRCTREE); if (env) { fullname = realloc(fullname, strlen(env) + strlen(name) + 2); sprintf(fullname, "%s/%s", env, name); if (!stat(fullname, &buf)) return fullname; } return name; }
int conf_read_simple(const char *name) { FILE *in = NULL; char line[1024]; char *p, *p2; struct symbol *sym; int i; if (name) { in = zconf_fopen(name); } else { const char **names = conf_confnames; while ((name = *names++)) { name = conf_expand_value(name); in = zconf_fopen(name); if (in) { printf(_("#\n" "# using defaults found in %s\n" "#\n"), name); break; } } } if (!in) return 1; conf_filename = name; conf_lineno = 0; conf_warnings = 0; conf_unsaved = 0; for_all_symbols(i, sym) { sym->flags |= SYMBOL_NEW | SYMBOL_CHANGED; if (sym_is_choice(sym)) sym->flags &= ~SYMBOL_NEW; sym->flags &= ~SYMBOL_VALID; switch (sym->type) { case S_INT: case S_HEX: case S_STRING: if (sym->user.val) free(sym->user.val); default: sym->user.val = NULL; sym->user.tri = no; } }
int conf_read(const char *name) { FILE *in = NULL; char line[1024]; char *p, *p2; int lineno = 0; struct symbol *sym; struct property *prop; struct expr *e; int i; if (name) { in = fopen(name, "r"); } else { const char **names = conf_confnames; while ((name = *names++)) { name = conf_expand_value(name); in = fopen(name, "r"); if (in) { printf("#\n" "# using defaults found in %s\n" "#\n", name); break; } } } if (!in) return 1; for_all_symbols(i, sym) { sym->flags |= SYMBOL_NEW | SYMBOL_CHANGED; sym->flags &= ~SYMBOL_VALID; switch (sym->type) { case S_INT: case S_HEX: case S_STRING: if (S_VAL(sym->def)) free(S_VAL(sym->def)); default: S_VAL(sym->def) = NULL; S_TRI(sym->def) = no; ; } }
char *conf_get_default_confname(void) { return conf_expand_value(conf_defname); }
int conf_read_simple(const char *name, int def, int sym_init) { FILE *in = NULL; char line[1024]; char *p, *p2; struct symbol *sym; int i, def_flags; if (name) { in = zconf_fopen(name); } else { struct property *prop; name = conf_get_configname(); in = zconf_fopen(name); if (in) goto load; sym_add_change_count(1); if (!sym_defconfig_list) { if (modules_sym) sym_calc_value(modules_sym); return 1; } for_all_defaults(sym_defconfig_list, prop) { if (expr_calc_value(prop->visible.expr) == no || prop->expr->type != E_SYMBOL) continue; name = conf_expand_value(prop->expr->left.sym->name); in = zconf_fopen(name); if (in) { conf_message(_("using defaults found in %s"), name); goto load; } } } if (!in) return 1; load: conf_filename = name; conf_lineno = 0; conf_warnings = 0; conf_unsaved = 0; def_flags = SYMBOL_DEF << def; if (!sym_init) goto readsym; for_all_symbols(i, sym) { sym->flags |= SYMBOL_CHANGED; sym->flags &= ~(def_flags|SYMBOL_VALID); if (sym_is_choice(sym)) sym->flags |= def_flags; switch (sym->type) { case S_INT: case S_HEX: case S_STRING: if (sym->def[def].val) free(sym->def[def].val); default: sym->def[def].val = NULL; sym->def[def].tri = no; } }