- pull "kconfig: oldconfig shall not set symbols if it does not need to"
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Sat, 29 Sep 2007 20:21:38 +0000 (20:21 -0000)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Sat, 29 Sep 2007 20:21:38 +0000 (20:21 -0000)
package/config/conf.c

index 841635ea9f30b544034e7ebe989b2c67cbbdbcfc..bd2ca4bb61529e6cf6778100dba1d57f5f543a7a 100644 (file)
@@ -64,7 +64,7 @@ static void check_stdin(void)
        }
 }
 
-static void conf_askvalue(struct symbol *sym, const char *def)
+static int conf_askvalue(struct symbol *sym, const char *def)
 {
        enum symbol_type type = sym_get_type(sym);
        tristate val;
@@ -79,7 +79,7 @@ static void conf_askvalue(struct symbol *sym, const char *def)
                printf("%s\n", def);
                line[0] = '\n';
                line[1] = 0;
-               return;
+               return 0;
        }
 
        switch (input_mode) {
@@ -89,23 +89,23 @@ static void conf_askvalue(struct symbol *sym, const char *def)
        case set_random:
                if (sym_has_value(sym)) {
                        printf("%s\n", def);
-                       return;
+                       return 0;
                }
                break;
        case ask_new:
        case ask_silent:
                if (sym_has_value(sym)) {
                        printf("%s\n", def);
-                       return;
+                       return 0;
                }
                check_stdin();
        case ask_all:
                fflush(stdout);
                fgets(line, 128, stdin);
-               return;
+               return 1;
        case set_default:
                printf("%s\n", def);
-               return;
+               return 1;
        default:
                break;
        }
@@ -115,7 +115,7 @@ static void conf_askvalue(struct symbol *sym, const char *def)
        case S_HEX:
        case S_STRING:
                printf("%s\n", def);
-               return;
+               return 1;
        default:
                ;
        }
@@ -166,6 +166,7 @@ static void conf_askvalue(struct symbol *sym, const char *def)
                break;
        }
        printf("%s", line);
+       return 1;
 }
 
 int conf_string(struct menu *menu)
@@ -179,7 +180,8 @@ int conf_string(struct menu *menu)
                def = sym_get_string_value(sym);
                if (sym_get_string_value(sym))
                        printf("[%s] ", def);
-               conf_askvalue(sym, def);
+               if (!conf_askvalue(sym, def))
+                       return 0;
                switch (line[0]) {
                case '\n':
                        break;
@@ -236,7 +238,8 @@ static int conf_sym(struct menu *menu)
                if (sym->help)
                        printf("/?");
                printf("] ");
-               conf_askvalue(sym, sym_get_string_value(sym));
+               if (!conf_askvalue(sym, sym_get_string_value(sym)))
+                       return 0;
                strip(line);
 
                switch (line[0]) {