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.
Signed-off-by: Taeung Song <treeze.tae...@gmail.com> --- 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, §ion->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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/