Skip to content

Commit

Permalink
menuconfig: remember alternate config filename
Browse files Browse the repository at this point in the history
When loading an alternate configuration use that file as
current configuration filename.
Make the filename visible in the dialog.
Default continue to be .config.

Inspired by patch from: Cyrill Gorcunov <gorcunov@gmail.com>

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc:  Cyrill Gorcunov <gorcunov@gmail.com>
  • Loading branch information
Sam Ravnborg committed May 2, 2007
1 parent dd7e54a commit 95e30f9
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 12 deletions.
1 change: 1 addition & 0 deletions scripts/kconfig/lxdialog/dialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ int on_key_esc(WINDOW *win);
int on_key_resize(void);

void init_dialog(const char *backtitle);
void set_dialog_backtitle(const char *backtitle);
void reset_dialog(void);
void end_dialog(void);
void attr_clear(WINDOW * win, int height, int width, chtype attr);
Expand Down
5 changes: 5 additions & 0 deletions scripts/kconfig/lxdialog/util.c
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,11 @@ void init_dialog(const char *backtitle)
color_setup(getenv("MENUCONFIG_COLOR"));
}

void set_dialog_backtitle(const char *backtitle)
{
dlg.backtitle = backtitle;
}

void reset_dialog(void)
{
initscr(); /* Init curses */
Expand Down
43 changes: 31 additions & 12 deletions scripts/kconfig/mconf.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
#include "lkc.h"
#include "lxdialog/dialog.h"

static char menu_backtitle[128];
static const char mconf_readme[] = N_(
"Overview\n"
"--------\n"
Expand Down Expand Up @@ -271,7 +270,6 @@ search_help[] = N_(
" USB$ => find all CONFIG_ symbols ending with USB\n"
"\n");

static char filename[PATH_MAX+1] = ".config";
static int indent;
static struct termios ios_org;
static int rows = 0, cols = 0;
Expand Down Expand Up @@ -395,6 +393,28 @@ static struct gstr get_relations_str(struct symbol **sym_arr)
return res;
}

static char filename[PATH_MAX+1];
static void set_config_filename(const char *config_filename)
{
static char menu_backtitle[PATH_MAX+128];
int size;
struct symbol *sym;

sym = sym_lookup("KERNELVERSION", 0);
sym_calc_value(sym);
size = snprintf(menu_backtitle, sizeof(menu_backtitle),
_("%s - Linux Kernel v%s Configuration"),
config_filename, sym_get_string_value(sym));
if (size >= sizeof(menu_backtitle))
menu_backtitle[sizeof(menu_backtitle)-1] = '\0';
set_dialog_backtitle(menu_backtitle);

size = snprintf(filename, sizeof(filename), "%s", config_filename);
if (size >= sizeof(filename))
filename[sizeof(filename)-1] = '\0';
}


static void search_conf(void)
{
struct symbol **sym_arr;
Expand Down Expand Up @@ -816,8 +836,10 @@ static void conf_load(void)
case 0:
if (!dialog_input_result[0])
return;
if (!conf_read(dialog_input_result))
if (!conf_read(dialog_input_result)) {
set_config_filename(dialog_input_result);
return;
}
show_textbox(NULL, _("File does not exist!"), 5, 38);
break;
case 1:
Expand All @@ -840,8 +862,10 @@ static void conf_save(void)
case 0:
if (!dialog_input_result[0])
return;
if (!conf_write(dialog_input_result))
if (!conf_write(dialog_input_result)) {
set_config_filename(dialog_input_result);
return;
}
show_textbox(NULL, _("Can't create file! Probably a nonexistent directory."), 5, 60);
break;
case 1:
Expand All @@ -860,7 +884,6 @@ static void conf_cleanup(void)

int main(int ac, char **av)
{
struct symbol *sym;
char *mode;
int res;

Expand All @@ -871,11 +894,6 @@ int main(int ac, char **av)
conf_parse(av[1]);
conf_read(NULL);

sym = sym_lookup("KERNELVERSION", 0);
sym_calc_value(sym);
sprintf(menu_backtitle, _("Linux Kernel v%s Configuration"),
sym_get_string_value(sym));

mode = getenv("MENUCONFIG_MODE");
if (mode) {
if (!strcasecmp(mode, "single_menu"))
Expand All @@ -886,7 +904,8 @@ int main(int ac, char **av)
atexit(conf_cleanup);
init_wsize();
reset_dialog();
init_dialog(menu_backtitle);
init_dialog(NULL);
set_config_filename(".config");
do {
conf(&rootmenu);
dialog_clear();
Expand All @@ -903,7 +922,7 @@ int main(int ac, char **av)

switch (res) {
case 0:
if (conf_write(NULL)) {
if (conf_write(filename)) {
fprintf(stderr, _("\n\n"
"Error during writing of the kernel configuration.\n"
"Your kernel configuration changes were NOT saved."
Expand Down

0 comments on commit 95e30f9

Please sign in to comment.