Re: [PATCH v9 4/9] perf config: Add comparing name treating '_' and '-' as being the same thing.

From: Namhyung Kim
Date: Tue Nov 03 2015 - 07:15:37 EST


On Tue, Nov 03, 2015 at 10:50:15AM +0900, Taeung Song wrote:
> The comparing name functionality is that
> two config name are compared treating '-' or '_' as
> being the same thing. For example, both 'print_percent'
> and 'print-percent' in 'call-graph' section
> are regarded as the same thing.

Hmm.. but this code only does it for 'perf config' command, right?
What we want is treating them in all other commands which use
perf_config() callbacks. I think it'd be better to convert the
character when parsing the config files..

Thanks,
Namhyung


>
> Signed-off-by: Taeung Song <treeze.taeung@xxxxxxxxx>
> ---
> tools/perf/builtin-config.c | 23 ++++++++++++++++++++++-
> 1 file changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/builtin-config.c b/tools/perf/builtin-config.c
> index f99c39d..d4e2899 100644
> --- a/tools/perf/builtin-config.c
> +++ b/tools/perf/builtin-config.c
> @@ -32,6 +32,27 @@ static struct option config_options[] = {
> OPT_END()
> };
>
> +static int compare_name(const char *name1, const char *name2)
> +{
> + while (true) {
> + /*
> + * If two names have '-' or '_', them are treated
> + * as being the same thing.
> + */
> + if ((*name1 == '-' || *name1 == '_')
> + && (*name2 == '-' || *name2 == '_')) {
> + name1++, name2++;
> + continue;
> + }
> +
> + if (*name1 && (*name1 == *name2))
> + name1++, name2++;
> + else
> + break;
> + }
> + return *(const unsigned char *)name1-*(const unsigned char *)name2;
> +}
> +
> static struct config_section *find_section(struct list_head *sections,
> const char *section_name)
> {
> @@ -50,7 +71,7 @@ static struct config_element *find_element(const char *name,
> struct config_element *element;
>
> list_for_each_entry(element, &section->element_head, list)
> - if (!strcmp(element->name, name))
> + if (!compare_name(element->name, name))
> return element;
>
> return NULL;
> --
> 1.9.1
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/