Merge branch 'kconfig/for-next' of git://github.com/lacombar/linux-2.6 into kbuild/kconfig

This commit is contained in:
Michal Marek 2011-08-31 12:06:36 +02:00
commit 6a19492fc2
3 changed files with 90 additions and 50 deletions

View File

@ -503,17 +503,6 @@ header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
fprintf(fp, "#define %s%s%s 1\n", fprintf(fp, "#define %s%s%s 1\n",
CONFIG_, sym->name, suffix); CONFIG_, sym->name, suffix);
} }
/*
* Generate the __enabled_CONFIG_* and
* __enabled_CONFIG_*_MODULE macros for use by the
* IS_{ENABLED,BUILTIN,MODULE} macros. The _MODULE variant is
* generated even for booleans so that the IS_ENABLED() macro
* works.
*/
fprintf(fp, "#define __enabled_" CONFIG_ "%s %d\n",
sym->name, (*value == 'y'));
fprintf(fp, "#define __enabled_" CONFIG_ "%s_MODULE %d\n",
sym->name, (*value == 'm'));
break; break;
} }
case S_HEX: { case S_HEX: {
@ -564,6 +553,35 @@ static struct conf_printer header_printer_cb =
.print_comment = header_print_comment, .print_comment = header_print_comment,
}; };
/*
* Generate the __enabled_CONFIG_* and __enabled_CONFIG_*_MODULE macros for
* use by the IS_{ENABLED,BUILTIN,MODULE} macros. The _MODULE variant is
* generated even for booleans so that the IS_ENABLED() macro works.
*/
static void
header_print__enabled_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
{
switch (sym->type) {
case S_BOOLEAN:
case S_TRISTATE: {
fprintf(fp, "#define __enabled_" CONFIG_ "%s %d\n",
sym->name, (*value == 'y'));
fprintf(fp, "#define __enabled_" CONFIG_ "%s_MODULE %d\n",
sym->name, (*value == 'm'));
break;
}
default:
break;
}
}
static struct conf_printer header__enabled_printer_cb =
{
.print_symbol = header_print__enabled_symbol,
.print_comment = header_print_comment,
};
/* /*
* Tristate printer * Tristate printer
* *
@ -945,11 +963,16 @@ int conf_write_autoconf(void)
conf_write_heading(out_h, &header_printer_cb, NULL); conf_write_heading(out_h, &header_printer_cb, NULL);
for_all_symbols(i, sym) { for_all_symbols(i, sym) {
sym_calc_value(sym); if (!sym->name)
if (!(sym->flags & SYMBOL_WRITE) || !sym->name) continue;
sym_calc_value(sym);
conf_write_symbol(out_h, sym, &header__enabled_printer_cb, NULL);
if (!(sym->flags & SYMBOL_WRITE))
continue; continue;
/* write symbol to auto.conf, tristate and header files */
conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1); conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1);
conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1); conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1);

View File

@ -320,7 +320,6 @@ static void print_page(WINDOW * win, int height, int width)
*/ */
static void print_line(WINDOW * win, int row, int width) static void print_line(WINDOW * win, int row, int width)
{ {
int y, x;
char *line; char *line;
line = get_line(); line = get_line();
@ -329,10 +328,10 @@ static void print_line(WINDOW * win, int row, int width)
waddch(win, ' '); waddch(win, ' ');
waddnstr(win, line, MIN(strlen(line), width - 2)); waddnstr(win, line, MIN(strlen(line), width - 2));
getyx(win, y, x);
/* Clear 'residue' of previous line */ /* Clear 'residue' of previous line */
#if OLD_NCURSES #if OLD_NCURSES
{ {
int x = getcurx(win);
int i; int i;
for (i = 0; i < width - x; i++) for (i = 0; i < width - x; i++)
waddch(win, ' '); waddch(win, ' ');

View File

@ -15,6 +15,7 @@
#include <stdarg.h> #include <stdarg.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <signal.h>
#include <unistd.h> #include <unistd.h>
#include <locale.h> #include <locale.h>
@ -272,6 +273,7 @@ static struct menu *current_menu;
static int child_count; static int child_count;
static int single_menu_mode; static int single_menu_mode;
static int show_all_options; static int show_all_options;
static int saved_x, saved_y;
static void conf(struct menu *menu); static void conf(struct menu *menu);
static void conf_choice(struct menu *menu); static void conf_choice(struct menu *menu);
@ -792,9 +794,54 @@ static void conf_save(void)
} }
} }
static int handle_exit(void)
{
int res;
dialog_clear();
if (conf_get_changed())
res = dialog_yesno(NULL,
_("Do you wish to save your new configuration ?\n"
"<ESC><ESC> to continue."),
6, 60);
else
res = -1;
end_dialog(saved_x, saved_y);
switch (res) {
case 0:
if (conf_write(filename)) {
fprintf(stderr, _("\n\n"
"Error while writing of the configuration.\n"
"Your configuration changes were NOT saved."
"\n\n"));
return 1;
}
/* fall through */
case -1:
printf(_("\n\n"
"*** End of the configuration.\n"
"*** Execute 'make' to start the build or try 'make help'."
"\n\n"));
res = 0;
break;
default:
fprintf(stderr, _("\n\n"
"Your configuration changes were NOT saved."
"\n\n"));
}
return res;
}
static void sig_handler(int signo)
{
exit(handle_exit());
}
int main(int ac, char **av) int main(int ac, char **av)
{ {
int saved_x, saved_y;
char *mode; char *mode;
int res; int res;
@ -802,6 +849,8 @@ int main(int ac, char **av)
bindtextdomain(PACKAGE, LOCALEDIR); bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE); textdomain(PACKAGE);
signal(SIGINT, sig_handler);
conf_parse(av[1]); conf_parse(av[1]);
conf_read(NULL); conf_read(NULL);
@ -823,40 +872,9 @@ int main(int ac, char **av)
set_config_filename(conf_get_configname()); set_config_filename(conf_get_configname());
do { do {
conf(&rootmenu); conf(&rootmenu);
dialog_clear(); res = handle_exit();
if (conf_get_changed())
res = dialog_yesno(NULL,
_("Do you wish to save your "
"new configuration?\n"
"<ESC><ESC> to continue."),
6, 60);
else
res = -1;
} while (res == KEY_ESC); } while (res == KEY_ESC);
end_dialog(saved_x, saved_y);
switch (res) { return res;
case 0:
if (conf_write(filename)) {
fprintf(stderr, _("\n\n"
"Error while writing of the configuration.\n"
"Your configuration changes were NOT saved."
"\n\n"));
return 1;
}
/* fall through */
case -1:
printf(_("\n\n"
"*** End of the configuration.\n"
"*** Execute 'make' to start the build or try 'make help'."
"\n\n"));
break;
default:
fprintf(stderr, _("\n\n"
"Your configuration changes were NOT saved."
"\n\n"));
}
return 0;
} }