|
|
|
@ -352,7 +352,7 @@ int conf_read(const char *name)
|
|
|
|
|
|
|
|
|
|
int conf_write(const char *name)
|
|
|
|
|
{
|
|
|
|
|
FILE *out, *out_h;
|
|
|
|
|
FILE *out;
|
|
|
|
|
struct symbol *sym;
|
|
|
|
|
struct menu *menu;
|
|
|
|
|
const char *basename;
|
|
|
|
@ -389,12 +389,6 @@ int conf_write(const char *name)
|
|
|
|
|
out = fopen(newname, "w");
|
|
|
|
|
if (!out)
|
|
|
|
|
return 1;
|
|
|
|
|
out_h = NULL;
|
|
|
|
|
if (!name) {
|
|
|
|
|
out_h = fopen(".tmpconfig.h", "w");
|
|
|
|
|
if (!out_h)
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
sym = sym_lookup("OPENWRTVERSION", 0);
|
|
|
|
|
sym_calc_value(sym);
|
|
|
|
|
time(&now);
|
|
|
|
@ -410,16 +404,6 @@ int conf_write(const char *name)
|
|
|
|
|
sym_get_string_value(sym),
|
|
|
|
|
use_timestamp ? "# " : "",
|
|
|
|
|
use_timestamp ? ctime(&now) : "");
|
|
|
|
|
if (out_h)
|
|
|
|
|
fprintf(out_h, "/*\n"
|
|
|
|
|
" * Automatically generated C config: don't edit\n"
|
|
|
|
|
" * OpenWrt version: %s\n"
|
|
|
|
|
"%s%s"
|
|
|
|
|
" */\n"
|
|
|
|
|
"#define AUTOCONF_INCLUDED\n",
|
|
|
|
|
sym_get_string_value(sym),
|
|
|
|
|
use_timestamp ? " * " : "",
|
|
|
|
|
use_timestamp ? ctime(&now) : "");
|
|
|
|
|
|
|
|
|
|
if (!sym_change_count)
|
|
|
|
|
sym_clear_all_valid();
|
|
|
|
@ -435,11 +419,6 @@ int conf_write(const char *name)
|
|
|
|
|
"#\n"
|
|
|
|
|
"# %s\n"
|
|
|
|
|
"#\n", str);
|
|
|
|
|
if (out_h)
|
|
|
|
|
fprintf(out_h, "\n"
|
|
|
|
|
"/*\n"
|
|
|
|
|
" * %s\n"
|
|
|
|
|
" */\n", str);
|
|
|
|
|
} else if (!(sym->flags & SYMBOL_CHOICE)) {
|
|
|
|
|
sym_calc_value(sym);
|
|
|
|
|
if (!(sym->flags & SYMBOL_WRITE))
|
|
|
|
@ -460,18 +439,12 @@ int conf_write(const char *name)
|
|
|
|
|
switch (sym_get_tristate_value(sym)) {
|
|
|
|
|
case no:
|
|
|
|
|
fprintf(out, "# CONFIG_%s is not set\n", sym->name);
|
|
|
|
|
if (out_h)
|
|
|
|
|
fprintf(out_h, "#undef CONFIG_%s\n", sym->name);
|
|
|
|
|
break;
|
|
|
|
|
case mod:
|
|
|
|
|
fprintf(out, "CONFIG_%s=m\n", sym->name);
|
|
|
|
|
if (out_h)
|
|
|
|
|
fprintf(out_h, "#define CONFIG_%s_MODULE 1\n", sym->name);
|
|
|
|
|
break;
|
|
|
|
|
case yes:
|
|
|
|
|
fprintf(out, "CONFIG_%s=y\n", sym->name);
|
|
|
|
|
if (out_h)
|
|
|
|
|
fprintf(out_h, "#define CONFIG_%s 1\n", sym->name);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
@ -479,40 +452,28 @@ int conf_write(const char *name)
|
|
|
|
|
// fix me
|
|
|
|
|
str = sym_get_string_value(sym);
|
|
|
|
|
fprintf(out, "CONFIG_%s=\"", sym->name);
|
|
|
|
|
if (out_h)
|
|
|
|
|
fprintf(out_h, "#define CONFIG_%s \"", sym->name);
|
|
|
|
|
do {
|
|
|
|
|
l = strcspn(str, "\"\\");
|
|
|
|
|
if (l) {
|
|
|
|
|
fwrite(str, l, 1, out);
|
|
|
|
|
if (out_h)
|
|
|
|
|
fwrite(str, l, 1, out_h);
|
|
|
|
|
}
|
|
|
|
|
str += l;
|
|
|
|
|
while (*str == '\\' || *str == '"') {
|
|
|
|
|
fprintf(out, "\\%c", *str);
|
|
|
|
|
if (out_h)
|
|
|
|
|
fprintf(out_h, "\\%c", *str);
|
|
|
|
|
str++;
|
|
|
|
|
}
|
|
|
|
|
} while (*str);
|
|
|
|
|
fputs("\"\n", out);
|
|
|
|
|
if (out_h)
|
|
|
|
|
fputs("\"\n", out_h);
|
|
|
|
|
break;
|
|
|
|
|
case S_HEX:
|
|
|
|
|
str = sym_get_string_value(sym);
|
|
|
|
|
if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) {
|
|
|
|
|
fprintf(out, "CONFIG_%s=%s\n", sym->name, str);
|
|
|
|
|
if (out_h)
|
|
|
|
|
fprintf(out_h, "#define CONFIG_%s 0x%s\n", sym->name, str);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case S_INT:
|
|
|
|
|
str = sym_get_string_value(sym);
|
|
|
|
|
fprintf(out, "CONFIG_%s=%s\n", sym->name, str);
|
|
|
|
|
if (out_h)
|
|
|
|
|
fprintf(out_h, "#define CONFIG_%s %s\n", sym->name, str);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -532,11 +493,6 @@ int conf_write(const char *name)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
fclose(out);
|
|
|
|
|
if (out_h) {
|
|
|
|
|
fclose(out_h);
|
|
|
|
|
rename(".tmpconfig.h", "include/linux/autoconf.h");
|
|
|
|
|
file_write_dep(NULL);
|
|
|
|
|
}
|
|
|
|
|
if (!name || basename != conf_def_filename) {
|
|
|
|
|
if (!name)
|
|
|
|
|
name = conf_def_filename;
|
|
|
|
|