summaryrefslogtreecommitdiff
path: root/scripts/config
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/config')
-rw-r--r--scripts/config/expr.h3
-rw-r--r--scripts/config/mconf.c11
-rw-r--r--scripts/config/zconf.tab.c_shipped194
-rw-r--r--scripts/config/zconf.y4
4 files changed, 108 insertions, 104 deletions
diff --git a/scripts/config/expr.h b/scripts/config/expr.h
index fdeb149..c1c5606 100644
--- a/scripts/config/expr.h
+++ b/scripts/config/expr.h
@@ -94,14 +94,13 @@ struct symbol {
#define SYMBOL_AUTO 0x1000
#define SYMBOL_CHECKED 0x2000
#define SYMBOL_WARNED 0x8000
-#define SYMBOL_RESET 0x10000
#define SYMBOL_MAXLENGTH 256
#define SYMBOL_HASHSIZE 257
#define SYMBOL_HASHMASK 0xff
enum prop_type {
- P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE
+ P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE, P_RESET
};
struct property {
diff --git a/scripts/config/mconf.c b/scripts/config/mconf.c
index 083b23e..7403617 100644
--- a/scripts/config/mconf.c
+++ b/scripts/config/mconf.c
@@ -888,6 +888,7 @@ static void conf_choice(struct menu *menu)
const char *prompt = menu_get_prompt(menu);
struct menu *child;
struct symbol *active;
+ struct property *prop;
int stat;
active = sym_get_choice_value(menu->sym);
@@ -920,9 +921,13 @@ static void conf_choice(struct menu *menu)
case 0:
if (sscanf(input_buf, "%p", &child) != 1)
break;
- if ((menu->sym->flags & SYMBOL_RESET) &&
- sym_get_tristate_value(child->sym) != yes)
- conf_reset();
+
+ if (sym_get_tristate_value(child->sym) != yes) {
+ for_all_properties(menu->sym, prop, P_RESET) {
+ if (expr_calc_value(prop->visible.expr) != no)
+ conf_reset();
+ }
+ }
sym_set_tristate_value(child->sym, yes);
return;
case 1:
diff --git a/scripts/config/zconf.tab.c_shipped b/scripts/config/zconf.tab.c_shipped
index 10e94c9..c7c0f0c 100644
--- a/scripts/config/zconf.tab.c_shipped
+++ b/scripts/config/zconf.tab.c_shipped
@@ -319,7 +319,7 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 3
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 275
+#define YYLAST 271
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 36
@@ -328,7 +328,7 @@ union yyalloc
/* YYNRULES -- Number of rules. */
#define YYNRULES 106
/* YYNRULES -- Number of states. */
-#define YYNSTATES 178
+#define YYNSTATES 179
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
@@ -382,12 +382,12 @@ static const unsigned short int yyprhs[] =
53, 55, 57, 59, 61, 63, 65, 69, 72, 76,
79, 83, 86, 87, 90, 93, 96, 99, 102, 106,
111, 116, 121, 127, 130, 133, 135, 139, 140, 143,
- 146, 149, 152, 155, 160, 164, 167, 170, 175, 176,
- 179, 183, 185, 189, 190, 193, 196, 199, 203, 206,
- 208, 212, 213, 216, 219, 222, 226, 230, 233, 236,
- 239, 240, 243, 246, 249, 254, 258, 262, 263, 266,
- 268, 270, 273, 276, 279, 281, 284, 285, 288, 290,
- 294, 298, 302, 305, 309, 313, 315
+ 146, 149, 152, 155, 160, 164, 167, 171, 176, 177,
+ 180, 184, 186, 190, 191, 194, 197, 200, 204, 207,
+ 209, 213, 214, 217, 220, 223, 227, 231, 234, 237,
+ 240, 241, 244, 247, 250, 255, 259, 263, 264, 267,
+ 269, 271, 274, 277, 280, 282, 285, 286, 289, 291,
+ 295, 299, 303, 306, 310, 314, 316
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
@@ -409,22 +409,22 @@ static const yysigned_char yyrhs[] =
48, 52, -1, 73, -1, 49, 54, 50, -1, -1,
52, 53, -1, 52, 70, -1, 52, 68, -1, 52,
31, -1, 52, 41, -1, 19, 72, 75, 31, -1,
- 20, 71, 31, -1, 18, 31, -1, 25, 31, -1,
- 21, 26, 75, 31, -1, -1, 54, 40, -1, 14,
- 76, 74, -1, 73, -1, 55, 58, 56, -1, -1,
- 58, 40, -1, 58, 62, -1, 58, 51, -1, 4,
- 72, 31, -1, 59, 69, -1, 73, -1, 60, 63,
- 61, -1, -1, 63, 40, -1, 63, 62, -1, 63,
- 51, -1, 6, 72, 31, -1, 9, 72, 31, -1,
- 65, 69, -1, 12, 31, -1, 67, 13, -1, -1,
- 69, 70, -1, 69, 31, -1, 69, 41, -1, 16,
- 24, 76, 31, -1, 16, 76, 31, -1, 17, 76,
- 31, -1, -1, 72, 75, -1, 26, -1, 27, -1,
- 5, 31, -1, 8, 31, -1, 15, 31, -1, 31,
- -1, 74, 31, -1, -1, 14, 76, -1, 77, -1,
- 77, 34, 77, -1, 77, 28, 77, -1, 30, 76,
- 29, -1, 35, 76, -1, 76, 32, 76, -1, 76,
- 33, 76, -1, 26, -1, 27, -1
+ 20, 71, 31, -1, 18, 31, -1, 25, 75, 31,
+ -1, 21, 26, 75, 31, -1, -1, 54, 40, -1,
+ 14, 76, 74, -1, 73, -1, 55, 58, 56, -1,
+ -1, 58, 40, -1, 58, 62, -1, 58, 51, -1,
+ 4, 72, 31, -1, 59, 69, -1, 73, -1, 60,
+ 63, 61, -1, -1, 63, 40, -1, 63, 62, -1,
+ 63, 51, -1, 6, 72, 31, -1, 9, 72, 31,
+ -1, 65, 69, -1, 12, 31, -1, 67, 13, -1,
+ -1, 69, 70, -1, 69, 31, -1, 69, 41, -1,
+ 16, 24, 76, 31, -1, 16, 76, 31, -1, 17,
+ 76, 31, -1, -1, 72, 75, -1, 26, -1, 27,
+ -1, 5, 31, -1, 8, 31, -1, 15, 31, -1,
+ 31, -1, 74, 31, -1, -1, 14, 76, -1, 77,
+ -1, 77, 34, 77, -1, 77, 28, 77, -1, 30,
+ 76, 29, -1, 35, 76, -1, 76, 32, 76, -1,
+ 76, 33, 76, -1, 26, -1, 27, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
@@ -503,7 +503,7 @@ static const unsigned char yyr2[] =
1, 1, 1, 1, 1, 1, 3, 2, 3, 2,
3, 2, 0, 2, 2, 2, 2, 2, 3, 4,
4, 4, 5, 2, 2, 1, 3, 0, 2, 2,
- 2, 2, 2, 4, 3, 2, 2, 4, 0, 2,
+ 2, 2, 2, 4, 3, 2, 3, 4, 0, 2,
3, 1, 3, 0, 2, 2, 2, 3, 2, 1,
3, 0, 2, 2, 2, 3, 3, 2, 2, 2,
0, 2, 2, 2, 4, 3, 3, 0, 2, 1,
@@ -526,14 +526,14 @@ static const unsigned char yydefact[] =
0, 0, 0, 94, 7, 67, 75, 76, 28, 30,
0, 102, 0, 0, 60, 0, 0, 9, 10, 0,
0, 0, 0, 0, 87, 0, 0, 0, 0, 37,
- 36, 33, 0, 35, 34, 0, 0, 87, 0, 0,
+ 36, 33, 0, 35, 34, 0, 0, 87, 0, 96,
51, 52, 48, 50, 49, 59, 46, 45, 64, 66,
62, 65, 61, 82, 83, 81, 72, 74, 70, 73,
69, 95, 101, 103, 104, 100, 99, 27, 78, 0,
0, 0, 96, 0, 96, 96, 96, 0, 0, 79,
- 55, 96, 0, 96, 56, 0, 85, 86, 0, 0,
- 38, 88, 0, 0, 96, 26, 0, 54, 0, 84,
- 97, 39, 40, 41, 0, 53, 57, 42
+ 55, 96, 0, 96, 0, 0, 0, 85, 86, 0,
+ 38, 88, 0, 0, 96, 26, 0, 54, 0, 97,
+ 56, 84, 39, 40, 41, 0, 53, 57, 42
};
/* YYDEFGOTO[NTERM-NUM]. */
@@ -542,7 +542,7 @@ static const short int yydefgoto[] =
-1, 1, 2, 26, 27, 100, 28, 29, 30, 31,
65, 101, 32, 33, 116, 34, 67, 112, 68, 35,
120, 36, 69, 37, 38, 128, 39, 71, 40, 41,
- 42, 102, 103, 70, 104, 143, 144, 43, 74, 159,
+ 42, 102, 103, 70, 104, 143, 144, 43, 74, 155,
60, 61
};
@@ -551,33 +551,33 @@ static const short int yydefgoto[] =
#define YYPACT_NINF -134
static const short int yypact[] =
{
- -134, 2, 160, -134, -21, -10, -10, -8, -10, -1,
- 21, -10, 64, 68, 212, 84, -134, -134, -134, -134,
- -134, -134, -134, -134, 125, -134, 128, -134, -134, -134,
+ -134, 2, 160, -134, -16, 53, 53, -14, 53, -8,
+ -1, 53, 26, 63, 60, 73, -134, -134, -134, -134,
+ -134, -134, -134, -134, 114, -134, 125, -134, -134, -134,
-134, -134, -134, -134, -134, -134, -134, -134, -134, -134,
- -134, -134, -134, -134, -134, -134, -134, 99, 112, -134,
- 113, -134, -134, 124, 127, 141, -134, -134, 212, 212,
- 3, -19, -134, 142, 153, 39, 102, 187, 226, 215,
- 67, 215, 131, -134, 159, -134, -134, -134, -134, -134,
- 34, -134, 212, 212, 159, 53, 53, -134, -134, 163,
- 169, 65, 212, -10, -10, 212, 133, 53, 176, -134,
- -134, -134, 203, -134, -134, 196, -10, -10, 202, 213,
+ -134, -134, -134, -134, -134, -134, -134, 124, 127, -134,
+ 128, -134, -134, 141, 142, 146, -134, -134, 60, 60,
+ 3, -18, -134, 153, 159, 39, 102, 187, 226, 215,
+ 67, 215, 131, -134, 163, -134, -134, -134, -134, -134,
+ 34, -134, 60, 60, 163, 103, 103, -134, -134, 169,
+ 186, 218, 60, 53, 53, 60, 201, 103, 227, -134,
+ -134, -134, 220, -134, -134, 207, 53, 53, 213, 229,
-134, -134, -134, -134, -134, -134, -134, -134, -134, -134,
-134, -134, -134, -134, -134, -134, -134, -134, -134, -134,
- -134, -134, -134, 200, -134, -134, -134, -134, -134, 212,
- 178, 217, 240, 224, 240, 0, 240, 53, 225, -134,
- -134, 240, 227, 240, -134, 220, -134, -134, 212, 228,
- -134, -134, 229, 230, 240, -134, 231, -134, 232, -134,
- 54, -134, -134, -134, 233, -134, -134, -134
+ -134, -134, -134, 214, -134, -134, -134, -134, -134, 60,
+ 178, 183, 229, 224, 229, 0, 229, 103, 228, -134,
+ -134, 229, 230, 229, 60, 231, 219, -134, -134, 232,
+ -134, -134, 233, 234, 229, -134, 235, -134, 236, 111,
+ -134, -134, -134, -134, -134, 237, -134, -134, -134
};
/* YYPGOTO[NTERM-NUM]. */
static const short int yypgoto[] =
{
- -134, -134, -134, -134, 28, -46, -134, -134, -134, -134,
- 235, -134, -134, -134, -134, 118, -134, -134, -134, -134,
- -134, -134, -134, -134, -134, -134, 174, -134, -134, -134,
- -134, -134, 199, 234, -45, 161, -5, 146, 207, -133,
+ -134, -134, -134, -134, 23, -46, -134, -134, -134, -134,
+ 239, -134, -134, -134, -134, 118, -134, -134, -134, -134,
+ -134, -134, -134, -134, -134, -134, 185, -134, -134, -134,
+ -134, -134, 182, 217, -45, 164, -5, 28, 200, -133,
-54, -78
};
@@ -588,66 +588,66 @@ static const short int yypgoto[] =
#define YYTABLE_NINF -78
static const short int yytable[] =
{
- 47, 48, 3, 50, 80, 81, 53, 135, 136, 85,
- 44, 161, 162, 163, 158, 86, 45, 46, 166, 147,
- 168, 111, 114, 49, 124, 125, 124, 125, 133, 134,
- 51, 174, 82, 83, 73, 82, 83, 140, 141, -29,
+ 47, 48, 3, 50, 80, 81, 53, 135, 136, 159,
+ 85, 161, 162, 163, 154, 44, 86, 49, 166, 147,
+ 168, 111, 114, 51, 124, 125, 124, 125, 133, 134,
+ 52, 175, 82, 83, 73, 82, 83, 140, 141, -29,
89, 145, -29, -29, -29, -29, -29, -29, -29, -29,
- -29, 90, 52, -29, -29, 91, 92, -29, 93, 94,
+ -29, 90, 54, -29, -29, 91, 92, -29, 93, 94,
95, 96, 97, 132, -29, 98, 82, 83, 89, 164,
- 99, -68, -68, -68, -68, -68, -68, -68, -68, 56,
- 57, -68, -68, 91, 92, 155, 82, 83, 142, 139,
- 54, 56, 57, 98, 55, 58, 115, 118, 123, 126,
- 59, 151, -31, 89, 170, -31, -31, -31, -31, -31,
- -31, -31, -31, -31, 90, 62, -31, -31, 91, 92,
- -31, 93, 94, 95, 96, 97, 63, -31, 98, 64,
- 73, -77, 89, 99, -77, -77, -77, -77, -77, -77,
- -77, -77, -77, 75, 76, -77, -77, 91, 92, -77,
- -77, -77, -77, -77, -77, 77, -77, 98, 78, 146,
+ 99, -68, -68, -68, -68, -68, -68, -68, -68, 45,
+ 46, -68, -68, 91, 92, 156, 56, 57, 142, 55,
+ 58, 115, 118, 98, 126, 59, 117, 122, 123, 130,
+ 169, 151, -31, 89, 62, -31, -31, -31, -31, -31,
+ -31, -31, -31, -31, 90, 63, -31, -31, 91, 92,
+ -31, 93, 94, 95, 96, 97, 64, -31, 98, 56,
+ 57, -77, 89, 99, -77, -77, -77, -77, -77, -77,
+ -77, -77, -77, 82, 83, -77, -77, 91, 92, -77,
+ -77, -77, -77, -77, -77, 73, -77, 98, 75, 76,
-2, 4, 123, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 79, 87, 14, 15, 16, 148, 17, 18,
- 19, 20, 21, 22, 88, 23, 24, 119, 89, 127,
- 131, 25, -44, -44, 137, -44, -44, -44, -44, 90,
- 138, -44, -44, 91, 92, 105, 106, 107, 108, 156,
- 82, 83, 109, 98, 117, 122, 149, 130, 110, 6,
- 7, 8, 9, 10, 11, 12, 13, 150, 153, 14,
- 15, 7, 8, 83, 10, 11, 12, 13, 56, 57,
- 14, 15, 58, 121, 154, 129, 25, 59, 157, 82,
- 83, 169, 82, 83, 158, 160, 165, 25, 167, 171,
- 172, 173, 175, 176, 177, 66, 113, 84, 152, 0,
- 0, 0, 0, 0, 0, 72
+ 12, 13, 77, 78, 14, 15, 16, 79, 17, 18,
+ 19, 20, 21, 22, 87, 23, 24, 119, 89, 127,
+ 88, 25, -44, -44, 131, -44, -44, -44, -44, 90,
+ 137, -44, -44, 91, 92, 105, 106, 107, 108, 157,
+ 82, 83, 109, 98, 158, 82, 83, 138, 110, 6,
+ 7, 8, 9, 10, 11, 12, 13, 146, 148, 14,
+ 15, 7, 8, 149, 10, 11, 12, 13, 150, 153,
+ 14, 15, 139, 154, 56, 57, 25, 83, 58, 113,
+ 171, 82, 83, 59, 121, 160, 129, 25, 72, 165,
+ 84, 167, 170, 172, 173, 174, 176, 177, 178, 66,
+ 0, 152
};
static const short int yycheck[] =
{
- 5, 6, 0, 8, 58, 59, 11, 85, 86, 28,
- 31, 144, 145, 146, 14, 34, 26, 27, 151, 97,
+ 5, 6, 0, 8, 58, 59, 11, 85, 86, 142,
+ 28, 144, 145, 146, 14, 31, 34, 31, 151, 97,
153, 67, 67, 31, 70, 70, 72, 72, 82, 83,
31, 164, 32, 33, 31, 32, 33, 91, 92, 0,
1, 95, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 31, 14, 15, 16, 17, 18, 19, 20,
+ 11, 12, 26, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 29, 25, 26, 32, 33, 1, 147,
31, 4, 5, 6, 7, 8, 9, 10, 11, 26,
- 27, 14, 15, 16, 17, 139, 32, 33, 93, 24,
- 26, 26, 27, 26, 26, 30, 68, 69, 31, 71,
- 35, 106, 0, 1, 158, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 31, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 1, 25, 26, 1,
- 31, 0, 1, 31, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 31, 31, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 31, 25, 26, 31, 26,
+ 27, 14, 15, 16, 17, 139, 26, 27, 93, 26,
+ 30, 68, 69, 26, 71, 35, 68, 69, 31, 71,
+ 154, 106, 0, 1, 31, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 1, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 1, 25, 26, 26,
+ 27, 0, 1, 31, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 32, 33, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 31, 25, 26, 31, 31,
0, 1, 31, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 31, 31, 14, 15, 16, 1, 18, 19,
+ 10, 11, 31, 31, 14, 15, 16, 31, 18, 19,
20, 21, 22, 23, 31, 25, 26, 69, 1, 71,
31, 31, 5, 6, 31, 8, 9, 10, 11, 12,
31, 14, 15, 16, 17, 18, 19, 20, 21, 31,
- 32, 33, 25, 26, 68, 69, 13, 71, 31, 4,
- 5, 6, 7, 8, 9, 10, 11, 31, 26, 14,
- 15, 5, 6, 33, 8, 9, 10, 11, 26, 27,
- 14, 15, 30, 69, 31, 71, 31, 35, 31, 32,
- 33, 31, 32, 33, 14, 31, 31, 31, 31, 31,
- 31, 31, 31, 31, 31, 30, 67, 60, 107, -1,
- -1, -1, -1, -1, -1, 41
+ 32, 33, 25, 26, 31, 32, 33, 31, 31, 4,
+ 5, 6, 7, 8, 9, 10, 11, 26, 1, 14,
+ 15, 5, 6, 13, 8, 9, 10, 11, 31, 26,
+ 14, 15, 24, 14, 26, 27, 31, 33, 30, 67,
+ 31, 32, 33, 35, 69, 31, 71, 31, 41, 31,
+ 60, 31, 31, 31, 31, 31, 31, 31, 31, 30,
+ -1, 107
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -669,9 +669,9 @@ static const unsigned char yystos[] =
56, 62, 73, 31, 41, 70, 40, 51, 61, 62,
73, 31, 29, 76, 76, 77, 77, 31, 31, 24,
76, 76, 72, 71, 72, 76, 26, 77, 1, 13,
- 31, 72, 71, 26, 31, 76, 31, 31, 14, 75,
- 31, 75, 75, 75, 77, 31, 75, 31, 75, 31,
- 76, 31, 31, 31, 75, 31, 31, 31
+ 31, 72, 71, 26, 14, 75, 76, 31, 31, 75,
+ 31, 75, 75, 75, 77, 31, 75, 31, 75, 76,
+ 31, 31, 31, 31, 31, 75, 31, 31, 31
};
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
@@ -1490,7 +1490,7 @@ yyreduce:
case 56:
{
- current_entry->sym->flags |= SYMBOL_RESET;
+ menu_add_prop(P_RESET, NULL, NULL, yyvsp[-1].expr);
;}
break;
diff --git a/scripts/config/zconf.y b/scripts/config/zconf.y
index ce13f02..4b8ba45 100644
--- a/scripts/config/zconf.y
+++ b/scripts/config/zconf.y
@@ -275,9 +275,9 @@ choice_option: T_OPTIONAL T_EOL
printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
};
-choice_option: T_RESET T_EOL
+choice_option: T_RESET if_expr T_EOL
{
- current_entry->sym->flags |= SYMBOL_RESET;
+ menu_add_prop(P_RESET, NULL, NULL, $2);
};
choice_option: T_DEFAULT T_WORD if_expr T_EOL