Re: [PATCH 2/5] kconfig: add more S_INT and S_HEX consistency checks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Sun, Dec 5, 2010 at 1:29 AM, Arnaud Lacombe <lacombar@xxxxxxxxx> wrote:
> This patch add more number consistency checkg, trying to catch the following
> situation:
>
> config FOO0
>        hex
>        default 42
>
> config FOO1
>        string
>
> config BAR0
>        int
>        default FOO1
>
> config BAR1
>        hex
>        default FOO1
>
> config FOO2
>        hex
>        default 42h
>
> config FOO3
>        int
>        default "1bar"
>
> Signed-off-by: Arnaud Lacombe <lacombar@xxxxxxxxx>
> ---
>  scripts/kconfig/menu.c |   15 ++++++++++++---
>  1 files changed, 12 insertions(+), 3 deletions(-)
>
ping ?

 - Arnaud

> diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
> index 7e83aef..8a8bc9b 100644
> --- a/scripts/kconfig/menu.c
> +++ b/scripts/kconfig/menu.c
> @@ -183,7 +183,7 @@ void menu_add_option(int token, char *arg)
>        }
>  }
>
> -static int menu_range_valid_sym(struct symbol *sym, struct symbol *sym2)
> +static int menu_validate_number(struct symbol *sym, struct symbol *sym2)
>  {
>        return sym2->type == S_INT || sym2->type == S_HEX ||
>               (sym2->type == S_UNKNOWN && sym_string_valid(sym, sym2->name));
> @@ -201,6 +201,15 @@ static void sym_check_prop(struct symbol *sym)
>                                prop_warn(prop,
>                                    "default for config symbol '%s'"
>                                    " must be a single symbol", sym->name);
> +                       if (prop->expr->type != E_SYMBOL)
> +                               break;
> +                       sym2 = prop_get_symbol(prop);
> +                       if (sym->type == S_HEX || sym->type == S_INT) {
> +                               if (!menu_validate_number(sym, sym2))
> +                                       prop_warn(prop,
> +                                           "'%s': number is invalid",
> +                                           sym->name);
> +                       }
>                        break;
>                case P_SELECT:
>                        sym2 = prop_get_symbol(prop);
> @@ -220,8 +229,8 @@ static void sym_check_prop(struct symbol *sym)
>                        if (sym->type != S_INT && sym->type != S_HEX)
>                                prop_warn(prop, "range is only allowed "
>                                                "for int or hex symbols");
> -                       if (!menu_range_valid_sym(sym, prop->expr->left.sym) ||
> -                           !menu_range_valid_sym(sym, prop->expr->right.sym))
> +                       if (!menu_validate_number(sym, prop->expr->left.sym) ||
> +                           !menu_validate_number(sym, prop->expr->right.sym))
>                                prop_warn(prop, "range is invalid");
>                        break;
>                default:
> --
> 1.7.2.30.gc37d7.dirty
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux