diff options
-rw-r--r-- | parse-events.h | 7 | ||||
-rw-r--r-- | parse-filter.c | 18 |
2 files changed, 16 insertions, 9 deletions
diff --git a/parse-events.h b/parse-events.h index fe24ae7..38ddf95 100644 --- a/parse-events.h +++ b/parse-events.h | |||
@@ -645,6 +645,12 @@ struct filter_arg_op { | |||
645 | struct filter_arg *right; | 645 | struct filter_arg *right; |
646 | }; | 646 | }; |
647 | 647 | ||
648 | struct filter_arg_exp { | ||
649 | enum filter_exp_type type; | ||
650 | struct filter_arg *left; | ||
651 | struct filter_arg *right; | ||
652 | }; | ||
653 | |||
648 | struct filter_arg_num { | 654 | struct filter_arg_num { |
649 | enum filter_cmp_type type; | 655 | enum filter_cmp_type type; |
650 | struct filter_arg *left; | 656 | struct filter_arg *left; |
@@ -666,6 +672,7 @@ struct filter_arg { | |||
666 | struct filter_arg_field field; | 672 | struct filter_arg_field field; |
667 | struct filter_arg_value value; | 673 | struct filter_arg_value value; |
668 | struct filter_arg_op op; | 674 | struct filter_arg_op op; |
675 | struct filter_arg_exp exp; | ||
669 | struct filter_arg_num num; | 676 | struct filter_arg_num num; |
670 | struct filter_arg_str str; | 677 | struct filter_arg_str str; |
671 | }; | 678 | }; |
diff --git a/parse-filter.c b/parse-filter.c index eb2ef6d..0eeab5e 100644 --- a/parse-filter.c +++ b/parse-filter.c | |||
@@ -776,9 +776,9 @@ process_exp(struct event_format *event, enum filter_exp_type etype, | |||
776 | 776 | ||
777 | arg = allocate_arg(); | 777 | arg = allocate_arg(); |
778 | arg->type = FILTER_ARG_EXP; | 778 | arg->type = FILTER_ARG_EXP; |
779 | arg->op.type = etype; | 779 | arg->exp.type = etype; |
780 | arg->op.left = larg; | 780 | arg->exp.left = larg; |
781 | arg->op.right = rarg; | 781 | arg->exp.right = rarg; |
782 | 782 | ||
783 | cont: | 783 | cont: |
784 | /* still need a cmp */ | 784 | /* still need a cmp */ |
@@ -1476,10 +1476,10 @@ get_exp_value(struct event_format *event, struct filter_arg *arg, struct record | |||
1476 | { | 1476 | { |
1477 | unsigned long long lval, rval; | 1477 | unsigned long long lval, rval; |
1478 | 1478 | ||
1479 | lval = get_arg_value(event, arg->op.left, record); | 1479 | lval = get_arg_value(event, arg->exp.left, record); |
1480 | rval = get_arg_value(event, arg->op.right, record); | 1480 | rval = get_arg_value(event, arg->exp.right, record); |
1481 | 1481 | ||
1482 | switch (arg->op.type) { | 1482 | switch (arg->exp.type) { |
1483 | case FILTER_EXP_ADD: | 1483 | case FILTER_EXP_ADD: |
1484 | return lval + rval; | 1484 | return lval + rval; |
1485 | 1485 | ||
@@ -1867,10 +1867,10 @@ static char *exp_to_str(struct event_filter *filter, struct filter_arg *arg) | |||
1867 | char *str; | 1867 | char *str; |
1868 | int len; | 1868 | int len; |
1869 | 1869 | ||
1870 | lstr = arg_to_str(filter, arg->op.left); | 1870 | lstr = arg_to_str(filter, arg->exp.left); |
1871 | rstr = arg_to_str(filter, arg->op.right); | 1871 | rstr = arg_to_str(filter, arg->exp.right); |
1872 | 1872 | ||
1873 | switch (arg->op.type) { | 1873 | switch (arg->exp.type) { |
1874 | case FILTER_EXP_ADD: | 1874 | case FILTER_EXP_ADD: |
1875 | op = "+"; | 1875 | op = "+"; |
1876 | break; | 1876 | break; |