kconfig: extend output of 'listnewconfig'
[carl9170fw.git] / config / conf.c
index 79eb6d9770c36bfe3cf174cf21436929a90a7922..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,10 +418,20 @@ 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 (input_mode != oldnoconfig) {
+                       } else {
                                if (!conf_cnt++)
                                        printf(_("*\n* Restart config...\n*\n"));
                                rootEntry = menu_get_parent_menu(menu);
@@ -531,7 +543,7 @@ int main(int ac, char **av)
                }
        }
        if (ac == optind) {
-               printf(_("%s: Kconfig file missing\n"), av[0]);
+               fprintf(stderr, _("%s: Kconfig file missing\n"), av[0]);
                conf_usage(progname);
                exit(1);
        }
@@ -544,9 +556,11 @@ int main(int ac, char **av)
                if (!defconfig_file)
                        defconfig_file = conf_get_default_confname();
                if (conf_read(defconfig_file)) {
-                       printf(_("***\n"
-                               "*** Can't find default configuration \"%s\"!\n"
-                               "***\n"), defconfig_file);
+                       fprintf(stderr,
+                               _("***\n"
+                                 "*** Can't find default configuration \"%s\"!\n"
+                                 "***\n"),
+                               defconfig_file);
                        exit(1);
                }
                break;
@@ -628,9 +642,7 @@ int main(int ac, char **av)
                do {
                        conf_cnt = 0;
                        check_conf(&rootmenu);
-               } while (conf_cnt &&
-                        (input_mode != listnewconfig &&
-                         input_mode != oldnoconfig));
+               } while (conf_cnt);
                break;
        }