diff options
author | Steven Rostedt <srostedt@redhat.com> | 2009-12-09 22:06:45 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2009-12-09 22:06:45 -0500 |
commit | eef499fb3baf1ae058520bf16ced41c1dd45f9c1 (patch) | |
tree | 3f99ad6ec1eeee6df7ec5bd6b644720f8580bc37 | |
parent | 0c5d394f1fc8d965e1dfb2973499ef280d65d125 (diff) |
Add negative and subtraction number evaluation
If a constant has a negative number in processing symbols, the
parser will fail. This patch adds handling of both negative numbers
and subtraction.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r-- | parse-events.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/parse-events.c b/parse-events.c index df6ad6e..5f136a7 100644 --- a/parse-events.c +++ b/parse-events.c | |||
@@ -1597,6 +1597,15 @@ static long long arg_num_eval(struct print_arg *arg) | |||
1597 | die("unknown op '%s'", arg->op.op); | 1597 | die("unknown op '%s'", arg->op.op); |
1598 | } | 1598 | } |
1599 | break; | 1599 | break; |
1600 | case '-': | ||
1601 | /* check for negative */ | ||
1602 | if (arg->op.left->type == PRINT_NULL) | ||
1603 | left = 0; | ||
1604 | else | ||
1605 | left = arg_num_eval(arg->op.left); | ||
1606 | right = arg_num_eval(arg->op.right); | ||
1607 | val = left - right; | ||
1608 | break; | ||
1600 | default: | 1609 | default: |
1601 | die("unknown op '%s'", arg->op.op); | 1610 | die("unknown op '%s'", arg->op.op); |
1602 | } | 1611 | } |