author | kergoth <kergoth> | 2003-01-16 18:04:11 (UTC) |
---|---|---|
committer | kergoth <kergoth> | 2003-01-16 18:04:11 (UTC) |
commit | 3904d85eac20dfd21cf2a3245977f9946865fd92 (patch) (side-by-side diff) | |
tree | 8d5b2217c1b54a0c439815ec02db3f5235c99daa /scripts/kconfig/confdata.c | |
parent | 0eec393ef2dd8b43db96c86e80e307f73a771fae (diff) | |
download | opie-3904d85eac20dfd21cf2a3245977f9946865fd92.zip opie-3904d85eac20dfd21cf2a3245977f9946865fd92.tar.gz opie-3904d85eac20dfd21cf2a3245977f9946865fd92.tar.bz2 |
Update LinuxKernelConf to 1.3, latest available.
-rw-r--r-- | scripts/kconfig/confdata.c | 74 |
1 files changed, 46 insertions, 28 deletions
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c index 0f5fd97..9bf7af9 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c @@ -5,4 +5,4 @@ +#include <sys/stat.h> #include <ctype.h> -#include <limits.h> #include <stdio.h> @@ -16,3 +16,2 @@ const char conf_def_filename[] = ".config"; -char conf_filename[PATH_MAX+1]; @@ -57,3 +56,14 @@ char *conf_get_default_confname(void) { - return conf_expand_value(conf_defname); + 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; } @@ -63,3 +73,3 @@ int conf_read(const char *name) FILE *in = NULL; - char line[128]; + char line[1024]; char *p, *p2; @@ -72,5 +82,3 @@ int conf_read(const char *name) if (name) { - in = fopen(name, "r"); - if (in) - strcpy(conf_filename, name); + in = zconf_fopen(name); } else { @@ -79,3 +87,3 @@ int conf_read(const char *name) name = conf_expand_value(name); - in = fopen(name, "r"); + in = zconf_fopen(name); if (in) { @@ -93,3 +101,4 @@ int conf_read(const char *name) for_all_symbols(i, sym) { - sym->flags |= SYMBOL_NEW; + sym->flags |= SYMBOL_NEW | SYMBOL_CHANGED; + sym->flags &= ~SYMBOL_VALID; switch (sym->type) { @@ -98,8 +107,7 @@ int conf_read(const char *name) case S_STRING: - if (S_VAL(sym->def)) { + if (S_VAL(sym->def)) free(S_VAL(sym->def)); - S_VAL(sym->def) = NULL; - } default: - ; + S_VAL(sym->def) = NULL; + S_TRI(sym->def) = no; } @@ -107,3 +115,3 @@ int conf_read(const char *name) - while (fgets(line, 128, in)) { + while (fgets(line, sizeof(line), in)) { lineno++; @@ -119,3 +127,2 @@ int conf_read(const char *name) continue; - //printf("%s -> n\n", line + 9); sym = sym_lookup(line + 9, 0); @@ -141,3 +148,2 @@ int conf_read(const char *name) *p2 = 0; - //printf("%s -> %s\n", line + 7, p); sym = sym_find(line + 7); @@ -148,12 +154,19 @@ int conf_read(const char *name) switch (sym->type) { - case S_BOOLEAN: - sym->def = symbol_yes.curr; - sym->flags &= ~SYMBOL_NEW; - break; case S_TRISTATE: - if (p[0] == 'm') - sym->def = symbol_mod.curr; - else - sym->def = symbol_yes.curr; - sym->flags &= ~SYMBOL_NEW; + if (p[0] == 'm') { + S_TRI(sym->def) = mod; + sym->flags &= ~SYMBOL_NEW; + break; + } + case S_BOOLEAN: + if (p[0] == 'y') { + S_TRI(sym->def) = yes; + sym->flags &= ~SYMBOL_NEW; + break; + } + if (p[0] == 'n') { + S_TRI(sym->def) = no; + sym->flags &= ~SYMBOL_NEW; + break; + } break; @@ -169,2 +182,6 @@ int conf_read(const char *name) } + if (!p2) { + fprintf(stderr, "%s:%d: invalid string found\n", name, lineno); + exit(1); + } case S_INT: @@ -174,4 +191,6 @@ int conf_read(const char *name) sym->flags &= ~SYMBOL_NEW; - } else - fprintf(stderr, "%s:%d:symbol value '%s' invalid for %s\n", name, lineno, p, sym->name); + } else { + fprintf(stderr, "%s:%d: symbol value '%s' invalid for %s\n", name, lineno, p, sym->name); + exit(1); + } break; @@ -354,3 +373,2 @@ int conf_write(const char *name) return 1; - strcpy(conf_filename, name); |