kconfig: extend output of 'listnewconfig'
[carl9170fw.git] / config / conf.c
index 0d21a01122f7a70078fde40bb66cdae3ef03689d..e525e5ec0245822ffd918f83cd0d982c07038042 100644 (file)
@@ -354,9 +354,11 @@ static void conf(struct menu *menu)
 
                switch (prop->type) {
                case P_MENU:
-                       if ((input_mode == listnewconfig ||
-                            input_mode == oldnoconfig) &&
-                           rootEntry != menu) {
+                       /*
+                        * Except in oldaskconfig mode, we show only menus that
+                        * contain new symbols.
+                        */
+                       if (input_mode != oldaskconfig && rootEntry != menu) {
                                check_conf(menu);
                                return;
                        }
@@ -416,8 +418,18 @@ static void check_conf(struct menu *menu)
                if (sym_is_changable(sym) ||
                    (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) {
                        if (input_mode == listnewconfig) {
-                               if (sym->name && !sym_is_choice_value(sym)) {
-                                       printf("%s%s\n", CONFIG_, sym->name);
+                               if (sym->name) {
+                                       const char *str;
+
+                                       if (sym->type == S_STRING) {
+                                               str = sym_get_string_value(sym);
+                                               str = sym_escape_string_value(str);
+                                               printf("%s%s=%s\n", CONFIG_, sym->name, str);
+                                               free((void *)str);
+                                       } else {
+                                               str = sym_get_string_value(sym);
+                                               printf("%s%s=%s\n", CONFIG_, sym->name, str);
+                                       }
                                }
                        } else {
                                if (!conf_cnt++)
@@ -630,7 +642,7 @@ int main(int ac, char **av)
                do {
                        conf_cnt = 0;
                        check_conf(&rootmenu);
-               } while (conf_cnt && input_mode != listnewconfig);
+               } while (conf_cnt);
                break;
        }