On Tue, Nov 23, 2010 at 04:59:57AM +0000, Ben Hutchings wrote:
> If the KBUILD_VERBOSE environment variable is set to non-zero, show
> the default values of new symbols and not just their names.
> 
> Based on work by Bastian Blank <wa...@debian.org> and
> maximilian attems <m...@stro.at>.
> 
> Signed-off-by: Ben Hutchings <b...@decadent.org.uk>
> ---
>  scripts/kconfig/conf.c     |   90 
> +++++++++++++++++++++++++++++++++++++++-----
>  scripts/kconfig/confdata.c |    1 +
>  scripts/kconfig/expr.h     |    2 +
>  3 files changed, 83 insertions(+), 10 deletions(-)
> 
> diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
> index 5459a38..6d37d5c 100644
> --- a/scripts/kconfig/conf.c
> +++ b/scripts/kconfig/conf.c
> @@ -363,7 +363,6 @@ static void conf(struct menu *menu)
>               switch (prop->type) {
>               case P_MENU:
>                       if ((input_mode == silentoldconfig ||
> -                          input_mode == listnewconfig ||
>                            input_mode == oldnoconfig) &&
>                           rootEntry != menu) {
>                               check_conf(menu);
> @@ -423,11 +422,7 @@ static void check_conf(struct menu *menu)
>       if (sym && !sym_has_value(sym)) {
>               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);
> -                             }
> -                     } else if (input_mode != oldnoconfig) {
> +                     if (input_mode != oldnoconfig) {
>                               if (!conf_cnt++)
>                                       printf(_("*\n* Restart 
> config...\n*\n"));
>                               rootEntry = menu_get_parent_menu(menu);
> @@ -440,6 +435,78 @@ static void check_conf(struct menu *menu)
>               check_conf(child);
>  }
>  
> +static void report_conf(struct menu *menu, bool verbose)
> +{
> +     struct symbol *sym;
> +     struct menu *child;
> +     int l;
> +     const char *str;
> +
> +     if (!menu_is_visible(menu))
> +             return;
> +
> +     if (verbose && menu == &rootmenu) {
> +             printf("\n#\n"
> +                    "# Changes:\n"
> +                    "#\n");
> +     }
> +
> +     sym = menu->sym;
> +     if (sym && (sym->flags & SYMBOL_NEW) &&
> +         sym_is_changable(sym) && sym->name && !sym_is_choice_value(sym)) {
> +             if (verbose) {
> +                     switch (sym->type) {
> +                     case S_BOOLEAN:
> +                     case S_TRISTATE:
> +                             switch (sym_get_tristate_value(sym)) {
> +                             case no:
> +                                     printf("# CONFIG_%s is not set\n", 
> sym->name);
> +                                     break;
> [...]

Hi,

this is almost a 1:1 copy of the conf_write_symbol() function, so what
about reusing it like this? Otherwise the patch looks OK.

Michal


Subject: [PATCH] kconfig: Use conf_write_symbol() in listnewconfig

Signed-off-by: Michal Marek <mma...@suse.cz>

diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index 6d37d5c..41731c7 100644
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -439,8 +439,6 @@ static void report_conf(struct menu *menu, bool verbose)
 {
        struct symbol *sym;
        struct menu *child;
-       int l;
-       const char *str;
 
        if (!menu_is_visible(menu))
                return;
@@ -455,49 +453,7 @@ static void report_conf(struct menu *menu, bool verbose)
        if (sym && (sym->flags & SYMBOL_NEW) &&
            sym_is_changable(sym) && sym->name && !sym_is_choice_value(sym)) {
                if (verbose) {
-                       switch (sym->type) {
-                       case S_BOOLEAN:
-                       case S_TRISTATE:
-                               switch (sym_get_tristate_value(sym)) {
-                               case no:
-                                       printf("# CONFIG_%s is not set\n", 
sym->name);
-                                       break;
-                               case mod:
-                                       printf("CONFIG_%s=m\n", sym->name);
-                                       break;
-                               case yes:
-                                       printf("CONFIG_%s=y\n", sym->name);
-                                       break;
-                               }
-                               break;
-                       case S_STRING:
-                               str = sym_get_string_value(sym);
-                               printf("CONFIG_%s=\"", sym->name);
-                               while (1) {
-                                       l = strcspn(str, "\"\\");
-                                       if (l) {
-                                               fwrite(str, l, 1, stdout);
-                                               str += l;
-                                       }
-                                       if (!*str)
-                                               break;
-                                       printf("\\%c", *str++);
-                               }
-                               fputs("\"\n", stdout);
-                               break;
-                       case S_HEX:
-                               str = sym_get_string_value(sym);
-                               if (str[0] != '0' || (str[1] != 'x' && str[1] 
!= 'X')) {
-                                       printf("CONFIG_%s=%s\n", sym->name, 
str);
-                                       break;
-                               }
-                       case S_INT:
-                               str = sym_get_string_value(sym);
-                               printf("CONFIG_%s=%s\n", sym->name, str);
-                               break;
-                       default:
-                               break;
-                       }
+                       conf_write_symbol(sym, sym->type, stdout, true);
                } else {
                        printf("CONFIG_%s\n", sym->name);
                }
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index 44c9d62..1955b48 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -440,7 +440,7 @@ static void conf_write_string(bool headerfile, const char 
*name,
        fputs("\"\n", out);
 }
 
-static void conf_write_symbol(struct symbol *sym, enum symbol_type type,
+void conf_write_symbol(struct symbol *sym, enum symbol_type type,
                               FILE *out, bool write_no)
 {
        const char *str;
diff --git a/scripts/kconfig/lkc_proto.h b/scripts/kconfig/lkc_proto.h
index 17342fe..6da571b 100644
--- a/scripts/kconfig/lkc_proto.h
+++ b/scripts/kconfig/lkc_proto.h
@@ -7,6 +7,7 @@ P(conf_read_simple,int,(const char *name, int));
 P(conf_write_defconfig,int,(const char *name));
 P(conf_write,int,(const char *name));
 P(conf_write_autoconf,int,(void));
+P(conf_write_symbol, void,(struct symbol*, enum symbol_type, FILE*, bool));
 P(conf_get_changed,bool,(void));
 P(conf_set_changed_callback, void,(void (*fn)(void)));
 P(conf_set_message_callback, void,(void (*fn)(const char *fmt, va_list ap)));


-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20101203122347.ga12...@sepie.suse.cz

Reply via email to