From: Arnaldo Carvalho de Melo <a...@redhat.com>

Just warn the user and ignore those values.

Cc: Adrian Hunter <adrian.hun...@intel.com>
Cc: David Ahern <dsah...@gmail.com>
Cc: Jiri Olsa <jo...@kernel.org>
Cc: Namhyung Kim <namhy...@kernel.org>
Cc: Wang Nan <wangn...@huawei.com>
Link: http://lkml.kernel.org/n/tip-tbf60nj3ierm6hrkhpoth...@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <a...@redhat.com>
---
 tools/perf/builtin-diff.c          |  5 ++++-
 tools/perf/builtin-report.c        |  7 +++----
 tools/perf/util/config.c           | 34 ++++++++++++++++++++++------------
 tools/perf/util/config.h           |  4 ++--
 tools/perf/util/data-convert-bt.c  |  6 ++----
 tools/perf/util/help-unknown-cmd.c |  2 +-
 6 files changed, 34 insertions(+), 24 deletions(-)

diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index eec5df80f5a3..0cd4cf6a344b 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -1302,7 +1302,10 @@ static int diff__config(const char *var, const char 
*value,
                        void *cb __maybe_unused)
 {
        if (!strcmp(var, "diff.order")) {
-               sort_compute = perf_config_int(var, value);
+               int ret;
+               if (perf_config_int(&ret, var, value) < 0)
+                       return -1;
+               sort_compute = ret;
                return 0;
        }
        if (!strcmp(var, "diff.compute")) {
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 22478ff2b706..1174a426d090 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -94,10 +94,9 @@ static int report__config(const char *var, const char 
*value, void *cb)
                symbol_conf.cumulate_callchain = perf_config_bool(var, value);
                return 0;
        }
-       if (!strcmp(var, "report.queue-size")) {
-               rep->queue_size = perf_config_u64(var, value);
-               return 0;
-       }
+       if (!strcmp(var, "report.queue-size"))
+               return perf_config_u64(&rep->queue_size, var, value);
+
        if (!strcmp(var, "report.sort_order")) {
                default_sort_order = strdup(value);
                return 0;
diff --git a/tools/perf/util/config.c b/tools/perf/util/config.c
index 586afeab2352..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)
diff --git a/tools/perf/util/config.h b/tools/perf/util/config.h
index 1a59a6b43f8b..b6bb11f3f165 100644
--- a/tools/perf/util/config.h
+++ b/tools/perf/util/config.h
@@ -27,8 +27,8 @@ extern const char *config_exclusive_filename;
 typedef int (*config_fn_t)(const char *, const char *, void *);
 int perf_default_config(const char *, const char *, void *);
 int perf_config(config_fn_t fn, void *);
-int perf_config_int(const char *, const char *);
-u64 perf_config_u64(const char *, const char *);
+int perf_config_int(int *dest, const char *, const char *);
+int perf_config_u64(u64 *dest, const char *, const char *);
 int perf_config_bool(const char *, const char *);
 int config_error_nonbool(const char *);
 const char *perf_etc_perfconfig(void);
diff --git a/tools/perf/util/data-convert-bt.c 
b/tools/perf/util/data-convert-bt.c
index 89d50318833d..3149b70799fd 100644
--- a/tools/perf/util/data-convert-bt.c
+++ b/tools/perf/util/data-convert-bt.c
@@ -1444,10 +1444,8 @@ static int convert__config(const char *var, const char 
*value, void *cb)
 {
        struct convert *c = cb;
 
-       if (!strcmp(var, "convert.queue-size")) {
-               c->queue_size = perf_config_u64(var, value);
-               return 0;
-       }
+       if (!strcmp(var, "convert.queue-size"))
+               return perf_config_u64(&c->queue_size, var, value);
 
        return 0;
 }
diff --git a/tools/perf/util/help-unknown-cmd.c 
b/tools/perf/util/help-unknown-cmd.c
index 1c88ad6425b8..15b95300d7f3 100644
--- a/tools/perf/util/help-unknown-cmd.c
+++ b/tools/perf/util/help-unknown-cmd.c
@@ -12,7 +12,7 @@ static int perf_unknown_cmd_config(const char *var, const 
char *value,
                                   void *cb __maybe_unused)
 {
        if (!strcmp(var, "help.autocorrect"))
-               autocorrect = perf_config_int(var,value);
+               return perf_config_int(&autocorrect, var,value);
 
        return 0;
 }
-- 
2.9.4

Reply via email to