aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Triplett <josh@joshtriplett.org>2009-08-05 17:12:10 -0400
committerJosh Triplett <josh@joshtriplett.org>2009-08-05 17:12:10 -0400
commitf0b0d62893a118c27cb331a33dc0b709dd9ff8cc (patch)
tree410a521bce721b046c5304926aa120db1e4f84d1
parente8d399b3f11cf350ab52f31fc0fd085c1af48022 (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.c16
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 }