diff options
Diffstat (limited to 'tools/perf/util/config.c')
| -rw-r--r-- | tools/perf/util/config.c | 31 | 
1 files changed, 31 insertions, 0 deletions
diff --git a/tools/perf/util/config.c b/tools/perf/util/config.c index 60ce5908c664..3f2ae19a1dd4 100644 --- a/tools/perf/util/config.c +++ b/tools/perf/util/config.c @@ -908,3 +908,34 @@ void set_buildid_dir(const char *dir)  	/* for communicating with external commands */  	setenv("PERF_BUILDID_DIR", buildid_dir, 1);  } + +struct perf_config_scan_data { +	const char *name; +	const char *fmt; +	va_list args; +	int ret; +}; + +static int perf_config_scan_cb(const char *var, const char *value, void *data) +{ +	struct perf_config_scan_data *d = data; + +	if (!strcmp(var, d->name)) +		d->ret = vsscanf(value, d->fmt, d->args); + +	return 0; +} + +int perf_config_scan(const char *name, const char *fmt, ...) +{ +	struct perf_config_scan_data d = { +		.name = name, +		.fmt = fmt, +	}; + +	va_start(d.args, fmt); +	perf_config(perf_config_scan_cb, &d); +	va_end(d.args); + +	return d.ret; +}  |