disable the automatic config reset if 'Advanced configuration options' is selected
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 4 Mar 2007 16:02:41 +0000 (16:02 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 4 Mar 2007 16:02:41 +0000 (16:02 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@6506 3c298f89-4303-0410-b956-a3cf2f4a3e73

scripts/config/expr.h
scripts/config/mconf.c
scripts/config/zconf.tab.c_shipped
scripts/config/zconf.y
scripts/metadata.pl

index fdeb149..c1c5606 100644 (file)
@@ -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 {
index 083b23e..7403617 100644 (file)
@@ -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:
index 10e94c9..c7c0f0c 100644 (file)
@@ -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;
 
index ce13f02..4b8ba45 100644 (file)
@@ -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
index 1228679..b5ee31a 100755 (executable)
@@ -203,7 +203,7 @@ sub gen_target_config() {
 choice
        prompt "Target System"
        default LINUX_2_4_BRCM
-       reset
+       reset if !DEVEL
        
 EOF