diff options
author | Ron Yorston <rmy@pobox.com> | 2017-09-27 10:08:12 +0100 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2017-09-27 10:11:19 +0100 |
commit | d9383e984da8de72e61e5094a3cf6404c5707ddc (patch) | |
tree | dd42825854fc42aea40d4f7a95548d53721d1733 /scripts | |
parent | 166b3e4e82799f87d3b002c7177891111eff079e (diff) | |
parent | 0c4dbd481aedb5d22c1048e7f7eb547a3b5e50a5 (diff) | |
download | busybox-w32-d9383e984da8de72e61e5094a3cf6404c5707ddc.tar.gz busybox-w32-d9383e984da8de72e61e5094a3cf6404c5707ddc.tar.bz2 busybox-w32-d9383e984da8de72e61e5094a3cf6404c5707ddc.zip |
Merge branch 'busybox' into merge
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/kconfig/conf.c | 56 |
1 files changed, 54 insertions, 2 deletions
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c index 41ac23936..f69591c69 100644 --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c | |||
@@ -76,14 +76,53 @@ static void conf_askvalue(struct symbol *sym, const char *def) | |||
76 | 76 | ||
77 | line[0] = '\n'; | 77 | line[0] = '\n'; |
78 | line[1] = 0; | 78 | line[1] = 0; |
79 | line[2] = 0; | ||
79 | 80 | ||
80 | if (!sym_is_changable(sym)) { | 81 | if (!sym_is_changable(sym)) { |
81 | printf("%s\n", def); | 82 | printf("%s\n", def); |
82 | line[0] = '\n'; | ||
83 | line[1] = 0; | ||
84 | return; | 83 | return; |
85 | } | 84 | } |
86 | 85 | ||
86 | // If autoconf run (allnoconfig and such), reset bool and tristates: | ||
87 | // "select ITEM" sets ITEM=y and then parent item might have been | ||
88 | // reset to "n" later. Try to set ITEM to "n" on the second run. | ||
89 | if (type == S_BOOLEAN || type == S_TRISTATE) { | ||
90 | switch (input_mode) { | ||
91 | case set_yes: | ||
92 | if (sym_tristate_within_range(sym, yes)) { | ||
93 | line[0] = 'y'; | ||
94 | line[1] = '\n'; | ||
95 | printf("%s", line); | ||
96 | return; | ||
97 | } | ||
98 | case set_mod: | ||
99 | if (type == S_TRISTATE) { | ||
100 | if (sym_tristate_within_range(sym, mod)) { | ||
101 | line[0] = 'm'; | ||
102 | line[1] = '\n'; | ||
103 | printf("%s", line); | ||
104 | return; | ||
105 | } | ||
106 | } else { | ||
107 | if (sym_tristate_within_range(sym, yes)) { | ||
108 | line[0] = 'y'; | ||
109 | line[1] = '\n'; | ||
110 | printf("%s", line); | ||
111 | return; | ||
112 | } | ||
113 | } | ||
114 | case set_no: | ||
115 | if (sym_tristate_within_range(sym, no)) { | ||
116 | line[0] = 'n'; | ||
117 | line[1] = '\n'; | ||
118 | printf("%s", line); | ||
119 | return; | ||
120 | } | ||
121 | default: // placate compiler | ||
122 | break; | ||
123 | } | ||
124 | } | ||
125 | |||
87 | switch (input_mode) { | 126 | switch (input_mode) { |
88 | case set_no: | 127 | case set_no: |
89 | case set_mod: | 128 | case set_mod: |
@@ -605,6 +644,19 @@ int main(int ac, char **av) | |||
605 | if (input_mode != ask_silent) { | 644 | if (input_mode != ask_silent) { |
606 | rootEntry = &rootmenu; | 645 | rootEntry = &rootmenu; |
607 | conf(&rootmenu); | 646 | conf(&rootmenu); |
647 | // If autoconf run (allnoconfig and such), run it twice: | ||
648 | // "select ITEM" sets ITEM=y and then parent item | ||
649 | // is reset to "n" later. Second run sets ITEM to "n". | ||
650 | // Example: ADDUSER selects LONG_OPTS. | ||
651 | // allnoconfig must set _both_ to "n". | ||
652 | // Before, LONG_OPTS remained "y". | ||
653 | if (input_mode == set_no | ||
654 | || input_mode == set_mod | ||
655 | || input_mode == set_yes | ||
656 | ) { | ||
657 | rootEntry = &rootmenu; | ||
658 | conf(&rootmenu); | ||
659 | } | ||
608 | if (input_mode == ask_all) { | 660 | if (input_mode == ask_all) { |
609 | input_mode = ask_silent; | 661 | input_mode = ask_silent; |
610 | valid_stdin = 1; | 662 | valid_stdin = 1; |