[4.1] daf5059 Add REAL add/sub/mul/div REAL support
Lasse Karstensen
lkarsten at varnish-software.com
Thu Feb 11 17:14:32 CET 2016
commit daf5059ba69a31020d84cfa6a4dd403c96d40366
Author: Federico G. Schwindt <fgsch at lodoss.net>
Date: Tue Feb 2 08:43:29 2016 +0000
Add REAL add/sub/mul/div REAL support
Prompted by someone on #varnish. OK'd by phk.
diff --git a/bin/varnishtest/tests/v00020.vtc b/bin/varnishtest/tests/v00020.vtc
index a9e9d3b..263b883 100644
--- a/bin/varnishtest/tests/v00020.vtc
+++ b/bin/varnishtest/tests/v00020.vtc
@@ -102,10 +102,18 @@ varnish v1 -vcl {
set req.http.foo = now + 1s;
set req.http.foo = now - 1s;
+
set req.http.foo = now - now;
set req.http.foo = 1 + 1;
set req.http.foo = 1 - 1;
+ set req.http.foo = 3 * 2;
+ set req.http.foo = 3 / 2;
+
+ set req.http.foo = 3.6 + 1.4;
+ set req.http.foo = 3.6 - 1.4;
+ set req.http.foo = 3.6 * 1.4;
+ set req.http.foo = 3.6 / 1.4;
set req.ttl = 1s;
}
diff --git a/lib/libvcc/vcc_expr.c b/lib/libvcc/vcc_expr.c
index 5989f07..af3b3e7 100644
--- a/lib/libvcc/vcc_expr.c
+++ b/lib/libvcc/vcc_expr.c
@@ -942,6 +942,7 @@ vcc_expr_mul(struct vcc *tl, struct expr **e, enum var_type fmt)
case INT: f2 = INT; break;
case DURATION: f2 = REAL; break;
case BYTES: f2 = REAL; break;
+ case REAL: f2 = REAL; break;
default:
if (tl->t->tok != '*' && tl->t->tok != '/')
return;
@@ -1049,6 +1050,8 @@ vcc_expr_add(struct vcc *tl, struct expr **e, enum var_type fmt)
/* OK */
} else if ((*e)->fmt == INT && e2->fmt == INT) {
/* OK */
+ } else if ((*e)->fmt == REAL && e2->fmt == REAL) {
+ /* OK */
} else if ((*e)->fmt == DURATION && e2->fmt == DURATION) {
/* OK */
} else if (tk->tok == '+' &&
More information about the varnish-commit
mailing list