Old show_config() directly use config set so there are many duplicated code with perf_config_set__iter().
So reimplement show_config() using perf_config() that use perf_config_set__iter() with config set that already contains all configs. Cc: Namhyung Kim <namhy...@kernel.org> Cc: Jiri Olsa <jo...@redhat.com> Cc: Masami Hiramatsu <mhira...@kernel.org> Cc: Alexander Shishkin <alexander.shish...@linux.intel.com> Cc: Wang Nan <wangn...@huawei.com> Signed-off-by: Taeung Song <treeze.tae...@gmail.com> --- tools/perf/builtin-config.c | 29 +++++++---------------------- tools/perf/util/config.c | 2 +- tools/perf/util/config.h | 1 + 3 files changed, 9 insertions(+), 23 deletions(-) diff --git a/tools/perf/builtin-config.c b/tools/perf/builtin-config.c index c07f744..9c654f9 100644 --- a/tools/perf/builtin-config.c +++ b/tools/perf/builtin-config.c @@ -33,28 +33,13 @@ static struct option config_options[] = { OPT_END() }; -static int show_config(struct perf_config_set *set) +static int show_config(const char *key, const char *value, + void *cb __maybe_unused) { - struct perf_config_section *section; - struct perf_config_item *item; - struct list_head *sections; - - if (set == NULL) - return -1; - - sections = &set->sections; - if (list_empty(sections)) - return -1; - - list_for_each_entry(section, sections, node) { - list_for_each_entry(item, §ion->items, node) { - char *value = item->value; - - if (value) - printf("%s.%s=%s\n", section->name, - item->name, value); - } - } + if (value) + printf("%s=%s\n", key, value); + else + printf("%s\n", key); return 0; } @@ -96,7 +81,7 @@ int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused) pr_err("Error: takes no arguments\n"); parse_options_usage(config_usage, config_options, "l", 1); } else { - ret = show_config(set); + ret = perf_config_set__iter(set, show_config, NULL); if (ret < 0) { const char * config_filename = config_exclusive_filename; if (!config_exclusive_filename) diff --git a/tools/perf/util/config.c b/tools/perf/util/config.c index 23fb8e4..4775d18 100644 --- a/tools/perf/util/config.c +++ b/tools/perf/util/config.c @@ -662,7 +662,7 @@ struct perf_config_set *perf_config_set__new(void) return set; } -static int perf_config_set__iter(struct perf_config_set *set, config_fn_t fn, void *data) +int perf_config_set__iter(struct perf_config_set *set, config_fn_t fn, void *data) { struct perf_config_section *section; struct perf_config_item *item; diff --git a/tools/perf/util/config.h b/tools/perf/util/config.h index fafba86..3526bb7 100644 --- a/tools/perf/util/config.h +++ b/tools/perf/util/config.h @@ -35,5 +35,6 @@ const char *perf_etc_perfconfig(void); struct perf_config_set *perf_config_set__new(void); void perf_config_set__delete(struct perf_config_set **set); +int perf_config_set__iter(struct perf_config_set *set, config_fn_t fn, void *data); #endif /* __PERF_CONFIG_H */ -- 2.5.0