diff options
| author | Namhyung Kim <namhyung@kernel.org> | 2013-12-12 02:36:09 -0500 |
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-12-13 08:30:22 -0500 |
| commit | 02d62d6d17b9b718be2878477cdcae95df0d5b4e (patch) | |
| tree | 80ea22032c8af4f1c712d869e8b6b9cd19558fb0 | |
| parent | 605b8fda958a578e0a50ed1df3cac5a12f1fe8dc (diff) | |
tools lib traceevent: Get rid of die() in add_right()
Refactor it to return appropriate pevent_errno value.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung.kim@lge.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Steven Rostedt <rostedt@goodmis.org>
Link: http://lkml.kernel.org/r/1386833777-3790-7-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
| -rw-r--r-- | tools/lib/traceevent/event-parse.h | 8 | ||||
| -rw-r--r-- | tools/lib/traceevent/parse-filter.c | 34 |
2 files changed, 26 insertions, 16 deletions
diff --git a/tools/lib/traceevent/event-parse.h b/tools/lib/traceevent/event-parse.h index abdfd3c606ed..89e4dfd40db6 100644 --- a/tools/lib/traceevent/event-parse.h +++ b/tools/lib/traceevent/event-parse.h | |||
| @@ -358,7 +358,13 @@ enum pevent_flag { | |||
| 358 | _PE(OLD_FTRACE_ARG_FAILED,"failed to allocate field name for ftrace"),\ | 358 | _PE(OLD_FTRACE_ARG_FAILED,"failed to allocate field name for ftrace"),\ |
| 359 | _PE(INVALID_ARG_TYPE, "invalid argument type"), \ | 359 | _PE(INVALID_ARG_TYPE, "invalid argument type"), \ |
| 360 | _PE(INVALID_EVENT_NAME, "invalid event name"), \ | 360 | _PE(INVALID_EVENT_NAME, "invalid event name"), \ |
| 361 | _PE(EVENT_NOT_FOUND, "No event found") | 361 | _PE(EVENT_NOT_FOUND, "no event found"), \ |
| 362 | _PE(SYNTAX_ERROR, "syntax error"), \ | ||
| 363 | _PE(ILLEGAL_RVALUE, "illegal rvalue"), \ | ||
| 364 | _PE(ILLEGAL_LVALUE, "illegal lvalue for string comparison"), \ | ||
| 365 | _PE(INVALID_REGEX, "regex did not compute"), \ | ||
| 366 | _PE(ILLEGAL_STRING_CMP, "illegal comparison for string"), \ | ||
| 367 | _PE(ILLEGAL_INTEGER_CMP,"illegal comparison for integer") | ||
| 362 | 368 | ||
| 363 | #undef _PE | 369 | #undef _PE |
| 364 | #define _PE(__code, __str) PEVENT_ERRNO__ ## __code | 370 | #define _PE(__code, __str) PEVENT_ERRNO__ ## __code |
diff --git a/tools/lib/traceevent/parse-filter.c b/tools/lib/traceevent/parse-filter.c index a0ab040e8f71..c08ce594cabe 100644 --- a/tools/lib/traceevent/parse-filter.c +++ b/tools/lib/traceevent/parse-filter.c | |||
| @@ -473,8 +473,8 @@ create_arg_cmp(enum filter_exp_type etype) | |||
| 473 | return arg; | 473 | return arg; |
| 474 | } | 474 | } |
| 475 | 475 | ||
| 476 | static int add_right(struct filter_arg *op, struct filter_arg *arg, | 476 | static enum pevent_errno |
| 477 | char **error_str) | 477 | add_right(struct filter_arg *op, struct filter_arg *arg, char **error_str) |
| 478 | { | 478 | { |
| 479 | struct filter_arg *left; | 479 | struct filter_arg *left; |
| 480 | char *str; | 480 | char *str; |
| @@ -505,9 +505,8 @@ static int add_right(struct filter_arg *op, struct filter_arg *arg, | |||
| 505 | case FILTER_ARG_FIELD: | 505 | case FILTER_ARG_FIELD: |
| 506 | break; | 506 | break; |
| 507 | default: | 507 | default: |
| 508 | show_error(error_str, | 508 | show_error(error_str, "Illegal rvalue"); |
| 509 | "Illegal rvalue"); | 509 | return PEVENT_ERRNO__ILLEGAL_RVALUE; |
| 510 | return -1; | ||
| 511 | } | 510 | } |
| 512 | 511 | ||
| 513 | /* | 512 | /* |
| @@ -554,7 +553,7 @@ static int add_right(struct filter_arg *op, struct filter_arg *arg, | |||
| 554 | if (left->type != FILTER_ARG_FIELD) { | 553 | if (left->type != FILTER_ARG_FIELD) { |
| 555 | show_error(error_str, | 554 | show_error(error_str, |
| 556 | "Illegal lvalue for string comparison"); | 555 | "Illegal lvalue for string comparison"); |
| 557 | return -1; | 556 | return PEVENT_ERRNO__ILLEGAL_LVALUE; |
| 558 | } | 557 | } |
| 559 | 558 | ||
| 560 | /* Make sure this is a valid string compare */ | 559 | /* Make sure this is a valid string compare */ |
| @@ -573,25 +572,31 @@ static int add_right(struct filter_arg *op, struct filter_arg *arg, | |||
| 573 | show_error(error_str, | 572 | show_error(error_str, |
| 574 | "RegEx '%s' did not compute", | 573 | "RegEx '%s' did not compute", |
| 575 | str); | 574 | str); |
| 576 | return -1; | 575 | return PEVENT_ERRNO__INVALID_REGEX; |
| 577 | } | 576 | } |
| 578 | break; | 577 | break; |
| 579 | default: | 578 | default: |
| 580 | show_error(error_str, | 579 | show_error(error_str, |
| 581 | "Illegal comparison for string"); | 580 | "Illegal comparison for string"); |
| 582 | return -1; | 581 | return PEVENT_ERRNO__ILLEGAL_STRING_CMP; |
| 583 | } | 582 | } |
| 584 | 583 | ||
| 585 | op->type = FILTER_ARG_STR; | 584 | op->type = FILTER_ARG_STR; |
| 586 | op->str.type = op_type; | 585 | op->str.type = op_type; |
| 587 | op->str.field = left->field.field; | 586 | op->str.field = left->field.field; |
| 588 | op->str.val = strdup(str); | 587 | op->str.val = strdup(str); |
| 589 | if (!op->str.val) | 588 | if (!op->str.val) { |
| 590 | die("malloc string"); | 589 | show_error(error_str, "Failed to allocate string filter"); |
| 590 | return PEVENT_ERRNO__MEM_ALLOC_FAILED; | ||
| 591 | } | ||
| 591 | /* | 592 | /* |
| 592 | * Need a buffer to copy data for tests | 593 | * Need a buffer to copy data for tests |
| 593 | */ | 594 | */ |
| 594 | op->str.buffer = malloc_or_die(op->str.field->size + 1); | 595 | op->str.buffer = malloc(op->str.field->size + 1); |
| 596 | if (!op->str.buffer) { | ||
| 597 | show_error(error_str, "Failed to allocate string filter"); | ||
| 598 | return PEVENT_ERRNO__MEM_ALLOC_FAILED; | ||
| 599 | } | ||
| 595 | /* Null terminate this buffer */ | 600 | /* Null terminate this buffer */ |
| 596 | op->str.buffer[op->str.field->size] = 0; | 601 | op->str.buffer[op->str.field->size] = 0; |
| 597 | 602 | ||
| @@ -609,7 +614,7 @@ static int add_right(struct filter_arg *op, struct filter_arg *arg, | |||
| 609 | case FILTER_CMP_NOT_REGEX: | 614 | case FILTER_CMP_NOT_REGEX: |
| 610 | show_error(error_str, | 615 | show_error(error_str, |
| 611 | "Op not allowed with integers"); | 616 | "Op not allowed with integers"); |
| 612 | return -1; | 617 | return PEVENT_ERRNO__ILLEGAL_INTEGER_CMP; |
| 613 | 618 | ||
| 614 | default: | 619 | default: |
| 615 | break; | 620 | break; |
| @@ -629,9 +634,8 @@ static int add_right(struct filter_arg *op, struct filter_arg *arg, | |||
| 629 | return 0; | 634 | return 0; |
| 630 | 635 | ||
| 631 | out_fail: | 636 | out_fail: |
| 632 | show_error(error_str, | 637 | show_error(error_str, "Syntax error"); |
| 633 | "Syntax error"); | 638 | return PEVENT_ERRNO__SYNTAX_ERROR; |
| 634 | return -1; | ||
| 635 | } | 639 | } |
| 636 | 640 | ||
| 637 | static struct filter_arg * | 641 | static struct filter_arg * |
