diff options
Diffstat (limited to 'tools/perf/util/config.c')
| -rw-r--r-- | tools/perf/util/config.c | 43 | 
1 files changed, 26 insertions, 17 deletions
| diff --git a/tools/perf/util/config.c b/tools/perf/util/config.c index 8d724f0fa5a8..31a7dea248d0 100644 --- a/tools/perf/util/config.c +++ b/tools/perf/util/config.c @@ -335,32 +335,42 @@ static int perf_parse_long(const char *value, long *ret)  	return 0;  } -static void die_bad_config(const char *name) +static void bad_config(const char *name)  {  	if (config_file_name) -		die("bad config value for '%s' in %s", name, config_file_name); -	die("bad config value for '%s'", name); +		pr_warning("bad config value for '%s' in %s, ignoring...\n", name, config_file_name); +	else +		pr_warning("bad config value for '%s', ignoring...\n", name);  } -u64 perf_config_u64(const char *name, const char *value) +int perf_config_u64(u64 *dest, const char *name, const char *value)  {  	long long ret = 0; -	if (!perf_parse_llong(value, &ret)) -		die_bad_config(name); -	return (u64) ret; +	if (!perf_parse_llong(value, &ret)) { +		bad_config(name); +		return -1; +	} + +	*dest = ret; +	return 0;  } -int perf_config_int(const char *name, const char *value) +int perf_config_int(int *dest, const char *name, const char *value)  {  	long ret = 0; -	if (!perf_parse_long(value, &ret)) -		die_bad_config(name); -	return ret; +	if (!perf_parse_long(value, &ret)) { +		bad_config(name); +		return -1; +	} +	*dest = ret; +	return 0;  }  static int perf_config_bool_or_int(const char *name, const char *value, int *is_bool)  { +	int ret; +  	*is_bool = 1;  	if (!value)  		return 1; @@ -371,7 +381,7 @@ static int perf_config_bool_or_int(const char *name, const char *value, int *is_  	if (!strcasecmp(value, "false") || !strcasecmp(value, "no") || !strcasecmp(value, "off"))  		return 0;  	*is_bool = 0; -	return perf_config_int(name, value); +	return perf_config_int(&ret, name, value) < 0 ? -1 : ret;  }  int perf_config_bool(const char *name, const char *value) @@ -657,8 +667,7 @@ static int perf_config_set__init(struct perf_config_set *set)  	user_config = strdup(mkpath("%s/.perfconfig", home));  	if (user_config == NULL) { -		warning("Not enough memory to process %s/.perfconfig, " -			"ignoring it.", home); +		pr_warning("Not enough memory to process %s/.perfconfig, ignoring it.", home);  		goto out;  	} @@ -671,8 +680,7 @@ static int perf_config_set__init(struct perf_config_set *set)  	ret = 0;  	if (st.st_uid && (st.st_uid != geteuid())) { -		warning("File %s not owned by current user or root, " -			"ignoring it.", user_config); +		pr_warning("File %s not owned by current user or root, ignoring it.", user_config);  		goto out_free;  	} @@ -795,7 +803,8 @@ void perf_config_set__delete(struct perf_config_set *set)   */  int config_error_nonbool(const char *var)  { -	return error("Missing value for '%s'", var); +	pr_err("Missing value for '%s'", var); +	return -1;  }  void set_buildid_dir(const char *dir) |