Commit 55309985 authored by Namhyung Kim's avatar Namhyung Kim Committed by Arnaldo Carvalho de Melo

perf sort: Make setup_sorting returns an error code

Currently the setup_sorting() is called for parsing sort keys and exits
if it failed to add the sort key.  As it's included in libperf it'd be
better returning an error code rather than exiting application inside of
the library.
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Suggested-by: default avatarArnaldo Carvalho de Melo <acme@ghostprotocols.net>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1360130237-9963-2-git-send-email-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 51f27d14
...@@ -309,7 +309,8 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __maybe_unused) ...@@ -309,7 +309,8 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __maybe_unused)
if (symbol__init() < 0) if (symbol__init() < 0)
return -1; return -1;
setup_sorting(annotate_usage, options); if (setup_sorting() < 0)
usage_with_options(annotate_usage, options);
if (argc) { if (argc) {
/* /*
......
...@@ -605,7 +605,9 @@ int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused) ...@@ -605,7 +605,9 @@ int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)
ui_init(); ui_init();
setup_sorting(diff_usage, options); if (setup_sorting() < 0)
usage_with_options(diff_usage, options);
setup_pager(); setup_pager();
sort_entry__setup_elide(&sort_dso, symbol_conf.dso_list, "dso", NULL); sort_entry__setup_elide(&sort_dso, symbol_conf.dso_list, "dso", NULL);
......
...@@ -751,7 +751,8 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused) ...@@ -751,7 +751,8 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
} }
setup_sorting(report_usage, options); if (setup_sorting() < 0)
usage_with_options(report_usage, options);
/* /*
* Only in the newt browser we are doing integrated annotation, * Only in the newt browser we are doing integrated annotation,
......
...@@ -1129,7 +1129,8 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused) ...@@ -1129,7 +1129,8 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused)
if (sort_order == default_sort_order) if (sort_order == default_sort_order)
sort_order = "dso,symbol"; sort_order = "dso,symbol";
setup_sorting(top_usage, options); if (setup_sorting() < 0)
usage_with_options(top_usage, options);
if (top.use_stdio) if (top.use_stdio)
use_browser = 0; use_browser = 0;
......
...@@ -449,7 +449,8 @@ int test__hists_link(void) ...@@ -449,7 +449,8 @@ int test__hists_link(void)
goto out; goto out;
/* default sort order (comm,dso,sym) will be used */ /* default sort order (comm,dso,sym) will be used */
setup_sorting(NULL, NULL); if (setup_sorting() < 0)
goto out;
machines__init(&machines); machines__init(&machines);
......
...@@ -565,23 +565,25 @@ int sort_dimension__add(const char *tok) ...@@ -565,23 +565,25 @@ int sort_dimension__add(const char *tok)
return -ESRCH; return -ESRCH;
} }
void setup_sorting(const char * const usagestr[], const struct option *opts) int setup_sorting(void)
{ {
char *tmp, *tok, *str = strdup(sort_order); char *tmp, *tok, *str = strdup(sort_order);
int ret = 0;
for (tok = strtok_r(str, ", ", &tmp); for (tok = strtok_r(str, ", ", &tmp);
tok; tok = strtok_r(NULL, ", ", &tmp)) { tok; tok = strtok_r(NULL, ", ", &tmp)) {
int ret = sort_dimension__add(tok); ret = sort_dimension__add(tok);
if (ret == -EINVAL) { if (ret == -EINVAL) {
error("Invalid --sort key: `%s'", tok); error("Invalid --sort key: `%s'", tok);
usage_with_options(usagestr, opts); break;
} else if (ret == -ESRCH) { } else if (ret == -ESRCH) {
error("Unknown --sort key: `%s'", tok); error("Unknown --sort key: `%s'", tok);
usage_with_options(usagestr, opts); break;
} }
} }
free(str); free(str);
return ret;
} }
void sort_entry__setup_elide(struct sort_entry *self, struct strlist *list, void sort_entry__setup_elide(struct sort_entry *self, struct strlist *list,
......
...@@ -160,7 +160,7 @@ struct sort_entry { ...@@ -160,7 +160,7 @@ struct sort_entry {
extern struct sort_entry sort_thread; extern struct sort_entry sort_thread;
extern struct list_head hist_entry__sort_list; extern struct list_head hist_entry__sort_list;
void setup_sorting(const char * const usagestr[], const struct option *opts); int setup_sorting(void);
extern int sort_dimension__add(const char *); extern int sort_dimension__add(const char *);
void sort_entry__setup_elide(struct sort_entry *self, struct strlist *list, void sort_entry__setup_elide(struct sort_entry *self, struct strlist *list,
const char *list_name, FILE *fp); const char *list_name, FILE *fp);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment