diff options
author | Josh Triplett <josh@joshtriplett.org> | 2009-08-05 17:12:10 -0400 |
---|---|---|
committer | Josh Triplett <josh@joshtriplett.org> | 2009-08-05 17:12:10 -0400 |
commit | f0b0d62893a118c27cb331a33dc0b709dd9ff8cc (patch) | |
tree | 410a521bce721b046c5304926aa120db1e4f84d1 | |
parent | e8d399b3f11cf350ab52f31fc0fd085c1af48022 (diff) |
Handle == and !=
Make process_op handle == and !=, and make eval_arg_num handle != (it
already handled ==).
Signed-off-by: Josh Triplett <josh@joshtriplett.org>
-rw-r--r-- | parse-events.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/parse-events.c b/parse-events.c index 3479675..6ce3427 100644 --- a/parse-events.c +++ b/parse-events.c | |||
@@ -1144,7 +1144,9 @@ process_op(struct event *event, struct print_arg *arg, char **tok) | |||
1144 | strcmp(token, "+") == 0 || | 1144 | strcmp(token, "+") == 0 || |
1145 | strcmp(token, "*") == 0 || | 1145 | strcmp(token, "*") == 0 || |
1146 | strcmp(token, "^") == 0 || | 1146 | strcmp(token, "^") == 0 || |
1147 | strcmp(token, "/") == 0) { | 1147 | strcmp(token, "/") == 0 || |
1148 | strcmp(token, "==") == 0 || | ||
1149 | strcmp(token, "!=") == 0) { | ||
1148 | 1150 | ||
1149 | left = malloc_or_die(sizeof(*left)); | 1151 | left = malloc_or_die(sizeof(*left)); |
1150 | 1152 | ||
@@ -1288,6 +1290,18 @@ static long long arg_num_eval(struct print_arg *arg) | |||
1288 | 1290 | ||
1289 | val = left == right; | 1291 | val = left == right; |
1290 | break; | 1292 | break; |
1293 | case '!': | ||
1294 | left = arg_num_eval(arg->op.left); | ||
1295 | right = arg_num_eval(arg->op.right); | ||
1296 | |||
1297 | switch (arg->op.op[1]) { | ||
1298 | case '=': | ||
1299 | val = left != right; | ||
1300 | break; | ||
1301 | default: | ||
1302 | die("unknown op '%s'", arg->op.op); | ||
1303 | } | ||
1304 | break; | ||
1291 | default: | 1305 | default: |
1292 | die("unknown op '%s'", arg->op.op); | 1306 | die("unknown op '%s'", arg->op.op); |
1293 | } | 1307 | } |